nginx的cgi应用
程序员文章站
2022-03-29 19:29:08
...
$ cd ~
$ mkdir nginx
$ cd nginx
解压每个包
$ tar xzvf nginx-1.13.7.tar.gz
$ tar xzvf openssl-1.1.0g.tar.gz
$ tar xzvf pcre-8.41.tar.gz
$ tar xzvf zlib-1.2.11.tar.gz
进入相应nginx目录 切记,将kogan换成自己的用户名。
$ cd nginx-1.13.7
./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_addition_module --with-http_ssl_module --with-http_gzip_static_module --with-http_secure_link_module --with-http_stub_status_module --with-stream --with-pcre=/home/kogan/nginx/pcre-8.41 --with-zlib=/home/kogan/nginx/zlib-1.2.11 --with-openssl=/home/kogan/nginx/openssl-1.1.0g
$ make
$ sudo make install
启动nginx
$ /usr/local/nginx/sbin/nginx
启动
./nginx 默认使用/usr/local/nginx/conf/nginx.conf 文件
./nginx -c 配置文件路径
关闭
./nginx -s quit
强制关闭
./nginx -s stop
如何使用cgi
tar xfzv spawn-fcgi-1.6.4.tar.gz
cd spawn-fcgi-1.6.4
./configure
make
make install
cd src
cp src/spawn-fcgi /usr/local/nginx/sbin
tar xzfv fcgi.tar.gz
cd fcgi-2.4.1-SNAP-0311112127
./configure
vim include/fcgio.h
在#include <iostream>下面添加
#include <stdio.h>
make
make install
开始写一个打印当前系统下所有用户的用户名的cgi程序。
#include <stdio.h>
#include <unistd.h>
#include <fcgi_stdio.h>
#include <sys/types.h>
#include <string.h>
#include <dirent.h>
int main(int argc, char **argv)
{
while(FCGI_Accept() >= 0)
{
printf("Content-type: text/html\r\n");
printf("\r\n");
printf("<title>my cgi</title>");
printf("<h1> sad</h1>");
printf("current user:\n");
struct dirent *pDirInfo;
DIR *pDir = opendir("/home");
chdir("/home");
if(argc < 2)
{
pDir = opendir(".");
}
else
{
pDir = opendir(argv[1]);
}
if(NULL == pDir)
{
perror("open dir fail!");
return -1;
}
while( (pDirInfo = readdir(pDir)) != NULL )
if(strcmp(pDirInfo->d_name, "..") && strcmp(pDirInfo->d_name, "."))
{
printf("%s\n",pDirInfo->d_name);
}
closedir(pDir);
}
return 0;
}
使用gcc -o index mycgi.c -lfcgi
tar xfzv spawn-fcgi-1.6.4.tar.gz
cd spawn-fcgi-1.6.4
./configure
make
make install
cd src
cp src/spawn-fcgi /usr/local/nginx/sbin
tar xzfv fcgi.tar.gz
cd fcgi-2.4.1-SNAP-0311112127
./configure
vim include/fcgio.h
在#include <iostream>下面添加
#include <stdio.h>
make
make install
cd /usr/local/nginx/sbin
使用root用户执行以下命令或者给spawn-fcgi程序777权限,以便于用其他用户执行:
./spawn-fcgi -a 127.0.0.1 -p 9002 -f /home/kogan/share/index (该路径替换成你自己的)
出现spawn-fcgi: child spawned successfully: PID: 6447则代表成功。
如果出现spawn-fcgi: child exited with: 127
则采用这个方法:
ln -s /usr/local/lib/libfcgi.so.0.0.0 /usr/lib/libfcgi.so.0
创建配置conf文件
在/usr/local/nginx/conf下创建demo.conf文件
worker_processes 4;
events {
worker_connections 1024; #最大连接数
}
http {
server {
listen 9000;
location / {
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME cgi$fastcgi_script_name; #输入 nginx -c 路径时的变量
include ../conf/fastcgi_params;
}
}
}
fastcgi_index 默认打开的cgi文件 根据上述配置直接访问IP:9000,那么默认就是打开 XXX:9000/index.cgi
fastcgi_param SCRIPT_FILENAME cgi$fastcgi_script_name 打开的脚本文件
使用 nginx -c conf/demo.conf conf/demo.conf就是fastcgi_script_name
include fastcgi_params; 包含fastcgi_params的以demo.conf的相对路径。因为上面三个参数都在这个文件中。
然后使用访问 XXXX:9000端口
上一篇: Windows下mysql5.7服务安装
下一篇: CSS3 3D酷炫立方体变换动画的实现