如何确保 bash 脚本可以通过网络执行而不位于 /cgi-bin 目录中?

如何确保 bash 脚本可以通过网络执行而不位于 /cgi-bin 目录中?

我的文档根目录是

 /0/

我没有任何 cgi-bin 目录。

这是我的 apache 虚拟主机:

Listen *:80
DirectoryIndex 1

<VirtualHost *:80>
DocumentRoot /0
ServerName domain.tld
ServerAlias www.domain.tld
</VirtualHost>

我想做的就是在这个目录中放置一个 bash 脚本。

文档根目录是..

在其中我将有..( test.sh )

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "test"

就这些。

我想我需要将此行添加到

/etc/sudoers

文件..

 apache ALL=NOPASSWD:/0/test.sh

这一切是否足以确保我实际上可以通过 bash 脚本和 python 脚本运行我的网站?

如果这有效..诸如此类的东西有什么用

mod_wsgi and python for the web ?

我想我还必须使 test.sh 可执行

chmod +x test.sh

如果这可行并且我将文档根设置为

index.sh

浪费时间使用 python 作为 Web 框架有什么意义呢?甚至是 python 本身,因为网络版的 bash 会更直接,因此更快。 ?

答案1

编辑文件<Directory "/0" >中的条目httpd.conf并添加:

Options +ExecCGI
AddHandler cgi-script .sh 

您最终应该得到类似以下内容的结果:

<Directory "/0" >
    ...
    Options +ExecCGI
    AddHandler cgi-script .sh 
    ...
</Directory>

重新启动您的服务器:

# service httpd restart

所有 CGI 文件都应该是可执行的 ( chmod +x <cgi file>)。该文件将以 userapache和 group身份运行apache

将您的浏览器指向http://<name or IP>/test.sh

CGI 并不是运行脚本的最有效方式,因为每个请求都会启动一个新进程(在本例中为 python 或 bash),但它确实使实现脚本变得更容易。 WSGI是比基本 CGI 脚本更有效的 Python 运行方式。

相关内容