在linux centos 7 服务器上安装 fcgiwrap spawn nginx 处理自己的 CGI脚本
在linux centos 7 服务器上安装 fcgiwrap spawn nginx 处理自己的 CGI脚本
1
踩坑 注意
在centos7 上用yum 下载执行失败!
yum -y install autoconf automake libtool fcgi fcgi-devel spawn-fcgi
在centos7 这样安装是行不通的!
否则在执行 systemctl start fcgiwrap 会报错的!!也就是无法正常启动!!
2 正确的安装姿势是采用 手动安装的方式
2.1先下载 Nginx+fcgiwrap+Git
用git 拉取太慢了,估计给墙了。
git clone git://github.com/gnosek/fcgiwrap.git
直接在网盘下载Nginx+fcgiwrap+Git服务器配置.zip

注意 启动脚本要放到 /etc/init.d/fcgiwrap 这个文件里(不是文件夹)
最后将圈起来的文件上传到 linux centos7 中 准备安装
2.2 安装 fcgiwrap
在windows中打开 fcgiwrap-master 文件夹 找到 README.rst 里面记录了 安装步骤

打开后:

关键安装命令:
autoreconf -i
./configure
make
make install
在linux中进入到 fcgiwrap-master 文件夹 顺序执行 上述命令即可完成安装fcgiwrap
2.3 安装 spawn
在windows中找到 README.md

打开后

关键的执行命令
./autogen.sh
./configure
make
make install
在linux中进入到 spawn-fcgi-master 文件夹 顺序执行 上述命令即可完成安装spawn
2.4 配置开机脚本
vi /etc/init.d/fcgiwrap
在复制粘贴 fcgiwrap.sh 之前需要做一些处理
fcgiwrap.sh 脚本

FCGI_USER=www
FCGI_GROUP=www
要换成自己的用户和用户组。不要用root:root fcgi无法以root 启动
DEAMON 要替换为 /usr/local/bin/spawn-fcgi
否则执行命令 systemctl start fcgiwrap 会报错
换成自己的用户和用户组之前一定要创建好!!
此处以 cgi 用户举例
创建名为cgi的用户组
groupadd cgi
创建名为cgi的用户,并将其加入cgi组
useradd -g cgi cgi
在fcgiwrap.sh 中 替换
FCGI_USER=cgi
FCGI_GROUP=cgi
DEAMON=/usr/local/bin/spawn-fcgi
最后将 fcgiwrap.sh 中的全部内容 复制到 vi /etc/init.d/fcgiwrap 中wq保存退出
注意 fcgiwrap 一定要赋给执行权限 可以执行 chmod 777 fcgiwrap(偷懒的做法)
最后执行命令
systemctl start fcgiwrap 启动服务
chkconfig fcgiwrap on 设置服务开机自启
可以执行 systemctl status fcgiwrap 查看启动状态

显示 running 就证明启动成功了!! 若是有报错也会显示在这里!!
--------------CGI脚本有很多这里以执行shell脚本为例------------------
3 修改 nginx 配置 (仅供参考)
# 仅允许访问 .sh 后缀的脚本
location ~ \.sh$ {
# 限制访问来源(根据实际需求调整)
# allow 192.168.1.0/24; # 允许内网访问
# deny all;
# 安全配置
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME /usr/local$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
# 禁用危险环境变量 这条指令用于设置 PHP 的 open_basedir 限制,这可以增强服务器的安全性
# fastcgi_param PHP_ADMIN_VALUE "open_basedir=/usr/local/:/tmp/";
# 包含默认 FastCGI 参数
include fastcgi_params;
# 增加超时设置
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
nginx 配置好了后 还是不能正常访问 那是因为 启动nginx 的和 不是 fastcgi指定的的 cgi 用户。。
方法一 将启动nginx的用户nginx (举例)加入到cgi用户组中(此方法对root无效)
nginx 加入到cgi 用户组 sudo usermod -a -G cgi nginx
方法二 执行 chmod 777 /var/run/fcgiwrap.socket
若是有其他问题 请自行排查 nginx 错误日志。
4执行
将要执行的shell 脚本 放到 /usr/local 下
注意 这个位置可以修改 修改位置在nginx配置中 fastcgi_param SCRIPT_FILENAME /usr/local$fastcgi_script_name; 路径在这里修改;
要将 执行的脚本 比如 test.sh 转移给 fastcgi指定的的 cgi 用户
chown cgi:cgi test.sh
同时要有可执行权限
chmod ug+x test.sh
或者
chmod 777 test.sh 偷懒的做法
5 写入test.sh 内容
在 test.sh 写入如下测试内容
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<html><body><h1>66666</h1></body></html>"
6 测试
在浏览器 输入 192.168.1.1:80/test.sh
就会返回 66666
证明执行成功!!!
完结撒花 ✿✿ヽ(°▽°)ノ✿
参考连接
https://blog.csdn.net/weixin_34115824/article/details/91940413?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-91940413-blog-109363138.235^v43^pc_blog_bottom_relevance_base1&spm=1001.2101.3001.4242.2&utm_relevant_index=3
https://download.csdn.net/download/tendarouter/88598939?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522b4ea554bd6ddc85ba08e3e069865b5a1%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fdownload.%2522%257D&request_id=b4ea554bd6ddc85ba08e3e069865b5a1&biz_id=1&utm_medium=distribute.pc_search_result.none-task-download-2~download~first_rank_ecpm_v1~rank_v31_ecpm-1-88598939-null-null.269^v2^control&utm_term=Nginx%2Bfcgiwrap%2BGit%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E5%8C%85%E5%90%ABfcgiwrap%E5%92%8Cspawn-fcgi%E6%BA%90%E4%BB%A3%E7%A0%81&spm=1018.2226.3001.4451.2
https://blog.csdn.net/huliwho/article/details/75088333
- 本文标签: Linux 中间件 其他
- 本文链接: https://www.sqhelp.cn/article/39
- 版权声明: 本文由沙丘原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权