使用CGI运行flask和python

2024-10-06 07:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我注册了一个域,它允许使用CGI脚本。但是我不知道如何用脚本运行flask+python。 https://flask.palletsprojects.com/en/1.1.x/deploying/cgi/给出了一个很好的描述,说明了该做什么,但仍然无法让flask和python运行。我的python文件:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return '<h1>Hello World!</h1>'

还有cgi文件:

#!/usr/bin/python
from wsgiref.handlers import CGIHandler
from yourapplication import app

CGIHandler().run(app)

和htaccess文件:

DirectoryIndex Home.html

# Begin EnforceSSL double-numbersign-freelancer.com
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?double-numbersign-freelancer.com$
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L]
</IfModule>
# End EnforceSSL

Tags: 文件fromhttpsimport脚本comappflask
1条回答
网友
1楼 · 发布于 2024-10-06 07:34:17

好的。我查过了

回答我的配置问题→ CentOS 7 / httpd 2.4.6

  1. 打开/etc/httpd/conf/httpd.conf并添加python处理程序
# standard part
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
# add handler here
AddHandler cgi-script .py
</Directory>
  1. run.py放入/var/www/cgi-bin
#!/usr/bin/python3
from wsgiref.handlers import CGIHandler
from flask import Flask

app = Flask(__name__)
@app.route('/')
def index():
    return '<h1>Hello World!</h1>'

@app.route('/suburl')
def index2():
    return '<h1>Hello World 2!</h1>'

CGIHandler().run(app)
  1. 更改脚本权限以允许执行:
chmod +x /var/www/cgi-bin/run.py
  1. 现在您可以访问:
http://your_server_url.com/cgi-bin/run.py → Hello World!
http://your_server_url.com/cgi-bin/run.py/suburl → Hello World 2!

嗯。这是我第一次使用Flask CGI。非常简单,适用于小型或测试项目。
无论如何,我建议在生产中为apache使用^{}^{}^{}

  • EDIT1:使用不带烧瓶的CGI

实际上,运行CGI脚本不需要flask。它可以用任何可以读取环境变量并输出一些数据的语言编写

Bash示例/var/www/cgi-bin/run.cgi

#!/usr/bin/bash

echo "Content-type:text/plain"
echo
echo -e "HELLO WORLD\nYour URL path is $PATH_INFO"

输出将是:

http://example.com/cgi-bin/run.cgi/suburl
HELLO WORLD
Your URL path is /suburl

相关问题 更多 >