【Python】菜鳥進(jìn)階:Linux線上的Django + Uwsgi + Nginx生產(chǎn)環(huán)境部署

服務(wù)器

阿里云服務(wù)器

Mac連接ssh:FinalShell(國(guó)內(nèi)強(qiáng)大的遠(yuǎn)程桌面)

http://www.hostbuf.com/t/988.html

欲要善其事必先利其器, 首先安裝Python包管理工具【pip】

下載文件:
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

執(zhí)行安裝:
python get-pip.py

查看版本:
pip --version

有版本號(hào)即安裝成功:
pip 19.1.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)

Uwsgi安裝失敗

原因:
因?yàn)槿鄙僖粋€(gè)python-devel包

什么是python-devel遇八?
linux發(fā)行版通常會(huì)把類庫(kù)的頭文件和相關(guān)的pkg-config分拆成一個(gè)單獨(dú)的xxx-dev(el)包.以下情況需要python-dev包:

安裝一個(gè)源外的python類庫(kù), 而這個(gè)類庫(kù)內(nèi)含需要編譯的調(diào)用python api的c/c++文件咒锻;
自己寫的一個(gè)程序編譯需要鏈接libpythonXX.(a|so)
(不含使用ctypes/ffi或者裸dlsym方式直接調(diào)用libpython.so)
其他正常使用python或者通過安裝源內(nèi)的python類庫(kù)的不需要python-dev.

解決辦法:安裝python-devel即可

安裝Web服務(wù)器網(wǎng)關(guān)接口【Uwsgi】

首先先安裝python-devel包:
yum install python-devel.x86_64

執(zhí)行安裝:
pip install uwsgi

打印版本號(hào):
uwsgi --version
2.0.18

安裝Web應(yīng)用框架【Django】

查看當(dāng)前Python所支持的Django版本:
https://www.djangoproject.com/download/

目前使用的是 python2.7.5 對(duì)應(yīng) 1.11.20

執(zhí)行安裝:
pip install Django==1.11.20

安裝Nginx之前需要安裝【PCRE】

PCRE 作用是讓 Nginx 支持 Rewrite 功能
PCRE依賴于C++編譯器
執(zhí)行安裝:
yum -y install gcc-c++

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

tar zxvf pcre-8.35.tar.gz

cd pcre-8.35

./configure

make && make install

yum -y install openssl openssl-devel

安裝高性能的HTTP和反向代理web服務(wù)器【Nginx】

查看版本:
http://nginx.org/download/

進(jìn)行下載:
cd /usr/local/src
wget http://nginx.org/download/nginx-1.9.9.tar.gz

進(jìn)行解壓:
tar xf nginx-1.9.9.tar.gz

進(jìn)入文件:
cd nginx-1.9.9

進(jìn)行安裝:
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install

查看端口號(hào)【我的安裝路徑是/usr/local/下】:
/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.9.9

安裝公眾號(hào)所需的組件

執(zhí)行安裝:
pip install wechatpy
pip install pycryptodome
pip install lxml

方便管理玄坦,結(jié)構(gòu)目錄

/home 目錄結(jié)構(gòu)
├── app  App目錄
│   ├── conf  配置文件
│   │   └──  movie_nginx.conf Nginx配置文件
│   ├── project  項(xiàng)目文件
│   │   └──  searchMovie 項(xiàng)目
│   ├── html  網(wǎng)頁文件
│   ├── logs  日志文件

步驟一蛀蜜、配置Nginx的conf內(nèi)容

 /home/app/conf目錄下創(chuàng)建movie_nginx.conf文件糠睡,內(nèi)容是:
 server {
         listen 80; # 監(jiān)聽80端口
         server_name xxx.com; # 網(wǎng)站域名扩灯,多個(gè)域名用空格隔開
         root /home/app/html; # 網(wǎng)頁根目錄

         location /wx/ {    # 監(jiān)聽的接口名
            proxy_pass http://127.0.0.1:8000;   #轉(zhuǎn)發(fā)地址,因?yàn)轫?xiàng)目使用8000端口
         }

         # nginx 日志存放位置
        access_log /home/app/logs/anqila/access.log;
        error_log  /home/app/logs/anqila/error.log;
  }    

 在/usr/local/nginx/conf/nginx.conf配置文件內(nèi)容的http下添加:
 # 導(dǎo)入文件其實(shí)就是將文件的內(nèi)容導(dǎo)入闹究,方便Nginx目錄下的conf配置文件管理
 include /home/app/conf/movie_nginx.conf;
11.png

Nginx常用指令

新手:Nginx安裝在/usr/local/下幔崖,具體根據(jù)你的安裝目錄在做指令
/usr/local/nginx/sbin/nginx -t                   # 驗(yàn)證nginx配置文件是否正確
/usr/local/nginx/sbin/nginx -s reload            # 重新載入配置文件
/usr/local/nginx/sbin/nginx -s reopen            # 重啟 Nginx
/usr/local/nginx/sbin/nginx -s stop              # 停止 Nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf      #報(bào)錯(cuò):Nginx: [error] invalid PID number 可用

