Linux -- 項目部署

一 . 負載均衡

  負載均衡其實就是把其中一個服務器用作反向代理, 而後經過訪問這個服務器實現負載均衡.python

複製代碼
1.準備三臺虛擬機
    192.168.81.130
    192.168.81.131
    192.168.81.132
2.分別配置這三臺機器
    經過修改nginx,conf文件來實現:
    130配置反向代理
    131,132分別返回頁面
3.配置關鍵點以下:
    130負載均衡配置修改nginx.conf:
    # 添加負載均衡地址池的參數
        #默認是輪詢方式,兩臺服務器
    upstream s18django {           #  和server同一級別  upstream 是關鍵字
        server  192.168.81.131;
        server  192.168.81.132;
}
    # 添加反向代理參數以下
      # 要寫在server裏面
    location / {
        proxy_pass  http://s18django        #  proxy_pass是關鍵字, 這個http後的參數就是upstream後面的參數
}
複製代碼

  當訪問192.168.81.130這個負載均衡器的時候,他會找upstream中的地址池的ip,而後輪詢mysql

  nginx負載均衡算法

複製代碼
# 1.輪詢方式,你一次我一次
# 2.加權輪詢(權重大的機會大)
upstream s18django {
        server 192.168.226.128 weight=2;
        server 192.168.226.130 weight=8;
}
# 3.ip_hash方式,對你訪問的ip進行hash,不能與加權公用
upstream s18django {
        server 192.168.226.128;
        server 192.168.226.130;
    ip_hash;
}
複製代碼

二 . crm項目部署

    1.nginx + uwsgi + django + 虛擬環境 + supervisor  + mysql

    2.關閉防火牆

# 必定要關閉防火牆,否則在你進行訪問的時候,會鏈接不上
iptables -F  #清空規則
systemctl stop firewalld  #關閉防火牆服務
systemctl disable firewalld  #禁止開機自啓

    3.django的啓動方式爲何 python3  manage.py  runserver 爲何不能在生產環境中用?

複製代碼
django只是一個web邏輯框架,它經過python3 manage.py runserver命令啓動的socket服務端
是藉助python內置的wsgi框架 wsgiref框架實現的
它是一個單機模塊,單進程模塊,性能很低
# 所以在線上須要藉助經過C語言編寫的uwsgi這個web服務器軟件,啓動django

python框架按照性能從高到底排序
   1.sanic
   2.tornado
   3.flask
   4.django
複製代碼

  4.在進行uwsgi啓動django的時候,是須要找到wsgi.py這個文件模塊的

若是你報錯提示 找不到application ,就是由於uwsgi  找不到wsgi.py 
解決: 要進入本身的項目(cd /opt/crm)  # 而後在執行uwsgi --http :8088 --module Crm_Project.wsgi

  5.爲何要用nginx 和 uwsgi?

nginx  能夠解決uwsgi的靜態文件問題,不用總去請求django,減輕壓力,而且支持高併發請求,還能限流,保障後臺服務器安全等等

uwsgi   由於uwsgi支持多進程, 多線程的方式,性能很高,啓動django性能更好,可是uwsgi不解析django的靜態文件

咱們之後會收集全部的django項目靜態文件,丟給nginx去處理

  6.準備crm代碼

  7.準備一個新的虛擬環境,去啓動crm, 使用virtualenvwrapper建立新的虛擬環境(mkdir  nginx_crm)

  

複製代碼
1.解決虛擬環境依賴的問題,也就是保障本地開發環境和線上一致性的問題,
在windows本地 經過
pip3  freeze > requirements.txt
# 這樣就將python3解釋器中全部模塊導出到這個文件中

2.建立虛擬環境 mkvirtualenv  nginx_crm

3.將這個 requirements.txt  文件傳輸到服務器上,進行安裝,就能夠自動解決全部模塊問題
pip3 install  -r  requirements.txt
複製代碼

  8.安裝uwsgi

# 必定要確保進入虛擬環境(nginx_crm)
workon  nginx_crm
# 下載uwsgi
pip3  install  uwsgi

  9.使用uwsgi命令啓動django項目

複製代碼
# 本身測試用
uwsgi支持熱加載的啓動方式命令以下
uwsgi --http :8000 --module  Crm_Project.wsgi --py-autoreload=1 

uwsgi --http :8088 --module Crm_Project.wsgi    # 這個Crm_Project在第二層
    --http指定http協議啓動在 8088端口
    --module 找到項目第二層的目錄,裏面的wsgi.py文件
# 測試就用--http參數
複製代碼

三 . 正式啓動環境

# 若是結合了nginx反向代理就須要用的--socket, 爲了一勞永逸, 把他寫到項目下uwsgi.ini文件中去
1. cd 到項目下  cd  /opt/Crm_Project
2.建立uwsgi.ini
3.把下述數據寫到uwsgi.ini中去:
  uwsgi.ini數據

  啓動代碼nginx

uwsgi --ini  uwsgi.ini

四 . 配置crm收集全部crm的靜態文件

1. 在/opt下建立crmstatic文件夾
2.編輯項目中的settings.py ,寫入以下參數
STATIC_ROOT= '/opt/crmstatic'
3.收集crm全部的靜態文件
python3 manage.py collectstatic

五 . 配置nginx, 一是支持反向代理,而是支持靜態文件加載

  修改nginx.conf

複製代碼
#當用戶訪問 www.s18dnf.com的時候,就進入這個虛擬主機
location / {
        uwsgi_pass  0.0.0.0:8000;    # 這個8000端口是由於uwsgi.ini裏面寫的是8000
        include uwsgi_params;
}

        #這個location是解決crm的靜態文件的問題的
location /static  {
#alias參數 就是將/static轉化爲/opt/crmstatic ,也就找到了咱們全部的靜態文件
        alias /opt/crmstatic;
}
複製代碼

六 . 重啓

  !!! 操做完過後必定要重啓 (nginx -s  reload)

七 . 配置supervisor工具

  !!! 注意要退出虛擬環境web

 

複製代碼
# 這個工具只能用python2下載
1.安裝easy_install
    # pip3是python3的軟件包
    # easy_install是python2的軟件包
yum  install  python-setuptools
2.安裝supervisor
easy_install  supervisor
3.建立supervirsor的配置文件
echo_supervisord_conf >  /etc/supervisor.conf 
4.修改/etc/supervisor.conf的配置文件,添加啓動uwsgi的命令
  # supervisor其實就是幫我們執行了,須要手動執行的命令而已
vim /etc/supervisor.conf
# 寫入以下內容,在最底部寫  # command兩邊必須是絕對路徑
[program:s18crm]  
command=/root/Envs/nginx_crm/bin/uwsgi  --ini /opt/Crm_Project/uwsgi.ini
stopasgroup=true
killasgroup=true
複製代碼

 

  !!! 測試用supervisor啓動uwsgi ,注意要確保此時uwsgi已經退出算法

 

supervisord -c  /etc/supervisor.conf   #這是啓動supervisor服務端命令
supervisorctl -c /etc/supervisor.conf     #這是supervisor客戶端管理命令

 

  supervisor的命令

複製代碼
# 下面這些命令須要在執行supervisorctl -c /etc/supervisor.conf 後執行
status s18crm #查看狀態    status後面的參數就是寫入到supervisor.conf中program後的參數
start s18crm  #啓動任務
stop  s18crm #中止任務
    
start all  
stop  all  #啓停全部的任務
複製代碼
相關文章
相關標籤/搜索