То, что я пытаюсь достичь:
У меня есть веб-сервер nginx, на котором размещается mydomain.com. Когда кто-то вводит мой домен.com в свой клиент, я хотел бы, чтобы мой сервер обслуживал index.html из /var/www/mydomain/
Когда они набирают mydomain.com/flaskapp1, они должны видеть flaskapp1. Когда они набирают mydomain.com/flaskapp2, они должны видеть flaskapp2.
Мне удалось получить одно или другое приложение для флэков, которое использовалось в этом учебнике здесь: http://www.markjberger.com/flask-with-virtualenv-uwsgi-nginx/, но при попытке реализовать два отдельных приложения для флэков я столкнулся с трудностями, Вместо того, чтобы видеть приложение с флягой, я получаю сообщение 404, когда пытаюсь получить доступ к любому из флеш-приложений с помощью mydomain.co.uk/flaskapp или mydomain.co.uk/flaskapp2 в браузере.
Это то, что у меня есть до сих пор:
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 был связан с SIM-картой в /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
cat/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')
cat/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')
cat/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>
В обеих виртуальных средах установлена фляга, и они будут запускать приложения для флэков с использованием сервера разработки.
Надеюсь, это что-то простое, что я пропустил.