阿里云centos7部署Django項(xiàng)目

一氯檐、使用uwsgi服務(wù)部署項(xiàng)目
1.將項(xiàng)目所需要的模塊生成安裝包文件,并將項(xiàng)目壓縮和安裝包文件都上傳到指定的服務(wù)器目錄下寂玲,在運(yùn)行項(xiàng)目前先執(zhí)行安裝包文件
pip freeze > pip.list(pip.txt)
pip install -r pip.list
2.在項(xiàng)目主目錄下創(chuàng)建static_file文件夾塔插,打開項(xiàng)目配置文件進(jìn)行靜態(tài)文件的配置,編輯blog/settings.py添加配置目的是收集項(xiàng)目中的所有靜態(tài)文件

在settings.py添加配置
STATIC_ROOT=’/home/damu/blog/static_file/’(目錄為實(shí)際項(xiàng)目中的路徑目錄)
執(zhí)行收集靜態(tài)文件命令
python manage.py collectstatic

3.修改數(shù)據(jù)庫配置連接拓哟,確定服務(wù)器數(shù)據(jù)庫正常想许、數(shù)據(jù)庫登錄賬戶和密碼正常

生成數(shù)據(jù)模型
python manage.py makemigrations
同步數(shù)據(jù)庫數(shù)據(jù)
python manage.py migrate

(1)第一次報(bào)錯:ModuleNotFoundError: No module named 'django.core.urlresolvers'

 File "/usr/local/project/demo03/myblog/author/views.py", line 2, in <module>
    from django.core.urlresolvers import reverse
ModuleNotFoundError: No module named 'django.core.urlresolvers'

檢查得知:django2.0 把原來的 django.core.urlresolvers 包 更改為了 django.urls包,所以我們需要把導(dǎo)入的包都修改一下就可以了彰檬。
修改:

from django.urls import reverse

(2)第二次報(bào)錯:數(shù)據(jù)庫IP連接錯誤

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 113] No route to host)")

檢查:發(fā)現(xiàn)在django的settings文件中沒有配置連接數(shù)據(jù)庫的ip和端口伸刃,于是在DATABASES添加這兩項(xiàng)內(nèi)容

'HOST':'localhost',
'PORT':'3309'

(3)第三次報(bào)錯:數(shù)據(jù)庫密碼錯誤

django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

檢查:發(fā)現(xiàn)我在數(shù)據(jù)庫密碼的位置多寫了個空格,將空格刪除后逢倍,數(shù)據(jù)庫連接正常捧颅。
4.啟動Django項(xiàng)目(使用python命令正常啟動項(xiàng)目方式)
這是在linux系統(tǒng)下啟動Django項(xiàng)目的方式

python manage.py runserver 0.0.0.0:80(0.0.0.0是允許任意主機(jī)訪問,端口必須為80较雕,據(jù)我推測碉哑,在沒有配置nginx代理的時(shí)候,只能是80端口對外開發(fā)作為外部訪問端口亮蒋,同時(shí)服務(wù)器默認(rèn)配置就會監(jiān)聽80端口)

在windows系統(tǒng)下啟動方式為

python manage.py runserver 0.0.0.0:8080(這里可以使用任意端口扣典,如果不使用0.0.0.0就是只允許本機(jī)訪問)

5.使用uwsgi代理啟動項(xiàng)目
安裝uwsgi

pip install uwsgi

配置uwsgi.ini文件,在項(xiàng)目的本目錄下新建一個uwsgi.ini文件,用來配置uwsgi文件慎玖,添加配置如下:

# 指定uwsgi配置
[uwsgi]
# 指定部署項(xiàng)目之后的HTTP訪問
http=47.106.218.225:8080(使用uwsgi代理時(shí))
# 指定項(xiàng)目位置
chdir=/usr/local/project/demo03/myblog/
# 指定wsgi文件
wsgi-file=myblog/wsgi.py
# 指定啟動進(jìn)程數(shù)量processes/workers
processes=4
# 指定啟動線程數(shù)量
threads=2
# 指定啟動主進(jìn)程管理
master=true
# 指定存放進(jìn)程編號的id文件
pidfile=uwsgi.pid
# 指定進(jìn)程停止時(shí)清楚垃圾數(shù)據(jù)
vacuum=true
# 指定啟用日志記錄(這里已經(jīng)指定了輸出的日志存放位置)
daemonize=uwsgi.log
# 指定靜態(tài)文件映射
static-map=/static=static_file(使用uwsgi代理時(shí))

