五分钟急速部署Ubuntu + Flask + uWSGI + Nginx 生产环境

突然看到篇系统介绍部署的文章,根据那文章全部推倒重写一下……
原文链接:https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-14-04
0.如果你的apt源及pip源很慢的话可以参考这篇文章
1.首先安装Nginx、pip等:
sudo apt-get update
sudo apt-get install python-pip python-dev nginx
 
2.使用virtualenv虚拟环境:

安装virtualenv

sudo pip install virtualenv

创建项目目录:

mkdir ~/myproject
cd ~/myproject

创建虚拟环境myprojectenv:

virtualenv myprojectenv

激活虚拟环境:

source myprojectenv/bin/activate
3、在虚拟环境中创建flask项目
pip install uwsgi flask
nano ~/myproject/myproject.py

创建project.py文件,将flask实例化为application:

from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
    return "<h1 style='color:blue'>Hello There!</h1>"

if __name__ == "__main__":
    application.run(host='0.0.0.0')

测试启动:

python myproject.py

一般启动在5000端口。

4、尝试用wsgi启动:
nano ~/myproject/wsgi.py
from myproject import application

if __name__ == "__main__":
    application.run()

然后就可以启动试试,访问本机ip的8000端口查看结果:

uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi

至此python运行环境的搭建已经结束。可以退出虚拟运行环境:

deactivate

 

5、创建uwsgi配置文件:
nano ~/myproject/myproject.ini

仍通过wsgi.py启动项目:

[uwsgi]
module = wsgi

 设置有主线程

master = true
processes = 5

通过套接字通信,并设置权限是nginx可读写:

socket = myproject.sock
chmod-socket = 660
vacuum = true

对齐两个系统组件:

die-on-term = true

自此配置文件修改完成。

 

#原文这个地方有个坑,如果你的入口,即flask的实例也命名叫application时没有问题的,但如果你叫app,就会找不到入口,所以最好加上句:

callable = application

 

6、创建自启动脚本:
sudo nano /etc/init/myproject.conf
description "uWSGI server instance configured to serve myproject"

start on runlevel [2345]
stop on runlevel [!2345]

setuid user
setgid www-data

env PATH=/home/user/myproject/myprojectenv/bin
chdir /home/user/myproject
exec uwsgi --ini myproject.ini

#注:所有的user都要替换成你自己的用户名

bash中输入一下代码启动:

sudo start myproject

 

7、配置转发nginx请求:

sudo nano /etc/nginx/sites-available/myproject
server {
    listen 80;
    server_name server_domain_or_IP;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/user/myproject/myproject.sock;
    }
}

链接到sites-enbaled目录

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled

测试配置文件是否可用:

sudo nginx -t

重启nginx服务:

sudo service nginx restart

完成!

#貌似这里会跟default冲突,把default删了才能正常工作。

#之前自己总结过一次,可惜写得太烂了……不如自己翻译别人的来的快 2333333

转载于:https://www.cnblogs.com/linjianfan/p/6472763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值