ubuntu 服务器将 nginx 从 1.0.10 升级到 1.1.5

ubuntu 服务器将 nginx 从 1.0.10 升级到 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“从 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 并将其更改为指向正确的位置。

答案1

由于你在从源代码编译新版本之前没有删除 deb 包,所以很可能你在服务器上安装了多个版本的 nginx 二进制文件 - 要检查你正在调用哪一个,你可以使用'which'实用程序,如下所示:

cricket:[~]: which mysql
/usr/bin/mysql

此时我会使用:

apt-get --purge autoremove nginx

然后从源重新安装 nginx。

相关内容