部署得過程很簡單,部署得核心在於,為什么要這樣做,每一個參數代表什么意思,最終的目的是得了解,一些基概念性的東西。
uWsgi簡介
說Uwsgi之前,先說一下Wsgi。
什么是Wsgi?
WSGI: 是一種Web服務器網關接口,它是一個Web服務器(如Nginx) 與應用服務器(如uWSGI服務器)通信的一種規范。
uWSGI是一個Web服務器,它實現了WSGI協議,uwsgi,http等協議,Nginx中HttpUwsgiModul的作用是與uWSGI服務器進行交換
那么那些框架自帶了Wsgi Server呢?
很多框架都自帶了WSGI Server, 比如: Flask、 Webpy、 Dajngo、 CherryPy等等。當然性能都不好,自帶的Web Server更多的是本地測試用途,發布時則使用生產環境的WSGI Server或者是聯合Nginx做Uwsgi。
簡單的來講Wsgi就是,標准,
比如: 一個德國人跟一個法國人聊天,他們要想聊天可以通過一個標准的國際語言: 英語來進行交互。
要注意 WSGI/uWSGI/uwsgi 這三個概念的區分。
WSGI是一種通訊協議
uwsgi同WSGI一樣是一種通信協議
而uWSGI是實現了uwsgi和WSGI兩種協議的Web服務器。
為什么uWSGI還需要nginx,應為Nginx具備了優秀的靜態內容處理能力,然后將動態內容轉發給uWSGI服務器,這樣就實現了,動靜分離。 也可以更好的達到客戶端的效果。
常見的Python Http服務器

早期的Web Server

早期的時候,只能訪問靜態的內容, 在那時Web開發還很簡單,開發這經常會去操作Web服務器,並且寫一些HTML頁面放到服務器指定的文件夾下(www)下,這些Html頁面,就在瀏覽器請求頁面時使用,
隨着時間的發展,問題就出現了,你只能獲取到靜態的內容,如果想訪問者看到有多少其他訪問者訪問了這個網站,或者想讓訪問者提交一些包含郵箱姓名,地址的表單,這個就比較麻煩了。
中期的WebServer

到了中期,就可以訪問一些動態的數據了, 當瀏覽器訪問Webserver的時候, 就可以調用后台的一些數據了, 寫小程序的人很多,各種人都有,然后統一了一個標准,CGI,隨着時間的演變,到了05年左右,進入了Web應用時代,
現在的Web Server

實際部署過程
安裝nginx
yum install nginx
Nginx安裝完成之后安裝uWsgi。
pip install uwsgi
以上兩項安裝完成之后,現在開始配置uwsgi, 進入項目的根目錄,注意:項目不要放在root目錄下。
執行一下命令,來測試項目是否可以被uwsgi啟動。
uwsgi --http 192.168.31.123:80 --file teacher/wsgi.py --static-map=/static=static 192.168.31.123: 你的ip地址
啟動成功之后

進入項目跟目錄之后,在同級目錄創建一個空的文件夾:
mkdir script
創建完成之后,在目錄中創建uwsgi.ini文件。
vim uwsgi.ini
創建ini文件完成之后,將一下內容放進文件夾中。
[uwsgi]
# 項目目錄
chdir=/opt/project_teacher/teacher/
# 啟動uwsgi的用戶名和用戶組
uid=root
gid=root
# 指定項目的application
module=teacher.wsgi:application
# 指定sock的文件路徑
socket=/opt/project_teacher/script/uwsgi.sock # sock文件是由uwsgi.ini文件啟動之后自動生成
# 啟用主進程
master=true
# 進程個數
workers=5
pidfile=/opt/project_teacher/script/uwsgi.pid
# 自動移除unix Socket和pid文件當服務停止的時候
vacuum=true
# 序列化接受的內容,如果可能的話
thunder-lock=true
# 啟用線程
enable-threads=true
# 設置自中斷時間
harakiri=30
# 設置緩沖
post-buffering=4096
# 設置日志目錄
daemonize=/opt/project_teacher/script/uwsgi.log
以上配置完成之后,啟動uwsgi.ini文件,並查看進程。

uwsgi到此為止,那么恭喜你,uwsgi已經配置完成了, 現在開始配置nginx, 進入以下目錄修改default.conf文件:
cd /etc/nginx/conf.d/ vim default.conf
進入文件之后講一下,代碼,貼近文件中:
server {
listen 80;
server_name 10.129.205.183 ; # 域名
access_log /var/log/nginx/access.log main;
charset utf-8;
gzip on;
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# 指定項目路徑uwsgi
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:/opt/project_teacher/script/uwsgi.sock;
}
# 指定靜態文件路徑
location /static/ {
alias /opt/project_teacher/teacher/static/;
index index.html index.htm;
}
}
啟動ngxin

啟動nginx之后,在啟動uwsgi,此時你打開瀏覽器,輸入你設置的server_name,是不是就可以訪問出你的項目了,
項目截圖,最近本人想搭建自己的一個簡單的博客,基本頁面,和功能已經完成,后期還會加一些,高級一點的東西,畢竟現在里邊還什me都沒有,博客截圖如下:

上傳博客內容,是集成百度的,Ueditor, 之前是在Django的admin中來集成的Django-Ueditor, 想了想,還是自己寫了一個添加文章的地方。
git源碼地址:
https://github.com/Mrwyc/DjangoBlog
