公司有幾台點播伺服器,用的是nginx+nginx_mod_h264_streaming子產品,由于安裝的時間不同,是以幾台伺服器上的nginx版本都不相同,早起裝的是nginx1.0.5版本。而目前nginx都已經更新到mainline1.5.3版本,stable版本也更新到了1.4.3版本了。主要還是更新太快了,仔細考慮下,決定把使用的版本更新到1.3.3版。
準備工作需要确認伺服器系統版本,由于目前linux作業系統 的版本也比較多,而且分為x86 x64版,對于nginx需要的環境支援檔案也不盡相同。
首先nginx -V 确認下原來安裝時執行的configure指令
執行後會顯示目前nginx伺服器版本及./configure時添加的configure arguments.
穩妥起見把原來的nginx主檔案先備份下 mv nginx nginx.bak
詳細的重新編譯步驟就不在詳述了,一般套路 ./configure --prefix=/usr/local/nginx --等等根據自己要求來添加 後面make完成 cp objs/nginx /usr/local/nginx/sbin/
執行/usr/local/nginx/sbin/nginx -V 看下是否正确 正常情況下到這裡基本就完成了。
筆者在執行更新過程中遇到幾個問題,今天着重說下遇到的問題。
重新編譯過程中configure參數有改動使的目前環境不支援,缺少庫檔案的安裝包
正常完成編譯
/usr/local/nginx/sbin/nginx -V 報錯
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory
啟動過程中找不到某個library 從錯誤看出是缺少lib檔案導緻,進一步檢視
# ldd $(which /usr/local/nginx/sbin/nginx)
linux-vdso.so.1 => (0x00007fffb79ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5a10ea3000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f5a10c6c000)
libssl.so.6 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5a10a67000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5a106d3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5a110d3000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f5a10471000)
可看到 libssl.so.6 有個檔案未能找到 需要安裝openssl098e-0.9.8e-17.el6.centos.2.x86_64包,或者可以從别的伺服器上拷出方至/lib或者/lib64下。
完成後再次
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
ok了。