Python 无法使用nginx运行flask wsgi应用程序
我尝试过在生产环境中使用wsgi服务器部署flask应用程序 我已经遵循了上面提到的所有步骤 sudo-apt-get-install-build-essential-python-dev-python-pip sudo-pip安装virtualenv-uwsgiPython 无法使用nginx运行flask wsgi应用程序,python,nginx,flask,uwsgi,Python,Nginx,Flask,Uwsgi,我尝试过在生产环境中使用wsgi服务器部署flask应用程序 我已经遵循了上面提到的所有步骤 sudo-apt-get-install-build-essential-python-dev-python-pip sudo-pip安装virtualenv-uwsgi bash 虚拟环境 源环境/箱/激活 安装烧瓶 pip安装-r requirements.txt 创建wsgi.py from myproject import app if __name__ == "__main__":
bash
虚拟环境
源环境/箱/激活
安装烧瓶
pip安装-r requirements.txt
创建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启动我的项目
sudo systemctl启用myproject
将uWSGI连接到Nginx
首先,安装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重启nginx
尽管如此,项目并没有运行nginx给出了连接拒绝错误
但是当我试着
uwsgi -s /home/lucy/myproject.sock -w wsgi:app -H /home/lucy/env --http-processes=10 --chmod-socket=666 --master
项目正在成功运行
有人能告诉我这里做错了什么吗?您的问题是
uwsgi
未安装在虚拟环境中,但在您的服务文件中,您要求它从虚拟环境路径加载:
ExecStart=/home/lucy/env/bin/uwsgi --ini myproject.ini
您应该在虚拟环境中安装uwsgi
,或者在服务描述中提供全局uwsgi
的路径;您可以通过在shell中键入哪个uwsgi
来获得它
建议在虚拟环境中安装uwsgi
,因为它将包含最新的更新和功能
要执行此操作,请执行以下操作:
env/bin/pip install uwsgi
确保在所有情况下都重新启动服务(如果更改服务定义文件,还必须重新加载服务) 您的问题是
uwsgi
未安装在虚拟环境中,但在您的服务文件中,您要求它从虚拟环境路径加载:
ExecStart=/home/lucy/env/bin/uwsgi --ini myproject.ini
您应该在虚拟环境中安装uwsgi
,或者在服务描述中提供全局uwsgi
的路径;您可以通过在shell中键入哪个uwsgi
来获得它
建议在虚拟环境中安装uwsgi
,因为它将包含最新的更新和功能
要执行此操作,请执行以下操作:
env/bin/pip install uwsgi
确保在所有情况下都重新启动服务(如果更改服务定义文件,还必须重新加载服务)
sudo vi/etc/nginx/sites available/myproject
应该是一个*.conf
conf结尾配置文件。我已经在site enabled sudo ln-s/etc/nginx/sites available/myproject/etc/nginx/sites enabled中添加了seamlink,并且在nginx.confsudo vi/etc/nginx/sites available/myproject中的条目应该是一个*.conf
conf结束配置文件。我已经在站点启用的sudo ln-s/etc/nginx/sites available/myproject/etc/nginx/sites中添加了seamlink,并在nginx.conf中启用了条目。谢谢您的回复。当我在python环境中安装uwsgi时,它给出了已经满足的要求:uwsgi in/usr/local/lib/python2.7/dist-packagest这不是python环境,这是全局python环境。感谢您的回复。当我在python环境中安装uwsgi时,它给出了已经满足的需求:uwsgi位于/usr/local/lib/python2.7/dist-packagest中,这不是python环境,而是全局python环境。