使用 Gunicorn 和 Nginx 建立可擴展的 Django 應用程式

Patricia Arquette
發布: 2024-09-26 06:40:03
原創
911 人瀏覽過

Building a Scalable Django Application with Gunicorn and Nginx

  • 擴展您的網頁應用程式對於成功至關重要。
  • Django 很棒,但真正的可擴展性需要 Gunicorn 和 Nginx。
  • 這篇文章向您展示如何使用 Gunicorn 和 Nginx 建立可擴展的 Django 應用程式。
  • 這篇文章遵循「Kali Linux」。您可以使用任何基於 Linux 的作業系統。

介紹:

  • 建立一個可以處理不斷增長的使用者和請求的 Web 應用程式對於任何成功的專案都至關重要。
  • Django 是一個強大的 Python 框架,提供了堅實的基礎,但為了真正的可擴展性,您需要利用 Gunicorn 和 Nginx 等工具的強大功能。
  • 這篇文章將引導您完成使用 Gunicorn 和 Nginx 設定可擴展的 Django 應用程式的過程,確保您的網站能夠滿足不斷增長的用戶群的需求。

⚙️ 設定 -

  • 我在 Linux 中執行此操作。
  • 先檢查 python3、pip、nginx 是否安裝。
  • 要安裝,請使用此命令(安裝在家庭/桌面或新終端機中)
sudo apt install python3 python3-pip nginx 
登入後複製
  • 現在建立一個虛擬環境(為此建立新資料夾?)
  • 啟動環境
source environment_name/bin/activate   # use name created above "environment_name"
登入後複製
  • 現在安裝軟體包嗎?在環境中
    • django、gunicorn
pip install django
pip install gunicorn

// or directly install both
pip install django gunicorn
登入後複製

創建 Django 項目

  • 使用該指令建立Django項目
django-admin startproject myproject      # use any name "myproject"
登入後複製

建立 Gunicorn 配置文件

  • 使用此指令
nano gunicorn_conf.py  # use any name but using same better "gunicorn_conf.py"
登入後複製
  • 在「gunicorn_config.py」中加入以下程式碼
import multiprocessing

bind = '127.0.0.1:8000' # Django running port/link
workers = multiprocessing.cpu_count() * 2 + 1
登入後複製
  • 使用「CTRL + o」(儲存)儲存文件,按 ENTER,「CTRL + X」(退出)
  • 這將創建工作人員,我們還應該添加 Django 運行連結。 ### 使用 Gunicorn 運行 Django 專案/應用程式
  • 先導航到專案資料夾
cd myproject   # navigate to Django Project "myproject"
登入後複製
  • 現在執行這個指令
gunicorn myapp.wsgi:application -c ../gunicorn_conf.py  # here myapp is myproject

# here "myapp" is a Django project name, and at last gunicorn_conf.py is a gunicorn configuration file which created above/before.
登入後複製
  • 現在在 Django 專案中進行一些更改
  • 先更改專案資料夾中的settings.py 中的一些程式碼。目錄 myproject/myproject/settings.py > Django 專案
  • 為此,請使用任何程式碼編輯器,例如 VS Code。若要從終端機打開,請使用此命令
code- oss

# to open vs code from terminal
登入後複製
  • 新增此程式碼
# example code
ALLOWED_HOSTS = ['localhost', '0.0.0.0', '127.0.0.1'] # use IP address here
登入後複製
  • 在上面的命令中,我們使用了 IP 位址,打開另一個新終端並執行此命令來獲取有關網路的所有資訊。
ifconfig
登入後複製

建立 Nginx 設定檔

  • 開啟另一個新終端,執行此指令
sudo nano /etc/nginx/sites-available/myapp       # use any name "myapp"

# better use vs code instead of nano
sudo code- oss /etc/nginx/sites-available/myapp   # check code-oss
登入後複製
  • 在該 nginx 檔案中加入程式碼
server {
    listen 80;
    server_name your_domain.com;  # Replace with your domain or IP address
    # example for aboveline: server_name 'ipaddress' 'another domain' ;

    location / {
        proxy_pass http://127.0.0.1:8000;  # Gunicorn's default address
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
登入後複製
  • 儲存檔案
  • 建立符號連結以啟用 Nginx 配置,執行此命令
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled

# change "myapp" to nginx config file name used above
登入後複製
  • 就是這樣。 ## 測試:
  • 先檢查 Nginx 設定檔是否有語法錯誤。
sudo nginx -t
登入後複製
  • 如果沒有任何錯誤,請先使用此指令重新啟動 Nginx
sudo systemctl restart nginx
登入後複製

為 Nginx 設定防火牆

  • 開啟新終端,並安裝此軟體包
sudo apt install ufw
登入後複製
  • 現在允許 Nginx 通過防火牆
sudo ufw allow 'Nginx Full'
登入後複製

使用說明 -

  • 先透過開啟新終端啟動 Nginx
sudo systemctl start nginx
登入後複製
  • 現在開始完整的項目,打開終端機並轉到創建並啟動的 virtualenv
gunicorn myapp.wsgi:application -c ../gunicorn_conf.py

# in above code "myapp" is a Django project name
# last gunicorn_conf.py is a gunicorn configuration file name
登入後複製
  • 現在完整的專案開始了。
  • 現在您可以使用您的 IP 位址開啟您的 django 專案。
  • 導航至瀏覽器並使用您的 IP 位址進行搜尋。
  • 要停止 Nginx,請使用此指令
sudo systemctl stop nginx
登入後複製

編碼愉快? - 偷懶

聯絡 DM - Twitter(X)
聯絡信箱 - sanya.san@myyahoo.com

以上是使用 Gunicorn 和 Nginx 建立可擴展的 Django 應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!