1. Nginx环境搭建
1.1. Nginx简介
Nginx是一款高性能的Web服务器和反向代理服务器软件。
- Nginx是使用C语言开发的,作为提供Web服务的Web服务器,与Apache相比使用非常少的系统资源,支持更多的TCP/UDP并发链接,因此Nginx在节省资源的同时非常高效;
- Nginx作为提供负载均衡的服务器,Nginx可以直接内部支持PHP和Rails,同时支持HTTP代理服务器对外向用户提供代理服务。
- Nginx作为邮件代理服务器,拥有非常优秀的性能。
1.2. Nginx依赖的软件
- pcre pcre主要提供nginx的rewrite功能
- openssl openssl提供了nginx的https安全链接的功能
- zlib zlib提供nginx传输数据时使用gzip压缩功能
- 其他依赖软件
1.3. yum 快速安装
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
yum install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel php php-cli php-devel php-fpm php-common nginx -y
1.4. 编译安装
软件下载
http://tengine.taobao.org/download/tengine-2.2.0.tar.gz
http://www.nginx.org/download/nginx-1.8.1.tar.gz
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
https://www.openssl.org/source/old/1.0.2/openssl-1.0.2.tar.gz
http://119.29.227.151/zlib-1.2.11.tar.gz
软件安装
tar xf zlib-1.2.11.tar.gz -C /usr/local/
tar xf openssl-1.0.2.tar.gz -C /usr/local/
tar xf pcre-8.37.tar.gz -C /usr/local/
tar xf tengine-2.2.0.tar.gz
cd tengine-2.2.0
mkdir /usr/local/tengine/
./configure --prefix=/usr/local/tengine \
--with-zlib=/usr/local/zlib-1.2.11 \
--with-openssl=/usr/local/openssl-1.0.2 \
--with-pcre=/usr/local/pcre-8.37
make
注意: pcre这些软件只要解压就可以了,nginx会自动根据路径查找编译安装
1.5. 管理Nginx
nginx动作对应系统信号
stop SIGTERM
程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。
quit SIGQUIT
和SIGINT类似, 但由QUIT字符(通常是Ctrl-\)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。
reopen SIGUSR1
留给用户使用
reload SIGHUP
本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。
登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和后台进程组,一般都属于这个 Session。当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进 程组和后台有终端输出的进程就会中止。不过可以捕获这个信号,比如wget能捕获SIGHUP信号,并忽略它,这样就算退出了Linux登录,wget也 能继续下载。
此外,对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。
判断配置文件是否正确
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
开启Nginx服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
重启进程
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload
或者: kill -HUP 主进程号或进程号文件路径,-HUP重新加载配置文件
关闭服务
/usr/local/nginx/sbin/nginx -s quit 完整有序的停止nginx
/usr/local/nginx/sbin/nginx -s stop 快速停止服务
或者
nginx -s stop 快速退出 nginx -s quit 优雅退出 nginx -s reload 更换配置,启动新的工作进程,优雅的关闭以往的工作进程 nginx -s reopen 重新打开日志文件
从容停止 kill -QUIT 主进程号 快速停止 kill -TERM 主进程号 强制停止 kill -9 主进程号只能停止master进程,worker进程还没有kill掉,最好不要这个
1.6. 在线升级
先用新程序替换旧程序文件 kill -USR2 旧版程序的主进程号或者进程文件名,此时旧的nginx主进程会把自己的进程文件改名为.oldbin,然后执行新版nginx,此时新旧版本同时运行
6.[root@localhost sbin]# ./nginx -h
nginx version: nginx/1.8.1
Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file
-q : 测试配置文件时只输出错误信息,suppress阻止 -g :设置全局指令,在配置文件外