通过 CGI 在 cPanel 上部署 Python 应用程序 - SuExec 和 500 错误
Deploying Python app on cPanel via CGI - SuExec & 500 error
我有以下启动 Flask 网络应用程序的 CGI 脚本。但是我得到的只是 500 Internal Server Error
#!/home/xxx/public_html/cgi-bin/venv/bin/python
import site
site.addsitedir("/home/xxx/public_html/cgi-bin/venv/lib/python2.7/site-packages")
from wsgiref.handlers import CGIHandler
from app import app
CGIHandler().run(app)
我在 Apache 的 error_log
中得到以下错误:
[Fri Jan 27 09:53:18.052981 2017] [cgi:error] [pid 20660] [client aa.bb.cc.dd:58331] AH01215: suexec policy violation: see suexec log for more details: /home/xxx/public_html/cgi-bin/app.cgi, referer: http://xxx.io/
[Fri Jan 27 09:53:18.053176 2017] [cgi:error] [pid 20660] [client aa.bb.cc.dd:58331] End of script output before headers: app.cgi, referer: http://xxx.io/
并且 suexec_log
中出现以下错误:
[2017-01-27 09:53:18]: uid: (522/xxx) gid: (534/xxx) cmd: app.cgi
[2017-01-27 09:53:18]: (2)No such file or directory: exec failed (app.cgi)
所有文件都应该放在正确的位置。不确定如何进行调试。如果有帮助,我确实拥有此服务器的根访问权限。
两个问题:
.cgi
文件包含 Windows 行结尾
- 由
:set ff=unix
在 Vim 中解决
- 我的 virtualenv 中的 python 解释器没有设置为可执行文件
一旦我解决了这些,它就像一个魅力!
我有以下启动 Flask 网络应用程序的 CGI 脚本。但是我得到的只是 500 Internal Server Error
#!/home/xxx/public_html/cgi-bin/venv/bin/python
import site
site.addsitedir("/home/xxx/public_html/cgi-bin/venv/lib/python2.7/site-packages")
from wsgiref.handlers import CGIHandler
from app import app
CGIHandler().run(app)
我在 Apache 的 error_log
中得到以下错误:
[Fri Jan 27 09:53:18.052981 2017] [cgi:error] [pid 20660] [client aa.bb.cc.dd:58331] AH01215: suexec policy violation: see suexec log for more details: /home/xxx/public_html/cgi-bin/app.cgi, referer: http://xxx.io/
[Fri Jan 27 09:53:18.053176 2017] [cgi:error] [pid 20660] [client aa.bb.cc.dd:58331] End of script output before headers: app.cgi, referer: http://xxx.io/
并且 suexec_log
中出现以下错误:
[2017-01-27 09:53:18]: uid: (522/xxx) gid: (534/xxx) cmd: app.cgi
[2017-01-27 09:53:18]: (2)No such file or directory: exec failed (app.cgi)
所有文件都应该放在正确的位置。不确定如何进行调试。如果有帮助,我确实拥有此服务器的根访问权限。
两个问题:
.cgi
文件包含 Windows 行结尾- 由
:set ff=unix
在 Vim 中解决
- 由
- 我的 virtualenv 中的 python 解释器没有设置为可执行文件
一旦我解决了这些,它就像一个魅力!