需求
- 使用flask开发了一个小型网站,想要快速部署到云服务器上,查了一些资料发现使用gunicorn+nginx即可满足基本需求。
环境准备(python-dev、 python-pip、 python-virtualenv、nginx、others.)
$ sudo apt-get update
$ sudo apt-get install python-dev python-pip python-virtualenv
$ sudo apt-get install nginx
$ sudo apt-get install others...
开始部署
step1-上传代码(使用scp上传,也可使用IDE快速部署deploy)
scp -r website root@你服务器的ip:/home/www/my_flask
step2-切换到虚拟环境、安装gunicorn、配置并测试运行
切换到虚拟环境
source /home/www/my_flask/venv/bin/activate
安装gunicorn
(venv) $ pip install gunicorn
(venv) $ pip install -r requirements.txt
配置gunicorn config文件
sudo vi /home/www/gun.conf
import os
bind='0.0.0.0:5000'
workers=4
backlog=2048
worker_class="gevent" #这里选择gevent模式
debug=True
proc_name='gunicorn.pid'
pidfile='/var/log/gunicorn/debug.log'
loglevel=‘debug'
以gunicorn测试运行flask app,这里引导文件为run.py,运行程序为app.run()
(venv)$ gunicorn -c /home/www/gun.conf run:app
step3-配置nginx并启动
vi /etc/nginx/sites-available/default
server {
listen 80;
server_name 云服务器IP地址
location / {
proxy_pass http://0.0.0.0:5000; #这里是flask程序的host和端口
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
启动nginx
sudo service nginx start
step4—将gnicorn作为服务运行
sudo vi /etc/init/website.conf
#config#:::
description "The website service"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid root
setgid www-data
env PATH=/home/www/my_flask/venv/bin/
chdir /home/www/my_flask
exec gunicorn -c /home/www/gun.conf run:app
#config over#:::
测试运行
sudo service website start
结束语
- 实际部署中碰到了一些问题,�基本可以通过查看对应的日志找到原因。
网友评论