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
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