uwsgi啟動項(xiàng)目

uwsgi --ini uwsgi.ini       啟動項(xiàng)目
uwsgi --stop uwsgi.pid      停止項(xiàng)目
uwsgi --reload uwsgi.pid    重啟項(xiàng)目

這里使用uwsgi啟動項(xiàng)目的方式我還沒有完成整明白贮尖,還有待研究

二、使用uwsgi+nginx部署項(xiàng)目
使用uwsgi+nginx部署項(xiàng)目從上傳項(xiàng)目到服務(wù)器趁怔、收集靜態(tài)文件湿硝、連接數(shù)據(jù)庫配置都是和uwsgi啟動項(xiàng)目是相同的薪前,但后面的配置uwsgi.ini文件和nginx.conf文件略微有些不同
1.配置uwsgi.ini文件(還是之前uwsgi代理的那個uwsgi.ini文件)

# 指定uwsgi配置
[uwsgi]
# 指定部署項(xiàng)目之后的HTTP訪問
socket = 127.0.0.1:8080(使用uwsgi+nginx代理,和nginx.conf端口一致)
#http=47.106.218.225:8080(使用uwsgi代理時(shí))
# 指定項(xiàng)目位置
chdir=/usr/local/project/demo03/myblog/
# 指定wsgi文件
wsgi-file=myblog/wsgi.py
# 指定啟動進(jìn)程數(shù)量processes/workers
processes=4
# 指定啟動線程數(shù)量
threads=2
# 指定啟動主進(jìn)程管理
master=true
# 指定存放進(jìn)程編號的id文件
pidfile=uwsgi.pid
# 指定進(jìn)程停止時(shí)清楚垃圾數(shù)據(jù)
vacuum=true
# 指定啟用日志記錄(這里已經(jīng)指定了輸出的日志存放位置)
daemonize=uwsgi.log
# 指定靜態(tài)文件映射
#static-map=/static=static_file(使用uwsgi代理時(shí))

2.安裝nginx

pip install nginx -y

nginx的其他操作命令

nginx [options]
-v   查看nginx版本
-V   查看nginx版本及配置信息
-t   測試服務(wù)器是否可以正常運(yùn)行
-T   測試配置選項(xiàng)運(yùn)行服務(wù)器
-c   指定配置文件啟動服務(wù)器
-s   發(fā)送一個選項(xiàng)信號執(zhí)行操作
nginx   啟動服務(wù)器
nginx –s stop     停止服務(wù)器关斜;不論是否有數(shù)據(jù)未完成示括,直接退出
nginx –s quit     停止服務(wù)器;如果數(shù)據(jù)處理未完成痢畜,等待完成退出
nginx –s reload   重新加載
nginx –s reopen   重啟

3.配置nginx.conf文件(/etc/nginx/nginx.conf)

http {
..
server {    # 配置一個虛擬服務(wù)器
 listen 80; # 服務(wù)監(jiān)聽端口
    server_name 192.168.1.100;# 配置監(jiān)聽服務(wù)(個人服務(wù)器IP)

    location / {  # 配置請求反向代理
        include uwsgi_params; # 指定代理數(shù)據(jù)類型
        uwsgi_pass 127.0.0.1:8080; # 指定代理IP和端口
    }
    location /static { # 配置靜態(tài)文件服務(wù)器
        alias /home/damu/blog/static_file;(項(xiàng)目靜態(tài)文件絕對路徑)
    }
}
..
}
注:這里我使用了8080端口才管用垛膝,其他的端口都不行,我想會不會是因?yàn)镈jango的默認(rèn)端口是8080丁稀,所以只能用這個8080端口吼拥?

