主进程可以处理以下的信号:
命令说明 备注
TERM, INT 快速关闭
QUIT 从容关闭
HUP 重载配置用新的配置开始新的工作进程 从容关闭旧的工作进程
USR1 重新打开日志文件
USR2 平滑升级可执行程序
WINCH 从容关闭工作进程
6)默认目录结构
主目录:/usr/local/nginx/
配置目录:/usr/local/nginx/conf/
root目录:/usr/local/nginx/html/
可执行文件路径:/usr/local/nginx/sbin/
3.2.spawn_fastcgi的安装、部署与配置
spawn_fastcgi https://github.com/lighttpd/spawn-fcgi
这里使用的是1.6.3的版本 https://github.com/lighttpd/spawn-fcgi/releases/tag/v1.6.3
下载以后解压并安装(请记得看README)
如果没有configure,请先执行./autogen.sh,生成configure
./configure
make
编译好以后,将可执行文件移动到nginx的sbin目录下
cp ./src/spawn-fcgi /usr/local/nginx/sbin/ (cp到nginx的安装目录下)
3.3.fastcgi库的安装(库绝对不是必须的,觉得技术好的大牛可以自己写)
库地址
下载以后,解压并安装 (默认安装)
./configure
make
make install
4.Demo和web发布
4.1.Demo程序
[CGI程序]
#include <fcgi_stdio.h>
#include <stdlib.h>
int main() {
int count = 0;
while (FCGI_Accept() >= 0) {
printf("Content-type: text/html\r\n"
"\r\n"
""
"FastCGI Hello!"
"Request number %d running on host%s "
"Process ID: %d\n", ++count, getenv("SERVER_NAME"), getpid());
}
return 0;
}
[编译]
g++ demo.cc -o demo -lfcgi
直接运行可执行文件,看看能否正常运行。如果出现缺少库libfcgi.so.0,则自己需要手动把/usr/local/lib/libfcgi.so.0库建立一个链接到/usr/lib/目录下:ln -s /usr/local/libfcgi.so.0 /usr/lib/(或者把so的库路径添加到/etc/ld.so.conf,并执行ldconfig更新一下)
4.2.Web发布
1)将CGI可执行程序移动到nginx的安装目录下 /usr/local/nginx/cgibin (文件夹不存在则自己创建)
2)启动spawn-fcgi管理进程,并绑定server IP和端口(不要跟nginx的监听端口重合)
/usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 8088 -f /usr/local/nginx/cgibin/demo
查看一下9002端口是否已成功:netstat -na | grep 8088
3)更改nginx.conf配置文件,让nginx转发请求
在http节点的子节点-"server节"点中下添加配置
location ~ \.cgi$ {
fastcgi_pass 127.0.0.1:8088;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME fcgi$fastcgi_script_name;
include fastcgi_params;
}
4)重启nginx或者重新加载配置文件
重新加载配置文件
sudo kill -HUP [pid]
或者
重启nginx
killall nginx
./nginx
5)打开浏览器访问一下吧
搞定收工,心里又小小的激动了一把!
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里
相关阅读:
CentOS 6.2实战部署Nginx+MySQL+PHP