ubuntu 伺服器從 1.0.10 升級 nginx 到 1.1.5
我最初安裝了 nginx,如:
apt-get install python-software-properties add-apt-repository ppa:nginx/stable apt-get update && apt-get --yes upgrade apt-get install nginx
我想向它添加一個新模組,所以我嘗試使用“–with-http_stub_status_module”配置行“從 nginx.org 下載源並解壓縮它。使用/path/to/your/ nginx/binary -V 獲取你目前的配置行。根據你的需要修改它,並使用新的配置行從 nginx 源執行配置文件。然後執行 make、make install 和 make upgrade,你就全部更新了。 "
我創建了一個目錄 /srv/software/nginx-src/ 比
wget http://nginx.org/download/nginx-1.1.5.tar.gz tar -xzf nginx-1.1.5.tar.gz ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/srv/software/nginx-modules/ngx_cache_purge-1.4 make make install make upgrade
一切正常,但是,我的 nginx -v 仍然顯示:
nginx: nginx version: nginx/1.0.10 nginx: TLS SNI support enabled nginx: configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.0.10/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.0.10/debian/modules/nginx-upstream-fair
它沒有更新….最後,我嘗試完全解除安裝它 apt-get remove –purge 我認為它有效,但我不確定。我似乎無法獲得正確的版本來工作,現在我擔心我的伺服器壞了!fml。任何幫助,現在都會很棒。
更新(1):在找到本指南http://articles.slicehost.com/2009/3/4/ubuntu-intrepid-installing-nginx-from-source和下面的@limon幫助後,我設置了以下內容:
./configure --sbin-path=/usr/local/sbin/nginx --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/srv/software/nginx-modules/ngx_cache_purge-1.4 make make install
我跑了哪個版本
root@www:/srv/software/nginx-src/nginx-1.1.5# which nginx /usr/local/sbin/nginx
但是當我嘗試啟動它時,它不起作用
root@www:/srv/software/nginx-src/nginx-1.1.5# sudo /usr/local/sbin/nginx nginx: [emerg] mkdir() "/var/lib/nginx/body" failed (2: No such file or directory)
更新(2):閱讀 Limon 的推薦後,我需要在 /var/lib 中創建一些目錄: mkdir -p /var/lib/nginx/body mkdir -p /var/lib/nginx/proxy mkdir -p /var/ lib/nginx/fastcgi mkdir -p /var/lib/nginx/uwsgi mkdir -p /var/lib/nginx/sc
我創建了這些目錄並執行了 sudo /usr/local/sbin/nginx 我的 nginx 現在正確報告了以下內容:
nginx: nginx version: nginx/1.1.5 nginx: built by gcc 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) nginx: TLS SNI support enabled nginx: configure arguments: --sbin-path=/usr/local/sbin/nginx --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/srv/software/nginx-modules/ngx_cache_purge-1.4
由於我的配置使用的是 jugledisc,因此我將舊的 init.d 從備份中取出並將其更改為指向正確的位置。
由於您在從原始碼編譯新版本之前沒有刪除 deb 包,因此很可能您在伺服器上安裝了多個版本的 nginx 二進製文件 - 要檢查您正在呼叫哪個版本,您可以使用像這樣的“哪個”實用程序:
cricket:[~]: which mysql /usr/bin/mysql
此時我會使用:
apt-get --purge autoremove nginx
然後從原始碼重新安裝 nginx。