4.Python教程--專案部署篇(全)

花開如雨發表於2020-10-20

Python人工智慧總目錄

人工智慧總目錄網頁連結

13、Python運維

Day01

13.1 運維

1. 運維概述

1、運維概述
  1、什麼是運維
    伺服器執行維護
  2、名詞
    1、IDC(網際網路資料中心)
      伺服器租用、伺服器託管、機櫃租用
    2、監控軟體
      常用監控軟體 :zabbix、nagios、cactti
    3、常用Linux作業系統
      RedHat
      CentOS
      Ubuntu
    4、虛擬化(見圖)
    5、Web正向代理
       1、訪問原來無法訪問的資源(google)
       2、對Web伺服器隱藏使用者資訊
    6、nginx反向代理
      1、流程
        客戶端->代理伺服器->將請求轉發給公司內部網路的伺服器
      2、作用
        1、保證內網安全,使用反向代理阻止WEB攻擊
    2、負載均衡,優化網站負載
      3、負載均衡規則
        1、輪詢 :逐一迴圈排程
    2、權重(weight) : 指定輪詢機率,權重值和訪問比例成正比
    3、ip_hash:根據客戶端IP分配固定的後端伺服器
  3、nginx反向代理實現負載均衡
    修改nginx配置檔案配置nginx排程器
    upstream servers{
        server 10.10.10.11;
    server 10.10.10.12 weight=2;
    server 10.10.10.13;
    server 10.10.10.14 backup;
    }

    server{
        listen 80;
    server_name www.lion.com;
    localtion /{
      proxy_pass http://servers
    ... 
    ... 
    }
    }

2. 運維工具

2、運維工具
  1、xshell(軟體,安裝在windows)
    安全終端模擬軟體
  2、xshell使用方法
    檔案-新建-輸入伺服器IP-輸入使用者名稱-輸入密碼-確認連線
  3、windows <-> Linux
    1、安裝lszrz
      sudo apt-get install lrzsz
    2、windows -> Linux
      xshell終端 :rz
    3、Linux -> windows
      xshell終端 :sz 檔名

3. Linux常用命令

3、Linux常用命令
  1、ifconfig : IP地址和MAC地址
  2、ping :測試網路連通性
     ping IP地址 -c 次數
  3、nslookup : 解析域名對應的IP地址
     nslookup www.baidu.com
  4、sudo /etc/init.d/networking restart
     重啟網路
  5、top
     Linux下工作管理員,動態顯示CPU及記憶體使用率
  6、ps -aux
     顯示系統程式命令(PID)
     ps -aux | grep 'mysql'
  7、ssh
     遠端連線到伺服器
     ssh 使用者名稱@IP地址
  8、scp
     複製檔案到遠端伺服器
     scp 檔名 使用者名稱@IP地址:絕對路徑
  9、kill
     殺死一個程式
     sudo kill 程式PID號
  10、df -h
     檢視磁碟使用情況
  11、ls -lh 檔名: h提供易讀容量單位
  12、chmod
     修改檔案許可權
     chmod +x 檔名
     chmod 644 檔名
           rw-r--r--
     r : 4
     w : 2
     x : 1
  13、wc -l 
     統計檔案行數
     wc -l /etc/passwd
  14、sort
     對檔案內容進行排序
     sort 檔名
  15、uniq -c
     去重重複行,並統計每行出現的次數(相鄰行)
     sort 檔名 | uniq -c
  16、du -sh 目錄名: 顯示目錄大小
  17、du -ah 目錄名: 顯示目錄下所有檔案,子目錄,子目錄中檔案所佔空間
  18、grep
    ps -aux | grep mysql
    ^ : 開頭
    $ : 結尾
  19、find
    1、find 路徑 -name '檔名'
       find 路徑 -iname '檔名' ##忽略大小寫
    2、find 路徑 -ctime +3 # 3天以前檔案
                        -1 # 1天以內檔案
       find 路徑 -cmin +5
    3、find 路徑 -size +10M
       find 路徑 -size -1G

4. 週期性計劃任務

4、週期性計劃任務
  1、進入週期性計劃任務設定
    crontab -e
    按4
  2、設定週期性計劃任務
    *  *  *  *  *
    分 時 日 月 周
    分:0-59
    時:0-23
    日:1-31
    月:1-12
    周:0-6

    * :所有可能值
    , :多個時間點
        00 00 1,5 * * python3 /home/tarena/a.py
    / :指定時間間隔頻率
        */10 * * * * python3 /home/tarena/a.py
    - :指定一個時間段
        0點到6點之間,每隔1個小時執行命令
    0 0-6/1 * * * python3 /home/tarena/a.py
    1、每分鐘執行一次a.py
       * * * * * python3 /home/tarena/a.py
    2、每小時的第3分鐘和第15分鐘執行
       3,15 * * * * python3 /home/tarena/a.py
    3、每天18:00-23:00,每小時執行
       0 18-23/1 * * * python3 /home/tarena/a.py
    4、每週六、日的0點0分執行
       0 0 * * 6,0  python3 /home/tarena/a.py

5. awk的使用

