程序员

Nginx环境搭建以及如何使用C语言搭建Fastcgi

2020-06-09  本文已影响0人  高数之父

先下载安装软件。
链接:https://share.weiyun.com/qVya0bSY 密码:hqajkt

$ 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

再访问自己虚拟机或者云主机的IP。则可以看见界面了。


image.png

常用的nginx启动和关闭命令。

启动
./nginx   默认使用/usr/local/nginx/conf/nginx.conf 文件
./nginx  -c  配置文件路径
关闭
. /nginx -s quit
强制关闭
./nginx -s stop

怎么写配置文件的教程日后再写。

如何使用cgi
(1)安装软件
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的相对路径。因为上面三个参数都在这个文件中。

//开始写一个打印当前系统下所有用户的用户名的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("Can't open dir!");
    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;
}

然后使用访问 XXXX:9000端口,即可看见网页。

上一篇下一篇

猜你喜欢

热点阅读