4.配置文件之后,重新加載nginx配置信息

nginx -s reload
注意:在執(zhí)行此命令之前先保證nginx服務(wù)是否已經(jīng)啟動二驰,之前我在執(zhí)行重新加載nginx配置信息的時(shí)候提示沒有找到id扔罪,我很是懵逼啊,然后去網(wǎng)上查找了半天桶雀,
才發(fā)現(xiàn)原來是我的nginx服務(wù)根本沒有啟動矿酵,所以才導(dǎo)致的,簡直是把我氣得快吐血了...

5.使用uwsgi+nginx啟動服務(wù)

uwsgi --ini uwsgi.ini
tailf uwsgi.log # 查看日志
ps -ef|grep uwsgi # 查看uwsgi進(jìn)程

6.輸入服務(wù)器IP矗积,訪問成功全肮,OK!

三棘捣、在網(wǎng)上看到的配置數(shù)據(jù)庫報(bào)錯辜腺,不知道能不能用上:

image.png

四、windows環(huán)境下配置Django項(xiàng)目報(bào)錯總結(jié)
1.報(bào)錯信息為:類型錯誤乍恐,類型'Author'的對象不是JSON可序列化的
image.png

解決過程:這個問題我首先從視圖處理函數(shù)的返回值開始查起來评疗,首先是確定視圖函數(shù)的返回值是否正常;然后我在網(wǎng)頁視圖中查看視圖form表單提交的數(shù)據(jù)類型是否正確茵烈;檢查這些是有些小問題的百匆,但是并不是主要的問題。然后我又去百度上查看到底是哪出了問題呜投,結(jié)果真的被我找到了加匈。
相關(guān)問題網(wǎng)址:https://www.cnblogs.com/ljwbook/p/4957841.html
問題:我在寫作者模塊時(shí)用到了session,需要序列化一個對象實(shí)例仑荐,直接使用request.session['login_user'] = author這樣的方式會報(bào)無法序列化的錯誤雕拼。
解決:從Django1.6開始session里面的數(shù)據(jù)都是用json來序列的,json的session只能接受簡單的數(shù)據(jù)結(jié)構(gòu)粘招,如str啥寇,list,dict。一種方法是先把cart的數(shù)據(jù)放在一個dict里面再存到session或者可以換一個SessionSerializer示姿。另外一種方法是還提供一個pickle來序列甜橱,可以存放任何一個數(shù)據(jù)機(jī)構(gòu)。
在settings.py中加入

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'

問題解決栈戳!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市难裆,隨后出現(xiàn)的幾起案子子檀,更是在濱河造成了極大的恐慌,老刑警劉巖乃戈,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褂痰,死亡現(xiàn)場離奇詭異,居然都是意外死亡症虑,警方通過查閱死者的電腦和手機(jī)缩歪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谍憔,“玉大人匪蝙,你說我怎么就攤上這事∠捌叮” “怎么了逛球?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長苫昌。 經(jīng)常有香客問我颤绕,道長,這世上最難降的妖魔是什么祟身? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任奥务,我火速辦了婚禮,結(jié)果婚禮上袜硫,老公的妹妹穿的比我還像新娘氯葬。我一直安慰自己,他們只是感情好父款,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布溢谤。 她就那樣靜靜地躺著,像睡著了一般憨攒。 火紅的嫁衣襯著肌膚如雪世杀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天肝集,我揣著相機(jī)與錄音瞻坝,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛所刀,可吹牛的內(nèi)容都是我干的衙荐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼浮创,長吁一口氣:“原來是場噩夢啊……” “哼忧吟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起斩披,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤溜族,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垦沉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煌抒,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年厕倍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寡壮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡讹弯,死狀恐怖况既,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闸婴,我是刑警寧澤坏挠,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站邪乍,受9級特大地震影響降狠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庇楞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一榜配、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吕晌,春花似錦蛋褥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至乏沸,卻和暖如春淫茵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹬跃。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工匙瘪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓丹喻,卻偏偏與公主長得像薄货,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碍论,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

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