利用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
利用uWSGI和nginx進行服務器部署