近期做了一個代購管理平臺瓣蛀,類似于微商后臺管理系統(tǒng),部署在了騰訊云上林螃,后因為域名原因遷移到了阿里云。遷移過程部署的具體細節(jié)忘記了俺泣,導致又花了一點時間解決疗认,于是乎特意在此總結(jié)下部署經(jīng)驗完残。
部署環(huán)境:Centos7.3、Python2.7横漏、Nginx谨设、Uwsgi、Mysql
1缎浇、基本環(huán)境配置
使用yum源安裝如下資源(注意以下開頭yum和pip區(qū)別):
yum install python? //安裝python2.7
yum install python-pip? //安裝pip
yum install nginx? //安裝nginx代理服務器
centos7自帶mariadb扎拣,僅需保證啟動了即可:
systemctl enable mariadb //開機自動啟動mariadb
//注:如果無效可以嘗試以下安裝
yum install mariadb-server
安裝uwsgi服務器,同時需要安裝如下三個庫來支持:
pip install uwsgi? //安裝uwsgi服務器
yum install libxml2
yum install gcc
yum install python-devel
2素跺、安裝Flask應用依賴包
pip install flask
pip install flask-restful
......等等
由于我的應用中使用到了MySQLdb二蓝,于是乎我還需要以下安裝:
yum install mysql-devel
pip install mysql-python
3、配置代理服務器
3.1在你的根目錄下創(chuàng)建一個uwsgiconfig.ini文件
我的項目采用的是nginx反向代理多個二級域名指厌,并將對應的網(wǎng)絡請求轉(zhuǎn)發(fā)給相應uwsgi刊愚,來達到一個云服務器通過多個二級域名來訪問多個flask項目的效果。
nginx可以實現(xiàn)安全過濾踩验,防DDOS等保護安全的操作鸥诽,并且如果配置了多臺服務器,nginx可以保證服務器的負載相對均衡箕憾。uwsgi是一個web服務器牡借,實現(xiàn)了WSGI協(xié)議(Web Server Gateway Interface),http協(xié)議等袭异,它可以接收和處理請求钠龙,發(fā)出響應等。
上傳你的flask項目到云服務器上御铃,并在項目根目錄下創(chuàng)建一個uwsgiconfig.ini文件俊鱼。
圖例:
注:flask項目里啟動host要使用0.0.0.0
重點來了,uwsgiconfig.ini中的內(nèi)容應該如下畅买,根據(jù)自己項目對照修改(刪掉其中的注釋):
[uwsgi]
socket = 127.0.0.1:8001? //uwsgi啟動時的地址和端口
chdir = /root/YouZhiGou? //項目根目錄
module = run
wsgi-file = run.py? //項目啟動程序文件名
callable = app? //python內(nèi)用以啟動的application名
processes = 4? //處理器個數(shù)
threads = 2? //線程個數(shù)
stats = 127.0.0.1:9193? //狀態(tài)檢測地址
3.2修改nginx的配置文件nginx.conf
到目錄/etc/nginx下可以找到nginx.conf文件并闲,里面內(nèi)容比較亂,找到相應位置修改成如下內(nèi)容:
server {
????listen? ? ? 80 default_server;? //默認web訪問端口
????listen? ? ? [::]:80 default_server;
????server_name? xxx.xxx.xxx.xxx;? //公網(wǎng)地址
????#root? ? ? ? /usr/share/nginx/html;
????# Load configuration files for the default server block.
????#include /etc/nginx/default.d/*.conf;
????access_log? /root/YouZhiGou/logs/access.log;? //服務器接收請求日志
????error_log? /root/YouZhiGou/logs/error.log;? //錯誤日志谷羞,需在根目錄下創(chuàng)建logs文件夾
????location / {
????????include? ? ? ? uwsgi_params;? //導入uwsgi配置
????????uwsgi_pass? ? 127.0.0.1:8001;? //需要和uwsgi里的地址一致帝火,才能轉(zhuǎn)發(fā)到uwsgi上
????????uwsgi_param UWSGI_PYHOME /root/YouZhiGou/env;? //指向虛擬環(huán)境目錄
????????uwsgi_param UWSGI_CHDIR? /root/YouZhiGou;? //項目根目錄
????????uwsgi_param UWSGI_SCRIPT run:app;? //啟動的主程序
????????proxy_set_header remote-user-ip $remote_addr;? //無關,微信支付用的
????}
????error_page 404 /404.html;
? ? location = /40x.html {
????}
????error_page 500 502 503 504 /50x.html;
? ? location = /50x.html {
????}
}
當你的云服務器上需要再運行一個flask項目時湃缎,僅需根據(jù)以上步驟犀填,在項目根目錄下創(chuàng)建uwsgi配置文件孕讳,同時在nginx.conf中加入如下代碼:
server {
????listen? ? ? 80;? //第二個flask項目
????server_name? xxx.xxx.com;? //反向代理二級域名
????#root? ? ? ? /usr/share/nginx/html;
????# Load configuration files for the default server block.
????#include /etc/nginx/default.d/*.conf;
????access_log? /root/xxx/logs/access.log;? //同上
????error_log? /root/xxx/logs/error.log;
????location / {
????????include? ? ? ? uwsgi_params;
????????uwsgi_pass? ? 127.0.0.1:8002;? //配置不同端口
????????uwsgi_param UWSGI_PYHOME /root/xxx/env;
????????uwsgi_param UWSGI_CHDIR? /root/xxx;
????????uwsgi_param UWSGI_SCRIPT run:app;
????}
????error_page 404 /404.html;
????location = /40x.html {
????}
????error_page 500 502 503 504 /50x.html;
????location = /50x.html {
????}
}
至此牵舱,環(huán)境部署完畢
4、啟動項目
nginx? //開啟nginx
uwsgi uwsgiconfig.ini? //到項目根目錄下執(zhí)行
可以通過如下語句查看進程情況:
netstat -ntlp
殺死進程:
kill -QUIT (processid)
現(xiàn)在訪問公網(wǎng)ip應該可以訪問到你的flask應用了室琢。
注:如果配置完后蹂季,出現(xiàn)如下問題
unavailable modifier requested:0
可以采用:
yum install uwsgi-plugin-python
同時在uwsgiconfig.ini文件中加入:
plugins=python
重啟uwsgi即可
如果本有對你有幫助冕广,記得點贊哦疏日。