centos7.4+Python3.6.8+Django2.1.5+Nginx1.12.2+uWSGI2.0.17.1搭建部署PythonWeb項目

轉(zhuǎn)載大家請注明出處:小成吉思汗的創(chuàng)作世界
http://www.reibang.com/p/cafe0bf74fad

第一次寫博客大家不要見笑,說一下寫這篇文章的初衷厅翔,這段時間自己用Python搞了一個Web項目需要部署到服務(wù)器乖坠,那么問題來了,如何部署刀闷?

老辦法熊泵,百度一下仰迁,搜出來的答案五花八門并且不全。

本片文章會給大家分享從0到1的過程顽分,并把在這個過程中遇到的問題和解決辦法分享給大家徐许,有不妥之處,歡迎留言指正卒蘸。

Python3.6.8的安裝

1雌隅、為了保險起見,在安裝Python之前缸沃,需要先安裝一些依賴包恰起,如果你不確定你機器上有沒有安裝,執(zhí)行下面命令趾牧。

yum groupinstall 'Development Tools'
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

2检盼、對系統(tǒng)自帶的Python2.7.5進行備份,

cd /usr/bin
mv python python.bak

3、下載python3.6.8的源碼壓縮文件和pip工具

#創(chuàng)建安裝路徑翘单,也可以換成你自己創(chuàng)建的目錄
mkdir -p /usr/local/python/python3
#操作路徑 /usr/local
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
wget https://bootstrap.pypa.io/get-pip.py

4吨枉、解壓源碼壓縮包

#操作路徑  /usr/local
tar -zxvf Python-3.6.8.tgz

5、編譯安裝環(huán)境

#操作路徑 /usr/local/Python-3.6.8/
./configure --prefix=/usr/local/python/python3

6哄芜、進行安裝

#操作路徑要在/usr/local/Python-3.6.8
make && make install

7貌亭、設(shè)置Python軟連接

ln -s /usr/local/python/python3/bin/python3 /usr/bin/python

8、驗證是否安裝成功

python -V
輸出下方信息忠烛,證明成功了
Python 3.6.8

9属提、安裝pip

#操作路徑 /usr/local
python get-pip.py

10、設(shè)置pip軟鏈接

ln -s /usr/local/python/python3/bin/pip3 /usr/bin/pip

注意:由于centos7的yum要使用到python2.7.5的環(huán)境美尸,我們要指定yum使用的版本冤议,使用3.6.8會導(dǎo)致yum命令無法使用,需要修改以下兩個文件师坎。vi命令可以自行百度恕酸。

#第一個:
vi /usr/bin/yum
#把文件頭部的#!/usr/bin/python改成#!/usr/bin/python2.7保存退出即可。
#第二個
vi /usr/libexec/urlgrabber-ext-down
#同樣把文件頭部的#!/usr/bin/python改成#!/usr/bin/python2.7保存退出即可胯陋。

到此Python3.6.8就安裝完成了蕊温。我們準備進入下一個環(huán)節(jié)。

Django的安裝

pip3 install Django

Ngnix安裝

1遏乔、安裝Nginx存儲庫

sudo yum install epel-release

2义矛、 安裝Nginx

sudo yum install nginx

3、啟動Nginx盟萨,如果有防火墻請關(guān)閉凉翻。

sudo systemctl start nginx

#以下為停止,重啟命令
systemctl stop nginx
systemctl restart nginx

如果要實現(xiàn)開機啟動使用以下命令

sudo systemctl enable nginx

uWgsi安裝

pip3 install uwsgi

在追加幾個uwgsi的常用命令

uwgsi --ini name.ini
uwgsi --reload name.ini
uwgsi --stop name.pid

因為我使用的市MySql數(shù)據(jù)庫捻激,所以還需要安裝一個庫

pip3 install PyMySQL

到目前為止所有的安裝工作基本告一段落制轰,當(dāng)然每個人項目所用的python庫不一樣前计,項目所需要的庫都需要進行安裝。

下面進入環(huán)境配置環(huán)節(jié)

uWsgi配置垃杖,配置uwsgi啟動django的參數(shù)

我的操作習(xí)慣是這樣男杈,先假設(shè)設(shè)Django項目名字是mysite,里面模塊叫myapp,已經(jīng)把mysite項目上傳到服務(wù)器的/var/local目錄下调俘。
在此目錄下新建一個配置文件:uwsgi_mysite.ini,編輯文件為如下內(nèi)容伶棒。

vi uwsgi_mysite.ini

[uwsgi]
# 通過uwsgi訪問Django項目需要配置成http
# 通過nginx請求uwsgi來訪問Django項目 需要配置成socket
# 9000 是Django項目的端口號
socket = :9000

# web項目根目錄
chdir = /var/local/mysite

# module指定項目自帶的的wsgi配置文件位置
module = mysite.wsgi

# 允許存在主進程
master = true

# 開啟進程數(shù)量
processes = 3

# 服務(wù)器退出時自動清理環(huán)境
vacuum = true

#下面兩條配置用于生成.status和.pid文件,后續(xù)關(guān)閉uwsgi時脉漏,會用到pid文件
stats=/var/local/uwsgi_forest.status           
pidfile=/var/local/uwsgi_forest.pid 

Nginx配置

nginx默認使用的是80端口苞冯,可以修改成你自己喜歡的端口,比如8089

#修改配置文件
vi /etc/nginx/nginx.conf

server {
    listen 8089;
    listen [::]:8089;
    ...
    ...
}

systemctl restart nginx 重啟nginx侧巨,直接訪問http://ip:8089 舅锄,看到nginx歡迎界面說明成功。

繼續(xù)配置Nginx

vi /etc/nginx/nginx.conf

