Nginx安装与性能优化
2015-11-26 10:24
671 查看
NGINX 安装
前提:完整的编译环境 gcc g++ make 开发库等系统:Linux Ubuntu-server-12.04-64bit
内核:Linux 3.13.0-68-generic
apt-get install build-essential apt-get install libtool
1.选定源码目录
可以是任何目录,本文选定的是/usr/local/src
2.安装PCRE库
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:
cd /usr/local/src wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz tar -zxvf pcre-8.37.tar.gz cd pcre-8.37 ./configure make sudo make install
3.安装zlib库
http://zlib.net/zlib-1.2.8.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:
cd /usr/local/src wget http://zlib.net/zlib-1.2.8.tar.gz tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure make sudo make install
4.安装ssl(某些vps默认没装ssl)
cd /usr/local/src wget http://www.openssl.org/source/openssl-1.0.2d.tar.gz tar -zxvf openssl-1.0.2d.tar.gz cd openssl-1.0.2d ./config --prefix=/usr/local --openssldir=/usr/local/ssl make sudo make install ./config shared --prefix=/usr/local --openssldir=/usr/local/ssl make clean make sudo make install
5.安装nginx
Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:
cd /usr/local/src wget http://nginx.org/download/nginx-1.9.6.tar.gz tar -zxvf nginx-1.9.6.tar.gz cd nginx-1.9.6 ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-stream \ --with-pcre=/usr/local/src/pcre-8.37 \ --with-zlib=/usr/local/src/zlib-1.2.8 \ --with-openssl=/usr/local/src/openssl-1.0.2d make sudo make install
–with-stream 用于激活支持TCP
–with-pcre=/usr/src/pcre-8.37 指的是pcre-8.37 的源码路径。
–with-zlib=/usr/src/zlib-1.2.8 指的是zlib-1.2.8 的源码路径。
6.启动
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功
Nginx官方配置说明
http://nginx.org/en/docs/stream/ngx_stream_core_module.html
NGINX 卸载
apt卸载nginx方法(仅限于使用apt-get install 安装的Nginx)卸载方法1.
删除nginx,保留配置文件
sudo apt-get remove nginx
删除配置文件
rm -rf /etc/nginx
卸载方法2.
删除nginx连带配置文件
sudo apt-get purge nginx # Removes everything.
卸载不再需要的nginx依赖程序
sudo apt-get autoremove
NGINX Configuration
以下配置文件适用于 Nginx TCP 负载均衡user root root; #nginx进程数,建议按照cpu数目来指定,一般为它的倍数。 worker_processes 4; #为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。 worker_cpu_affinity 00010000 00100000 01000000 10000000; error_log /usr/local/nginx/logs/error.log; error_log /usr/local/nginx/logs/error.log notice; error_log /usr/local/nginx/logs/error.log info; #pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 204800; #use epoll 使用epoll的I/O模型。 #worker_connections 每个进程允许的最多连接数 events { use epoll; worker_connections 204800; } stream { upstream backend { server 192.168.90.3:1883 max_fails=3 fail_timeout=30s; server 192.168.90.5:1883 max_fails=3 fail_timeout=30s; server 192.168.90.197:1883 max_fails=3 fail_timeout=30s; } server { listen 192.168.90.5:29535; proxy_connect_timeout 1s; #proxy_timeout 3s; proxy_pass backend; } }
Nginx 启动、停止、平滑启动、平滑升级
1.Nginx 启动启动nginx,可以执行一下命令(默认安装位置):
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf // 参数“-c”指定了配置文件的路径,如果不加,则Nginx会默认加载其安装目录的conf子目录中的ngin.conf
2.Nginx 停止
nginx的停止方法有很多种,一般是发送系统信号给nginx主进程来停止nginx。我们通过ps命令来查找nginx的主进程号
ps -ef |grep nginx
备注信息为“master process”它表示主进程。为“worker”的是子进程。
如果在nginx.conf中指定了pid文件存放路径,则该文件存放的就是nginx的主进程号。
如果没有指定,则默认存放在Nginx安装目录的log目录下。所以我们还可以这样做:
kill -信号类型 ‘/usr/local/nginx/logs/nginx.pid’
nginx支持以下几种信号:
TERM,INT :快速关闭
QUIT:从容关闭
HUP:平滑启动
USR1:重新打开日志文件
USR2:平滑升级可执行程序
EINCH:从容关闭工作进程
(1)从容停止nginx
kill -QUIT Nginx主进程号
(2)快速停止Nginx
kill -TERM Nginx主进程号
(3)强制停止所有nginx进程
pkill -9 Nginx主进程号
3.Nginx 平滑启动/Nginx 重加载
如果改变了配置文件,想重启让其生效,同样可以通过发送系统信号给Nginx主进程。
不过,在重启之前,要确认配置文件的语法是正确的,否则将不会加载新的配置项。
通过以下语句测试配置文件语法是否正确:
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf // 其中-t表示测试,并不真正执行。
然后,通过以下命令重加载Nginx配置:
kill -HUP master进程号
执行上面命令之后,Nginx运行新的工作进程,旧工作进程继续为已有的连接服务,等所有旧的连接成功后,旧的工作进程才被关闭。
4.Nginx 平滑升级
当需要将正在运行的nginx升级、添加/删除服务器模块时,可以在不中断的情况下使用新版本、重编译的nginx可执行程序替换旧版本的可执行程序。步骤如下:
(1)备份旧的可执行程序
(2)发送以下指令
kill -USR2 旧的版本nginx主进程号
(3)旧版本的nginx的主进程将重命名他的pid文件为.oldbin。然后执行新版本的nginx可执行程序。依次启动新的主进程和新的工作进程。
(4)此时新旧版本的nginx会同时运行,共同处理输入请求。要逐步停止旧版本的nginx实例,需要发送WINCH信号给旧的主进程,然后他的工作进程就从容关闭:
kill -WINCH 旧版本的主进程号
(5)一段时间后,旧的工作进程处理完所有的已连接请求后退出,仅有新的工作进程来处理输入请求。
(6)这时候我们可以决定是使用新的版本还是恢复到旧版本。
5.Nginx 启动脚本
#!/bin/sh # chkconfig: 2345 85 15 # description:Nginx Server NGINX_HOME=/usr/local/nginx NGINX_SBIN=$NGINX_HOME/sbin/nginx NGINX_CONF=$NGINX_HOME/conf/nginx.conf NGINX_PID=$NGINX_HOME/logs/nginx.pid NGINX_NAME="Nginx" . /etc/rc.d/init.d/functions if [ ! -f $NGINX_SBIN ] then echo "$NGINX_NAME startup: $NGINX_SBIN not exists! " exit fi start() { $NGINX_SBIN -c $NGINX_CONF ret=$? if [ $ret -eq 0 ]; then action $"Starting $NGINX_NAME: " /bin/true else action $"Starting $NGINX_NAME: " /bin/false fi } stop() { kill `cat $NGINX_PID` ret=$? if [ $ret -eq 0 ]; then action $"Stopping $NGINX_NAME: " /bin/true else action $"Stopping $NGINX_NAME: " /bin/false fi } restart() { stop start } check() { $NGINX_SBIN -c $NGINX_CONF -t } reload() { kill -HUP `cat $NGINX_PID` && echo "reload success!" } relog() { kill -USR1 `cat $NGINX_PID` && echo "relog success!" } case "$1" in start) start ;; stop) stop ;; restart) restart ;; check|chk) check ;; status) status -p $NGINX_PID ;; reload) reload ;; relog) relog ;; *) echo $"Usage: $0 {start|stop|restart|reload|status|check|relog}" exit 1 esac
上面是nginx的启动脚本,只要把它拷贝至/etc/init.d目录下,就可以通过service nginx start等目录操作nginx。
相关文章推荐
- Nginx服务器的功能模块
- linux+nginx搭建server与client通过证书双向认证环境
- [转]Nginx+ThinkPHP不支持PathInfo的解决办法
- Mac下安装LNMP(Nginx+PHP5.6)环境(转)
- lamp+nginx代理+discuz+wordpress+phpmyadmin
- Linux nginx 配置 location 语法 正则表达式
- Linux操作系统安装nginx
- Nginx服务器
- 【nginx】负载均衡和proxy的配置
- Nginx下用webbench进行压力测试
- Nginx 配置详解
- Linux下搭建nginx php环境
- keepalived+nginx的nginx高可用(个人简单不详细记录)
- nginx中location中关于proxy_pass和rewrite的应用
- nginx upstream setting
- Zabbix 监控Nginx_status 自动发现脚本
- Yii自定义错误页面(403,404)和NGINX 配置404错误页面转向
- 【读书笔记】深入理解Nginx模块开发与架构解析(一)
- Linux下nginx编译安装教程和编译参数详解
- linux安装nginx