Ubuntu

ubuntu 伺服器從 1.0.10 升級 nginx 到 1.1.5

  • December 4, 2011

我最初安裝了 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。

引用自:https://serverfault.com/questions/337421