日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用Nginx+uWSGI部署Django項目

更新時間:
一鍵部署
我的部署

Django是一個開源的Web應用框架,使用Python語言編寫,主要用于搭建Web項目。本教程介紹如何在Linux服務器中使用Nginx+uWSGI部署Django項目。

準備工作

創建部署Django項目的ECS實例,ECS實例必須滿足以下條件:

  • 實例已分配公網IP地址或綁定彈性公網IP(EIP)。具體操作,請參見綁定和解綁彈性公網IP

  • 操作系統必須為Alibaba Cloud Linux 3.2104、Alibaba Cloud Linux 2.1903、CentOS 7.x、Ubuntu 22.04、Ubuntu 20.04、Ubuntu 18.04。

    重要
    • 本教程以Alibaba Cloud Linux 3.2104和Ubuntu 20.04 64位操作系統為例。如果您購買的ECS服務器使用了其他版本的操作系統,操作可能與本教程略有差異。

    • 軟件包或程序安裝具體版本以您使用的實際版本為準。

  • ECS實例安全組的入方向添加安全組規則并放行22、80、8001和8002端口。具體操作,請參見添加安全組規則

步驟一:安裝或核對Python版本

  1. 遠程連接Linux實例。

    具體操作,請參見通過密碼或密鑰認證登錄Linux實例

  2. 運行以下命令,查看具體Python安裝信息。

    本示例ECS實例中默認已經安裝Python 3,如果您的ECS實例中未安裝Python 3,請自行安裝。

    Alibaba Cloud Linux 3.2104/Alibaba Cloud Linux 2.1903/CentOS 7.x

    which python3 
    ll /usr/bin/python*

    回顯信息類似如下所示。

    [ecs-user@iZbp17st8t8txp6po87**** ~]$ which python3
    /usr/bin/python3
    [ecs-user@iZbp17st8t8txp6po87**** ~]$ ll /usr/bin/python*
    lrwxrwxrwx 1 root root 7 Feb 8 10:30 /usr/bin/python -> python2
    lrwxrwxrwx 1 root root 9 Feb 8 10:30 /usr/bin/python2 -> python2.7
    -rwxr-xr-x 1 root root 7144 Jun 28 2022 /usr/bin/python2.7
    lrwxrwxrwx 1 root root 9 Feb 8 10:25 /usr/bin/python3 -> python3.6
    -rwxr-xr-x 2 root root 11328 Nov 17 2020 /usr/bin/python3.6
    lrwxrwxrwx 1 root root 17 Feb 8 10:25 /usr/bin/python3.6-config -> python3.6m-config
    -rwxr-xr-x 2 root root 11328 Nov 17 2020 /usr/bin/python3.6m
    -rwxr-xr-x 1 root root 173 Nov 17 2020 /usr/bin/python3.6m-config
    -rwxr-xr-x 1 root root 3403 Nov 17 2020 /usr/bin/python3.6m-x86_64-config
    lrwxrwxrwx 1 root root 16 Feb 8 10:25 /usr/bin/python3-config -> python3.6-config

    Ubuntu 20.04

    which python3 
    ll /usr/bin/python*

    回顯信息類似如下所示。

    ecs-user@iZjyfbxivbj****:~$ which python3 
    /usr/bin/python3
    ecs-user@iZjyfbxivbj****:~$ ll /usr/bin/python*
    -rwxr-xr-x 1 root root 3662032 Jul 1 2022 /usr/bin/python2.7*
    lrwxrwxrwx 1 root root 9 Feb 8 14:05 /usr/bin/python3 -> python3.8*
    -rwxr-xr-x 1 root root 5494584 Nov 14 20:59 /usr/bin/python3.8*
    lrwxrwxrwx 1 root root 33 Nov 14 20:59 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config*
    lrwxrwxrwx 1 root root 16 Mar 13 2020 /usr/bin/python3-config -> python3.8-config*

步驟二:部署Nginx環境

  1. 執行以下命令,安裝Nginx。

    Alibaba Cloud Linux 3.2104/Alibaba Cloud Linux 2.1903/CentOS 7.x

    sudo yum -y install nginx

    Ubuntu 22.04/Ubuntu 20.04/Ubuntu 18.04

    sudo apt update
    sudo apt -y install nginx
  2. 執行以下命令,啟動并查看Nginx服務狀態。

    sudo systemctl start nginx
    systemctl status nginx

    如果回顯信息中出現Active: active (running),表示Nginx服務已啟動。

