如何用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頁面結果,表示項目運行正常。

    ? 版權聲明
    THE END
    喜歡就支持一下吧
    點贊10 分享