作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 GoDaddy 上部署测试 Flask 应用程序时收到 403: Forbidden 错误。我已经安装了Python 3.5.7,我添加/更改的文件是:
1)在public_html中创建.htaccess:
Options +ExecCGI
AddHandler cgi-script .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /home/myusername/public_html/python/cgi-bin/app.cgi/$1 [L]
2)在cgi-bin中创建虚拟环境venv并安装Flask
3)在public_html/cgi-bin中创建app.cgi:
#!/home/myusername/.local/bin/python3
import os
import sys
sys.path.insert(0, '/home/myusername/public_html/cgi-bin/venv/lib/python3.5/site-packages')
from wsgiref.handlers import CGIHandler
activate_this = '/home/myusername/public_html/cgi_bin/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
from app import app
class ProxyFix(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
environ['SERVER_NAME'] = ""
environ['SERVER_PORT'] = "80"
environ['REQUEST_METHOD'] = "GET"
environ['SCRIPT_NAME'] = ""
environ['QUERY_STRING'] = ""
environ['SERVER_PROTOCOL'] = "HTTP/1.1"
return self.app(environ, start_response)
if __name__ == '__main__':
app.wsgi_app = ProxyFix(app.wsgi_app)
CGIHandler().run(app)
app.wsgi_app = ProxyFix(app.wsgi_app)
CGIHandler.run(app)
4)在public_html/cgi-bin中创建app.py:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
if __name__ == '__main__':
app.run()
5) 在 public_html/cgi-bin/templates 中创建 home.html
我还将这些不同文件的权限修改为 755。
有人对我可能出错的地方有什么建议吗?非常感谢您的指导。
最佳答案
RewriteRule /home/myusername/public_html/python/cgi-bin/app.cgi/$1 [L]
您缺少 RewriteRule
指令的pattern(第一个)参数 - 所以这没有做任何事情。您还应该重写为 URL 路径,而不是绝对文件系统路径。因此,这应该类似于以下内容:
RewriteRule !^python/cgi-bin/app.cgi/ /python/cgi-bin/app.cgi%{REQUEST_URI} [L]
假设/public_html
是文档根目录。
关于python - 尝试在 GoDaddy 上部署 Flask 应用程序时出现 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60727299/
我是一名优秀的程序员,十分优秀!