我想要实现的目标:
我有一个运行在nginx web服务器上的mydomain.com。当某人在他们的浏览器中键入 mydomain.com 时,我希望我的服务器从 /var/www/mydomain/
提供 index.html。当他们键入 mydomain.com/flaskapp1 时,他们应该看到 flaskapp1。当他们键入 mydomain.com/flaskapp2 时,他们应该看到 flaskapp2。
我已经成功地使用这里的教程 http://www.markjberger.com/flask-with-virtualenv-uwsgi-nginx/ 中的一种flask应用程序,但是在尝试实现提供两个独立的flask应用程序时遇到了困难。当我尝试通过浏览器访问 mydomain.co.uk/flaskapp 或 mydomain.co.uk/flaskapp2 时,我看到404消息而不是flask应用程序。
这是目前我所拥有的:
cat /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文件已经通过符号链接的方式链接到/etc/nginx/sites-enabled
目录下。
cat /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 用户。
cat /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 应用程序。
希望我错过的只是一些简单的东西。