步驟三:部署及測試uWSGI環境

  1. 執行以下命令,安裝uWSGI。

    sudo pip3 install uwsgi
    • 如果回顯信息如下所示,表示uWSGI已安裝成功。

      WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
      Collecting uwsgi
       Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/b3/8e/b4fb9f793745afd6afcc0d2443d5626132e5d3540de98f28a8b8f5c753f9/uwsgi-2.0.21.tar.gz (808kB)
       100% |████████████████████████████████| 808kB 72.9MB/s 
      Installing collected packages: uwsgi
       Running setup.py install for uwsgi ... done
      Successfully installed uwsgi-2.0.22
    • 如果在安裝中出現如下圖所示的報錯信息,請您執行以下命令后,重新安裝uWSGI。

      Alibaba Cloud Linux 3.2104/Alibaba Cloud Linux 2.1903/CentOS 7.x

      sudo yum -y install python3-devel.x86_64

      Ubuntu 22.04/Ubuntu 20.04

      sudo apt -y install python3-devel.x86_64

      image

  2. 執行以下命令,創建測試目錄。

    本示例以創建/home/myblog目錄為例,您可以根據需求自定義文件路徑。

    sudo mkdir /home/myblog
  3. 執行以下命令,創建并編輯測試程序文件test.py

    cd /home/myblog
    sudo vim test.py

    輸入i進入編輯模式,將以下內容復制到文件中。

    def application(env,start_response):
            start_response('200 ok',[('Content-Type','text/html')])
            return [b"Hello World"]

    Esc鍵,輸入:wq保存并退出文件。

  4. 執行以下命令,測試運行訪問。

    Alibaba Cloud Linux 3.2104/Alibaba Cloud Linux 2.1903/CentOS 7.x

    sudo /usr/local/bin/uwsgi --http :8001 --wsgi-file test.py

    回顯信息如下圖所示。

    image

    Ubuntu 22.04/Ubuntu 20.04

    sudo uwsgi --http :8001 --wsgi-file test.py

    回顯信息如下圖所示。

    image

  5. 在本地電腦瀏覽器的地址欄輸入http://<ECS實例的公網IP地址>:8001,訪問測試文件。

    如出現如下頁面,表示uWSGI環境搭建成功。

    image

步驟四:部署及測試Django環境

  1. 執行以下命令,安裝Django。

    sudo pip3 install Django

    image

  2. 執行以下命令,創建項目。

    本示例以創建項目文件uwsgi_project為例,您可以根據需求自定義文件夾。

    Alibaba Cloud Linux 3.2104/Alibaba Cloud Linux 2.1903/CentOS 7.x

    sudo /usr/local/bin/django-admin.py startproject uwsgi_project

    Ubuntu 22.04/Ubuntu 20.04

    sudo /usr/local/bin/django-admin startproject uwsgi_project
  3. 執行以下命令,編輯settings.py文件。

    sudo vim /home/myblog/uwsgi_project/uwsgi_project/settings.py

    輸入i進入編輯模式,將ALLOWED_HOSTS = [ ]修改為ALLOWED_HOSTS = ["*"]。修改完成后,按Esc鍵,輸入:wq保存并退出文件。

    說明

    ["*"]表示允許任何IP地址訪問,否則訪問會被拒絕,具體以您實際環境為準。

    image

  4. 執行以下命令,啟動Django環境。

    cd /home/myblog/uwsgi_project
    sudo python3 manage.py runserver 0.0.0.0:8002

    如果出現以下類似報錯:

    django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17).

    image

    您可以將settings.py文件中的DATABASES注釋掉,重新啟動Django環境即可。修改settings.py文件的具體操作,請參見編輯settings.py文件

    image

  5. 在本地電腦瀏覽器的地址欄輸入http://<ECS實例的公網IP地址>:8002,即可訪問相關Django頁面。

    image

