# Ubuntu部署Django 4專案系列-Nginx安裝流程與常用指令 > [name=Sharon Mai] [time=20230404, Thu] [color=#907bf7] ## ↪️總目錄:[Ubuntu部署Django 4專案全系列](https://hackmd.io/@ppp300a/ubuntu-django-4/%2F9uS81RV_QNCjDNqeEiyfJg) {%hackmd a0ktF64jQXalgAyZHtiXbQ %} :::success 前提:已有Django專案。 ::: ## Nginx常用指令[(建議先從下方【Nginx流程】開始)](#Nginx流程) ### Nginx啟動 ``` sudo systemctl start nginx ``` ### Nginx重啟 ``` sudo systemctl restart nginx ``` ### Nginx停止 ``` sudo systemctl stop nginx ``` ### Nginx查看狀態 ``` sudo systemctl restart nginx ``` ### Nginx清除所有端口與運行 ``` sudo pkill -f nginx & wait $! ``` ## 收集所有靜態文件 > 會將app底下的static靜態文件複製一份到跟manage.py同層級中 1. 先進入到虛擬環境 [(啟動進入虛擬環境)](/t1KY6gxtT1GaZ8yY3SqP1g#進入、啟動虛擬環境) 2. 收集所有靜態文件 ``` (yingmi_env) python manage.py collectstatic ``` 4. 成功 ![](https://i.imgur.com/Dt2WLpM.png) ## Nginx流程 ### Nginx安裝 ``` sudo apt install nginx ``` ### Nginx測試是否安裝成功 1. 啟動 ``` sudo systemctl start nginx ``` 2. 開啟瀏覽器,網址輸入 `localhost:80` ``` 127.0.0.1:80/ ``` 3. 網頁中出現 **Welcome to nginx!** 的字表示安裝且運行成功 4. 若沒有:表示已有其他服務已使用端口80,則需寫個[測試用配置文件](#Nginx測試用配置文件)另用的別的端口使用服務 ### Nginx測試用配置文件 > 詳細配置說明可參考[官方文檔](https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/tutorials/Django_and_nginx.html) 1. 到默認的配置文件路徑 ``` cd /etc/nginx/site-enable/nginx.conf ``` 2. 編輯配置文件,端口改為8001 ``` nano /etc/nginx/site-enable/nginx.conf ``` 3. 端口改為8001 ``` upstream django { server 127.0.0.1:8001; } ``` 4. [再次執行測試流程,網址輸入 127.0.0.1:8001](#Nginx測試是否安裝成功) ### Nginx正式配置文件 > 詳細配置說明可參考[官方文檔](https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/tutorials/Django_and_nginx.html) 1. 到默認的配置文件路徑 ``` cd /etc/nginx/site-enable/nginx.conf ``` - 查內部網路IP位置 :::info 此範例為公司內部網路測試,故需要先查詢內網IP。 ::: - 開啟終端機查詢IP(詳細可參考此[連結](https://kknews.cc/zh-tw/code/999z5bj.html)) ``` ip addr show ``` - 得到 ``` 16x.x.x.x ``` 2. 編輯配置文件 ``` nano /etc/nginx/site-enable/nginx.conf ``` 3. Nginx配置文件設定 :::info 將內網IP輸入到 server_name ::: ``` upstream django { server unix:///tmp/uwsgi.sock } server { listen 8000; # 端口沒特別指定會默認使用預設80 server_name 16x.x.x.x; # 此次範例使用為內網IP charset utf-8; location / { uwsgi_pass django; include uwsgi_params; # 會自動指向/etc/nginx/uwsgi_params,除非換文件路徑 } location /media { alias /home/專案/media; # (通常只需要下方的static即可,此為專案需求而定)指定到Django專案路徑的相關靜態文件中 } location /static { alias /home/專案/static; # 指定到Django專案路徑的相關靜態文件中 } } ``` ### Nginx正式啟動 1. 啟動 ``` sudo systemctl start nginx ``` 2. 輸入內網IP網址`16x.x.x.x` 3. 後面輸入media或static等靜態文件路徑,完整網址如下: ``` 16x.x.x.x/media/images/cafe_01.PNG ``` 4. 出現圖片,表示成功!(此處media命名拼錯) ![](https://i.imgur.com/Ig4AgFg.png)