在Synology NAS上提供Python CGI文件

在Synology NAS上提供Python CGI文件,python,apache,synology,Python,Apache,Synology,我无法让python文件在Apache2.2或2.4中运行时没有500个错误。我已经安装了WebStation、python、perl、php以及Apache2.2和2.4 我可以用apache提供静态文件。当我尝试提供一个最基本的“hello world”cgi时,我得到一个500错误。错误是 [cgid:error][pid 10076:tid 140542621480832](2)没有这样的文件或目录:AH01241:exec of['/volume2/Development/WebRep

我无法让python文件在Apache2.2或2.4中运行时没有500个错误。我已经安装了WebStation、python、perl、php以及Apache2.2和2.4

我可以用apache提供静态文件。当我尝试提供一个最基本的“hello world”cgi时,我得到一个500错误。错误是

[cgid:error][pid 10076:tid 140542621480832](2)没有这样的文件或目录:AH01241:exec of['/volume2/Development/WebRepo/cgi-bin/test.py'失败

尝试同时执行perl脚本和python脚本。这两个脚本都从命令行成功运行,但不是从Apache提供的脚本运行(与“无此类文件…”相同的错误)还请注意,这是一个500错误,不是404错误,因此它看到了该文件。我可以提供静态HTML文件

python脚本再简单不过了:

#!/usr/bin/python
print "Content-type: text/html\n\n";
print "Hello, World.";

所有文件都有755个权限。python的路径是正确的。我不知道下一步该怎么做。

python可以使用

在我的Synology NAS上安装了官方的Python3软件包(版本3.8.2-0150)。 我可以以
admin
的身份SSH到NAS中,并添加一个脚本:

mkdir -p app/cgi-bin

cat << EOF > app/cgi-bin/hello.py
#!/usr/bin/env python3

print('Content-Type: text/html')
print()
print('<html><body><h2>Hello World!</h2></body></html>')
EOF
然后在我的机器上,我可以
curlhttp://nas:8000/cgi-bin/hello.py

开机运行 您可以通过任务调度器在引导时自动运行此功能

控制面板→ 任务调度器→ 创造→ 触发任务→ 用户定义的脚本。在“常规”选项卡上填写这些脚本:

  • 任务:Python CGI
  • 用户:管理员
  • 已启用:[x]
和任务设置选项卡上的用户定义脚本:

然后您可以手动运行它。它也应该在重新启动时运行

权限 如果要以
root
身份运行任务,请确保从
root
的角度来看文件权限是正确的。在我的情况下,由于某种原因存在差异

$ ls -l app/cgi-bin/hello.py 
-rwxrwxrwx+ 1 admin users 122 Nov 29 14:50 app/cgi-bin/hello.py
$ sudo ls -l app/cgi-bin/hello.py 
Password: 
-rwx--x--x+ 1 admin users 122 Nov 29 14:50 app/cgi-bin/hello.py

谢谢,但是我从CLI运行python脚本没有问题,问题是Synology中的Apache服务器成功地提供了它。我的回答显示了如何使用python内置HTTP服务器提供CGI脚本(可以是任意可执行文件,而不仅仅是“python脚本”)。它还可以服务于静态文件,因此如果它已经涵盖了您的用例,您可能根本不需要另一台服务器(即Apache)。谢谢。我理解你所展示的内容,但这与让Apache提供python脚本并不相关,这是最初发布的问题。不是很多Apache用户,但一旦我使用了它,我的文件就有了正确的权限等,但其中一个文件夹没有。你也检查了吗?编辑:这似乎与o:
cd /var/services/homes/admin/app
python3 -m http.server --cgi
$ ls -l app/cgi-bin/hello.py 
-rwxrwxrwx+ 1 admin users 122 Nov 29 14:50 app/cgi-bin/hello.py
$ sudo ls -l app/cgi-bin/hello.py 
Password: 
-rwx--x--x+ 1 admin users 122 Nov 29 14:50 app/cgi-bin/hello.py