我已尝试使用此blog在生产中使用wsgi服务器部署烧瓶应用
我已经按照提到的所有步骤进行了操作
sudo apt-get install build-essential python-dev python-pip
sudo pip install virtualenv uwsgi
bash
virtualenv env
source env/bin/activate
pip install flask
pip install -r requirements.txt
touch /home/lucy/myproject.sock
创建了wsgi.py
from myproject import app
if __name__ == "__main__":
app.run()
创建了一个systemd单元文件。
sudo vi /etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=lucy
Group=www-data
WorkingDirectory=/home/lucy/
Environment="PATH=/home/lucy/env/bin"
ExecStart=/home/lucy/env/bin/uwsgi --ini myproject.ini
[Install]
WantedBy=multi-user.target
我们现在可以启动我们创建的uWSGI服务并启用它,以便它在启动时启动:
bash
sudo systemctl start myproject
sudo systemctl enable myproject
首先,安装Nginx(如果你还没有)。
bash
sudo apt-get install nginx
sudo vi / etc / nginx / sites-available / myproject
server {
listen 80;
server_name server_domain_or_IP;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/lucy/myproject.sock;
}
}
bash
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo systemctl restart nginx
仍然,项目没有运行nginx给出连接拒绝错误 但是当我尝试
时uwsgi -s /home/lucy/myproject.sock -w wsgi:app -H /home/lucy/env --http-processes=10 --chmod-socket=666 --master
项目运行成功。
有谁能告诉我这里做错了什么?
答案 0 :(得分:2)
您的问题是,uwsgi
未安装在虚拟环境中,但是在您的服务文件中,您要求它从虚拟环境路径加载:
ExecStart=/home/lucy/env/bin/uwsgi --ini myproject.ini
您应该在虚拟环境中安装uwsgi
,或在服务说明中提供全局uwsgi
的路径;你可以在你的shell中输入which uwsgi
来获得它。
建议在虚拟环境中安装uwsgi
,因为它将包含最新的更新和功能。
要执行此操作:
env/bin/pip install uwsgi
确保在所有情况下都重新启动服务(如果更改服务定义文件,则还必须重新加载服务)。