5、awk的使用
  1、語法格式 :awk 選項 '動作' 檔案列表
  2、用法 :Linux 命令 | awk 選項 '動作'
  3、示例
    1、awk '{print "AAA"}' ip.txt
    2、df -h | awk '{print $1}' 
    3、顯示當前系統的所有使用者名稱
      cat /etc/passwd | awk -F ":" '{print $1}'
    4、提取本機的IP地址
      ifconfig | head -2 | tail -1 | awk '{print $2}' | awk -F ':' '{print $2}'
    5、nginx的訪問日誌路徑:
       /var/log/nginx/access.log
       訪問記錄 :
       127.0.0.1 - - [29/Jan/2019:19:34:42 +0800] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0"
       1、把訪問過我的IP地址輸出
         awk '{print $1}' access.log | sort | uniq 
       2、統計有多少個IP訪問過我
         awk '{print $1}' access.log | sort | uniq | wc -l
       *3、統計每個IP地址訪問我的次數,把訪問次數最多的前10個IP輸出
         awk '{print $1}' access.log | sort | uniq -c | sort -rn -k 1 | head -10
       4、sort的引數
         sort -n : 以數值方式來排序
     sort -r : 倒序排列
     sort -k 數字: 按照第 幾 列進行排序

     sort -rnk 1 : 將第1列按照數值方式倒序排

14、Python專案部署

Day01

14.1 專案部署

1. 概念

目標:
  開啟瀏覽器輸入:www.tiger.com進入django專案首頁
1、概念
  1、Django專案(Web應用)
  2、Web服務
     1、nginx :高併發處理的好
     2、apache:穩定
        LAMP :Linux、Apache、MySQL、Python/Php
    LNMP :Linux、Nginx、MySQL、Python/Php
     3、uwsgi
        是Web服務與Web框架之間簡單而通用的介面

2. 專案部署(nginx+uwsgi+django)

2、專案部署(nginx+uwsgi+django)
  1、部署環境準備
    1、確保django專案能夠執行
    2、安裝nginx(使用apt-get安裝)
       1、安裝 :sudo apt-get install nginx
       2、啟動 :sudo /etc/init.d/nginx restart
       3、驗證 :開啟瀏覽器,輸入127.0.0.1:80-->出現Welcome to Nginx介面
    3、安裝uwsgi(必須使用pip3安裝)
       1、安裝 :sudo pip3 install uwsgi
       2、驗證 :uwsgi --http :8888 --chdir /home/tarena/project/fruitday/ --module fruitday.wsgi

3. 部署線上商城專案

3、部署線上商城專案
  1、配置uwsgi(配置檔案)
    1、在專案目錄(manage.py所在路徑)中新建uwsgi配置檔案:fruitdayUwsgi.ini
    2、vi fruitdayUwsgi.ini
      [uwsgi]
      # 指定和nginx通訊的埠
      socket=127.0.0.1:8001
      # 指定專案路徑
      chdir=/home/tarena/project/fruitday
      # 指定wsgi.py路徑
      wsgi-file=fruitday/wsgi.py
      # 程式數
      processes=4
      # 執行緒數
      thread=2
      # 本專案的uwsgi自身佔用埠
      stats=127.0.0.1:8080
  2、配置nginx(配置檔案)
    1、sudo -i
    2、cd /etc/nginx/sites-enabled
    3、vi projectNginx.conf
    server{
        # 監聽本專案的埠,瀏覽器輸入的埠
        listen 80;
        server_name www.lion.com;
        charset utf-8;

        # 收集專案靜態檔案的路徑
        location /static{
        alias /home/tarena/project/fruitday/static;
        }    

        # 和uwsgi通訊埠和通訊檔案uwsgi_params
        location /{
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8001;
        }

    }
    4、sudo /etc/init.d/nginx restart
    5、拷貝uwsgi_params檔案到專案目錄
      cp /etc/nginx/uwsgi_params  /home/tarena/project/fruitday/
    6、關閉nginx預設監聽埠80
      1、sudo -i
      2、cd /etc/nginx/sites-enabled/
      3、vi default
         # 把原來預設的80改為800
         listen 800 default_server
     listen [::]:800 default_server;
    7、sudo /etc/init.d/nginx restart
  3、收集靜態檔案(配置django專案)
    1、在settings.py中新增路徑(STATIC_ROOT)
      STATIC_ROOT = '/home/tarena/project/fruitday/static/'
    2、收集靜態檔案
      python3 manage.py collectstatic
  4、uwsgi啟動專案
    1、切換到專案目錄
      cd /home/tarena/project/fruitday
    2、利用uwsgi啟動專案
      uwsgi --ini fruitdayUwsgi.ini
  5、新增本地DNS解析
    1、sudo -i
    2、vi /etc/hosts
       ## 新增如下內容:
          127.0.0.1  www.lion.com
    3、重啟網路
       /etc/init.d/networking restart
  6、最終驗證
    開啟瀏覽器,輸入:www.lion.com/user/login
    跳轉到登入介面,部署成功


#### pip3不能使用的解決方法 #####
1、cd /home/tarena/project/setuptools-33.1.1
2、sudo python3 setup.py install 
3、sudo apt-get autoremove python3-pip
4、sudo python3 easy_install.py pip
5、sudo apt-get install python3-pip
## 執行pip3 list會報錯 ##
   錯誤:cannot import name 'main'
6、sudo vi /usr/bin/pip3
   把原來的3行程式碼註釋掉,新增新程式碼後儲存退出:
   from pip import __main__
 
   if __name__ == '__main__':
        sys.exit(__main__._main())
7、pip3 list

相關文章