1. 程式人生 > >Nginx系列-7.配置Nginx使用uwsgi支持web.py框架

Nginx系列-7.配置Nginx使用uwsgi支持web.py框架

Linux Nginx web.py uwsgi

Nginx系列-7.配置Nginx使用uwsgi支持web.py框架

目錄 - Nginx系列

Nginx系列-1.Linux下安裝Nginx
Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架構
Nginx系列-3.配置Nginx虛擬主機
Nginx系列-4.Nginx日誌配置及日誌切割
Nginx系列-5.配置Nginx的防盜鏈
Nginx系列-6.配置Nginx的HTTPS
Nginx系列-7.配置Nginx使用uwsgi支持web.py框架
Nginx系列-8.配置Nginx+Apache實現動靜分離
Nginx系列-9.配置NFS實現Nginx實現動靜分離

Nginx系列-10.采用Nginx搭建正向代理服務
Nginx系列-11.配置Nginx反向代理和負載均衡


實驗環境
一臺最小化的 CentOS 7.3 虛擬機
ip: 192.168.204.133

一、安裝基本環境

  1. 安裝基本環境

    yum install -y epel*
    yum install -y nginx python-pip python-devel pcre-devel libxml2-devel gcc vim tree psmisc

    pip安裝uwsgi時需要gcc
    uwsgi進程管理時需要psmisc

  2. 安裝python庫文件

    pip install web.py
    pip install uwsgi
  3. 創建網站根目錄

    mkdir /var/wwwroot
    cd /var/wwwroot
  4. 編寫測試網頁
    創建並編輯/var/wwwroot/main.py

    #!/usr/bin/python
    #coding=utf-8
    import web    
    urls = (
    ‘/(.*)‘, ‘hello‘
    )
    app = web.application(urls, globals())
    class hello:        
    def GET(self, name):
        if not name:
            name = ‘World‘
        return ‘Hello, ‘ + name + ‘!‘
    if __name__ == "__main__":
    app.run()
    # 使用nginx作web服務時,註意添加下面這句話
    application = app.wsgifunc()

    技術分享圖片

  5. main.py添加可執行權限

    chmod +x /var/wwwroot/main.py
  6. 關閉防火墻
    setenforce 0
    systemctl stop firewalld
    systemctl disable firewalld

二、配置nginx和uwsgi

  1. 修改nginx的配置文件
    修改server下的root為網站根目錄
    修改location中的配置如下

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9090; #此套接字為uwsgi監聽的地址和端口
        uwsgi_param UWSGI_CHDIR $document_root; #此處代表網站根目錄
        uwsgi_param UWSGI_SCRIPT main; #此處為應用的入口文件
    }

    技術分享圖片

  2. 啟動nginx

    systemctl start nginx
    netstat -anpt | grep nginx
  3. 配置uwsgi
    創建並編輯/ect/uwsgi.ini

    [uwsgi]
    socket = 127.0.0.1:9090
    workers = 4

    技術分享圖片

  4. 啟動uwsgi
    開啟一個 新終端! 新終端!! 新終端!!! 執行以下命令

    uwsgi --ini /etc/uwsgi.ini 2>&1 &
    exit

    技術分享圖片

  5. 回到之前的終端,查看uwsgi是否正常啟動

    netstat -antp | grep -E "9090|uwsgi"

    技術分享圖片

  6. 停止uwsgi
    killall uwsgi
    netstat -antp | grep -E "9090|uwsgi"

    技術分享圖片

三、測試

  1. 在宿主機訪問
    技術分享圖片

四、一鍵部署腳本

#!/bin/bash
# 關閉防火墻
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
# 安裝基礎軟件包
yum install -y epel*
yum install -y nginx python-pip python-devel pcre-devel libxml2-devel gcc vim tree psmisc
# 安裝python模塊
pip install web.py
pip install uwsgi
# 建立網站根目錄
mkdir /var/wwwroot
cd /var/wwwroot
# 建立測試網頁
echo -e "#!/usr/bin/python
#coding=utf-8
import web    
urls = (
    ‘/(.*)‘, ‘hello‘
)
app = web.application(urls, globals())
class hello:        
    def GET(self, name):
        if not name:
            name = ‘World‘
        return ‘Hello, ‘ + name + ‘!‘
if __name__ == \"__main__\":
    app.run()
# 使用nginx作web服務時,註意添加下面這句話
application = app.wsgifunc()
" > /var/wwwroot/main.py
# 添加可執行權限
chmod +x /var/wwwroot/main.py
# 修改nginx配置文件
NGINX_CONF_PATH=/etc/nginx/nginx.conf
sed -i ‘s/^[^#].*root.*/        root         \/var\/wwwroot;/g‘ ${NGINX_CONF_PATH}
sed -i "47 a \            include uwsgi_params;" ${NGINX_CONF_PATH}
sed -i "48 a \            uwsgi_pass 127.0.0.1:9090;" ${NGINX_CONF_PATH}
sed -i "49 a \            uwsgi_param UWSGI_CHDIR \$document_root;" ${NGINX_CONF_PATH}
sed -i "50 a \            uwsgi_param UWSGI_SCRIPT main;
" ${NGINX_CONF_PATH}
# 啟動nginx
systemctl start nginx
netstat -anpt | grep nginx
# 配置uwsgi
echo -e "[uwsgi]
socket = 127.0.0.1:9090
workers = 4
" > /etc/uwsgi.ini
# 啟動uwsgi
echo -e "uwsgi starting..."
uwsgi --ini /etc/uwsgi.ini 2>&1 &

Nginx系列-7.配置Nginx使用uwsgi支持web.py框架