MENU

将宝塔面板的nginx升级到1.13.3

最近想配置gre隧道来着,弄了1下午和一晚上和第二天一上午,均失败,我选择了放弃,我的目的是把小伙伴py来的ip拿给ks的网站用,不要求加速,只要求实现不修改php获取客户端ip部分,网上查了下发现nginx有http_realip_module这个东西适合我的需求,本以为宝塔面板的nginx默认不带http_realip_module,编译完后才发现默认是带的,本来打算水一篇宝塔nginx添加http_realip_module的来着,现在只能水一篇宝塔nginx升级至1.13.3的文章了.

首先,宝塔的nginx必须是nginx1.12 ,tengine和nginx1.8.0升级我没试过,不敢保证没有问题.

获得宝塔nginx的编译参数

nginx -V

image

从图中可以看出他的版本号和配置文件路径和添加的模块路径都在/www/server下,其中/www是宝塔默认安装路径,server则是宝塔存服务端和配置文件的路径,于是确定了这是宝塔的nginx,将configure arguments:后面的参数cpoy下来,后面需要用到.

下载nginx 1.13.3

这部分很简单,就不截图了,直接贴命令

wget http://nginx.org/download/nginx-1.13.3.tar.gz
tar zxvf nginx-1.13.3.tar.gz

你也可以去nginx官网找最新版,但是版本号差很多的话我不确定是否能用.

编译nginx

直接给出命令,其中./configure后面那一串就是刚刚copy的configure arguments:后面的参数(保险起见请copy自己的那一段参数)

cd nginx-1.13.3
./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E
make -j 3

image

这里说明下,首先是运行./configure之后会有ipv6的警告,这个可以不用理会,make -j 3代表同时使用3线程编译,我的ks3c的cpu是4核,3核用来编译,1核拿来正常用,根据自己cpu核数调节,如果编译时看到killed字样的话按ctrl+c停止编译,然后直接make编译.

安装

这里需要注意,不要直接make install,这样可能会覆盖一些配置文件,先通过find / -name nginx查找当前服务器里名为nginx的文件或目录.

image

这里可以看到在/www/server目录里有几个叫nginx的文件或目录,其中最可疑的就是/www/server/nginx/sbin/nginx ,直接执行/www/server/nginx/sbin/nginx -V可以看到nginx的版本和参数都和宝塔nginx的一样,可以确定这就是宝塔的nginx.

image

然后使用cp命令将编译好的新版本覆盖掉宝塔的nginx.

cp objs/nginx /www/server/nginx/sbin/nginx

这里要注意,如果提示文件正忙需要先去宝塔停止nginx之后再覆盖,覆盖后再打开nginx,如果没有提示文件正忙直接覆盖后去面板点击重载配置.

到这里宝塔nginx已经变成1.13.3版本了,可以传个探针看一下.

image

其它提示

宝塔nginx路径可以会变更,如果发现路径不是/www/server/nginx/sbin/nginx的话,find找到的每个都加 -V试一下.
nginx编译时的./configure参数中的openssl需要使用宝塔自带的openssl那个路径,之前我使用了自己下载的新版,编译时提示lua错误,具体原因不知.
上面的cp命令中的objs/nginx是自己编译后的nginx,nginx编译后文件会生成在编译目录的objs目录里.

标签: 无