欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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端口

相关标签: nginx