VirtualBox CentOS 7+Django+uwsgi+nginx

HuangZhang_123發表於2018-01-24

----------歡迎加入學習交流QQ群:657341423


Django搭建
CentOS 7系統相容Python2和Python3,本專案基於Python3環境搭建
安裝Django
CentOS 7系統安裝django

pip3 install django

在Windows下建立Django專案dataPlatform,並在setting.py新增以下程式碼:

#在MIDDLEWARE_CLASSES 設定列表裡的 'django.contrib.sessions.middleware.SessionMiddleware',下面加上:
#讓admin頁面變成中文
'django.middleware.locale.LocaleMiddleware',
#最後一行加上
# 獲取admin靜態檔案
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

這裡寫圖片描述
然後在CMD視窗下執行

E:\dataPlatform>python manage.py collectstatic

該指令是生成靜態資料夾,主要儲存CSS,JS檔案等
最終Django目錄結構如下:
這裡寫圖片描述
可以看到多出了資料夾static,最後利用FileZilla Client將專案上傳到VirtualBox CentOS 7系統中,如圖所示:
這裡寫圖片描述


uwsgi搭建
CentOS 7系統安裝uwsgi

pip3 install uwsgi

測試 uWSGi 是否能正常執行:

uwsgi --http :8080 --chdir /dataPlatform -w dataPlatform.wsgi

這裡寫圖片描述
執行結果:
這裡寫圖片描述
在Windows的瀏覽器上輸入CentOS7的IP地址和uWSGi埠

http://10.168.1.185:8080/

瀏覽器可正常訪問CentOS7系統的Django專案

uWSGi正常執行,然後按Ctrl+z終止,並輸入指令檢視uWSGi的程式

lsof -i

如果系統沒有安裝lsof,可通過yum install lsof 安裝
然後結束uWSGi的程式:kill -9 1693 1693為程式ID
這裡寫圖片描述

uWSGi測試完成後,接著是編寫配置uWSGi檔案,在Django專案下新建檔案myweb_uwsgi.ini,檔案程式碼如下

# myweb_uwsgi.ini file
[uwsgi]

# Django-related settings

socket= :8080

# the base directory (full path)
chdir=/dataPlatform

# Django s wsgi file
module=dataPlatform.wsgi

# process-related settings
# master
master=true

# maximum number of worker processes
processes=4

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum=true

socket 指定專案執行的埠號。
chdir 指定專案的目錄。
module=dataPlatform.wsgi是對於myweb_uwsgi.ini檔案來說,與它的平級的有一個dataPlatform目錄,這個目錄下有一個wsgi.py檔案。
專案目錄如圖所示:
這裡寫圖片描述
在CentOS 7執行uwsgi配置檔案,如圖所示:
這裡寫圖片描述
在Django路徑下輸入

uwsgi --ini myweb_uwsgi.ini

執行結果上圖所示


安裝Nginx
由於CentOS7的yum安裝是沒有Nginx,所以我們將Nginx新增到yum上

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

新增完成後,使用yum安裝nginx

yum install nginx

完成安裝後,啟動nginx

systemctl start nginx

然後在windows瀏覽器輸入CentOS 7的IP地址
這裡寫圖片描述

修改nginx.conf配置檔案。開啟/etc/nginx/nginx.conf檔案,新增以下內容:

	………………
    include /etc/nginx/conf.d/*.conf;
    # 新增內容
    server {
    listen         8099;
    server_name    127.0.0.1
    charset UTF-8;
    access_log      /var/log/nginx/myweb_access.log;
    error_log       /var/log/nginx/myweb_error.log;

    client_max_body_size 75M;

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8080;
        uwsgi_read_timeout 2;
    }
    location /static {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /dataPlatform/static/;
     }
 }
}

整個檔案內容如下:
這裡寫圖片描述
listen 指定的是nginx代理uwsgi對外的埠號。
server_name 網上大多資料都是設定的一個網址(例,www.example.com),此處以IP地址為例。
nginx到底是如何uwsgi產生關聯。大概最主要的就是這兩行配置。

  include uwsgi_params;

  uwsgi_pass 127.0.0.1:8080;

include 必須指定為uwsgi_params;而uwsgi_pass指的本機IP的埠號與myweb_uwsgi.ini配置中的檔案中的必須一致。

最後重啟Nginx,在Nginx路徑下執行以下指令
這裡寫圖片描述
然後在執行myweb_uwsgi.ini檔案(如果伺服器重啟,可按照以下步驟啟動,先啟動nginx,後啟動uwsgi)
這裡寫圖片描述
在瀏覽器上訪問
這裡寫圖片描述

相關文章