1. 程式人生 > >Linux(四)—— 專案部署與ansible自動化部署

Linux(四)—— 專案部署與ansible自動化部署

目錄

專案部署與ansible自動化部署

一、專案部署

# 1.將專案的壓縮包拖入xshell

# 2.從資料庫中匯出sql檔案,拖入xshell

# 3.啟動資料庫服務,進入mysql資料庫

# 4.在Linux中建立資料庫
mysql> create database bbs charset utf8mb4;    # Linux中大小寫不區分,名字儘量少大寫、數字開頭

# 5.將sql檔案匯入Linux的mysql資料庫中
mysql> use bbs
mysql> source /opt/bbs.sql

# 6.解壓Django專案檔案
unzip BBS.zip

# 7.進入專案的setting中
[
[email protected]
~]# cd BBS [[email protected] BBS]# cd BBS [[email protected] BBS]# vim settings.py # 8.修改settings檔案 ALLOWED_HOST = ['*'] # 修改為允許所有ip訪問 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '10.0.0.100', # 修改資料庫配置的HOST地址,修改為Linux中mysql的地址 'PORT': 3306, 'USER': 'root', 'PASSWORD': '123', 'NAME': 'time8', } } # 9.建立mysql使用者並授權(在mysql中建立mysql使用者,不同版本mysql建立使用者授權方式不同) mysql> grant select,insert,delete,update on bbs.* to
[email protected]
'10.0.0.%' identified by '123'; # 關於資料庫使用者管理可以參考:https://www.cnblogs.com/linagcheng/p/9662824.html # 10.配置nginx [[email protected] BBS]# vim /etc/nginx/conf.d/py.conf # 內容如下 server { listen 80; server_name 10.0.0.100; client_max_body_size 100M; location /static { # 上面的表示路由 alias /opt/BBS/static/; # 下面的表示路徑 } location /media { alias /opt/BBS/media; } location / { index index.html; include uwsgi_params; uwsgi_pass 127.0.0.1:9090; uwsgi_param UWSGI_SCRIPT BBS.wsgi; uwsgi_param UWSGI_CHDIR /opt/BBS; } } # 11.關閉所有已有的uwsgi程序 kill -9 `ps -ef |grep uwsgi|awk {'print $2'}` # 12.配置uwsgi [
[email protected]
BBS]# vim uwsgi.ini # 內容如下: [uwsgi] socket = 127.0.0.1:9090 master = true workers = 2 reload-mercy = 10 vacuum = true max-requests = 1000 limit-as = 512 buffer-size = 30000 # 13.啟動uwsgi uwsgi --ini uwsgi.ini & # 14.重啟nginx systemctl restart nginx
  • 資料庫優化
資料庫中刪除資料存在安全隱患,因此可以加一個欄位state;
如果state為1,表示沒用的資料;如果state為0,表示可以訪問;
只要在查詢資料的時候,查詢條件加一條state==1,即可訪問安全的沒有被“刪除”的資料

二、ansible自動化部署(python自動化運維)

1、安裝ansible

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
    
yum install ansible -y

2、ansible例子

(1)克隆虛擬機器

(2)在虛擬機器上修改克隆機配置

# 修改克隆機的主機名(即standby)
hostnamectl set-hostname standby      

# 修改主機地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0    
    # 修改地址
    IPADDR=10.0.0.200
    # 刪除UUID

# 修改host檔案
vim /etc/hosts
    # 更新主機名和地址
    10.0.0.200 standby

# 重啟
systemctl restart network

(3)利用SSH連線管理機與被管理機——管理機生成祕鑰並推送公鑰

驗證方式:
(1)使用者+密碼(PAM)
(2)祕鑰驗證(公鑰--鑰匙,私鑰--鎖)
    通過祕鑰對實現,需要將公鑰分發到各節點
 # 1.生成祕鑰對
[[email protected] ~]# ssh-keygen

# 2.推送公鑰給被管理機
[[email protected] ~]# for i in {1..12};do ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]$i;done               # 被管理機數量多,利用迴圈分發公鑰
[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]   # 被管理機少,直接推送公鑰

# 3.測試推送
[[email protected] ~]# ssh 10.0.0.200 date      # date表示連線,成功並退出連線

(4)配置被管理的主機清單

[[email protected] ~]# vim /etc/ansible/hosts
    # 內容如下:
    [web]          # web表示組名,一組中有多個地址的被管理主機
    10.0.0.100
    10.0.0.200

(5)測試ansible

# 測試ad-hoc的命令
[[email protected] ~]# ansible web -m ping
# 如果成功顯示如下資訊:
    #10.0.0.12 | SUCCESS => {
    #    "changed": false, 
    #    "ping": "pong"
    #}
    #10.0.0.11 | SUCCESS => {
    #    "changed": false, 
    #    "ping": "pong"
    #}
# 測試ansible中shell的命令
[[email protected] ~]# ansible all -m shell -a "ll"

3、ansible自動化部署nginx

(1)配置YAML檔案

[[email protected] ~]# vim  playbook_nginx.yml 
# 內容如下:
- hosts: web       # 主機組設定
  remote_user: root        # 參與修改的使用者
  vars:          # 變數,可以修改所有的埠等
    http_port: 80     
  tasks:
    - name: Add Nginx Yum Repository
      yum_repository:
        name: nginx
        description: Nginx Repository
        baseurl: http://nginx.org/packages/centos/7/$basearch/
        gpgcheck: no

    - name: Install Nginx Server
      yum: 
        name=nginx state=present

    - name: Configure Nginx Server
      template: src=./default.conf.template dest=/etc/nginx/conf.d/default.conf
      notify: Restart Nginx Server

    - name: Start Nginx Server
      service: name=nginx state=started enabled=yes

  handlers:
    - name: Restart Nginx Server
      service: name=nginx state=restarted

(2)配置 default.conf.template 檔案

# 與YMAL檔案在用一個目錄下
[[email protected] ~]#vim default.conf.template
    # 內容如下:
    server {
        listen       {{ http_port }};
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }

(3)執行 ansible-playbook

# 檢查語法
[[email protected] ~]# ansible-playbook --syntax playbook_nginx.yml     

# 模擬執行
[[email protected] ~]# ansible-playbook -C playbook_nginx.yml 

# 執行
[[email protected] ~]# ansible-playbook playbook_nginx.yml    

(4)測試部署

瀏覽器訪問10.0.0.200:80