nginx编译安装

闲来无事,一直听说nginx较之apache更小巧,但在执行效率上更高效。同时内存占用、多线程、抗DDos优于apache,虽在非生产环境无法验证这些,但秉承学无止境吧,尝试安装nginx。
1.安装nginx前准备好安装环境,如果你的linux服务器以minimal方式安装则在安装nginx前需要一些组件的支持。在我的安装过程中需要组建如下:
pcre、zlib-devel、openssl-devel
pcre安装可以到ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新源码包进行编译安装,以最新版本pcre-8.33为例:
cd /tmp
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz
tar zxvf pcre-8.33.tar.gz
cd pcre-8.33
./configure && make && make install
如果过程中没有报错的话则pcre安装成功
同理zlib-devel、openssl-devel也可尝试编译安装,图方便的话以centos为例可以yum安装,RHEL则需要挂载光盘镜像,搭建本地源或者直接提取需要的安装包进行安装。

2.nginx安装,以最新版本nginx-1.5.6为例:
wget http://nginx.org/download/nginx-1.5.6.tar.gz
tar zxvf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure –with-http_stub_status_module –with-http_ssl_module –prefix=/opt/nginx
make && make install
编译安装过程无报错的话则安装成功。

3.启动nginx:
执行 /opt/nginx/sbin/nginx
ps -ef | grep nginx
如果看到如下信息则nginx启动成功:
[root@CentOS6 nginx-1.5.6]# ps -ef | grep nginx
root     13719     1  0 21:52 ?        00:00:00 nginx: master process /opt/nginx/sbin/nginx
nobody   13722 13719  0 21:52 ?        00:00:00 nginx: worker process
一般来说第一次启动时可能会报如下错误
error while loading shared libraries: libpcre.so.1
可以看出是缺少lib文件,使用如下命令可以进行验证
ldd $(which /opt/nginx/sbin/nginx)
linux-gate.so.1 => (0x0071b000)
libpthread.so.0 => /lib/libpthread.so.0 (0×00498000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0×00986000)
libpcre.so.1 => not found
libcrypto.so.6 => /lib/libcrypto.so.6 (0×00196000)
libz.so.1 => /lib/libz.so.1 (0×00610000)
libc.so.6 => /lib/libc.so.6 (0x002d7000)
/lib/ld-linux.so.2 (0x006a8000)
libdl.so.2 => /lib/libdl.so.2 (0x008c3000)
可以看到libpcre.so.1 => not found,进入/lib重新生成链接即可解决
cd /lib
ln -s libpcre.so.0.0.1 libpcre.so.1
再次执行/opt/nginx/sbin/nginx即可启动成功,ps下应该可以看到nginx进程。
nginx修改配置后重新载入/opt/nginx/sbin/nginx -s reload
nginx配置文件路径为/opt/nginx/conf
nginx日志记录路径为/opt/nginx/logs
web访问测试服务器IP(如果防火墙未开放相应端口的话,记得提前关闭selinux、iptables),即可看到如下截图:

Welcome to nginx!至此,nginx安装完毕。

PS:nginx停止方法,话说这是我见过最烂的停止方法了。。。
ps -ef | grep nginx
查看master主进程PID号,然后执行kill -quit nginx PID号即可停止nginx
话说我都是直接pkill nginx一步解决~~

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据