平时给nginx添加模块,或者升级版本的时候,都是在nginx源码目录里面./configure,然后重新make,最后用源码目录下,objs目录里面的nginx来替换原本的老版本可执行程序。为什么可以通过这种方式来升级呢?因为nginx安装后,安装目录里面一堆文件,正儿八经干活的其实就sbin/nginx一个。其他的都是龙套。现在我们同时安装两个版本,然后对比两个安装目录里面所有的文件,会发现,除了sbin/nginx不同,其他的文件都是一模一样的。
#先安装一些必要的组件 yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre-devel #下载 wget http://nginx.org/download/nginx-1.12.1.tar.gz wget http://nginx.org/download/nginx-1.10.3.tar.gz tar xf nginx-1.12.1.tar.gz tar xf nginx-1.10.3.tar.gz #添加用户 useradd -s /sbin/nologin -M www #安装 cd nginx-1.12.1 ./configure --user=www --group=www --prefix=/usr/local/nginx12 --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module && make && make install cd ../nginx-1.10.3 ./configure --user=www --group=www --prefix=/usr/local/nginx10 --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module && make && make install
然后我们把/usr/local/nginx12和/usr/local/nginx10目录里面的所有文件生成md5校验值。
[root@test local]# ls bin etc games include lib lib64 libexec nginx10 nginx12 sbin share src [root@test local]# cd nginx10 && md5deep -lr ./ > ../nginx10.md5 [root@test local]# cd nginx12 && md5deep -lr ./ > ../nginx12.md5 [root@test local]# cat nginx12.md5 e3eb0a1df437f3f97a64aca5952c8ea0 ./html/index.html d74f9cdd604653c22c6752c46fffd587 ./html/50x.html 3a0b1f2d0a5734fe3200a48703bafed2 ./conf/nginx.conf 88ac833ee8ea60904a8b3063fde791de ./conf/uwsgi_params 3a0b1f2d0a5734fe3200a48703bafed2 ./conf/nginx.conf.default 3e338aca6a53a5420fc791b5ef86f64c ./conf/koi-utf 4729c30112ca3071f4650479707993ad ./conf/fastcgi_params 88ac833ee8ea60904a8b3063fde791de ./conf/uwsgi_params.default 178a634a52a0777a4cf6f3a394fd2b53 ./conf/fastcgi.conf bd837e7b34f5c9b8d89957d0527f0d44 ./conf/mime.types.default 3749ffe19bedd842eb87e83d544e5ce6 ./conf/win-utf 4729c30112ca3071f4650479707993ad ./conf/fastcgi_params.default bfa0b80381fed2b1dfcf617b0ba204ec ./conf/koi-win bd837e7b34f5c9b8d89957d0527f0d44 ./conf/mime.types df8c71e25e0356ffc539742f08fddfff ./conf/scgi_params.default 178a634a52a0777a4cf6f3a394fd2b53 ./conf/fastcgi.conf.default df8c71e25e0356ffc539742f08fddfff ./conf/scgi_params 0853bf74c4916a9d9b670d810b64a4e4 ./sbin/nginx
然后我们对比两个.md5文件
[root@test local]# diff nginx10.md5 nginx12.md5 19c18 < 1a57e963e4b8622d5539a3230e8a4e39 ./sbin/nginx --- > f080e4347fd34e1dfdb9fed0362a237a ./sbin/nginx
新手看到这个diff的输出会有点云里雾里,所以我把两个.md5文件的最后一行(就是sbin/nginx校验值的那一行)都删掉
sed -i '$d' nginx10.md5 nginx12.md5 [root@test local]# diff nginx10.md5 nginx12.md5 [root@test local]# echo $? 0
diff没有任何输出,证明两个文件完全一致,龙套说得以证实。
其实,我们可以用nginx10目录下所有文件的MD5值nginx10.md5去校验nginx12目录
[root@test local]# md5deep -X nginx10.md5 -r nginx12/* f080e4347fd34e1dfdb9fed0362a237a /usr/local/nginx12/sbin/nginx
原创文章,转载请注明: 转载自笛声
本文链接地址: 为什么nginx可以通过替换可执行程序的方式升级
4 条评论
之前都是用虚拟空间,现在开始转战vps啦,话说lnmp,资源占用率好低啊,256M内存的vps,安装了Centosx64+lnmp,居然内才占用34%,佩服……
感觉这个还是满不错~~= = nginx还是强悍。然后你博客还是别用百度云加速了吧,对我IP很不友好啊
切到阿里的CDN了。
收藏了