Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中,配置lighttpd以基于特定URL调用本地python脚本的最简单方法是什么?_Python_Bash_Lighttpd - Fatal编程技术网

在bash中,配置lighttpd以基于特定URL调用本地python脚本的最简单方法是什么?

在bash中,配置lighttpd以基于特定URL调用本地python脚本的最简单方法是什么?,python,bash,lighttpd,Python,Bash,Lighttpd,在bash中,配置lighttpd调用本地python脚本,同时将URL中包含的任何查询字符串或名称-值对作为命令行选项传递给本地python应用程序进行解析的最简单方法是什么 Example: www.myapp.com/sendtopython/app1.py?Foo=Bar results in the following occurring on the system. >python app1.py Foo=Bar www.myapp.com/sendtopython/app

在bash中,配置lighttpd调用本地python脚本,同时将URL中包含的任何查询字符串或名称-值对作为命令行选项传递给本地python应用程序进行解析的最简单方法是什么

Example:
www.myapp.com/sendtopython/app1.py?Foo=Bar
results in the following occurring on the system. 
>python app1.py Foo=Bar

www.myapp.com/sendtopython/app2.py?-h
results in the following occurring on the system. 
>python app2.py –h
下面是一个lighttpd安装和配置脚本示例

#!/bin/bash
# Install and configure web console managed by lighttpd
# Suggested Amazon EC2 AMI : ami-0d729464
#
# The console installed into /opt/web-console and 
# available on the http://_the_server_dns_/web-console

set -e -x
export DEBIAN_FRONTEND=noninteractive

function die()
{
    echo -e "$@" >> /dev/console
    exit 1
}

apt-get update && apt-get upgrade -y
apt-get -y install python
apt-get -y install unzip
apt-get -y install lighttpd

# web directory defaults to /var/www. 
WEBDIR=/var/www/logs
mkdir $WEBDIR || die "Cannot create log directory."

PYTHON=`which python`
echo $?
if [ ! $? ]
then
echo "Python interpreter not installed or not found in system path!!!" >> /dev/console
echo "Exiting setup-instance..."
exit 1
fi

#Download web-console 
FILE_DOWNLOAD_URL=http://downloads.sourceforge.net/web-console/web-console_v0.2.5_beta.zip
wget $FILE_DOWNLOAD_URL -O web-console.zip || die "Error downloading file web-console.zip"

# Install the web-console
INSTALL_DIR=/opt/web-console

mkdir $INSTALL_DIR
unzip -u -d $INSTALL_DIR web-console.zip || die "Error extracting web-console.zip"
chown www-data:www-data $INSTALL_DIR

# Configure lighttpd
cat > $INSTALL_DIR/webconsole.conf <<EOF
server.modules  += ( "mod_cgi" )
alias.url       += ( "/web-console/wc.pl" => "/opt/web-console/wc.pl" )
alias.url       += ( "/web-console/" => "/opt/web-console/wc.pl" )
\$HTTP["url"] =~ "^/web-console/" {
        cgi.assign = ( ".pl" => "/usr/bin/perl" )
}
EOF

ln -s $INSTALL_DIR/webconsole.conf /etc/lighttpd/conf-enabled/
/etc/init.d/lighttpd force-reload

exit 0
#/bin/bash
#安装和配置lighttpd管理的web控制台
#建议的Amazon EC2 AMI:AMI-0d729464
#
#安装在/opt/web控制台中的控制台和
#可在http://_the_server_dns_/web-console
set-e-x
导出DEBIAN_前端=非交互式
函数die()
{
echo-e“$@”>>/dev/console
出口1
}
apt获取更新和apt获取升级-y
apt get-y安装python
apt get-y安装解压
apt get-y安装lighttpd
#web目录默认为/var/www。
WEBDIR=/var/www/logs
mkdir$WEBDIR | | die“无法创建日志目录。”
PYTHON=`哪个PYTHON`
回声$?
如果[!$?]
然后
echo“Python解释器未安装或未在系统路径中找到!!!”>/dev/console
echo“正在退出安装实例…”
出口1
fi
#下载网页控制台
文件下载地址=http://downloads.sourceforge.net/web-console/web-console_v0.2.5_beta.zip
wget$FILE_DOWNLOAD_URL-O web-console.zip | | die“下载文件web-console.zip时出错”
#安装web控制台
安装目录=/opt/web控制台
mkdir$INSTALL\u DIR
解压-u-d$INSTALL_DIR web-console.zip | | die“提取web console.zip时出错”
www数据:www数据$INSTALL\u DIR
#配置lighttpd
cat>$INSTALL_DIR/webconsole.conf“/opt/web console/wc.pl”)
\$HTTP[“url”]=~“^/web控制台/”{
cgi.assign=(“.pl”=>“/usr/bin/perl”)
}
EOF
ln-s$INSTALL\u DIR/webconsole.conf/etc/lighttpd/conf已启用/
/etc/init.d/lighttpd强制重新加载
出口0

Mh,首先我不会弄乱安装脚本,而是运行它一次,然后编辑生成的lighttpd配置文件(在您的例子中是webconsole.conf)

然后需要为CGI注册Python脚本,就像在安装脚本中为Perl注册一样。你可以加一行

cgi.assign = ( ".py" => "/usr/bin/python" )
在对应的.pl行下,这将使Python成为/web控制台/path的另一个CGI选项(如果您想在任何路径中将.py注册为CGI,请查找lighttpd文档)


然后,您的Python CGI脚本app1.py、app2.py。。。必须遵守CGI规范,如果我记得正确地将URL参数作为环境变量传递。因此,不能简单地使用sys.argv。我确信有一个Python模块可以为您进行参数提取。(在Perl中,Lincoln Stein的CGI模块能够同时使用env和命令行参数,但我不确定Python的参数)。

Mh首先,我不会弄乱安装脚本,而是运行它一次,然后编辑生成的lighttpd配置文件(在您的例子中是webconsole.conf)

然后需要为CGI注册Python脚本,就像在安装脚本中为Perl注册一样。你可以加一行

cgi.assign = ( ".py" => "/usr/bin/python" )
在对应的.pl行下,这将使Python成为/web控制台/path的另一个CGI选项(如果您想在任何路径中将.py注册为CGI,请查找lighttpd文档)


然后,您的Python CGI脚本app1.py、app2.py。。。必须遵守CGI规范,如果我记得正确地将URL参数作为环境变量传递。因此,不能简单地使用sys.argv。我确信有一个Python模块可以为您进行参数提取。(在Perl中,Lincoln Stein的CGI模块能够同时使用env和命令行参数,但我不确定Python的参数)。

为什么要显示安装脚本?这和什么有什么关系?我在需要时重新构建EC2实例,而不是让服务器运行。我加入了这个脚本来帮助沟通我工作的环境。为什么要显示安装脚本?这和什么有什么关系?我在需要时重新构建EC2实例,而不是让服务器运行。我加入了脚本来帮助沟通我工作的环境。