CentOS+Nginx+uWSGI+Django 部署筆記

Nginx 是一個高性能的HTTP和反向代理服務(wù)器,也可以做IMAP/POP3/SMTP服務(wù)器。
什么是反向代理?就是可以監(jiān)聽指定的外部端口,并將訪問請求轉(zhuǎn)發(fā)到內(nèi)部端口。
Nginx的好處:

  • 可以隱藏真實端口。
  • 可以通過轉(zhuǎn)發(fā)實現(xiàn)集群處理。
  • 容易配置!容易配置!容易配置! 比起Apache來,Nginx配置不要太輕松。

部署步驟

一. 環(huán)境準(zhǔn)備

1. 安裝必須的包

yum gcc-c++, libxml*

gcc-c++是編譯器,一般都已安裝。
libxml* 是 xml支持, uwsgi -x 通過xml文件啟動項目。使用ini等文件啟動方式, 可以不裝

2. 安裝Django, 略

二、安裝 uWSGI

WSGI,全稱是 Web Server Gateway Interface,是為Python定義的Web服務(wù)器和Web應(yīng)用程序之間的接口。

1. 安裝Python的uwsgi擴展包

pip install uwsgi

2. 配置uWSGI

假設(shè)Django的項目路徑為 /var/www/mywebsite,可以把 uwsgi 配置文件放在 /var/www/ 目錄下, 文件內(nèi)容如下

<uwsgi>
    <socket>127.0.0.1:8020</socket>     <!-- 內(nèi)部端口,自定義 -->
    <chdir>/home/www/mywebsite</chdir>  <!-- 項目路徑 -->
    <module>mywebsite.wsgi</module>     <!-- 指定項目的wsgi程序名稱,配置錯誤也沒關(guān)系,會自動在項目路徑下找wsgi文件 -->
    <processes>4</processes>            <!-- 進(jìn)程數(shù) --> 
    <daemonize>uwsgi.log</daemonize>    <!-- 日志文件 -->
</uwsgi>

3. 啟動uWSGI

uWSGI可以多種方式啟動,例子中用的是 .xml 配置文件方式。

uwsgi -x mywebsite.xml

三. 安裝Nginx

Nginx官網(wǎng)

CentOS下可以直接使用yum安裝,例子中用的是下載安裝方式。

1. 安裝Nginx

cd /tmp
wget -c http://nginx.org/download/nginx-1.14.1.tar.gz
tar -zxvf nginx-1.14.1.tar.gz
cd nginx-1.14.1
./configure
make && make install

Nginx 的默認(rèn)安裝路徑為/usr/local/nginx

2. 配置Nginx

打開配置文件,路徑/usr/local/nginx/conf/nginx.conf,添加如下內(nèi)容:

server {
    listen 8020;                    # 監(jiān)聽外部訪問端口
    server_name localhost:8020;     # 主機名稱
    charset utf-8;
    location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8997;  # 外部訪問80就轉(zhuǎn)發(fā)到內(nèi)部的8997
    }
    location /static/ {
            alias /var/www/mywebsite/static/; # 項目靜態(tài)路徑設(shè)置
    }
}

3. 啟動Nginx

啟動前,先用 Nginx -t 自檢一遍,沒報錯再正式啟動

cd /usr/local/nginx/sbin
./nginx -t
方法1:進(jìn)程啟動
# 啟動進(jìn)程
./nginx
# 關(guān)閉進(jìn)程
pkill -9 nginx
方法2:服務(wù)啟動

使用yum安裝自帶 nginx.service。如果是通過編譯方式安裝,需要手動配置.service文件。

  • 創(chuàng)建nginx.service文件
vim /usr/lib/systemd/system/nginx.xervice
  • 添加以下內(nèi)容
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 啟動服務(wù)
systemctl start nginx

結(jié)束

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容