netstat -tunlp |grep 8000    # 查看端口號(hào)
ps -ef|grep nginx  # 查看所有執(zhí)行nginx的端口號(hào)

步驟二、配置Uwsgi的uwsgi.ini內(nèi)容

在項(xiàng)目下創(chuàng)建script文件夾渣淤,在創(chuàng)建uwsgi.ini配置文件
 /searchMovie 項(xiàng)目目錄結(jié)構(gòu)
├── script
│  └──  uwsgi.ini
├── searchMovie
│  └──  wsgi.py
├── templates
├── wechat
├── db.sqlite3
├── manage.py

【uwsgi.ini】?jī)?nèi)容:
# uwsig使用配置文件啟動(dòng)
[uwsgi]
# 項(xiàng)目目錄
chdir=/home/app/project/searchMovie/
# wsgi文件目錄
wsgi-file = searchMovie/wsgi.py
# 指定sock的文件路徑
socket=/home/app/project/searchMovie/script/uwsgi.sock
# 進(jìn)程個(gè)數(shù)       
workers=5
pidfile=/home/app/project/searchMovie/script/uwsgi.pid
# 指定IP端口
http=127.0.0.1:8000
# 指定靜態(tài)文件
static-map=/static=/home/app/project/searchMovie/script/static
# 啟動(dòng)uwsgi的用戶名和用戶組
uid=root
gid=root
# 啟用主進(jìn)程
master=true
# 自動(dòng)移除unix Socket和pid文件當(dāng)服務(wù)停止的時(shí)候
vacuum=true
# 序列化接受的內(nèi)容赏寇,如果可能的話
thunder-lock=true
# 啟用線程
enable-threads=true
# 設(shè)置自中斷時(shí)間
harakiri=30
# 設(shè)置緩沖
post-buffering=4096
# 設(shè)置日志目錄
daemonize=/home/app/project/searchMovie/script/uwsgi.log

Uwsgi常用指令

uwsgi --ini uwsgi.ini              #啟動(dòng)項(xiàng)目
uwsgi --stop uwsgi.pid             #停止Uwsgi
ps -ef|grep uwsgi      #查看所有執(zhí)行uwsgi的端口號(hào)

步驟三、Nginx映射价认、Redis啟動(dòng)嗅定、Uwsgi啟動(dòng)項(xiàng)目

/usr/local/nginx/sbin/nginx -s reload            # 重新載入配置文件
/home/app/project/searchMovie/script/uwsgi --ini uwsgi.ini              #啟動(dòng)項(xiàng)目
/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf      #啟動(dòng)Redis

設(shè)置bashrc快捷鍵

# 進(jìn)入項(xiàng)目Uwsgi
alias cd-uwsgi='cd /home/app/project/searchMovie/script'

# 啟動(dòng)Uwsgi
alias uwsgi-ini='uwsgi --ini uwsgi.ini'

# 停止Uwsgi
alias uwsgi-stop='uwsgi --stop uwsgi.pid'

# 重啟Uwsgi
alias uwsgi-reload='uwsgi --reload uwsgi.pid'

# 重啟Nginx
alias nginx-reload='/usr/local/nginx/sbin/nginx -s reload'

# 停止Nginx
alias nginx-stop='/usr/local/nginx/sbin/nginx -s stop'

# 無Nginx pid
alias nginx-c='/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市用踩,隨后出現(xiàn)的幾起案子渠退,更是在濱河造成了極大的恐慌,老刑警劉巖脐彩,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碎乃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惠奸,警方通過查閱死者的電腦和手機(jī)梅誓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佛南,“玉大人梗掰,你說我怎么就攤上這事⌒峄兀” “怎么了及穗?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)妈拌。 經(jīng)常有香客問我拥坛,道長(zhǎng)蓬蝶,這世上最難降的妖魔是什么尘分? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任猜惋,我火速辦了婚禮,結(jié)果婚禮上培愁,老公的妹妹穿的比我還像新娘著摔。我一直安慰自己,他們只是感情好定续,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布谍咆。 她就那樣靜靜地躺著,像睡著了一般私股。 火紅的嫁衣襯著肌膚如雪摹察。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天倡鲸,我揣著相機(jī)與錄音供嚎,去河邊找鬼。 笑死峭状,一個(gè)胖子當(dāng)著我的面吹牛克滴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播优床,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼劝赔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了胆敞?” 一聲冷哼從身側(cè)響起着帽,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎移层,沒想到半個(gè)月后启摄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幽钢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年歉备,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匪燕。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蕾羊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帽驯,到底是詐尸還是另有隱情龟再,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布尼变,位于F島的核電站利凑,受9級(jí)特大地震影響浆劲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哀澈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一牌借、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧割按,春花似錦膨报、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弛矛,卻和暖如春够吩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丈氓。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工周循, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扒寄。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓鱼鼓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親该编。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迄本,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360