···
server {
        listen       8089 default_server;
        listen       [::]:8089 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9000;
        
        }


        location /static/ {
            alias /var/local/mysite/myapp/static;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    ···

8089 是對外的端口號司忱。
server_name是nginx代理uwsgi對外的ip皇忿,保持默認就ok。
uwsgi_pass 127.0.0.1:9000;即當(dāng)nginx收到8089端口的請求時坦仍,直接將請求轉(zhuǎn)發(fā)給 127.0.0.1:9000鳍烁。

uwsgi啟動django

# 進入項目根目錄
cd /var/local/mysite

# 啟動
uwsgi --ini /var/local/uwsgi_mysite.ini

重啟Nginx

systemctl restart nginx

到現(xiàn)在可以說項目可以正常運行了,但是繁扎,但是幔荒,但是,會有一個bug梳玫,就是當(dāng)你訪問http://ip:8089/admin時爹梁,admin模塊的樣式全部丟失了,這是為什么提澎,經(jīng)過研究姚垃,找到了解決辦法。

在mysite項目的配置文件: setting.py 中新增配置 STATIC_ROOT , 然后執(zhí)行 python manage.py collectstatic命令

#此時關(guān)于static的配置如下:
#我習(xí)慣把static與mysite項目放在同一級目錄
···
STATIC_ROOT = '/var/local/static/'
STATIC_URL = '/static/'
···

執(zhí)行 python manage.py collectstatic 命令

#進入到項目根路徑/var/local/mysite
python manage.py collectstatic 

可以看出 python manage.py collectstatic 的作用是收集Django項目盼忌,也就是mysite項目中所有涉及到的靜態(tài)資源积糯,統(tǒng)一放到 路徑STATIC_ROOT 管理訪問。

注意:此時還有一處需要修改谦纱,就是ngnix中配置靜態(tài)文件的目錄看成。

修改結(jié)果如下:

vi /etc/nginx/nginx.conf

···
server {
        listen       8089 default_server;
        listen       [::]:8089 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9000;
        
        }


        location /static/ {
            alias /var/local/static;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    ···

location /static/改為/var/local/static,就是剛剛我們配置的路徑跨嘉。

到這里可以說我們所有的配置就已將完成了绍昂。在我配置的過程中,我重啟了服務(wù)器偿荷,發(fā)生了一個小插曲窘游,就是mysql的1017錯誤
ERROR 1017 (HY000): Can't find file: './data_db/tabls.frm' (errno: 13 - Permission denied)

#不是表不見了,而是權(quán)限的問題
#需要切換到 tabls.frm 這個目錄下面去,我這里是 /var/lib/mysql
#進入到這個目錄后 可以看到所有數(shù)據(jù)庫,然后進入到mysite項目的數(shù)據(jù)庫跳纳,加入叫mysiteDB忍饰,然后進行以下操作 

chown mysql.mysql *
ok,今天的分享與記錄就到此結(jié)束了寺庄,這是我的第一篇博客艾蓝,我自己都不太相信,哈哈斗塘。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赢织,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子馍盟,更是在濱河造成了極大的恐慌于置,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贞岭,死亡現(xiàn)場離奇詭異八毯,居然都是意外死亡,警方通過查閱死者的電腦和手機瞄桨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門话速,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芯侥,你說我怎么就攤上這事泊交。” “怎么了柱查?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵廓俭,是天一觀的道長。 經(jīng)常有香客問我物赶,道長白指,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任酵紫,我火速辦了婚禮告嘲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奖地。我一直安慰自己橄唬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布参歹。 她就那樣靜靜地躺著仰楚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僧界,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天侨嘀,我揣著相機與錄音,去河邊找鬼捂襟。 笑死咬腕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的葬荷。 我是一名探鬼主播涨共,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宠漩!你這毒婦竟也來了举反?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扒吁,失蹤者是張志新(化名)和其女友劉穎火鼻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘦陈,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡凝危,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了晨逝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛾默。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖捉貌,靈堂內(nèi)的尸體忽然破棺而出支鸡,到底是詐尸還是另有隱情,我是刑警寧澤趁窃,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布牧挣,位于F島的核電站,受9級特大地震影響醒陆,放射性物質(zhì)發(fā)生泄漏瀑构。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一刨摩、第九天 我趴在偏房一處隱蔽的房頂上張望寺晌。 院中可真熱鬧,春花似錦澡刹、人聲如沸呻征。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陆赋。三九已至沐祷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間攒岛,已是汗流浹背赖临。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阵子,地道東北人思杯。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像挠进,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子誊册,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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

  • 接上一篇Python3.0 Django2.0.4 搭建項目(四)领突,這一篇我們將為它創(chuàng)建一些自動化測試。 自動化測...
    聽話哥閱讀 664評論 1 0
  • 接上一篇Python3.0 Django2.0.4 搭建項目(三)案怯,這一篇主要是繼續(xù)完善我們的投票應(yīng)用君旦。 編寫一個...
    聽話哥閱讀 455評論 0 1
  • 今天股指開了空倉,向下的空間真的不敢說嘲碱,今天還是處于空方占優(yōu)金砍,整體來看弱的很,沒有意外消息刺激要在底部盤整幾天麦锯,股...
    股市中求索閱讀 440評論 0 0
  • 今天起床有點晚恕稠,可能是昨天在外練車有點累吧。依然是日常的看書學(xué)習(xí)扶欣。努力的培養(yǎng)自己看書的習(xí)慣鹅巍,希望自己可以一...
    五指山下的悟空閱讀 169評論 0 0
  • 打開簡書,看看有沒有消息料祠。 消息處一片空白骆捧,那個小鈴鐺在的地方?jīng)]有任何紅色的小點點。 我像是得了強迫癥髓绽,不停的打開...
    蘭陵酒閱讀 379評論 5 2