目錄
第一步:換源
第二步:安裝相關套件
1.安裝python3
2.安裝openssh-server和net-tools
第三步:寫入測試文件並測試運行
1.寫入測試文件
2.測試執行
##為了避免輸入ip時,不輸入連接埠號也能正常使用,我們引入輕量級的nginx,這裡我們用命令列安裝並且啟動nginx
#輸入指令:
sudo nano uwsgi_params
第六步:将项目改为后台运行
首頁 運維 Nginx 如何用nginx+uwsgi部署自己的django項目

如何用nginx+uwsgi部署自己的django項目

May 12, 2023 pm 10:10 PM
nginx django uwsgi

    第一步:換源

    輸入指令換掉Ubuntu的下載來源

    sudo nano /etc/apt/sources.list
    登入後複製

    將以下全部替換掉原文件,我這裡用的是阿里的源,你也可以換其他的。

    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted
    deb http://mirrors.aliyun.com/ubuntu/ bionic universe
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates universe
    deb http://mirrors.aliyun.com/ubuntu/ bionic multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security universe
    deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable
    登入後複製
    分别输入以下命令,更新源
    sudo apt update
    sudo apt upgrade
    登入後複製

    第二步:安裝相關套件

    1.安裝python3

    # 安装python3
    sudo apt install python3
    # 查看python安装路径:
    which python
    # 查看python版本:建议使用3.6之后的版本,因为其他的笔者没试过,笔者用的是3.6.9版本
    python
    登入後複製

    2.安裝openssh-server和net-tools

    # 安装 openssh-server
    sudo apt install openssh-server
    #开启:
    sudo service ssh start
     
    # 安装net-tools  
    sudo apt install net-tools
    # 查看虚拟机ip:
    ifconfig
    登入後複製

    如下圖所示,就是我們的虛擬機器IP

    如何用nginx+uwsgi部署自己的django項目

     安裝django的運作環境

    #安装django运行环境:
    sudo apt install virtualenv
    # 创建环境
    virtualenv --python=/usr/bin/python3 myblog
    # 进入环境:
    cd myblog
    # 激活环境:
    source bin/activate
    登入後複製

    安裝django:pip3 install Django

    建立專案:django-admin.py startproject blog

    #啟動並且建立好專案之後就基本和下圖所示差不多了

    如何用nginx+uwsgi部署自己的django項目

    # 进入到blog中安装 uwsgi:
    pip3 install uwsgi
    登入後複製

    第三步:寫入測試文件並測試運行

    1.寫入測試文件

    安裝好之後我們再寫一個測試文件,用來測試我們專案的運作方式,實際專案也是一樣的。這裡我用的是nano編輯寫入方式,你也可以使用vim,方式不限,能建立寫入即可寫入指令為:

    sudo nano test.py

    需要寫入的檔案內容為:

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

    2.測試執行

    測試指令為:uwsgi --http :8000 --wsgi-file test.py

    #回車之後,我們在瀏覽器輸入ip加port埠號,我的是192.168.217.133:8000。在瀏覽器開啟發現報了以下錯誤。

    如何用nginx+uwsgi部署自己的django項目

     對於這個錯誤,我們只需要打開專案文件的settings.py文件,在ALLOWED_HOSTS裡面添加自己虛擬機器的地址,就ok了,然後我們再測試運行,發現正常,網頁輸出hello world。這裡說明uwsgi能夠正常運作測試檔。

    如何用nginx+uwsgi部署自己的django項目

    但是我們並不是為了運行test.py文件,我們是為了運行自己的django項目,這裡我們需要對上一個命令進行修改,改為:uwsgi - -http :8000 --module blog.wsgi

    ##第四步:引入nginx

    1、安裝啟動nginx

    ##為了避免輸入ip時,不輸入連接埠號也能正常使用,我們引入輕量級的nginx,這裡我們用命令列安裝並且啟動nginx

    安裝:

    sudo apt install nginx

    啟動:

    sudo service nginx start

    2、寫入conf設定檔

    #輸入指令:

    sudo nano /etc/nginx/sites-available/blog_nginx.conf

    新建一個conf文件,並且寫入以下內容,將裡面涉及路徑的地方全部改為你自己專案的路徑:

    upstream django {
        # server unix:///home/python/myblog/blog/blog.sock; # 这里的路径改为你自己项目路径
        server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    }
    server {
        listen      8000;
        server_name 192.168.217.133; # 将这里的ip地址改为你自己的虚拟机或者服务器地址
        charset     utf-8;
        client_max_body_size 75M;   # adjust to taste
        location /media  {
            alias /home/python/myblog/blog/media;  # your Django project's media files - amend as required
        }
        location /static {
            alias /home/python/myblog/blog/static; # your Django project's static files - amend as required
        }
        location / {
            uwsgi_pass  django;
            include     /home/python/myblog/blog/uwsgi_params; # the uwsgi_params file you installed
        }
    }
    登入後複製

    創建好文件之後,我們需要對該文件創建一個軟鏈接,需要輸入以下命令:

    sudo ln -s /etc/nginx/sites-available/blog_nginx.conf /etc/nginx/sites-enabled

    #完成之後我們可以透過ll /etc/nginx/sites-enabled/這個指令來查看一下,是否設定正確,參考下圖

    ##3、建立uwsgi_params檔案和靜態資料夾配置如何用nginx+uwsgi部署自己的django項目

    1)、uwsgi_params

    這裡我們需要建立一個uwsgi_params文件,建立指令為:
    sudo nano uwsgi_params

    並且將下面內容一字不差的寫入到uwsgi_params檔案中儲存並退出

    uwsgi_param  QUERY_STRING       $query_string;
    uwsgi_param  REQUEST_METHOD     $request_method;
    uwsgi_param  CONTENT_TYPE       $content_type;
    uwsgi_param  CONTENT_LENGTH     $content_length;
    uwsgi_param  REQUEST_URI        $request_uri;
    uwsgi_param  PATH_INFO          $document_uri;
    uwsgi_param  DOCUMENT_ROOT      $document_root;
    uwsgi_param  SERVER_PROTOCOL    $server_protocol;
    uwsgi_param  REQUEST_SCHEME     $scheme;
    uwsgi_param  HTTPS              $https if_not_empty;
    uwsgi_param  REMOTE_ADDR        $remote_addr;
    uwsgi_param  REMOTE_PORT        $remote_port;
    uwsgi_param  SERVER_PORT        $server_port;
    uwsgi_param  SERVER_NAME        $server_name;
    登入後複製

    檔案儲存之後重啟nginx即可

    2)、建立靜態資料夾

    #打開django專案的settings.py文件,新增靜態文件的路徑,如下圖: 

    然後儲存退出並複製映射靜態文件,指令為:如何用nginx+uwsgi部署自己的django項目python manage. py collectstatic

    建立media資料夾:mkdir  media

    最後輸入指令查看靜態資料夾是否設定正確:

    #第五步:建立uwsgi和nginx的管道通訊如何用nginx+uwsgi部署自己的django項目

    在uwsgi 中將http通訊改為socket通信,修改指令為:uwsgi --socket :8001 --wsgi-file test .py

    此時進入阻塞,在瀏覽器中輸入IP位址:192.168.217.133:8000,發現可以打開,顯示hello world成功。說明uesgi和nginx通訊正常

    進入nginx設定檔中:sudo nano /etc/nginx/sites-available/blog_nginx.conf

    #將檔案中下面兩行中的第二行註釋掉,開啟第一行,但是路徑一定要正確,改使用管道通訊

    server unix:///home/python/myblog/blog.sock; # for a file socket

    # server 127.0.0.1:8001; # for a web port socket (we'll use this first)

    保存退出,重启nginx:sudo service nginx restart

    将uwsgi参数套节字改为blog.sock

    uwsgi --socket blog.sock --wsgi-file test.py

    回到浏览器输入:192.168.217.133:8000得到502:如图

    如何用nginx+uwsgi部署自己的django項目

    我们查看一下错误日志,发现是因为权限问题,解决办法,在命令行后面加入--chmod=666

    uwsgi --socket blog.sock --wsgi-file test.py --chmod=666

    运行之后发现没有问题,并且正常显示Hello World界面。

    现在我们运行django项目,命令为:uwsgi --socket blog.sock --module blog.wsgi --chmod=666

    刷新192.168.217.133:8000得到django的基础页面。

    目前可以说明nginx和uwsgi管道通信正常。

    第六步:将项目改为后台运行

    创建一个uwsgi的配置文件:sudo nano blog_uwsgi.ini

    写入一下内容,将其中的路径改为自己的项目路径

    # mysite_uwsgi.ini file
    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    chdir = /home/python/myblog/blog
    # Django's wsgi file
    module = blog.wsgi
    # the virtualenv (full path)
    home = /home/python/myblog
    # process-related settings
    # master
    master = true
    # maximum number of worker processes
    processes = 10
    # the socket (use the full path to be safe
    socket = /home/python/myblog/blog/mysite.sock
    # ... with appropriate permissions - may be needed
    chmod-socket = 664
    # clear environment on exit
    vacuum = true
    # daemonize uwsgi and write messages into given log
    daemonize = /home/python/myblog/blog/uwsgi.log
    登入後複製

    保存退出并且启动配置文件,命令为:uwsgi --ini blog_uwsgi.ini

    我们可以查看一下后台进程,是否正常启动,输入:ps aux

    如何用nginx+uwsgi部署自己的django項目

    最后回到nginx配置文件中,将监听端口改为80,重启nginx即可。在浏览器中输192.168.217.133得到django页面结果,表示项目运行正常。

    以上是如何用nginx+uwsgi部署自己的django項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

    如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

    docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

    可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

    docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

    Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

    怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

    確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

    docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

    在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

    nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

    可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

    nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

    在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

    怎麼啟動nginx服務器 怎麼啟動nginx服務器 Apr 14, 2025 pm 12:27 PM

    啟動 Nginx 服務器需要按照不同操作系統採取不同的步驟:Linux/Unix 系統:安裝 Nginx 軟件包(例如使用 apt-get 或 yum)。使用 systemctl 啟動 Nginx 服務(例如 sudo systemctl start nginx)。 Windows 系統:下載並安裝 Windows 二進製文件。使用 nginx.exe 可執行文件啟動 Nginx(例如 nginx.exe -c conf\nginx.conf)。無論使用哪種操作系統,您都可以通過訪問服務器 IP

    See all articles