需求
- 使用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
結束語
- 實際部署中碰到了一些問題,?基本可以通過查看對應的日志找到原因。
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。