linux系统为rhel5.6,nginx版本为nginx-1.1.6.tar.gz,可以到网上下载最新的安装,由于nginx是基于很多模块实现强大的功能,所以要安装并编译其他模块软件包,这里安装的模块软件包有:agentzh-encrypted-session-nginx-module-v0.02-0-gc752861.tar.gz、chunkin-nginx-module-0.23rc2.tar.gz、google-perftools-1.8.3.tar.gz、libunwind-0.99.tar.gz、pcre-8.11.tar.gz、simpl-ngx_devel_kit-v0.2.17-10-g4192ba6.tar.gz,如果有需要还可以下载更多的包进行编译安装,可以到wiki.nginx.org里面下载需要的软件与文档等。安装nginx要先从安装各模块包开始,各模块包的安装没有先后顺序限制,当然在开始安装这些包前要先安装gcc、gcc-c++等工具、先确保系统的80端口没有被占用等先前工作。
操作过程:
[root@localhost ~]# yum install gcc gcc-c++ openssl-devel -y ###准备工作
[root@localhost ~]# mkdir nginx ###将nginx模块包放在这个目录中
[root@localhost nginx]# tar zxf agentzh-encrypted-session-nginx-module-v0.02-0-gc752861.tar.gz
[root@localhost nginx]# mv agentzh-encrypted-session-nginx-module-c752861/ encrypted-session-nginx-module ###该模块仅解压即可,不需要编译安装,需要在编译nginx时将其加进去
[root@localhost nginx]# tar zxf chunkin-nginx-module-0.23rc2.tar.gz
[root@localhost nginx]# mv chunkin-nginx-module-0.23rc2 chunkin-nginx-module ###该模块仅解压即可,不需要编译安装,需要在编译nginx时将其加进去
[root@localhost nginx]# tar zxf google-perftools-1.8.3.tar.gz
[root@localhost nginx]# mv google-perftools-1.8.3 google-perftools ###该模块仅解压即可,不需要编译安装,需要在编译nginx时将其加进去
[root@localhost nginx]# cd google-perftools
[root@localhost google-perftools]# ./configure --enable-frame-pointers ####如果是64位系统要加--enable-frame-pointers参数
[root@localhost google-perftools]# make &&make install ###该模块编译安装后还要在nginx编译时将其添加进去
[root@localhost nginx]# tar zxf libunwind-0.99.tar.gz
[root@localhost nginx]# mv libunwind-0.99 libunwind
[root@localhost nginx]# cd libunwind
[root@localhost libunwind]# ./configure CFLAGS=-fPIC
[root@localhost libunwind]# make CFLAGS=-fPIC
[root@localhost libunwind]# make install CFLAGS=-fPIC ####该模块编译安装要加CFLAGS=-fPIC
[root@localhost nginx]# tar zxf pcre-8.11.tar.gz
[root@localhost nginx]# cd pcre-8.11
[root@localhost pcre-8.11]# ./configure
[root@localhost pcre-8.11]# make
[root@localhost pcre-8.11]# make install ####安装nginx需要的正则表达式包,该软件作用是nginx的rewrite功能需要它
[root@localhost nginx]# tar zxf simpl-ngx_devel_kit-v0.2.17-10-g4192ba6.tar.gz
[root@localhost nginx]# mv simpl-ngx_devel_kit-4192ba6/ simpl-ngx_devel_kit ###该模块仅解压即可,不需要编译安装,需要在编译nginx时将其加进去
[root@localhost nginx]# ln -s /usr/local/lib/libprofiler.so.0 /lib/
[root@localhost nginx]# ln -s /usr/local/lib/libprofiler.so.0 /usr/lib/
[root@localhost nginx]# ln -s /usr/local/lib/libunwind.so.7 /lib/
[root@localhost nginx]# ln -s /usr/local/lib/libunwind.so.7 /usr/lib/ ####这4步的软链接需要做,我这里是32位系统,如果是64位系统,可以做下面几步:
[root@localhost nginx]# ln -s /usr/local/lib/libprofiler.so.0 /lib/
[root@localhost nginx]# ln -s /usr/local/lib/libprofiler.so.0 /usr/lib/
[root@localhost nginx]# ln -s /usr/local/lib/libprofiler.so.0 /lib64/
[root@localhost nginx]# ln -s /usr/local/lib/libprofiler.so.0 /usr/lib64/
[root@localhost nginx]# ln -s /usr/local/lib/libunwind.so.7 /lib/
[root@localhost nginx]# ln -s /usr/local/lib/libunwind.so.7 /usr/lib/
[root@localhost nginx]# ln -s /usr/local/lib/libunwind.so.7 /lib64/
[root@localhost nginx]# ln -s /usr/local/lib/libunwind.so.7 /usr/lib64/
[root@localhost nginx]# tar zxf nginx-1.1.6.tar.gz
[root@localhost nginx]# cd nginx-1.1.6
[root@localhost nginx-1.1.6]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-file-aio --with-http_stub_status_module --with-http_sub_module --with-http_addition_module --with-http_random_index_module --with-http_secure_link_module --with-http_dav_module --with-http_mp4_module --with-http_degradation_module --with-http_gzip_static_module --with-google_perftools_module --with-http_flv_module --add-module=/root/nginx/chunkin-nginx-module --add-module=/root/nginx/simpl-ngx_devel_kit --add-module=/root/nginx/encrypted-session-nginx-module ####将上面解压或者安装好的各模块软件添加进去
[root@localhost nginx-1.1.6]# make
[root@localhost nginx-1.1.6]# make install
[root@localhost nginx]# useradd -M www ####创建不带用户目录www用户
[root@localhost nginx]# /usr/local/nginx/sbin/nginx ####启动nginx服务
[root@localhost ~]# ps -ef |grep nginx ####如果配置文件中的 user nobody没有划掉注释,这里的worker process使用者会是nobody,去掉注释后会变成nobody
root 3324 1 0 10:18 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 3325 3324 0 10:18 ? 00:00:00 nginx: worker process
nobody 3326 3324 0 10:18 ? 00:00:00 nginx: worker process
nobody 3327 3324 0 10:18 ? 00:00:00 nginx: worker process
nobody 3328 3324 0 10:18 ? 00:00:00 nginx: worker process
root 4035 12365 0 10:50 pts/3 00:00:00 grep nginx
[root@localhost ~]# cat /usr/local/nginx/logs/nginx.pid ####这两步都发现有nginx服务进程,说明nginx启动成功
3324
走到这里,nginx安装完成并且可以正常运行,下面对nginx优化,这里对nginx的配置文件里的参数优化,将nginx的原配置文件备份成nginx.conf_bak,下面是优化后的配置文件:
[root@localhost ~]# mv nginx_laoshi.conf /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# cat /usr/local/nginx/conf/nginx.conf
user nobody;
worker_processes 4;
worker_cpu_affinity 00000001 00000010 00000100 00001000
error_log logs/error.log error;
pid logs/nginx.pid;
events {
worker_connections 102400;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
client_header_buffer_size 4k;
large_client_header_buffer 4 32k;
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
#client_max_body_size 8m;
server_names_hash_bucket_size 128;
sendfile on;
#autoindex on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 120;
gzip on;
gzip_static on;
gzip_min_length 1k;
gzip_buffer 4 16k;
gzip_types text/css text/javascript application/xml text/plain application/x-javascript;
gzip_vary on;
gzip_comp_level 5;
upstream www.vfast.com.cn {
#ip_hash;
#fair;
#url_hash;
server 10.255.254.132:80 max_fails=5;
server 10.255.254.134:80 weight=10 ;
}
server {
listen 80;
server_name www.vfast.com.cn;
location / {
proxy_pass http://www.vfast.com.cn;
}
}
server {
listen 8080;
server_name stats.vfast.com.cn;
location /status {
stub_status on;
access_log off;
auth_basic "status";
}
}
}
这里的配置文件参数调优是针对某台机器做的,不同机器的参数调优也略有不同,应按实际情况的做,调优完成后,要重启nginx服务:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload ####nginx服务平滑的重启,或者也可以照下面的做也可以实现nginx平滑重启:
[root@localhost ~]# ps -ef |grep nginx |grep master |awk '{print $2}' ###只查找nginx主进程号
3324
[root@localhost ~]# kill -HUP 3324 ###nginx实现了平滑重启
ok,到这里,nginx的编译安装以及调优完成。