利用uWSGI和nginx進行伺服器部署

jingsupo發表於2018-11-26

搭建伺服器虛擬環境

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/ root@39.106.21.198:/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

相關文章