我想要达到的目标:
我有一个托管mydomain.com的Nginx Web服务器。当有人在其客户端中键入domain.com时,我希望我的服务器从中提供index.html。/var/www/mydomain/
当他们键入mydomain.com/flaskapp1时,他们应该看到flaskapp1。当他们键入mydomain.com/flaskapp2时,他们应该看到flaskapp2。
我已经设法通过此处的http://www.markjberger.com/flask-with-virtualenv-uwsgi-nginx/教程获得了一个或其他烧瓶应用程序的服务,但是当尝试实现为两个单独的烧瓶应用程序提供服务时,我遇到了困难。当我尝试在浏览器中使用mydomain.co.uk/flaskapp或mydomain.co.uk/flaskapp2访问任何一个烧瓶应用程序时,都没有看到flask应用程序,而是收到404消息。
这是我到目前为止所拥有的:
猫/etc/nginx/sites-available/mydomain.co.uk
server {
listen 80;
server_name www.mydomain.co.uk mydomain.co.uk;
location / {
root /var/www/html/;
index index.html index.htm;
}
location /flaskapp {
include uwsgi_params;
uwsgi_pass unix:/tmp/flaskapp.sock;
}
location /flaskapp2 {
include uwsgi_params;
uwsgi_pass unix:/tmp/flaskapp2.sock;
}
}
上面的conf文件已被sim链接到中/etc/nginx/sites-enabled
。
猫/etc/uwsgi/apps-available/flaskapp.ini
[uwsgi]
vhost = true
socket = /tmp/flaskapp.sock
venv = /var/www/flaskapp/venv
chdir = /var/www/flaskapp
module = flaskapp
callable = app
猫/etc/uwsgi/apps-available/flaskapp2.ini
[uwsgi]
vhost = true
socket = /tmp/flaskapp2.sock
venv = /var/www/flaskapp2/venv
chdir = /var/www/flaskapp2
module = flaskapp2
callable = app
这两个.ini文件都已链接到/etc/uwsgi/apps-enabled
。UWSGI可以正常重启,没有任何问题,并且可以正常运行。flaskapp.sock和flaskapp2.sock均归www-data所有
猫/var/www/flaskapp/flaskapp.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World from flaskapp1!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
猫/var/www/flaskapp2/flaskapp2.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World from flaskapp2!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
猫/var/www/mydomain.co.uk/index.html
<!DOCTYPE html>
<html>
<body>
<h1>mydomain.co.uk</h1>
<p>This is the index page of my domain.co.uk</p>
</body>
</html>
两个虚拟环境都安装了flask,并且将使用开发服务器运行flask应用程序。
我希望这是我错过的简单事情。
在这里查看NGINX的uwsgi文档。
具体来说:
不幸的是,nginx无法根据SCRIPT_NAME重写PATH_INFO。因此,您需要指示uWSGI在“挂载点”中映射特定的应用程序,并自动重写SCRIPT_NAME和PATH_INFO:
更改myflaskapp.ini
和flaskapp2.ini
文件以包含应用程序的挂载点,然后打开manage-script-name变量已奏效。
猫/etc/uwsgi/apps-available/flaskapp.ini
[uwsgi]
vhost = true
socket = /tmp/flaskapp.sock
venv = /var/www/flaskapp/venv
chdir = /var/www/flaskapp
module = flaskapp
callable = app
mount = /flaskapp=flaskapp.py
manage-script-name = true
猫/etc/uwsgi/apps-available/flaskapp2.ini
[uwsgi]
vhost = true
socket = /tmp/flaskapp2.sock
venv = /var/www/flaskapp2/venv
chdir = /var/www/flaskapp2
module = flaskapp2
callable = app
mount = /flaskapp2=flaskapp2.py
manage-script-name = true
现在,根据需要,两个烧瓶应用程序都通过nginx通过uwsgi运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句