web执行python脚本_Nginx支持web界面执行bash.python等命令和脚本

使用说明

1,shell命令 | python命令 | 系统支持的都可以

2,不支持交互式显示 | 不支持动态内容显示

3,傻瓜式操作(页面点击链接一次,执行一次脚本内容)|可以设置页面自动刷新,实现重复执行脚本

使用要求

Linux系统(这里使用centos7演示)

软件安装

安装nginx

#创建nginx用户

useradd -M -s /sbin/nologin nginx

#添加epelyum源

wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo

#安装依赖包

yum -y install wget unzip bzip2 zlib zlib-devel pcre pcre-devel \

openssl openssl-devel geoip geoip-devel gd gd-devel gcc gcc-c++ make libtool

#创建相关源码包存放目录

mkdir /source && cd /source

#下载解压相关依赖源码包

wget https://www.jinchuang.org/novel/lnmp/pcre-8.35.tar.gz

wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz

wget https://www.jinchuang.org/novel/lnmp/zlib-1.2.8.tar.gz

tar xf pcre-8.35.tar.gz

tar xf openssl-1.0.2h.tar.gz

tar xf zlib-1.2.8.tar.gz

#下载nginx配置编译安装

wget http://nginx.org/download/nginx-1.18.0.tar.gz

tar xf nginx-1.18.0.tar.gz && cd nginx-1.18.0

./configure \

--prefix=/usr/local/nginx \

--pid-path=/var/run/nginx.pid \

--lock-path=/var/run/nginx.lock \

--http-client-body-temp-path=/usr/local/nginx/client_temp \

--http-proxy-temp-path=/usr/local/nginx/proxy_temp \

--http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \

--http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \

--http-scgi-temp-path=/usr/local/nginx/scgi_temp \

--user=nginx \

--group=nginx \

--with-mail \

--with-stream \

--with-threads \

--with-file-aio \

--with-poll_module \

--with-select_module \

--with-http_v2_module \

--with-http_flv_module \

--with-http_mp4_module \

--with-http_sub_module \

--with-http_dav_module \

--with-http_flv_module \

--with-http_ssl_module \

--with-http_geoip_module \

--with-http_slice_module \

--with-http_gunzip_module \

--with-http_realip_module \

--with-http_addition_module \

--with-http_image_filter_module \

--with-http_gzip_static_module \

--with-http_random_index_module \

--with-http_secure_link_module \

--with-http_degradation_module \

--with-http_stub_status_module \

--with-mail_ssl_module \

--with-stream_ssl_module \

--with-stream_realip_module \

--with-stream_ssl_preread_module \

--with-pcre=/source/pcre-8.35 \

--with-openssl=/source/openssl-1.0.2h \

--with-zlib=/source/zlib-1.2.8

maek && make install

添加nginx命令到系统环境中

echo 'export PATH=$PATH:/usr/local/nginx/sbin' >>/etc/profile && source /etc/profile

安装spawn-fcgi

yum install dh-autoreconf fcgi fcgi-devel-y

cd /source/

wget https://www.jinchuang.org/novel/lnmp/spawn-fcgi.zip

unzip spawn-fcgi.zip

mv spawn-fcgi-master spawn-fcgi && cd spawn-fcgi

./autogen.sh

./configure

make && make install

安装fcgiwrap

cd /source/

wget https://www.jinchuang.org/novel/lnmp/fcgiwrap.zip

unzip fcgiwrap.zip

mv fcgiwrap-master fcgiwrap && cd fcgiwrap

autoreconf -i

./configure

make && make install

创建fcgiwrap启动脚本 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 INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

SPAWN_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=5

SCRIPTNAME=/etc/init.d/$NAME

case "$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

增加执行权限

chmod +x /etc/init.d/fcgiwrap

启动服务

#启动nginx

nginx

#启动fcgiwrap

/etc/init.d/fcgiwrap start

下载html模板

#把下载的html模板放到nginx网站根目录下

cd /usr/local/nginx/html/

wget wget https://ossjc-1252545319.cos.ap-shanghai.myqcloud.com/webfile/zip/linux-shell.zip

unzip linux-shell.zip

#给脚本增加执行权限

cd linux-shell/page/script/

chmod +x */*

模板目录结构

page/script/ #命令脚本文件目录

page/h5/ #html页面(调用脚本,执行命令)

page/content/ #首页默认页面

# 程序html模板使用:(脚本文件要加执行权限,不然会提示403 错误)

cd linux-shell/page/script/

chmod +x */*

脚本文件名称说明:

disk #查看硬盘使用情况

info #提示信息内容

mem #内存使用情况

ps #系统进程概览

