Ubuntu16.04上部署Django項目nginx+uwsgi

更新ubuntu系統(tǒng)

sudo apt-get update
sudo apt-get upgrade

安裝nginx

  • 安裝

apt-get install nginx

  • 查看版本

nginx -V

創(chuàng)建虛擬環(huán)境

  • 安裝pip

sudo apt-get install python3-pip

  • 升級pip

sudo pip3 install --upgrade pip

  • 安裝virtualenv虛擬環(huán)境

sudo pip3 install virtualenv

  • 安裝virtualenvwrapper

sudo pip3 install virtualenvwrapper

  • 創(chuàng)建目錄保存虛擬環(huán)境

mkdir $HOME/.virtualenvs

  • 如果在更新pip3后使用出現(xiàn)
ImportError: cannot import name main

解決方法:進(jìn)入/usr/bin/pip3 進(jìn)行修改修改
將這三行

from pip import main
if __name__ == '__main__':
    sys.exit(main())

修改為下面內(nèi)容后就可以了(ps:如果還是不行,可以嘗試退出重新連接一下)

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__.main())
  • 接下來在~/.bashrc中添加以下內(nèi)容
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
  • 運行

source ~/.bashrc

  • 創(chuàng)建虛擬環(huán)境

mkvirtualenv [虛擬環(huán)境名]

  • 進(jìn)入虛擬環(huán)境

workon myblog_env/bin/activate

安裝uwsgi

  • 安裝

pip install uwsgi

  • 查看uwsgi版本

uwsgi --version

  • 測試uwsgi螟蝙,創(chuàng)建test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
  • 用uwsgi運行test.py

uwsgi --http :8000 --wsgi-file test.py

  • 訪問服務(wù)器ip:8000日熬,如果出現(xiàn)hello world則說明uwsgi已經(jīng)能夠正常使用了

配置nginx和uwsgi

  • 在/home/ubuntu/中創(chuàng)建nginx.conf并在文件中添加以下內(nèi)容
 upstream django{
        server 127.0.0.1:8001; # 設(shè)置socket端口
}


server {

    listen      80; # 監(jiān)聽端口
    server_name .hluner.cn;# 自己的域名
    charset     utf-8;
    client_max_body_size 75M;  # 最大上傳

    location /media  {
        alias /home/ubuntu/myblog/media;  # Django項目的media
    }

    location /static {
        alias /home/ubuntu/myblog/static; # Django項目的靜態(tài)目錄
    }

    location / {
        include     /home/ubuntu/uwsgi_params; # uwsgi_params絕對路徑
        uwsgi_pass  django; # 對應(yīng)最上面設(shè)置的socket套接字
    }
}

創(chuàng)建uwsgi.ini添加

[uwsgi]
# 項目目錄
chdir=/home/ubuntu/myblog/
# 指定項目的application
module=myblog.wsgi:application
# 進(jìn)程個數(shù)
workers=5
# 指定靜態(tài)文件
static-map=/static=/home/ubuntu/myblog/static
# 啟用主進(jìn)程巾表,對應(yīng)使用的虛擬環(huán)境
home=/root/.virtualenvs/myblog_env
master=true
# 啟用線程
enable-threads=true
# 設(shè)置自中斷時間
harakiri=30
# 設(shè)置緩沖
post-buffering=4096
# 指定socket的文件路徑
socket=:8001
vacuum = true

創(chuàng)建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;

其中uwsgi_params的內(nèi)容是固定的晓淀,其余兩個要根據(jù)項目自己編寫
在setting.py中添加

STATIC_ROOT ='靜態(tài)文件的存儲位置'

然后需要收集靜態(tài)文件

python manage.py collectstatic

讓nginx.conf生效

  • 進(jìn)入目錄

cd /etc/nginx/sites-enabled/

  • 刪除其中默認(rèn)的文件

rm default

  • 創(chuàng)建軟鏈接

ln -s /home/ubuntu/nginx.conf [重命名名稱]

  • 重啟nginx服務(wù)

/etc/init.d/nginx restart

  • 進(jìn)入到/home/ubuntu啟動uwsgi

uwsgi --ini uwsgi.ini

輸入ip:80查看如果項目啟動成功就可以了

  • 退出虛擬環(huán)境,在真實環(huán)境中安裝uwsgi,通過外部的uwsgi連接到虛擬環(huán)境中的uwsgi

pip3 install uwsgi

  • 為了讓項目在后臺直接運行可以將啟動命令寫到 /etc/rc.local中

cd /etc/rc.local

在其中添加

 /usr/local/bin/uwsgi --ini /home/ubuntu/uwsgi.ini
  • 重啟服務(wù)器

reboot

如果重啟成功后訪問ip就可以看到項目正常運行則說明已經(jīng)部署成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末准潭,一起剝皮案震驚了整個濱河市她君,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌警没,老刑警劉巖匈辱,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杀迹,居然都是意外死亡亡脸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門树酪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浅碾,“玉大人,你說我怎么就攤上這事续语〈剐唬” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵疮茄,是天一觀的道長滥朱。 經(jīng)常有香客問我,道長力试,這世上最難降的妖魔是什么徙邻? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮畸裳,結(jié)果婚禮上缰犁,老公的妹妹穿的比我還像新娘。我一直安慰自己躯畴,他們只是感情好民鼓,可當(dāng)我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蓬抄,像睡著了一般丰嘉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嚷缭,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天饮亏,我揣著相機與錄音耍贾,去河邊找鬼。 笑死路幸,一個胖子當(dāng)著我的面吹牛荐开,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播简肴,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼晃听,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砰识?” 一聲冷哼從身側(cè)響起能扒,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辫狼,沒想到半個月后初斑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡膨处,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年见秤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片真椿。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹃答,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出突硝,到底是詐尸還是另有隱情挣跋,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布狞换,位于F島的核電站避咆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏修噪。R本人自食惡果不足惜查库,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望黄琼。 院中可真熱鬧樊销,春花似錦、人聲如沸脏款。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撤师。三九已至剂府,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剃盾,已是汗流浹背腺占。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工淤袜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衰伯。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓铡羡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親意鲸。 傳聞我的和親對象是個殘疾皇子烦周,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,666評論 2 350

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