CentOS7 + Django2.1 + uwsgi + nginx配置

假設已經可以運行Django項目,可以runserver。也已經安裝了uwsgi和nginx

現在需要進行配置。

剛開始進行uwsgi測試就不行,提示bash:‘uwsgi’ Command not found

執行如下命令增加軟鏈,可以解決uwsgi找不到的問題,不過使用的是uwsgi3命令

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3

將你的django項目放到你想放的路徑下,例如/root/,假設我們的Django項目名爲"myproject",裏面有一個應用叫"myapp"
在你的django項目下新建 myproject.xml,內容如下:

<uwsgi>
    <socket>127.0.0.1:8996</socket><!-- 內部端口,自定義 -->
        <chdir>/home/www/myproject</chdir><!-- 項目路徑 -->
            <module>myproject.wsgi</module>
                <processes>4</processes> <!-- 進程數 --> 
    <daemonize>uwsgi.log</daemonize><!-- 日誌文件 -->
</uwsgi>

wq保存

此上就爲uwsgi的配置,不用做.ini,就只用寫個.xml


配置nginx:

nginx一般默認安裝好的路徑爲/usr/local/nginx
在/usr/local/nginx/conf/中打開nginx.conf,在一大段註釋的server後面加入以下內容:

server {
    listen 8997; #暴露給外部訪問的端口
    server_name localhost;
        charset utf-8;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8996; #外部訪問8997就轉發到內部8996
    }
    location /static/ {
        alias /root/myproject/myapp/static/; #項目靜態路徑設置(根目錄)
    }
}

wq保存後進入/usr/local/nginx/sbin/目錄
執行./nginx -t命令先檢查配置文件是否有錯,沒有錯就執行以下命令:
./nginx
終端沒有任何提示就證明nginx啓動成功

這裏要監聽什麼端口就寫啥,比如我的話是106.13.9.45:8997(這裏換成自己的外網ip),然後瀏覽器打開會出現nginx work就是成功了,當然不想寫端口,想直接通過ip106.13.9.45訪問的話 就listen 80


開啓Django項目:

進入django項目路徑,執行以下命令:

uwsgi3 -x myproject.xml


以上步驟都沒有出錯的話,打開你的瀏覽器,輸入以下鏈接,記得關閉系統防火牆或者開放8996端口
106.13.9.45:8997(請將該ip替換成你的服務器ip)
 


配置完發現自己靜態文件訪問不了,查看nginx的log發現:

2019/03/15 10:58:59 [error] 106026#0: *2 open() "/root/Course_website/static/plugin/highlight/highlight.pack.js" f
ailed (13: Permission denied), client: 120.196.99.35, server: localhost, request: "GET /static/plugin/highlight/highlight.pack.js HTTP/1.1", host: "106.13.9.45:8996", referrer: "http://106.13.9.45:8996/"

Permission denied 權限問題

解決方法:在/usr/local/nginx/conf/中打開nginx.conf

首行有個#user XXXXX

去掉註釋,修改成 user root,重啓nginx

關於nginx啓動的命令參考:https://www.cnblogs.com/xiaojf/p/7891345.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章