ubuntu部署 nginx+uwsgi+falsk+python3

关于 uWSGI,WSGI 是一个 Python 协议,定义了应用程序(我们写的软件)如何与 Web 服务器(如 Nginx )通信,WSGI 只是一个接口。而 uWSGI 是一个支持多种语言的服务器容器,使用 WSGI 定义的标准实现与多种 Web 服务器的通信,并将 Web 服务器发来的请求“翻译”成应用程序所能理解形式。

安装(下边所有安装尽量在root权限下执行,其他用户在虚拟环境中存在权限问题)

Python 3:

apt-get update
apt-get install python3-pip

安装依赖:

apt-get install build-essential libssl-dev libffi-dev python-dev

安装python虚拟环境:

pip3 install virtualenv  //安装虚拟环境

运行虚拟环境(虚拟环境中不要使用sudo,sudo会将python包安装到虚拟环境外,进入虚拟环境中,只存在pip):

mkdir -p /opt/deploy/flask //创建工程目录

cd /opt/deploy/flask

virtualenv venv //创建虚拟环境

. venv/bin/activate //运行虚拟环境,出现(venv)代表进入虚拟环境  ps: deactivate (退出)

pip install flask //安装flask

pip install uwsgi //安装uwsgi

创建一个单页面应用:

index.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "test success!"

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

run.py

from index import app

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

编写uwsgi配置文件:

run.ini

[uwsgi]
module = run:app
master = true
processes = 3

chdir = /opt/deploy/flask
socket = /opt/deploy/flask/flask.sock
logto = /opt/deploy/flask/log/run.log
chmod-socket = 755
vacuum = true

uid=www-data
gid=www-data

#http-socket=0.0.0.0:5000   //需要直接访问时打开,使用nginx做代理访问时关闭
uwsgi --ini run.ini  //启动uwsgi

安装nginx:

apt-get install nginx

配置nginx:

cd /etc/nginx/sites-available

touch falsk.com

  

server {
	listen 80;

	index index.html index.htm index.nginx-debian.html;

	server_name flask.biihu.com.cn;

	location / {
		include uwsgi_params;
        	uwsgi_pass unix:/opt/deploy/flask/flask.sock;
		try_files $uri $uri/ =404;
	}

}

ps:falsk.sock 可能存在权限问题

打开浏览器,访问 http://flask.biihu.com.cn,出现:

test success!

说明部署完成

 

 

后续会更新uwsgi系统启动,jenkins自动化部署flask项目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章