django部署

在開發(fā)機上的準備工作:

  1. 確認項目沒有bug陋气。
  2. pip freeze > requirements.txt將當前環(huán)境的包導出到requirements.txt文件中,方便在部署的時候安裝鸥鹉。
  3. 將項目上傳到服務器上的/srv目錄下稳析。這里以git的形式為例踊淳。scp
    • git init
    • git remote add origin xxx.git
    • git add .
    • git commit -m 'first commit'
    • git pull origin master --allow-unrelated-histories
    • git push origin master

在服務器上的準備工作:

  1. 安裝好項目用到的Python甚牲。
    • sudo apt install python
    • sudo apt install python-pip
    • pip install --upgrade pip
  2. 安裝virtualenv以及virutalenvwrapper灶壶。并創(chuàng)建虛擬環(huán)境肝断。
    • pip install virtualenv
    • pip install virtualenvwrapper
    • sudo apt install vim
    • vim ~/.bashrc 進入文件中,填入以下兩行代碼:
      export WORKON_HOME=$HOME/.virtualenvs
      source /usr/local/bin/virtualenvwrapper.sh
      
    • source ~/.bashrc
  3. 安裝git
    sudo apt install git
    
  4. 為了方便XShell或者CRT連接服務器,建議安裝OpenSSH
    sudo apt install openssh-server openssh-client
    service ssh restart
    
  5. 安裝MySQL服務器和客戶端:
    sudo apt install mysql-server mysql-client
    sudo apt-get install libmysqld-dev
    
  6. 進入虛擬環(huán)境中胸懈,然后進入到項目所在目錄担扑,執(zhí)行命令:pip install -r requirements.txt,安裝好相應的包趣钱。
  7. mysql數(shù)據(jù)庫中涌献,創(chuàng)建相應的數(shù)據(jù)庫。
  8. 執(zhí)行python manage.py migrate命令首有,將遷移文件燕垃,映射到數(shù)據(jù)庫中,創(chuàng)建相應的表井联。
  9. 執(zhí)行python manage.py runserver 0.0.0.0:8000卜壕,然后在你自己電腦上,在瀏覽器中輸入http://你的服務器的ip地址:8000/低矮,訪問下網(wǎng)站所有頁 面印叁,確保所有頁面都沒有錯誤。
  10. 設置ALLOW_HOST為你的域名军掂,以及ip地址轮蜕。
  11. 設置DEBUG=False,避免如果你的網(wǎng)站產(chǎn)生錯誤蝗锥,而將錯誤信息暴漏給用戶跃洛。
  12. 收集靜態(tài)文件:python manage.py collectstatic

安裝uwsgi

  1. uwsgi是一個應用服務器终议,非靜態(tài)文件的網(wǎng)絡請求就必須通過他完成汇竭,他也可以充當靜態(tài)文件服務器,但不是他的強項穴张。uwsgi是使用python編寫的细燎,因此通過pip install uwsgi就可以了。(uwsgi必須安裝在系統(tǒng)級別的Python環(huán)境中皂甘,不要安裝到虛擬環(huán)境中)玻驻。
  2. 使用命令uwsgi --http :8000 --module zhiliaoketang.wsgi --vritualenv=/root/.virtualenvs/django-env-py2。用uwsgi啟動項目偿枕,如果能夠在瀏覽器中訪問到這個頁面璧瞬,說明uwsgi可以加載項目了。

編寫uwsgi配置文件:

在項目的路徑下面渐夸,創(chuàng)建一個文件叫做zhiliaoketang_uwsgi.ini的文件嗤锉,然后填寫以下代碼:

[uwsgi]

# Django相關的配置
# 必須全部為絕對路徑
# 項目的路徑
chdir           = /srv/zhiliaoketang
# Django的wsgi文件
module          = zhiliaoketang.wsgi
# Python虛擬環(huán)境的路徑
home            = /root/.virtualenvs/django-env-py2

# 進程相關的設置
# 主進程
master          = true
# 最大數(shù)量的工作進程
processes       = 10
# socket文件路徑,絕對路徑
socket          = /srv/zhiliaoketang/zhiliaoketang.sock
# 設置socket的權限
chmod-socket    = 666
# 退出的時候是否清理環(huán)境
vacuum          = true

然后使用命令uwsgi --ini zhiliaoketang.ini墓塌,看下是否還能啟動這個項目瘟忱。

安裝nginx:

  1. nginx是一個web服務器奥额。用來加載靜態(tài)文件和接收http請求的。通過命令sudo apt install nginx即可安裝酷誓。
  2. nginx常用命令:
    • 啟動nginx:service nginx start
    • 關閉nginx:service nginx stop
    • 重啟nginx:service nginx restart

收集靜態(tài)文件:

靜態(tài)文件應該讓nginx來服務披坏,而不是讓django來做态坦。首先確保你的settings.py文件中有一個STATIC_ROOT配置盐数,這個配置應該指定你的靜態(tài)文件要放在哪個目錄下。那么我們可以執(zhí)行以下命令:python manage.py collectstatic來收集所有靜態(tài)文件伞梯,將這些靜態(tài)文件放在指定的目錄下玫氢。

