利用uWSGI和nginx進行伺服器部署
搭建伺服器虛擬環境
1)在本機進入虛擬環境,執行命令匯出當前需要的所有包。
pip freeze > plist.txt
2)通過ftp軟體將專案程式碼和plist.txt檔案上傳到伺服器。
3)建立虛擬環境,在虛擬環境上安裝包。
mkvirtualenv 虛擬環境名稱
pip install -r plist.txt
WSGI:
全稱是Web Server Gateway Interface(web伺服器閘道器介面)
它是一種規範,它是web伺服器和web應用程式之間的介面
它的作用就像是橋樑,連線在web伺服器和web應用框架之間
沒有官方的實現,更像一個協議。只要遵照這些協議,WSGI應用(Application)都可以在任何伺服器(Server)上執行
uwsgi:是一種傳輸協議,用於定義傳輸資訊的型別。常用於在uWSGI伺服器與其他網路伺服器的資料通訊
uWSGI:是實現了uwsgi協議WSGI的web伺服器。
先更新apt軟體源
sudo apt-get update
python和pip
這兩個環境是ubuntu16.04自帶的
uwsgi安裝
uwsgi是一個能夠執行flask專案的高效能web伺服器,需要先安裝兩個依賴
apt-get install build-essential python-dev
然後進行uwsgi的安裝
pip install uwsgi
nginx安裝
apt-get install nginx
mysql的安裝:
apt-get install mysql-server
apt-get install libmysqlclient-dev
虛擬環境的安裝
virtualenv和virtualenvwrapper的安裝:
pip install virtualenv
pip install virtualenvwrapper
使得安裝的virtualenvwrapper生效,編輯~/.bashrc檔案,內容如下:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
使編輯後的檔案生效
source ~/.bashrc
hello world程式的部署
利用pycharm建立python專案
建立config.ini檔案作為uwsgi的初始化配置檔案
#需要宣告uwsgi使得uwsgi能夠識別當前檔案
[uwsgi]
master =true
# 使用 nginx 配合連線時使用
# socket = :5000
# 直接做web伺服器使用
http =:5000
# 設定程序數
processes =4
# 設定執行緒數
threads =2
# 指定執行的檔案
wsgi-file =app.py
#指定執行的專案的目錄[自已專案在哪個目錄就用哪個目錄]
chdir =/root/home/hello_world
# 指定執行的例項
callable =app
# 指定uwsgi伺服器的緩衝大小
buffer-size =32768
# 在虛擬環境中執行需要指定python目錄
pythonpath =/root/.virtualenvs/Flask_test/lib/python2.7/site-packages
# 設定程序id檔案
pidfile =uwsgi.pid
# 以守護的形式執行,設定log輸出位置
daemonize =uwsgi.log
利用scp命令將整個專案上傳到遠端伺服器中
scp -r 本地目錄 使用者名稱@ip地址:遠端目錄
scp -r /home/python/Desktop/hello_world/ [email protected]:/root/home
通過指令執行uwsgi.ini伺服器
uwsgi --ini config.ini
檢視
ps ajx|grep uwsgi
停止
uwsgi --stop uwsgi.pid
其中
--ini config.ini 表示指定執行的配置檔案
-d uwsgi.log 表示uwsgi在後臺執行,執行過程中產生的日誌會儲存在uwsgi.log中
配置nginx伺服器
編輯檔案:/etc/nginx/sites-available/default
修改為如下內容:
server {
listen 80 default_server;
server_name 59.110.240.237;
location / {
include uwsgi_params;
uwsgi_pass 59.110.240.237:5000;
uwsgi_read_timeout 100;
}
}
將server中原有的,上述配置中不能存在的內容註釋或刪除掉
啟動和停止nginx伺服器
/etc/init.d/nginx start #啟動
/etc/init.d/nginx stop #停止
本地專案的遠端部署
3,建立虛擬環境
mkvirtualenv 虛擬環境名稱
4,在虛擬環境中安裝專案所需要的依賴
pip install -r 依賴檔案(requirements.txt)
5,通過scp命令將整個專案上傳到遠端伺服器
scp -r 本地目錄 使用者名稱@ip地址:遠端目錄
6,建立config.ini檔案,配置和之前一致,但要加入一個虛擬環境的配置
pythonpath = /root/.virtualenvs/flask_test/lib/python2.7/site-packages #表示指定虛擬環境目錄,使用虛擬環境中安裝的擴充套件
7,執行uwsgi和之前操作一致,但要修改專案目錄
uwsgi --ini config.ini
8,執行nginx和之前操作一致,但要修改專案目錄
/etc/init.d/nginx start