中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2022-08-24 11:16:06 來源:億速云 閱讀:127 作者:iii 欄目:開發技術

本篇內容主要講解“如何用nginx+uwsgi部署自己的django項目”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何用nginx+uwsgi部署自己的django項目”吧!

    第一步:換源

    輸入命令換掉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/這個命令來查看一下,是否設置正確,參考下圖

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

    3、創建uwsgi_params文件和靜態文件夾配置

    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

    最后輸入命令查看靜態文件夾是否配置正確:

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

    第五步:建立uwsgi和nginx的管道通信

    在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項目”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    大方县| 平原县| 闽侯县| 玛纳斯县| 保德县| 南宁市| 礼泉县| 布尔津县| 罗甸县| 潮州市| 巴东县| 灵璧县| 江城| 宝丰县| 无极县| 福泉市| 许昌县| 屏山县| 苍山县| 隆昌县| 监利县| 武山县| 富顺县| 理塘县| 屏山县| 邢台县| 孝感市| 四会市| 封丘县| 卓资县| 东城区| 思茅市| 陈巴尔虎旗| 从江县| 老河口市| 福贡县| 鹿邑县| 恩施市| 河北省| 奉节县| 阿拉善左旗|