步驟五:配置Nginx、uWSGI、Django

  1. 如需配置Django,請在對應目錄添加相關文件,具體以您部署的網站項目為準。本步驟僅用于展示基本的Django網頁,請忽略此步驟。

    1. 執行以下命令,修改Django配置文件settings.py

      sudo vim /home/myblog/uwsgi_project/uwsgi_project/settings.py
    2. i鍵,進入編輯模式。

    3. DEBUG = True修改為DEBUG = False

      image

    4. settings.py文件開頭添加如下參數。

      import os
    5. settings.py文件末尾添加如下參數。

      STATIC_ROOT = os.path.join(BASE_DIR, "static/")
    6. Esc鍵,輸入:wq保存并退出文件。

    7. 執行如下命令,收集所有靜態文件。

      sudo python3 manage.py collectstatic 

      image

  2. 執行以下命令,打開Nginx配置文件。

    Alibaba Cloud Linux 3.2104/Alibaba Cloud Linux 2.1903/CentOS 7.x

    sudo vim /etc/nginx/nginx.conf

    Ubuntu 22.04/Ubuntu 20.04

    sudo vim /etc/nginx/sites-enabled/default
  3. i鍵進入編輯模式,在server中修改或添加以下參數。編輯完成后,按Esc鍵,輸入:wq保存并退出文件。

        upstream django {
            server 127.0.0.1:8001; #具體端口必須與您uWSGI配置文件中定義的端口一致
        }
        server {
            listen       80; #設置的nginx訪問端口
            server_name  test;
            charset      utf-8;
            location /static {
                autoindex on;
                alias /home/myblog/uwsgi_project/static; #具體目錄以您現場具體部署的目錄為準
            }
    
            location / {
                uwsgi_pass 127.0.0.1:8001;
                include uwsgi_params; #具體目錄以您現場具體部署的目錄為準
                include /etc/nginx/uwsgi_params; #具體目錄以您現場具體部署的目錄為準
                uwsgi_param UWSGI_SCRIPT iCourse.wsgi; #具體目錄以您現場具體部署的目錄為準
                uwsgi_param UWSGI_CHDIR /iCourse; #具體目錄以您現場具體部署的目錄為準
                index  index.html index.htm;
                client_max_body_size 35m;
                index index.html index.htm;
            }
        }

    image

  4. 執行以下命令,新建uWSGI配置文件uwsgi_config.ini

    sudo vim uwsgi_config.ini

    i鍵進入編輯模式,在文件中添加以下參數。編輯完成后,按Esc鍵,輸入:wq保存并退出文件。

    [uwsgi]
    socket = 127.0.0.1:8001
    chdir = /home/myblog/uwsgi_project/
    wsgi-file = uwsgi_project/wsgi.py
    processes = 4
    threads = 2
    vacuum = true
    buffer-size = 65536

    上述參數配置說明如下所示:

    • socket:此處的8001端口需要和nginx配置文件中定義的uwsgi_pass端口一致。

    • chdir:指定項目目錄,本示例中為/home/myblog/uwsgi_project,根據項目修改。

    • wsgi-file:指定Django's wsgi file文件,根據項目修改。

    • processes:最大工作進程。

    • threads:每個工作進程processes啟動后開啟的線程個數。

    • vacuum:環境退出時自動清理。

    • buffer-size:設置用于uwsgi包解析的內部緩存區大小為64k,默認是4k。

    image

    其他參數配置請根據項目自定義添加。

  5. 啟動程序。

    1. 執行以下命令,重啟Nginx服務。

      sudo systemctl restart nginx
    2. 執行以下命令,重啟uWSGI服務。

      1. 執行以下命令,停止已啟動的uWSGI程序。

        ps aux |grep uwsgi
        sudo kill -9 13187 #13187指通過上述命令獲取的pid,具體pid以您現場實時獲取的為準

        image

      2. 執行以下命令,啟動uWSGI服務。

        Alibaba Cloud Linux 3.2104/Alibaba Cloud Linux 2.1903/CentOS 7.x

        uwsgi --ini uwsgi_config.ini

        image

        Ubuntu 22.04/Ubuntu 20.04

        sudo uwsgi --ini uwsgi_config.ini
  6. 在本地電腦瀏覽器的地址欄輸入http://<ECS實例的公網IP地址>,即可訪問相關Django頁面。

    image