項目部署與ansible自動化部署

項目部署與ansible自動化部署

1、項目部署

# 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中
[root@web01 ~]# cd BBS
[root@web01 BBS]# cd BBS
[root@web01 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 bbs@'10.0.0.%' identified by '123';
    # 關於數據庫用戶管理能夠參考:https://www.cnblogs.com/linagcheng/p/9662824.html

# 10.配置nginx
[root@web01 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
[root@web01 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,便可訪問安全的沒有被「刪除」的數據

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

一、安裝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

二、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.生成祕鑰對
[root@web01 ~]# ssh-keygen

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

# 3.測試推送
[root@web01 ~]# ssh 10.0.0.200 date # date表示鏈接,成功並退出鏈接

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

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

(5)測試ansible

# 測試ad-hoc的命令
[root@web01 ~]# ansible web -m ping
# 若是成功顯示以下信息:
    #10.0.0.12 | SUCCESS => {
    # "changed": false, 
    # "ping": "pong"
    #}
    #10.0.0.11 | SUCCESS => {
    # "changed": false, 
    # "ping": "pong"
    #}
# 測試ansible中shell的命令
[root@web01 ~]# ansible all -m shell -a "ll"

三、ansible自動化部署nginx

(1)配置YAML文件

[root@web01 ~]# 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文件在用一個目錄下
[root@web01 ~]#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

# 檢查語法
[root@web01 ~]# ansible-playbook --syntax playbook_nginx.yml 

# 模擬執行
[root@web01 ~]# ansible-playbook -C playbook_nginx.yml 

# 執行
[root@web01 ~]# ansible-playbook playbook_nginx.yml 

(4)測試部署

瀏覽器訪問10.0.0.20080
博客內容僅供參考,部分參考他人優秀博文,僅供學習使用
相關文章
相關標籤/搜索