假設已經可以運行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