ubuntu16.04+nginx+gunicorn部署flask項目
前期準備配置伺服器上的環境:
1.我們部署項目需要使用到虛拟環境,是以下載下傳一個虛拟環境包
sudo apt-get install python-dev python-pip python-virtualenv
如果不行使用這兩種方法試試
python2/3建立方法;
1.pip install python3-env 安裝虛拟環境包
2.python3 -m venv <虛拟環境檔案名> 或者 python -m venv <虛拟環境名字>
3.進入該虛幻環境 并激活 激活指令activate
4.退出虛拟環境直接就是 deactivate
python2/3建立方法:
1.pip install virtualenv
2.virtualenv <虛拟環境名>
3.進入該虛幻環境 并激活 激活指令 進入bin檔案内 source activate
(進入成功的話有個标志(venv))
4.退出虛拟環境直接就是 deactivate
2.安裝nginx
sudo apt-get install nginx
3.進入虛拟環境安裝gunicorn
(venv) $ pip install gunicorn
安裝完之後就是上傳項目檔案
1.使用xftp傳檔案到伺服器,項目就放到之前建立的虛拟環境目錄内。
進入虛拟環境,安裝第三方庫,使用清單的方式。
2.先生成我們所需要安裝的第三方庫
pip freeze >> requirements.txt
說明:>>這個符号意思是增加内容,這裡是将需要安裝的第三方庫安裝到requirements.txt中
還有一個符号> 是覆寫的意思。
3.使用清單方式安裝庫
pip install -r requirements.txt
4.配置nginx
進入 /etc/nginx/sites-available
将default删除,重新寫一個配置檔案
這裡寫的是基本配置
注意“ ; ”不能省略
#負載均衡,說明本地項目運作的路徑
upstream upstream_name{
ip_hash;
server 127.0.0.1:5000; #這裡是自己項目運作的伺服器+端口
}
server{
listen 80; #你需要監聽的端口
listen 443 ssl; #裝證書需要https時候添加 端口号一定是443
server_name zhangsan.com ; #填寫域名或者這裡填你的伺服器的公網ip ,那麼最後打開網址 zhangsan.com:80就能打開你的項目,80可以不寫,如果監聽其他端口不得省略。
location /static{
alias /home/venv/flask-test/app/static; #這裡配置靜态檔案的位址 如果通路的連結是以/static結尾的,那麼伺服器就會自動從 /home/venv/falsk-test/app/static/上面找檔案資源
}
location /{
proxy_pass http://upstream_name; #使用upstream
proxy_set_header Host $host; #這裡就是預設的一樣就可以。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#需要ssl證書的時候添加 以下配置
ssl_certificate /etc/myapp/ssl/ssl.crt; # 改為自己申請得到的 crt 證書檔案的絕對路徑 pem檔案也如此
ssl_certificate_key /etc/myapp/ssl/ssl.key; # key檔案證書的絕對路徑
}
#這裡是重定向跳轉,監聽80端口預設是http的連結,那麼我們就跳轉到https
server{
listen 80;
server_name zhangsan.com;
rewrite ^/(.*)$ https://zhangsan.com:443/$1 permanent;
}
5.啟動gunicorn
進入虛拟環境啟動,還有進入到目前項目的啟動程式的目錄
(venv) $ gunicorn -w 4 -b 127.0.0.1:9000 run:application
That’s all! 它的安裝就這麼簡單。不過這裡得作一個解釋。就是最後的那個參數
run:application
表示啟動flask程式。 run是這個項目啟動程式的檔案名,application是flask項目執行個體,即application=Flask(_name__)
6.結束
當然,就使用gunicorn啟動完程式之後就可以了,不過也可以使用supervisor程序管理工具,使得項目可以更好的管理。
還可以參考:https://www.cnblogs.com/ray-liang/p/4837850.html
7.注意
如果不能啟動,可能是你端口被占用,或者防火牆開啟了,或者端口沒有打開。
nginx基本使用
程序檢視 ps aux|grep nginx
1.基本指令:
nginx 啟動nginx服務
nginx -s reload 重新開機nginx
nginx -s quit 優雅退出 (此時執行此指令之時,若是有人在通路資源,要等到其通路完之後,nginx就會停止)
nginx -s stop 強行停止服務
2.nginx配置檔案在
/etc/nginx/
sites-available 配置檔案,在這裡配置,然後連結檔案到sites-enabled
sites-enabled 是sites-availablez中的檔案執行的配置檔案
3.基本的配置
進入 /etc/nginx/sites-available
将default删除,重新寫一個配置檔案
這裡寫的是基本配置
注意“ ; ”不能省略
server{
listen 80; //你需要監聽的端口
server_name zhangsan.com ; //填寫域名或者這裡填你的伺服器的公網ip
location /static{
alias /home/venv/flask-test/app/static ; //這裡配置靜态檔案的位址
}
location /{
proxy_pass http://127.0.0.1:9000 //這裡http一定不能省略 還有自己執行這個項目運作的端口
proxy_set_header Host $host; //這裡就是預設的一樣就可以。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4.日志記錄
nginx伺服器執行日志在
/var/log/nginx中,
gunicorn說明
這是一個支援wsgi協定的一個伺服器,他能能夠與各種wsgi web架構協作。而flask是一個基于wsgi協定的web架構,是以我們這裡使用了gunicorn。。 還有支援wsgi協定的伺服器。比如uwsgi。不過不建議使用,比較複雜。
重新開機gunicorn
先查詢gunicorn程序号關閉
ps -aux| grep gunicorn
根據pid殺死程序
kill -9 pid号
supervisor
一個程序管理工具。
supervisor指令行啟動
supervisorctl -c /etc/supervisor/supervisord.conf.dpkg-new
一些指令
start <需要運作的程序>
stop 《需要停止的程序》
reload 重新加載