linux(ubuntu)部署nginx gunicorn flask virtualenv supervisor python3

欢迎观临我的新站:

一起淘券网-优惠券,超级返利,天猫优惠券,淘宝优惠券,9.9包邮,超级优惠券,最新优惠券

网址:17taoquan.wang

基于flask的网站。

下面是部署步骤。

1、安装virtualenv

sudo pip install virtualenv

使用virtualenv可以为python创建一个独立的运行环境。

创建网站根目录:

mkdir /home/liuchang/www
mkdir /home/liuchang/www/myweb

创建并激活虚拟环境,并在虚拟环境中安装 flask:

cd /home/liuchang/www/myweb
virtualenv venv  # 创建虚拟环境
. venv/bin/activate # 进入虚拟环境 或者 source venv/bin/activate

如果执行 . venv/bin/activate 没有权限,需要进入 venv/bin/ 为root 用户授权。

chmod o+x activate

在虚拟环境中安装flask

pip install flask

退出虚拟环境

deactivate

2、新建应用:/home/liuchang/www/myweb

# hello.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

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

在虚拟环境中启动应用:

python hello.py

 

浏览器访问 8080 端口可访问。

3、安装 gunicorn

注意:在虚拟环境中安装

pip install gunicorn
pip freeze > requirements.txt #可选操作,记录安装过的包

用 gunicorn 启动 APP:

gunicorn -w4 -b0.0.0.0:8000 hello:app

此时,我们需要用 8000 的端口进行访问,原先的8080并没有启用。其中 gunicorn 的部署中,,-w 表示开启多少个 worker,-b 表示 gunicorn 开发的访问地址。

4、安装nginx

sudo apt-get install nginx

备份并修改默认配置文件:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
sudo vim default
server {
    listen 80;
    server_name yourweb.com;
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

修改完重启

sudo service nginx restart

5、安装supervisor进程管理

supervisor为进程管理程序,可以管理gunicorn并设置自启。同时也可以管理nginx。

因为 supervisor 目前不支持python3,不能使用pip安装

sudo apt-get install supervisor

自定义应用启动配置文件:

cd /etc/supervisor/conf.d
touch myweb.conf
sudo vim myweb.conf
[program:myweb]
directory = /home/liuchang/www/myweb # 网站根目录
command = /home/liuchang/www/myweb/venv/bin/gunicorn -w4 -b0.0.0.0:8000 hello:app # 启动应用
autostart = true # 自启
startsecs = 5
autorestart = true
startretries = 3
user = ubuntu
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /home/liuchang/www/myweb/logs/17taoquan_stdout.log # 日志文件

配置完成重启

sudo service supervisor restart

如果没有启动成功,可以查看启动状态及错误:

sudo service supervisor status

 

 

发表评论