編寫nginx配置文件:

/etc/nginx/conf.d目錄下,新建一個文件谜诫,叫做zhiliaoketang.conf漾峡,然后將以下代碼粘貼進去:

upstream zhiliaoketang {
    server unix:///srv/zhiliaoketang/zhiliaoketang.sock; 
}

# 配置服務器
server {
    # 監(jiān)聽的端口號
    listen      80;
    # 域名
    server_name 192.168.0.101; 
    charset     utf-8;

    # 最大的文件上傳尺寸
    client_max_body_size 75M;  

    # 靜態(tài)文件訪問的url
    location /static {
        # 靜態(tài)文件地址
        alias /srv/zhiliaoketang/static_dist; 
    }

    # 最后,發(fā)送所有非靜態(tài)文件請求到django服務器
    location / {
        uwsgi_pass  zhiliaoketang;
        # uwsgi_params文件地址
        include     /etc/nginx/uwsgi_params; 
    }
}

寫完配置文件后喻旷,為了測試配置文件是否設置成功生逸,運行命令:service nginx configtest,如果不報錯且预,說明成功槽袄。
每次修改完了配置文件,都要記得運行service nginx restart锋谐。

使用supervisor配置:

讓supervisor管理uwsgi遍尺,可以在uwsgi發(fā)生意外的情況下,會自動的重啟涮拗。

  1. supervisor的安裝:在系統(tǒng)級別的python環(huán)境下pip install supervisor乾戏。
  2. 在項目的根目錄下創(chuàng)建一個文件叫做zlkt_supervisor.conf。內容如下:
    # supervisor的程序名字
    [program:mysite]
    # supervisor執(zhí)行的命令
    command=uwsgi --ini zlkt_uwsgi.ini
    # 項目的目錄
    directory = /srv/zhiliaoketang 
    # 開始的時候等待多少秒
    startsecs=0
    # 停止的時候等待多少秒
    stopwaitsecs=0  
    # 自動開始
    autostart=true
    # 程序掛了后自動重啟
    autorestart=true
    # 輸出的log文件
    stdout_logfile=/srv/zhiliaoketang/log/supervisord.log
    # 輸出的錯誤文件
    stderr_logfile=/srv/zhiliaoketang/log/supervisord.err
    
    [supervisord]
    # log的級別
    loglevel=info
    
    # 使用supervisorctl的配置
    [supervisorctl]
    # 使用supervisorctl登錄的地址和端口號
    serverurl = http://127.0.0.1:9001
    
    # 登錄supervisorctl的用戶名和密碼
    username = admin
    password = 123
    
    [inet_http_server]
    # supervisor的服務器
    port = :9001
    # 用戶名和密碼
    username = admin
    password = 123
    
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    

然后使用命令supervisord -c zlkt_supervisor.conf運行就可以了三热。
以后如果想要啟動uwsgi鼓择,就可以通過命令supervisorctl -c supervisor.conf進入到管理控制臺,然后可以執(zhí)行相關的命令進行管理:
* status # 查看狀態(tài)
* start program_name #啟動程序
* restart program_name #重新啟動程序
* stop program_name # 關閉程序
* reload # 重新加載配置文件
* quit # 退出控制臺

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末就漾,一起剝皮案震驚了整個濱河市呐能,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌从藤,老刑警劉巖催跪,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異夷野,居然都是意外死亡懊蒸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門悯搔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骑丸,“玉大人,你說我怎么就攤上這事⊥ㄎ#” “怎么了铸豁?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菊碟。 經(jīng)常有香客問我节芥,道長,這世上最難降的妖魔是什么逆害? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任头镊,我火速辦了婚禮,結果婚禮上魄幕,老公的妹妹穿的比我還像新娘相艇。我一直安慰自己,他們只是感情好纯陨,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布坛芽。 她就那樣靜靜地躺著,像睡著了一般翼抠。 火紅的嫁衣襯著肌膚如雪咙轩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天机久,我揣著相機與錄音臭墨,去河邊找鬼。 笑死膘盖,一個胖子當著我的面吹牛胧弛,可吹牛的內容都是我干的。 我是一名探鬼主播侠畔,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼结缚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了软棺?” 一聲冷哼從身側響起红竭,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喘落,沒想到半個月后茵宪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡瘦棋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年稀火,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赌朋。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡凰狞,死狀恐怖篇裁,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情赡若,我是刑警寧澤达布,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站逾冬,受9級特大地震影響黍聂,放射性物質發(fā)生泄漏。R本人自食惡果不足惜粉渠,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一分冈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧霸株,春花似錦、人聲如沸集乔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扰路。三九已至尤溜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汗唱,已是汗流浹背宫莱。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哩罪,地道東北人授霸。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像际插,于是被迫代替她去往敵國和親碘耳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容