项目部署与ansible自动化部署

[TOC]

一、项目部署

# 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,即可访问安全的没有被“删除”的数据

二、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.生成秘钥对
[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"

3、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.200:80

Linux(四)—— 项目部署与ansible自动化部署的更多相关文章

  1. Jenkins+Gitlab+Ansible自动化部署(四)

    接Jenkins+Gitlab+Ansible自动化部署(三)https://www.cnblogs.com/zd520pyx1314/p/10235394.html Jenkins应用 Jenkin ...

  2. Jenkins+Gitlab+Ansible自动化部署(三)

    接Jenkins+Gitlab+Ansible自动化部署(一)https://www.cnblogs.com/zd520pyx1314/p/10210727.html 和(二)https://www. ...

  3. Jenkins+Gitlab+Ansible自动化部署(五)

    Freestyle Job实现静态网站部署交付(接Jenkins+Gitlab+Ansible自动化部署(四)https://www.cnblogs.com/zd520pyx1314/p/102445 ...

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

    Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs. ...

  5. Jenkins+Gitlab+Ansible自动化部署(一)

    首先准备实验环境 虚拟机 主机名 IP地址 服务 系统版本 内核版本 Vmware Workstation 14 gitlab.example.com 192.168.244.130 gitlab  ...

  6. CentOS7系统 ansible自动化部署多台服务器部署

    CentOS7系统 ansible自动化部署多台服务器部署   Ansible工作机制  从图中可以看出ansible分为以下几个部份: 1> Control Node:控制机器2> In ...

  7. Ansible自动化部署K8S集群

    Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...

  8. 通过ansible自动化部署zabbix应用

    zabbix在实际的应用中,可能需要监控的主机非常多,而每个主机的操作系统类型.版本也都不尽相同,在这种环境下,通过手动安装zabbix的agent端已经不现实了,此时就需要借助自动化工具完成zabb ...

  9. ansible自动化部署之场景应用

    ansible自动化配置管理 官方网站: https://docs.ansible.com 一.安装 配置 启动 (ansible由红帽收购) (1)什么是ansible ansible是IT自动化配 ...

随机推荐

  1. VLAN基础配置及Access接口 实验1

    1.Access接口 是交换机上与PC机上相连的端口 2.当主机向交换机发送数据帧时,经过的Access口会将该帧加一个与自己PVID一致的VLAN标签 当交换机的Access口要发送给PC机一个带有 ...

  2. FastJSON 远程执行漏洞,速速升级!

    相信大家用 FastJSON 的人应该不少,居然有漏洞,还不知道的赶紧往下看,已经知道此漏洞的请略过-- 2019年6月22日,阿里云云盾应急响应中心监测到FastJSON存在0day漏洞,攻击者可以 ...

  3. SnowFlake --- 分布式id生成算法

    转载自:https://segmentfault.com/a/1190000011282426 概述 SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图: 1位,不用.二进 ...

  4. SQL数据库—<10>--查询练习题

    待整理···· 45题.分页查询 学生选课数据库SQL语句练习题(45个题) 练习题网盘地址:点我 create database xxb go use xxb go --表(一)Student (学 ...

  5. linux---postgresql的安装和配置

    postgresql的安装:源码安装(推荐):http://my.oschina.net/hippora/blog/375292 1.tar -xjvf postgresql-9.3.4.tar.bz ...

  6. 转:几款免费的图表js插件

    1,ichartjs(国产)(http://www.ichartjs.com/)  ===============强烈推荐ichartjs是一款优秀的国产开源插件,作者是王鹤,英文名taylor,毕业 ...

  7. 扩展阿里巴巴Java开发规约插件(转)

    转自:https://blog.csdn.net/u014513883/article/details/79186893 1.前言 工作中难免会遇到维护别人代码的情况,那么首先就得看懂别人写的代码.如 ...

  8. git-window-install及常用命令

    step 1 : msysgit安装 step 2 : 安装完毕后,打开git bash 输入以下命令: git config --global user.name xxx (用户名) git con ...

  9. 【串线篇】mybatis-config.xml配置事项

    一.术语 properties 属性 settings 设置 typeAliases 类型命名 typeHandlers 类型处理器 objectFactory 对象工厂, plugins 插件, e ...

  10. 【串线篇】概述SpringMvc和spring整合

    SpringMVC和Spring整合的目的:分工明确: SpringMVC的配置文件就来配置和网站转发逻辑以及网站功能有关的(视图解析器,文件上传解析器,支持ajax,xxx):springmvc.x ...