Linux(四)—— 项目部署与ansible自动化部署
项目部署与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自动化部署的更多相关文章
- Jenkins+Gitlab+Ansible自动化部署(四)
		接Jenkins+Gitlab+Ansible自动化部署(三)https://www.cnblogs.com/zd520pyx1314/p/10235394.html Jenkins应用 Jenkin ... 
- Jenkins+Gitlab+Ansible自动化部署(三)
		接Jenkins+Gitlab+Ansible自动化部署(一)https://www.cnblogs.com/zd520pyx1314/p/10210727.html 和(二)https://www. ... 
- Jenkins+Gitlab+Ansible自动化部署(五)
		Freestyle Job实现静态网站部署交付(接Jenkins+Gitlab+Ansible自动化部署(四)https://www.cnblogs.com/zd520pyx1314/p/102445 ... 
- Jenkins+Gitlab+Ansible自动化部署(六)
		Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs. ... 
- Jenkins+Gitlab+Ansible自动化部署(一)
		首先准备实验环境 虚拟机 主机名 IP地址 服务 系统版本 内核版本 Vmware Workstation 14 gitlab.example.com 192.168.244.130 gitlab ... 
- CentOS7系统 ansible自动化部署多台服务器部署
		CentOS7系统 ansible自动化部署多台服务器部署 Ansible工作机制 从图中可以看出ansible分为以下几个部份: 1> Control Node:控制机器2> In ... 
- Ansible自动化部署K8S集群
		Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ... 
- 通过ansible自动化部署zabbix应用
		zabbix在实际的应用中,可能需要监控的主机非常多,而每个主机的操作系统类型.版本也都不尽相同,在这种环境下,通过手动安装zabbix的agent端已经不现实了,此时就需要借助自动化工具完成zabb ... 
- ansible自动化部署之场景应用
		ansible自动化配置管理 官方网站: https://docs.ansible.com 一.安装 配置 启动 (ansible由红帽收购) (1)什么是ansible ansible是IT自动化配 ... 
随机推荐
- CF561做题
			C题: 一期思路:我们发现如果x,y满足条件,那么{x,-y} {-x,y} {-x,-y}也满足条件.那么我们可以只讨论|x| |y|是否满足条件,如果满足条件,那么对ans的贡献是|x|出现次数* ... 
- java多线程学习笔记(八)
			本节开始线程间通信: 使用wait/notify实现线程间通信 生产者/消费者模式的实现 方法join的使用 ThreadLocal类的使用 可以通过使用 sleep() 结合 while(true) ... 
- MFC坐标问题
			页面空间中的矩形被称为窗口,设备空间中的矩形被称为视口. 页面空间与设备空间的转换示意图: 页面空间到设备空间的转换需要两个矩形的宽高比(转换因子). 设备空间到物理空间转换的唯一作用是平移,并由Wi ... 
- [LeetCode] 181.超过经理收入的员工
			Employee表包含所有员工,他们的经理也属于员工.每个员工都有一个 Id,此外还有一列对应员工的经理的 Id. +----+-------+--------+-----------+ | Id | ... 
- PHP 算式验证码
			这里不多说,直接上代码! /** * 改造的加减法验证类 * 使用示例 VerifyCode::get('xxx', 20); * 验证示例 VerifyCode::check('1', 'xxx') ... 
- v8引擎的优化
			1.编译优化 V8采用JIT即使编译技术. 例如JAVA是先编译成字节码,再由JVM编译成机器码,V8则没有中间的字节码,直接由源码生成语法树,然后编译成机器码. 2.隐藏类 当定义一个构造函数,使用 ... 
- HDU 6464 /// 权值线段树
			题目大意: 共Q次操作 操作有两种 操作一 在序列尾部加入f[i]个s[i] 操作二 查询序列第f[i]小到第s[i]小之间的总和 离线操作 把序列内的值离散化 然后利用离散化后的值 在线段树上对应权 ... 
- Moco 框架以及其在 Web 集成测试的应用
			转自:https://www.ibm.com/developerworks/cn/web/1405_liugang_mocowebtest/ Moco 框架以及其在 Web 集成测试的应用 我们往往将 ... 
- C# 编程--数组
			数组 可以帮我我们一次声明存储多个相同类型的变量.用来解决同一类大量数据在内存存储和运算的功能特点:连续.同一类数据数组定义==>赋值==>取值 定义: int[] n ... 
- spring 事物(二)—— 编程式事物实现与扩展
			简介 使用TransactionTemplate 不需要显式地开始事务,甚至不需要显式地提交事务.这些步骤都由模板完成.但出现异常时,应通过TransactionStatus 的setRollback ... 