server #自定义服务进程查看

ssh #ssh连接用户情况

uptime #系统负载cpu和内存使用概览

命令代码脚本示例

#!/bin/bash

echo 'Content-Type:text/html;charset=utf-8'

echo ''

# 自动刷新

#echo '

# window.location.reload();

#},1000);'

#echo ''

# html页面css样式

echo '

body{color:#cecece;}

.title{color: #FF9800;border-left: 4px solid;padding: 4px;}

pre{font-size:14px;border-left: 4px solid #4CAF50;padding: 5px;}

'

# 定义变量

ip="192.168.x.x"

# 内容代码(命令返回结果放在

标签中)

echo '

'

echo '

硬盘使用情况

'

echo '

'

dd=`date`

echo "统计时间: $dd 【当前机器ip: $ip】"

echo ''

echo '

'

# 查看磁盘使用(本机)

df -hT

# 查看磁盘使用(远程机器,可以使用ansible|sshpass等远程非界面交互工具)

sshpass -p "password" ssh root@$ip -o StrictHostKeyChecking=no 'df -hT'

echo '

'

配置nginx转发

修改配置文件

#注意下修改为你的目录路径

#location ~ ^/linux-shell/page/script/.*\.(cgi) { #这里的cgi后缀匹配根据需要修改,后缀自定义即可

# linux-shell 为模板程序目录,放在nginx网站根目录下面

location ~ ^/linux-shell/page/script/ { #我这里调用的文件是没有后缀的就用这个配置

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

访问预览

0b8f0832be60c0be7d43fc0434fd3f32.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Docker中执行Ansible脚本是一种使用Docker容器来运行Ansible脚本的方法。Docker是一个开源的容器化平台,可以帮助我们构建、部署和运行应用程序。Ansible是一个自动化工具,用于配置和管理组件、服务和网络。 要在Docker中执行Ansible脚本,需要按照以下步骤进行操作: 1. 首先,我们需要在Docker中安装Ansible。我们可以使用Dockerfile来定义镜像,其中包含Ansible的安装和配置。在Dockerfile中,指定Ansible的安装命令,例如使用pip安装: ``` FROM debian:latest RUN apt-get update && apt-get install -y \ python \ python-pip RUN pip install ansible ``` 2. 构建Docker镜像。在终端中执行以下命令,将Dockerfile构建为镜像: ``` docker build -t ansible-docker . ``` 3. 运行Docker容器。执行以下命令以运行刚刚构建的镜像: ``` docker run -it ansible-docker /bin/bash ``` 这将启动一个交互式终端,我们可以在其中执行Ansible脚本。 4. 在Docker容器中执行Ansible脚本。在容器中,我们可以使用ansible-playbook命令执行Ansible脚本。首先,将Ansible脚本和相关文件复制到容器中,然后执行ansible-playbook命令。 ``` docker cp playbook.yml <container_id>:/playbook.yml docker exec -it <container_id> ansible-playbook /playbook.yml ``` 其中,<container_id>是容器的唯一标识符,可以使用docker ps命令查找。 通过以上步骤,我们可以在Docker容器中运行Ansible脚本。使用Docker来运行Ansible脚本可以确保环境的一致性,并且可以更好地管理和部署应用程序。 ### 回答2: 在Docker中执行Ansible脚本是一种便捷的方式,能够快速部署和管理多个虚拟环境。 首先,我们需要在Docker中安装Ansible。可以通过在Dockerfile中添加相关指令来实现。例如,使用以下命令安装Ansible和相应的依赖: RUN apt-get update && \ apt-get install -y ansible 接下来,我们可以创建一个Ansible的剧本(playbook),指定我们要在Docker中执行的任务。 剧本可以使用yaml格式编写,其中包含了由Ansible执行的一系列任务。例如,假设我们的剧本需要在Docker容器中安装Nginx服务器: --- - name: Install Nginx on Docker hosts: all tasks: - name: Install Nginx apt: name: nginx state: present become: true 然后,我们可以使用ansible-playbook命令来在Docker中执行该剧本。在运行该命令之前,我们需要确保Docker容器已经启动。 可以使用以下命令在Docker容器中执行Ansible剧本: docker exec <container_id> ansible-playbook <playbook_file> 其中,<container_id>表示Docker容器的ID,<playbook_file>表示Ansible剧本的文件路径。 执行命令后,Ansible将连接到指定的Docker容器,并执行剧本中定义的任务。在我们的例子中,Ansible将在Docker容器中安装Nginx服务器。 总结来说,通过在Docker中执行Ansible脚本,我们可以轻松地部署和管理多个虚拟环境,提高工作的效率和便捷性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值