项目部署与ansible自动化部署

目录

  • 项目部署与ansible自动化部署

    • 一、项目部署
    • 二、ansible自动化部署(python自动化运维)
      • 1、安装ansible
      • 2、ansible例子
      • 3、ansible自动化部署nginx

项目部署与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

原文地址:https://www.cnblogs.com/ZKPython/p/11385773.html

时间: 2024-11-07 07:27:49

项目部署与ansible自动化部署的相关文章

实战:ansible自动化部署nginx+keepalived+mysql负载均衡集群

一.目的 使用ansible自动化部署nginx+keepalived+mysql负载均衡集群. 二.拓扑规划 三.详细步骤 1.环境的搭建 (1).安装ansible,同时配置私钥免密码进行通信 [[email protected] ~]# ssh-keygen  -t rsa #-t表示使用的加密类型,其中rsa1表示version1版本,rsa.dsa.ecdsa的加密对于的是version2版本 Generating public/private rsa key pair. #这里询问你

Jenkins+Gitlab+Ansible自动化部署(六)

Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs.com/zd520pyx1314/p/10249094.html) 环境准备 编写ansible playbook脚本实现Wordpress远程部署 将wordpress源码与playbook部署脚本提交到gitlab仓库 编写pipeline job脚本实现Jenkins流水线持续交付流程 Jen

Ansible自动化部署k8s-1.16.0版集群

Ansible自动化部署k8s二进制集群 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企业IT基础设施. 这里我通过Ansible来实现Kubernetes v1.16 高可用集群自动部署(离线版) (但是还是需要网络,因为这里需要去部署flannel,coredns,ingress,dashboard插件,需要拉取镜像 Ansible自动化部署k8s-1.16.0版集群介绍 使用ansible自动化部署k

Ansible自动化部署corosync+pacemaker高可用实现httpd

一.ansible简介 ansible是2012年出现的自动运维工具,基于python开发,集合了众多工具的优点,可以实现批量系统配置.批量程序部署.批量运行命令.批量配置文件修改等功能.最主要的是ansible是基于多模块工作的,而且ansible是无需客户端安装就可以基于ssh实现管理节点的,是轻量级的自动化运维工具,ansible是个框架,主要包括以下几个组件: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:设置管理的

SpringBoot项目 使用Jenkins进行自动化部署 (gitLab管理项目)_

1.部署服务器创建好对应文件夹和启动脚本 创建文件夹 mkdir /wdcloud/app/rps/rps-module-category 创建启动脚本 cd /wdcloud/app/rps/rps-module-category vim rps-module-category.sh #!/bin/bash APP_HOME=/wdcloud/app/rps/rps-module-category APP_JAR=rps-module-category-*.jar APP_PIDS=$(ps

使用ansible自动化部署nfs+rsync+sersync+web01自动化挂载

第1章 思考 1.1如何一键使用ansible搭建 1.1.1第一步目标 首先我们要明确的是我们需要实现的是一键的自动化脚本,既执行一个脚本然后就自动化安装nfs+rsync+sersync,然后让web01自动挂载nfs共享目录, 1.1.2第二步关系明确及顺序 既然有目标了那么我们需要做的就是我们需要明白自动化安装的先后顺序. 既然我们是需要ansible才能自动化安装那么我们就需要先安装ansible 安装了ansible之后,既然我们想要挂载,那么我们就需要有nfs共享,和rsync备份

基于ansible自动化部署nginx+mysl+php分离来实现lnmp

实验说明: 服务角色 IP 系统 需安装 主控机 192.168.24.128 centos7 ansible A受控机 192.168.24.130 centos7 nginx B受控机 192.168.24.131 centos7 mysql C受控机 192.168.24.132 centos7 php-fpm 实验需求: 在主控机上使用自动化运维工具ansible在A受控机上安装nginx,在B受控机上安装mysql,在C受控机上安装php-fpm,实现lnmp构架 实验步骤 在主控机上

Ansible自动化部署之Play book的使用

一.Ansible Play book 的使用 1.Playbook的核心元素 2.Play books简介 3.Play book的基础 (1)主机与用户 (2)tasks任务列表 (3)task定义示例 (4)Play book使用示例 4.Play book变量的使用 (1)变量的定义示例 5.Play book中notifyh和handlers的使用. 示例:触发 6.Play book中tags的使用 7.tepmplates 模板的使用 jinja2语言 示例:模板安装nginx w

Ansible自动化部署之ROLES

一.ROLES 角色 1.目录层级结构 2.角色调用 3.层级结构展示 示例1:利用ansible角色安装nginx 示例2:变量调用 示例3:在playbook调用角色方法:传递变量给角色 示例4:条件测试角色调用 示例5:角色安装 示例6:角色变量调整memcached内存大小 一.ROLES 角色 对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web.db.ha 时或不同服务器组合不同的应用就需要写多个yml文件.很难实现灵活的调用.. roles 用于层次性.结构化地组织pla