1.nginx複習html
1.nginx是什麼 nginx是支持反向代理,負載均衡,且能夠實現web服務器的軟件
在129服務器中查看,咱們使用的是淘寶提供的tengine,也是一種nginx服務器python
咱們下載的是tengine-2.3.0.tar.gz解壓以後獲得tengine-2.3.0,下面咱們cd進入到tengine中mysql
咱們發現,下圖會有一個腳本文件configurelinux
咱們安裝好的nginx在opt目錄下面的s18tngx中nginx
咱們再cd到tengine中的源碼包中,程序員
上圖最後一步的命令是指定安裝路徑web
咱們須要運行的是後兩步的命令.面試
運行完以後,咱們主要是操做上邊的conf這個文件夾sql
沒事咱們就pwd一下,看一下咱們的絕對路徑是什麼.ls命令其實就是 ls點數據庫
咱們須要關注的就是nginx.conf
2.nginx如何實現404頁面,access.log訪問日誌,多虛擬主機,反向代理等功能 nginx若是出現403(權限不足)的問題: 1.你的nginx代碼放在了/root下 2.你的客戶端被禁止訪問了,去找nginx.conf中的配置
咱們經過查看上邊的這一條命令,進行查看瀏覽器的訪問,
出現403表明沒有權限,也就是權限不足,404表明找不到,也就是請求的url不正確,服務器上找不到這個地址
咱們能夠捕捉到這個訪問的瀏覽器ip地址:
咱們看到的"主人進程"是root, 而工做進程是nobody普通用戶, 普通用戶不能讀取/root
nginx若是出現403(權限不足)的問題: 1.你的nginx代碼放在了/root下 2.你的客戶端被禁止訪問了,去找nginx.conf中的配置
第一種排除了,咱們看第二種.
老師的註釋:
個人註釋:
events表示時間驅動,經過大括號掌控
參考:解決方案:將文件下載到windows中,進行查看研究,解釋修改等等
shift+%表示的是找這兩個括號
虛擬主機server,這個是有自上到下 的加載順序的
好比:在瀏覽器上輸入:www.s18sssssssssss.com若是不存就解析成相對應的ip,沒有就報錯.
咱們看到顯示,找不到"主機名"
可是,咱們ping通了,下面的假的域名,而且解析出了ip,咱們是在windows中的cmd解析出來的.
咱們在windows中解析這個自定義的域名,就得修改windows的hosts文件.
如今,若是咱們想在linux中,也想ping www.s18dnf.com怎麼處理?
下面是咱們解析的路徑:
咱們將兩個域名解析到一個IP上邊:
如今,咱們再增長一個taobao.com
清除緩存:
這個時候,咱們再次訪問,獲得上邊的403界面
DNS 的解析流程比較麻煩
etc/hosts文件的優先性,是高於DNS解析的.
DNS其實就是將域名轉換成IP的過程,最後咱們刪掉本身寫的這個路徑對應的淘寶地址.
這個時候,咱們再修改etc下面的文件resolv.conf文件
原來的樣子:
咱們如今修改爲:
如今,咱們發現結果已經ping不通了
/etc/resolv.conf是填寫dns記錄的文件
咱們再次打開,
咱們再寫一個備用的ip
保存,退出.
一個是114的一個是騰訊的
這個時候咱們再ping的時候,是在騰訊和114這兩個大的IP中尋找
由於找不到,因此顯示"未知的名稱或服務"
咱們再linux再次寫入
咱們須要修改etc下面的文件hosts
咱們再寫一個ip和域名
保存退出,咱們再次ping
這個時候,咱們再次ping就能夠ping通了.
也就是寫了一個強制記錄而已.
咱們仍是刪掉這個記錄,防止出錯
這個時候,咱們再次打開nginx配置管理文件
咱們必須將域名寫在server_name後邊,這樣nginx纔會識別.
咱們在nginx.conf配置了兩個server,nginx是怎麼檢測出來的呢?ip和端口都同樣,就是經過不一樣的server_name檢測出來的.
這就是基於域名的訪問,若是是基於IP的訪問,那麼就會一直走第一個.
快捷鍵:
dd就是刪除的快捷鍵
u是撤銷
o
保存,退出
修改完的代碼,惟一要作的就是重啓.
這個時候,咱們會發現80已經啓用了
端口不能用了,咱們能夠殺死以後,再次查看,而後再次開啓nginx,具體見下圖操做
這個時候,咱們再平滑加載''
下圖表示,檢測nginx的語法,顯示的結果是沒有問題的
若是想要重啓怎麼操做?
查看幫助,文檔看一下怎麼重啓
ps =>kill也是能夠的,若是這種方式不會用的話
再次訪問,已經通了
咱們本身建立的兩個文件夾 dnf和hanju
咱們只須要將網站和地址修改就好了.
如將dnf這個地址轉到,"我該睡了"?
原來的內容
咱們只須要將root對應的路徑修改爲,下圖所示內容便可:
保存退出:
而後,咱們從新啓動nginx
再次刷新:
若是沒有下圖所示的部分:
也就是說,加上這一行代碼的優先級更高一些。
status是一個全路徑匹配的東西。
若是瞎寫,會報404錯誤,以下圖
下面咱們開始學習集羣的概念。
2.集羣介紹
3.nginx負載均衡配置1
http://www.javashuo.com/article/p-zahqkcep-ek.html
4.nginx與項目部署1
http://www.javashuo.com/article/p-hqwwbbrz-gk.html
crm項目部署 1.nginx + uwsgi + django + 虛擬環境 + supervisor + mysql 2.django的啓動方式 python3 manage.py runserver 爲何不能在生產環境用? django只是一個web邏輯框架,它經過python3 manage.py runserver命令啓動的socket服務端 是藉助python內置的wsgi框架 wsgiref框架實現的 它是一個單機模塊,單進程模塊,性能很低 所以在線上須要藉助經過c語言編寫的uwsgi這個web服務器軟件,啓動django sanic 旋風小子 由低到高的性能框架 djano flask tornado sanic
3.在進行uwsgi啓動django的時候,是須要找到wsgi.py這個文件模塊的 若是你報錯提示 找不到application ,就是由於uwsgi 找不到wsgi.py
這個問題沒法避免,只能一步一步調試
uwsgi就是經過wsgi.py文件裏邊的application啓動的.
保存退出.
4.爲何要用nginx 和uwsgi? nginx 能夠解決uwsgi的靜態文件問題,而且支持高併發請求,還能限流,保障後臺服務器安全等等 爲何要用uwsgi 由於uwsgi支持多進程 多線程的方式,性能很高,啓動django性能更好,可是uwsgi不解析django的靜態文件 咱們之後會收集全部的django項目靜態文件,丟給nginx去處理
nginx和uwsg中間有一個socket.接口,沒法直接跳到django中,
django處理靜態文件的能力很低,nginx處理靜態文件的能力很強.
5.準備crm代碼
查看虛擬環境存放的目錄
上邊建立的兩個虛擬環境也是兩個文件夾.
注意,這種方式是用來調試代碼的,之後上線須要用uwsgi處理.
這個時候,咱們正常訪問是能夠的
帳號是root@qq.com 密碼是123456
輸入密碼和帳戶進入:
關鍵:咱們記不住那麼多的ip和端口,咱們如今只想訪問域名,這件事情應該怎麼作?
經過什麼技術手段?(運用反向代理,80是個代理,經過代理找到8000)
6.準備一個新的虛擬環境,去啓動crm,使用virtualenvwrapper建立新的虛擬環境 1.解決虛擬環境依賴的問題,也就是保障本地開發環境和線上一致性的問題 在windows本地 經過 pip3 freeze > requirements.txt 就能將 python3解釋器中全部的模塊導出到這個文件中 2.將這個 requirements.txt 文件傳輸到服務器上,進行安裝,就能夠自動解決全部模塊問題 pip3 install -r requirements.txt
全部的程序員都認識這個requirements.txt這個文檔.
看一下文件內的內容:
如今咱們退出這個虛擬環境:
如今咱們再次新建一個新的虛擬環境
這個時候,新的虛擬環境就建立好了
拿到純淨的環境
咱們須要的是,文件傳輸到服務器上解決依賴關係
安裝完成以後,下圖就是咱們已經解決了文件的一致性的問題了
再看一下這個文件內的內容
上邊就是解決環境不匹配問題的解決方法.
若是是在windows裏邊的呢?
一種是將內容導入D盤,另外一個是切換目錄,再有一個是展現安裝的包.
咱們不可能一個一個安裝.
打開以後,咱們發現已經將本地的包名,寫在了這個文件裏邊.
只須要將這個文件傳遞到服務器上安裝便可.
再來一個操做,咱們能夠在windows裏邊寫出了這個文件以後,複製文件內的內容,在linux中再touch一個文件寫入內容.
不少事情都是很靈活的,要勇於向,勇於作事情.
這個名字能夠隨便起,可是這是一個約定俗成的寫法,最好這樣寫.
如今咱們的目的就是:用nginx反向代理到(uwsgi+django)
筆記真的很重要,必定要看
7.使用uwsgi啓動crm項目 確保進入虛擬環境,而後安裝uwsgi workon nginx_crm 下載uwsgi pip3 install uwsgi
簡單看一下,下圖這些命令
下面咱們安裝uwsgi
我已經安裝成了uwsgi,見下圖
安裝完成以後,咱們再啓動一個項目:
8.使用uwsgi命令啓動django項目 uwsgi支持熱加載的啓動方式命令以下 uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1 uwsgi --http :8088 --module Crm_Project.wsgi --http指定http協議啓動在 8088端口 --module 找到項目第二層的目錄,裏面的wsgi.py文件 若是你想啓動一個http頁面,提供測試訪問,就用--http參數 若是你結合了nginx反向代理,必須用--socket參數 uwsgi --socket :8000 --module Crm_Project.wsgi 因爲參數過多,這裏引入配置文件的概念 叫作 uwsgi.ini my.cnf nginx.conf
下圖咱們進入的是第一層
而後咱們切換到第二層,找到wsgi.py
咱們要確保的是,咱們進入的是第一級目錄
uwsgi --http :8088 --module Crm_Project.wsgi
上邊這條命令中表示的是 Crm_Project表示的是文件夾,wsgi表示的是wsgi.py文件
咱們就這樣用就能夠了.
module 找到項目第二層的目錄,裏面的wsgi.py文件
如今咱們就啓動一下這條命令:
warning不是很重要.
運行起來以後,咱們訪問
上邊的login不能夠訪問,可是admin能夠訪問了.
crm/login能夠訪問了
咱們已是開發了,內行應改看F12,注意,咱們要看的位置
也就是驗證了咱們前面說的:
uwsgi不解析django的靜態文件
面試題:
1.項目怎麼部署的?:nginx+uwsgi
2.uwsgi是否支持熱加載也就是熱重啓,在後臺修改代碼以後,當即生效?
咱們再打開一個窗口
yyp至關於複製一行內容.
保存退出,
咱們須要導入一個模塊.咱們退出查看一下:
退出.
模塊是:
from django.shortcuts import render, redirect, reverse, HttpResponse
從新打開,下面的模塊:
退出,保存,後端沒有任何的變化
再次訪問,咱們發現沒有權限訪問.
從新打開這個文件
咱們將內容註釋掉,而後保存退出
咱們如今看不到效果,如何看到具體的熱重啓?
從新建立一個項目
下邊的兩張圖都不是咱們想要的結果
咱們進行數據庫遷移一下:
下面,咱們指定模塊再次運行
啓動後的頁面:
運行admin,出現下面的結果:
訪問hello,獲得的結果是Not found
如今,咱們須要打開hello這個函數:
from django.shortcuts import render, redirect, reverse, HttpResponse
如今,咱們想作的事情是,可否在啓動項目的狀況下,修改後端代碼使其生效
保存,退出
這個時候,依然是加載不了的,
咱們中斷掉,重啓加上參數就能夠實現熱重啓了.
最後這一行代碼,表示的就是開啓了這樣的一個功能
這時咱們再次訪問:
獲得上邊的結果:
如今咱們修改邏輯代碼:
保存退出
這個時候已經發生改變.
10.配置crm收集全部的crm靜態文件.
總結:
編輯項目的settings.py 寫入以下參數
STATIC_ROOT= '/opt/crmstatic'
添加一個靜態文件:
保存,退出
11.執行命令,收集crm全部的靜態文件 python3 manage.py collectstatic
執行,進行收集內容,也就是在複製內容
132個靜態文件,都會拷貝到/opt/crmstatic下面.
上圖就是咱們用到的全部靜態文件了.
咱們也能夠用tree命令看一下樹狀圖,看一下目錄結構:
咱們能夠將上邊的文件,也就是說交給nginx處理,nginx更擅長處理靜態文件.
#此時後端的配置完畢!!!!開始搞nginx #此時後端的配置完畢!!!!開始搞nginx #此時後端的配置完畢!!!!開始搞nginx #此時後端的配置完畢!!!!開始搞nginx #此時後端的配置完畢!!!!開始搞nginx 12.配置nginx,一是支持反向代理,二是支持靜態文件加載 修改nginx.conf 代碼以下 #當用戶訪問 www.s18dnf.com的時候,就進入這個虛擬主機 location / { uwsgi_pass 0.0.0.0:8000; include uwsgi_params; } #這個location是解決crm的靜態文件的問題的 location /static { #alias參數 就是將/static轉化爲/opt/crmstatic ,也就找到了咱們全部的靜態文件 alias /opt/crmstatic; }
先找到安裝後的nginx目錄,找到後,打開配置文件
咱們以第一個主機爲例,修改爲反向代理服務器.
將上圖中紅框內的內容進行修改.
nginx和uWSGI之間有一個unix的socket,也就是一個橋樑,支持uwsgi協議的一個請求轉發.
uwsgi_pass 應該填寫公司運行的那臺服務器,8000指代的是django運行的那個端口.
include指代的是路由分發的那塊.表明的是把外部信息導入進去.
8.使用uwsgi命令啓動django項目 uwsgi支持熱加載的啓動方式命令以下 uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1 uwsgi --http :8088 --module Crm_Project.wsgi --http指定http協議啓動在 8088端口 --module 找到項目第二層的目錄,裏面的wsgi.py文件 若是你想啓動一個http頁面,提供測試訪問,就用--http參數
若是你結合了nginx反向代理,必須用--socket參數 uwsgi --socket :8000 --module Crm_Project.wsgi
咱們在上邊再寫一遍筆記
咱們先不作操做,先處理下邊的內容
咱們須要先關閉防火牆和開啓nginx
咱們再運行,訪問:
咱們沒法訪問這個頁面.
出現"沒法正常訪問網頁的緣由是:咱們用的是http協議打開網頁,而咱們啓動的倒是uwsgi協議
還有一個是,代碼串太長容易敲錯,怎麼處理這個問題?
因爲參數過多,這裏引入配置文件的概念 叫作 uwsgi.ini my.cnf nginx.conf
也就是說咱們把啓動文件的參數,寫到一個文件中.
因爲參數過多,這裏引入配置文件的概念,叫作uwsgi.ini my.cnf nginx.conf之後還會有不少這樣的配置文件
#正式啓動環境在這裏 #正式啓動環境在這裏 #正式啓動環境在這裏 啓動crm的配置文件以下 uwsgi.ini內容以下 [uwsgi] # Django-related settings # the base directory (full path) #填寫項目的絕對路徑(第一層路徑) chdir = /opt/Crm_Project # Django's wsgi file #填寫crm第二層目錄下的wsgi.py文件的路徑 module = Crm_Project.wsgi # the virtualenv (full path) #填寫虛擬環境的絕對路徑 home = /root/Envs/nginx_crm # process-related settings
#master表明這是一個主進程
master = true # maximum number of worker processes #基於uwsgi的多進程,根據cpu來優化,有人根據cpu的3倍計算
processes = 4 # the socket (use the full path to be safe
#若是你用了nginx反向代理,就填寫socket參數
#若是你用了nginx反向代理,就填寫socket參數
#若是你用了nginx反向代理,就填寫socket參數
socket = 0.0.0.0:8000
#若是你沒用nginx,想直接經過瀏覽器測試後端,使用http
#http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
如何進入虛擬環境的絕對路徑?
如今,咱們須要建立一個ini文件,放在哪裏是沒有關係的,可是必須建立一個
咱們打開這個文件開始編輯
注意點:打開文件以後,不要在第一行插入東西,可能出現問題
確認沒有問題以後,咱們"保存",退出
此時的啓動方式:
uwsgi --ini uwsgi.ini
此時經過uwsgi --ini uwsgi.ini方式啓動代碼
如今,咱們啓動了四個工做進程
此時,咱們訪問的是80端口,找到的是8000
下面咱們進行下面的操做.
12.配置nginx,一是支持反向代理,二是支持靜態文件加載 修改nginx.conf 代碼以下 #當用戶訪問 www.s18dnf.com的時候,就進入這個虛擬主機 location / { uwsgi_pass 0.0.0.0:8000; include uwsgi_params; } #這個location是解決crm的靜態文件的問題的 location /static { #alias參數 就是將/static轉化爲/opt/crmstatic ,也就找到了咱們全部的靜態文件 alias /opt/crmstatic; }
在另外一個窗口中打開這個文件.
這個時候,咱們只須要將下圖的內容修改爲下面的內容:
尚未修改完畢,咱們先保存退出,再查看一下.
運行:
不對,上邊是解釋器運行的,這樣是能夠加載靜態頁面的.
再次訪問運行
瀏覽器再次訪問:(顯示的是內部服務錯誤)
指的是咱們後臺的代碼錯誤.
說明,咱們沒有wsgi這個對象.,也就是沒有找到這個文件.
看一下,能不能以下圖這樣寫
瀏覽器訪問:
依然是這個問題:
下面咱們再次回到mysite進行處理
運行:若是是google可能回家再出來,緣由是緩存,如今咱們換成了"火狐瀏覽器"
咱們最後決定仍是用谷歌進行調試一下:首先清除緩存,再訪問
咱們須要思考,丟失請求的url是怎樣走的?這個問題
咱們須要配置一個static的入口進行處理,具體如何配置?
咱們先找到靜態文件
咱們看一下路徑:
下面咱們開始編輯:
這個時候,咱們修改的內容如上圖:
alias表示別名的意思,也就是將/static 換成 /opt/crmstatic
這個時候,靜態文件和返向代理均可以了.
12.
咱們保存退出,
13.重啓nginx,查看反向代理效果
咱們先查看nginx是否有錯,而後重啓nginx
報錯:
緣由,缺乏了一個分號
上圖顯示,就沒有問題了.
如今咱們應該如何訪問?
咱們直接訪問80端口
結果:
如今,咱們只須要將ip替換成域名就能夠了.
用戶名:root@qq.com
密碼:123456
緣由,上邊的從新啓動的命令敲錯了,咱們須要的是下面的命令
這樣從新啓動,再次訪問就能夠了
血淋淋的教訓,注意這個黑框中區分大小寫
點擊登陸:
這裏邊還有一個問題是:再次登陸時會沒有權限
注意項目要啓用數據庫
pymysql.err.OperationalError: (2003, 「Can’t connect to MySQL server on ‘localhost’ ([Errno 111] Connection refused)」)
5.crm項目部署1(下面主要是咱們建立虛擬環境)
day77將windows中的crm_project如何拿到linux,直接拖動是不能夠的,緣由:只能拖動一個,咱們經過壓縮包拖動
解壓縮:
這個時候,咱們看到了解壓縮的文件
咱們如今須要安裝虛擬環境:
先建立一個文件夾allenv,再在allenv安裝virtualenvwrapper
這個時候,咱們就安裝成功了
這個時候,咱們就看到了wrapper工具了
2.學習virtualenvwrapper工具升級版 1.安裝 pip3 install virtualenvwrapper 2.配置我的環境變量配置文件,每次登錄都啓動virtualenvwrapper工具 vim ~/.bashrc 3.寫入加載變量,使得virtualenvwrapper每次開機可以使用 export WORKON_HOME=~/Envs #設置virtualenv的統一管理目錄 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的參數,生成乾淨隔絕的環境 export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 #指定python解釋器 source /opt/python36/bin/virtualenvwrapper.sh #執行virtualenvwrapper安裝腳本 4.退出回話,從新登陸,查看工具是否安裝 5.學習virtualenvwrapper工具的命令 1.建立新的虛擬環境 mkvirtualenv mycrm 2.切換多個虛擬環境 workon 虛擬環境的名字 3.列出全部的虛擬環境目錄 lsvirtualenv 4.進入當前激活的虛擬環境的目錄 cdvirtualenv
添加四個參數:
查找文件路徑,和上圖對應
退出會話,從新登陸,看一下是否生效
再次登陸,出現下邊的信息
這個時候,咱們再建立虛擬環境,建立完成後,,自動進入虛擬環境
退出虛擬環境
咱們再建立一個虛擬環境
咱們看一下有哪些虛擬環境
下面,咱們切換虛擬環境
如今咱們進入mycrm虛擬環境,咱們再進入Crm_Project項目
運行報錯,咱們查看報錯
咱們,咱們再mycrm中安裝django
安裝完成後,咱們再次運行:
報錯,沒有pymysql
咱們再安裝pymysql在這個虛擬環境中.
安裝完成後,咱們再次運行
報錯:
這裏邊有一個坑,咱們知道須要安裝包,可是安裝哪一個包?
緣由:
咱們安裝的包和模塊之間不必定一致.
咱們再django中找一下,見下圖
安裝成功,再次運行:
再次報錯,見下圖,沒有連接mysql
咱們須要安裝mysql
查看安裝,操做了哪些命令
4.還得解決crm項目運行所需的依賴環境 1.手動解決 pip3 install django==1.11.14 pip3 install pymysql pip3 install django-multiselectfield 2.安裝mysql數據庫,支持crm業務
#yum install mysql-server mysql -y mysql服務端是 mysqld mysql客戶端有哪些? mysql -uroot -p pymysql navicate pycharm mysql驅動 安裝linux的mariadb服務端 yum install mariadb-server mariadb mysql -y #啓動mysql服務端 systemctl start mariadb #檢查mysql是否啓動 1.查進程 ps -ef |grep mariadb 2.查端口 netstat -tunlp |grep 3306
安裝mysql
yum只能有一我的在用,也就是說一我的在用的時候會鎖住
此時安裝的是服務端
已經安裝成功:
下面咱們登陸,默認是沒有密碼的,可是報錯,見下圖:
咱們應該先啓動"mysql服務端"
注意:虛擬環境不會對操做系統產生影響
激活虛擬環境,只會影響python解釋器不會影響其餘的內容:
退出虛擬環境
咱們如今不肯定服務端的名字是什麼,因此協程mysql*
仍是取消吧
咱們安裝mariadb
獲得下圖的mariadb-server纔是服務端
選擇y
下面,咱們啓動服務端
再查一下mariadb的進程
查找mariadb的端口查找不到
查找端口是能夠的
這個時候,就進入這個MariaDB
緣由:咱們須要激活虛擬環境:
依然報錯,以下
在windows中能夠登陸數據庫
下圖是默認地址 ,-h是指定主機的
獲得的數據庫就在windows下邊的system32文件夾下邊
咱們只須要將數據庫拖動到linux中便可
思考,如何用這個數據?
咱們之前都是寫入,可是此次咱們寫出
下圖中,輸入命令"報錯"
再次登陸查看一下,沒見到crm,視頻中看到了crm
下面,咱們退出
再次啓動,加上IP和端口
依然報錯,緣由是,我上邊輸入了windows的密碼,其實這個導入不須要輸密碼.再次登陸帳戶和密碼,看到結果
第一種是,我輸入windows中的密碼時候的錯誤,第二種是我沒有輸入密碼時候的錯誤,第二種報錯沒有問題(這是平臺的問題)
沒有導入以前的數據庫
這時候的數據庫,咱們登陸數據庫的帳戶和密碼
咱們看到了crm這個密碼
退出數據庫,咱們再次運行:
下面從新運行,必定要加上ip和端口號
顯示不出來,緣由是沒有關閉防火牆,下面咱們關閉防火牆,再次運行
windows上很難關注到這些問題,當放到linux服務器上纔會發現這些問題
出現這個問題:
咱們須要編輯"settings.py",見上圖,找到allow_host
加上一個*,而後咱們保存退出
這個時候,咱們再次啓動
再次運行,就出現了下圖:
CDN服務器:
內容分發網絡,CDN是構建在網絡之上的內容分發網絡.依靠部署在各地的邊緣服務器經過中心平臺的負載均衡,內容分發
6.crm項目部署2
流程梳理:
7.crm項目部署3
是否有一種工具能夠幫助咱們進行管理,從手動管理到自動管理?(馬蜂窩也在用)
14.配置supervisro工具 注意要退出虛擬環境 注意要退出虛擬環境 注意要退出虛擬環境 緣由:咱們裝這個環境,不只僅是針對python的應用
咱們的目的是管理全部的應用,因此,咱們須要裝在物理環境之下,須要先退出虛擬環境再安裝 1.安裝easy_install pip3是python3的軟件包管理工具 easy_install 是python2的軟件包管理工具 安裝這個虛擬工具,也就是easy_install yum install python-setuptools 2.安裝supervisor easy_install supervisor 3.建立supervisor的配置文件 echo_supervisord_conf > /etc/supervisor.conf 4.修改supervisor的配置文件,添加啓動uwsgi的命令 supervisor其實就是幫我們執行了,須要手動執行的命令而已 vim /etc/supervisor.conf 寫入以下內容,在最底部寫 [program:s18crm] command=/root/Envs/nginx_crm/bin/uwsgi --ini /opt/Crm_Project/uwsgi.ini stopasgroup=true killasgroup=true 5.測試用supervisor啓動uwsgi ,注意要確保此時uwsgi已經退出 5.測試用supervisor啓動uwsgi ,注意要確保此時uwsgi已經退出 5.測試用supervisor啓動uwsgi ,注意要確保此時uwsgi已經退出 5.測試用supervisor啓動uwsgi ,注意要確保此時uwsgi已經退出 supervisord -c /etc/supervisor.conf #這是啓動supervisor服務端命令 supervisorctl -c /etc/supervisor.conf #這是supervisor客戶端管理命令 6.學習supervisor的命令 status s18crm #查看狀態 start s18crm #啓動任務 stop s18crm #中止任務 start all stop all #啓停全部的任務 感謝cctv
退出虛擬環境以後,咱們開始安裝,
下面看一下,supervisor是否可以在python3裏邊可以安裝.
pip3 install supervisor
官網太慢,咱們能夠直接使用豆瓣的源下載
pip3 install -i https://pypi.douban.com/simple supervisor
上圖中,我已經成功安裝了這個環境,可是老師當時在python3的環境中安裝失敗了.老師的截圖見下圖
打開上邊的文件,輸入大寫的G,回到底部輸入
注意:上邊也有supervisor其實就是幫助咱們執行了,須要手動執行的命令而已
原來的啓動方式:(必須來自虛擬環境底下)
保存退出:
啓動虛擬環境,查看是都有其餘進程,答案是沒有的
下面咱們開始啓動
這個時候s18crm所處的狀態是運行中的狀態.
主進程是6274
在第二個窗口打開,查看
第一個是主進程是6274,和第一個窗口正好對應起來.
這個時候,咱們只須要supervisor管理uwsgi,不須要手動管理了
中止操做(咱們在窗口1進行的操做)
狀態操做
咱們在窗口2查看一下
這個時候已經關閉了
咱們再啓動全部的內容
如今,咱們經過第二個窗口查看又起來了
退出
訪問不了頁面的緣由是沒有啓動nginx,因此須要啓動nginx
再次訪問就能夠訪問了
總結三大要素:重啓nginx//重啓防火牆//重啓數據庫
帳號:root@qq.com
密碼:123456