分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

Nginx支持web界面执行bash脚本

发布时间:2023-09-06 01:08责任编辑:沈小雨关键词:暂无标签

一直以来都是在终端执行shell等脚本,那web界面是否也可以这样,当然也是可以的
本文以centos 6为例安装配置

  1. 安装spawn-fcgi
    wget https://github.com/lighttpd/spawn-fcgi/archive/spawn-fcgi-1.6.4.zip
    unzip spawn-fcgi-1.6.4.zip && rm spawn-fcgi-1.6.4.zip 
    mv spawn-fcgi-spawn-fcgi-1.6.4/ spawn-fcgi
    cd spawn-fcgi/
    ./autogen.sh 
    ./configure 
    make && make install
  2. 安装fcgiwrap
    yum -y install fcgi fcgi-devel nginx
    wget https://github.com/gnosek/fcgiwrap/archive/1.1.0.zip
    unzip 1.1.0.zip 
    rm 1.1.0.zip 
    mv fcgiwrap-1.1.0/ fcgiwrap
    cd fcgiwrap/
    autoreconf -i
    ./configure 
    make && make install
  3. 添加fcgiwrap 启动脚本
    脚本启用用户要和你nginx启动用户一致,注意下脚本中路径及启动用户
    vim /etc/init.d/fcgiwrap
    #! /bin/bash### BEGIN INIT INFO# Provides: ?????????fcgiwrap# Required-Start: ???$remote_fs# Required-Stop: ????$remote_fs# Should-Start:# Should-Stop:# Default-Start: ????2 3 4 5# Default-Stop: ?????0 1 6# Short-Description: FastCGI wrapper# Description: ??????Simple server for running CGI applications over FastCGI### END INIT INFOPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binSPAWN_FCGI="/usr/local/bin/spawn-fcgi"DAEMON="/usr/local/sbin/fcgiwrap"NAME="fcgiwrap"PIDFILE="/var/run/$NAME.pid"FCGI_SOCKET="/tmp/$NAME.socket"FCGI_USER="nginx"FCGI_GROUP="nginx"FORK_NUM=5SCRIPTNAME=/etc/init.d/$NAMEcase "$1" in ???start) ???????echo -n "Starting $NAME... " ???????PID=`pidof $NAME` ???????if [ ! -z "$PID" ]; then ???????????echo " $NAME already running" ???????????exit 1 ???????fi ???????$SPAWN_FCGI -u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -P $PIDFILE -F $FORK_NUM -f $DAEMON ???????if [ "$?" != 0 ]; then ???????????echo " failed" ???????????exit 1 ???????else ???????????echo " done" ???????fi ???;; ???stop) ???????echo -n "Stoping $NAME... " ???????PID=`pidof $NAME` ???????if [ ! -z "$PID" ]; then ???????????kill `pidof $NAME` ???????????if [ "$?" != 0 ]; then ???????????????echo " failed. re-quit" ???????????????exit 1 ???????????else ???????????????rm -f $pid ???????????????echo " done" ???????????fi ???????else ???????????echo "$NAME is not running." ???????????exit 1 ???????fi ???;; ???status) ???????PID=`pidof $NAME` ???????if [ ! -z "$PID" ]; then ???????????echo "$NAME (pid $PID) is running..." ???????else ???????????echo "$NAME is stopped" ???????????exit 0 ???????fi ???;; ???restart) ???????$SCRIPTNAME stop ???????sleep 1 ???????$SCRIPTNAME start ???;; ???*) ???????echo "Usage: $SCRIPTNAME {start|stop|restart|status}" ???????exit 1 ???;;esac
    fcgiwrap

    chmod +x /etc/init.d/fcgiwrap

  4. 启动
    chkconfig --add fcgiwrap
    chkconfig --level 2345 fcgiwrap on
    ./etc/init.d/fcgiwrap restart
  5. nginx配置
    测试环境编辑/etc/nginx/conf.d/default.conf,添加
     ???location ~ ^/cgi-bin/cgi/.*\.(cgi|sh) { ?#这里的后缀匹配根据需要修改,可以使用统一cgi后缀 ???????gzip off; ???????fastcgi_pass unix:/tmp/fcgiwrap.socket; ???????fastcgi_index index.cgi; ???????include fastcgi_params; ???????fastcgi_param ?SCRIPT_NAME $document_root$fastcgi_script_name; ???}

    重启nginx:
    nginx -s reload
    mkdir -p /usr/share/nginx/html/cgi-bin 放置首页html
    mkdir -p /usr/share/nginx/html/cgi-bin/cgi 放置脚本

  6. 脚本测试
    vim  /usr/share/nginx/html/cgi-bin/cgi/disk.cgi
    #!/bin/bashecho "Content-Type:text/html;charset=utf-8"echo "" #前3行必须是这个格式,html代码使用echo,linux命令和脚本语法一样echo ‘<div style="padding-left:10px;">‘echo ‘<h1 style="color:red;border-left:4px solid;padding:4px;">硬盘使用情况</h1>‘echo ‘<h5>‘dd=`date`echo "统计时间: $dd"echo ‘</h5>‘echo ‘<pre style="border-left: 4px solid rgb(12, 40, 245);padding:5px">‘df -hTecho ‘</pre>‘
    disk.cgi

    访问:http://your-ip/cgi-bin/cgi/disk.cgi

Nginx支持web界面执行bash脚本

原文地址:http://www.cnblogs.com/Mrhuangrui/p/7800288.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved