Ubuntu16.04+python3+django1.11+uWSGI+nginx部署django項目

Ubuntu16.04+python3+django1.11+uWSGI+nginx部署django項目

相信很多的小伙伴都和我遇到過同樣的問題,我們學(xué)習(xí)django后寫好項目后把代碼放到服務(wù)器上肯定不能使用django自帶的服務(wù)器給用戶來使用我們的網(wǎng)站呀,因為django自帶的服務(wù)器性能有限所以我們在真正部署的時候是不用它的,那怎么辦呢遥金?不用擔(dān)心我教大家使用nginx服務(wù)器來解決這個問題。

nginx

nginx是什么東西,就是和Apache办成,Tomcat類似的一款服務(wù)器軟件,如果你真的不知道這是什么鬼東西那就真的沒得必要往下面看了搂漠,建議先去弄弄清楚這個軟件是什么東西迂卢,再回過來看就行了。上百度,谷歌搜一搜就好了而克,其實很簡單的靶壮。

uWSGI

其實著也是一個服務(wù)器軟件啦,下面我提供了一個大佬寫的文章快去學(xué)習(xí)學(xué)習(xí)了员萍。
https://blog.csdn.net/mnszmlcd/article/details/78819237

搭建的原理示意圖

我們的目的肯定是是打通瀏覽器訪問我們django代碼的通道腾降,首先著條通道上我們要修建兩座橋梁,首先是nginx碎绎,這是提供給我們?yōu)g覽器訪問的入口螃壤,通過nginx轉(zhuǎn)發(fā)80端口進(jìn)來的數(shù)據(jù)包到本地環(huán)回地址(127.0.0.1)的8010端口上(其他端口也是闊以的,這里只是拿8010舉例子)筋帖,然后我們通過uWSGI開啟本地的8010供本地訪問奸晴,這里不理解我可以舉個例子,在這里相當(dāng)于我們運(yùn)行了

$ python manage.py runserver 127.0.0.1:8010

nginx則起到了一個轉(zhuǎn)發(fā)端口的功能日麸,說完了原理寄啼,接下來就正式開始我們的安裝過程了

配置

安裝nginx

首先進(jìn)入/etc/apt目錄下

$ cd /etc/apt

下載公鑰

$ sudo wget http://nginx.org/keys/nginx_signing.key

(如果提示找不到命令wget,那就使用命令下載這個http工具:$ sudo apt-get install wget)

加載公鑰

$ sudo apt-key add nginx_signing.key

然后把下載源添加在apt下載源的后面 如果你不會使用vim編輯器赘淮,也可以使用nano這個比較簡單一些

$ sudo vim /etc/apt/sources.list

deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

因為我使用的ubuntu系統(tǒng)是16.04版本的對應(yīng)的發(fā)行版名稱是xenial

  • Version codename Supported Platforms
  • 14.04 trusty x86_64, i386, aarch64/arm64
  • 16.04 xenial x86_64, i386, ppc64el, aarch64/arm64
  • 17.10 artful x86_64, i386
  • 18.04 bionic x86_64
    對應(yīng)自己系統(tǒng)的版本選擇對應(yīng)的系統(tǒng)名
    配置好源以后就開始下載安裝了安裝

$ sudo apt-get update

$ sudo apt-get install nginx

安裝完成后我們就啟動它

$ sudo nginx

執(zhí)行命令后沒有任何回顯 使用ps命令可以查看進(jìn)程是否啟動

$ ps aux | grep nginx

nginx啟動后然后在瀏覽器中輸入你服務(wù)器的ip地址辕录,回車,只要不出下如下這樣無法鏈接到服務(wù)器梢卸,說明你nginx是安裝成功的

很多時候你可能是配置正確的走诞,但是就是不知道為什么訪問不了。很多情況都可能是你選擇的云服務(wù)商有個安全規(guī)則給你關(guān)閉了端口蛤高,所以你必須手動打開你需要的端口蚣旱。比如我在第一次用Azure的時候也是遇到了這個問題,而且Azure有個小坑的地方是它有入站規(guī)則和出站規(guī)則戴陡。

這個配置也是有點小坑的地方塞绿,我給大家看下我是怎么配置的:

特別是這個源端口范圍,最好是使用*不要限制源端口恤批,因為客戶端的端口是操作系統(tǒng)隨機(jī)給的异吻。
下面是出站規(guī)則的配置:

我這里是為了開啟80端口,如果你是為了開啟其他的端口則只需要把我圖中的80換成你想要的端口就行了喜庞。

安裝 uWSGI

uWSGI是python的一個第三方包诀浪,首先我們選擇用python的虛擬環(huán)境來運(yùn)行我們的項目
但是ubuntu16.04默認(rèn)的是python3.5,首先我們需要更換為python3.6
加裝含有python3.6.4的PPA

$ sudo add-apt-repository ppa:deadsnakes/ppa

如果和我一樣報錯就可以運(yùn)行如下命令延都,沒有報錯就可以不管了

$ sudo apt install software-properties-common

重新運(yùn)行如下命令雷猪,如果你是root用戶則不用加上sudo,否則會出錯

$ add-apt-repository ppa:deadsnakes/ppa

$ sudo apt-get update

$ sudo apt-get install python3.6

這里也可以直接把python3.5卸載掉晰房,卸載的命令為:

$ sudo apt-get remove python3.5

然后再安裝Python3.6

到了這里求摇,因為源的問題射沟,可能有點慢,与境,验夯,,

查看新安裝的python版本

$ python3.6 -V

我們使用python3命令會默認(rèn)的訪問python3.5的版本嚷辅,接下來我們替換掉原先的軟連接
列出系統(tǒng)當(dāng)前存在的python版本及python默認(rèn)的版本

$ ls -l /usr/bin | grep python

我們就是要替換掉途中的這個軟連接

$ sudo rm /usr/bin/python3

$ sudo ln -s /usr/bin/python3.6 /usr/bin/python3

重新查看文件簿姨,發(fā)現(xiàn)多了圖中的軟連接,就說明成功了

然后我們再運(yùn)行python3 就默認(rèn)進(jìn)入3.6

$ python3

接著安裝python虛擬環(huán)境
首先安裝python3的pip下載工具

$ sudo apt-get install python3-pip

$ python3 -m pip -V

$ sudo python3 -m pip install virtualenv

如果你在運(yùn)行這天命令的時候出現(xiàn)了如下報錯簸搞,

則在~/.bashrc 文件末尾加上
export PIP_REQUIRE_VIRTUALENV=false

$ sudo source ~/.bashrc

$ sudo python3 -m pip install virtualenvwrapper

這樣便安裝成功
并把:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

添加在~/.bashrc文件末尾
然后重新讀取配置文件使得配置生效

$ source ~/.bashrc

image.png

新建

$ mkvirtualenv py3.6

進(jìn)入虛擬環(huán)境py3.5 前面出下(py3.6)表示已經(jīng)進(jìn)入虛擬環(huán)境 并安裝django扁位,uwsgi

$ workon py3.6

$ pip install django==1.11

$ pip install uwsgi

如果安裝uwsgi出現(xiàn)了如下錯誤

則安裝依賴如下

$ sudo apt-get install libpython3.6-dev

然后重新安裝uwsgi

$ pip install uwsgi

知道這里我們就把需要的東西的下載安裝好了

django hello world

接下來我們使用django寫一個簡單的helloworld

上傳項目到服務(wù)器中, 如果不知道怎么上傳可以試試pycharm的這個功能

并上傳到/var/www目錄中

配置nginx,uWSGI

配置文件 django.conf 并放到目錄 /etc/nginx/conf.d/ 中

server{

    listen 8008;
    # 47.106.253.190是你的服務(wù)器ip
    server_name 47.106.253.190;
    
    charset utf-8;
    
    root /var/www/beike;
    
    index test.html;
    
    location / {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass localhost:8010;
    }
    
    location /static {
        alias /var/www/beike/static/;
    }
    
    #location / {
    #   alias /var/www/beike/;
    #}
    
}

然后配置文件 uwsgi.ini 并放到/var/www/hello中

[uwsgi]
# 作為nginx連接時使用
socket=127.0.0.1:8010
# 直接作為web服務(wù)使用
# 配置工程目錄
chdir=/var/www/beike
# 配置項目的wsgi目錄趁俊,相對于工程目錄
wsgi-file=beike/wsgi.py

#配置進(jìn)程線程信息
processes=6
threads=2
enable-threads=True
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log

然后運(yùn)行uwsgi

$ uwsgi --ini /var/www/hello/uwsgi.ini

$ nginx -s stop

$ nginx

然后便配置成功域仇,可以訪問了

uwsgi的操作命令

你在以后修改了django文件保存后應(yīng)該重啟uwsgi

$ uwsgi --reload uwsgi.pid

如果要停掉uwsgi用如下命令:

$ uwsgi --stop uwsgi.pid

uwsgi.pid文件是你在運(yùn)行uwsgi --ini /var/www/hello/uwsgi.ini后在uwsgi.ini同級目錄下生成的文件。

使用cat命令可以查看uwsgi.pid 文件的內(nèi)容寺擂,在其實保存的就是運(yùn)行的uwsgi主程序的pid

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末暇务,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子怔软,更是在濱河造成了極大的恐慌垦细,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挡逼,死亡現(xiàn)場離奇詭異括改,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)家坎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門嘱能,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虱疏,你說我怎么就攤上這事惹骂。” “怎么了做瞪?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵对粪,是天一觀的道長。 經(jīng)常有香客問我装蓬,道長衩侥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任矛物,我火速辦了婚禮,結(jié)果婚禮上跪但,老公的妹妹穿的比我還像新娘履羞。我一直安慰自己峦萎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布忆首。 她就那樣靜靜地躺著爱榔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪糙及。 梳的紋絲不亂的頭發(fā)上详幽,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音浸锨,去河邊找鬼唇聘。 笑死,一個胖子當(dāng)著我的面吹牛柱搜,可吹牛的內(nèi)容都是我干的迟郎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼聪蘸,長吁一口氣:“原來是場噩夢啊……” “哼宪肖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起健爬,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤控乾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后娜遵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜕衡,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年魔熏,在試婚紗的時候發(fā)現(xiàn)自己被綠了衷咽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蒜绽,死狀恐怖镶骗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情躲雅,我是刑警寧澤鼎姊,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站相赁,受9級特大地震影響相寇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钮科,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一唤衫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绵脯,春花似錦佳励、人聲如沸休里。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妙黍。三九已至,卻和暖如春瞧剖,著一層夾襖步出監(jiān)牢的瞬間拭嫁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工抓于, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留做粤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓毡咏,卻偏偏與公主長得像驮宴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呕缭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容