项目部署与ansible自动化部署

[TOC]

一、项目部署

  1. # 1.将项目的压缩包拖入xshell
  2. # 2.从数据库中导出sql文件,拖入xshell
  3. # 3.启动数据库服务,进入mysql数据库
  4. # 4.在Linux中建立数据库
  5. mysql> create database bbs charset utf8mb4; # Linux中大小写不区分,名字尽量少大写、数字开头
  6. # 5.将sql文件导入Linux的mysql数据库中
  7. mysql> use bbs
  8. mysql> source /opt/bbs.sql
  9. # 6.解压Django项目文件
  10. unzip BBS.zip
  11. # 7.进入项目的setting中
  12. [root@web01 ~]# cd BBS
  13. [root@web01 BBS]# cd BBS
  14. [root@web01 BBS]# vim settings.py
  15. # 8.修改settings文件
  16. ALLOWED_HOST = ['*'] # 修改为允许所有ip访问
  17. DATABASES = {
  18. 'default': {
  19. 'ENGINE': 'django.db.backends.mysql',
  20. 'HOST': '10.0.0.100', # 修改数据库配置的HOST地址,修改为Linux中mysql的地址
  21. 'PORT': 3306,
  22. 'USER': 'root',
  23. 'PASSWORD': '123',
  24. 'NAME': 'time8',
  25. }
  26. }
  27. # 9.创建mysql用户并授权(在mysql中创建mysql用户,不同版本mysql创建用户授权方式不同)
  28. mysql> grant select,insert,delete,update on bbs.* to bbs@'10.0.0.%' identified by '123';
  29. # 关于数据库用户管理可以参考:https://www.cnblogs.com/linagcheng/p/9662824.html
  30. # 10.配置nginx
  31. [root@web01 BBS]# vim /etc/nginx/conf.d/py.conf
  32. # 内容如下
  33. server {
  34. listen 80;
  35. server_name 10.0.0.100;
  36. client_max_body_size 100M;
  37. location /static { # 上面的表示路由
  38. alias /opt/BBS/static/; # 下面的表示路径
  39. }
  40. location /media {
  41. alias /opt/BBS/media;
  42. }
  43. location / {
  44. index index.html;
  45. include uwsgi_params;
  46. uwsgi_pass 127.0.0.1:9090;
  47. uwsgi_param UWSGI_SCRIPT BBS.wsgi;
  48. uwsgi_param UWSGI_CHDIR /opt/BBS;
  49. }
  50. }
  51. # 11.关闭所有已有的uwsgi进程
  52. kill -9 `ps -ef |grep uwsgi|awk {'print $2'}`
  53. # 12.配置uwsgi
  54. [root@web01 BBS]# vim uwsgi.ini
  55. # 内容如下:
  56. [uwsgi]
  57. socket = 127.0.0.1:9090
  58. master = true
  59. workers = 2
  60. reload-mercy = 10
  61. vacuum = true
  62. max-requests = 1000
  63. limit-as = 512
  64. buffer-size = 30000
  65. # 13.启动uwsgi
  66. uwsgi --ini uwsgi.ini &
  67. # 14.重启nginx
  68. systemctl restart nginx
  • 数据库优化
  1. 数据库中删除数据存在安全隐患,因此可以加一个字段state
  2. 如果state1,表示没用的数据;如果state0,表示可以访问;
  3. 只要在查询数据的时候,查询条件加一条state==1,即可访问安全的没有被“删除”的数据

二、ansible自动化部署(python自动化运维)

1、安装ansible

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

2、ansible例子

(1)克隆虚拟机

(2)在虚拟机上修改克隆机配置

  1. # 修改克隆机的主机名(即standby)
  2. hostnamectl set-hostname standby
  3. # 修改主机地址
  4. vim /etc/sysconfig/network-scripts/ifcfg-eth0
  5. # 修改地址
  6. IPADDR=10.0.0.200
  7. # 删除UUID
  8. # 修改host文件
  9. vim /etc/hosts
  10. # 更新主机名和地址
  11. 10.0.0.200 standby
  12. # 重启
  13. systemctl restart network

(3)利用SSH连接管理机与被管理机——管理机生成秘钥并推送公钥

  1. 验证方式:
  2. (1)用户+密码(PAM)
  3. (2)秘钥验证(公钥--钥匙,私钥--锁)
  4. 通过秘钥对实现,需要将公钥分发到各节点
  1. # 1.生成秘钥对
  2. [root@web01 ~]# ssh-keygen
  3. # 2.推送公钥给被管理机
  4. [root@web01 ~]# for i in {1..12};do ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.$i;done # 被管理机数量多,利用循环分发公钥
  5. [root@web01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.200 # 被管理机少,直接推送公钥
  6. # 3.测试推送
  7. [root@web01 ~]# ssh 10.0.0.200 date # date表示连接,成功并退出连接

(4)配置被管理的主机清单

  1. [root@web01 ~]# vim /etc/ansible/hosts
  2. # 内容如下:
  3. [web] # web表示组名,一组中有多个地址的被管理主机
  4. 10.0.0.100
  5. 10.0.0.200

(5)测试ansible

  1. # 测试ad-hoc的命令
  2. [root@web01 ~]# ansible web -m ping
  3. # 如果成功显示如下信息:
  4. #10.0.0.12 | SUCCESS => {
  5. # "changed": false,
  6. # "ping": "pong"
  7. #}
  8. #10.0.0.11 | SUCCESS => {
  9. # "changed": false,
  10. # "ping": "pong"
  11. #}
  1. # 测试ansible中shell的命令
  2. [root@web01 ~]# ansible all -m shell -a "ll"

3、ansible自动化部署nginx

(1)配置YAML文件

  1. [root@web01 ~]# vim playbook_nginx.yml
  2. # 内容如下:
  3. - hosts: web # 主机组设置
  4. remote_user: root # 参与修改的用户
  5. vars: # 变量,可以修改所有的端口等
  6. http_port: 80
  7. tasks:
  8. - name: Add Nginx Yum Repository
  9. yum_repository:
  10. name: nginx
  11. description: Nginx Repository
  12. baseurl: http://nginx.org/packages/centos/7/$basearch/
  13. gpgcheck: no
  14. - name: Install Nginx Server
  15. yum:
  16. name=nginx state=present
  17. - name: Configure Nginx Server
  18. template: src=./default.conf.template dest=/etc/nginx/conf.d/default.conf
  19. notify: Restart Nginx Server
  20. - name: Start Nginx Server
  21. service: name=nginx state=started enabled=yes
  22. handlers:
  23. - name: Restart Nginx Server
  24. service: name=nginx state=restarted

(2)配置 default.conf.template 文件

  1. # 与YMAL文件在用一个目录下
  2. [root@web01 ~]#vim default.conf.template
  3. # 内容如下:
  4. server {
  5. listen {{ http_port }};
  6. server_name localhost;
  7. location / {
  8. root /usr/share/nginx/html;
  9. index index.html index.htm;
  10. }
  11. }

(3)执行 ansible-playbook

  1. # 检查语法
  2. [root@web01 ~]# ansible-playbook --syntax playbook_nginx.yml
  3. # 模拟执行
  4. [root@web01 ~]# ansible-playbook -C playbook_nginx.yml
  5. # 执行
  6. [root@web01 ~]# ansible-playbook playbook_nginx.yml

(4)测试部署

  1. 浏览器访问10.0.0.20080

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. 关于tomcat中的三个端口的作用及其相关细节

    [一]端口内容 tomcat的端口号相关信息: Tomcat admin port——管理端口,允许你远程配置tomcat HTTP——正常的http协议 AJP——Apache JServ Prot ...

  2. Objective-C Properties 详解

    关于Objective-C 的property,很多iOS开发的新手都会很迷惑,也会包括有经验的iOS开发程序员, 因为Objective-C的property,说多不多,说少却也不少,从MRR(Ma ...

  3. [题解]Shorten IPv6 Address-模拟(2019牛客多校第六场B题)

    题目链接:https://ac.nowcoder.com/acm/contest/886/B 题意: 您将获得一个IPv6地址,该地址是128位二进制字符串.请根据以下规则确定其最短的表示: 以十六进 ...

  4. 转 Page Object模式

    Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...

  5. 【题解】A Horrible Poem

    题目大意 给出一个由小写英文字母组成的字符串 S,再给出 q 个询问,要求回答 S 某个子串的最短循环节. 如果字符串 B 是字符串 A 的循环节,那么 A 可以由 B 重复若干次得到. 输入格式 第 ...

  6. 【题解】LCIS

    题目描述 给定两个整数序列,写一个程序求它们的最长上升公共子序列. 输入格式 每个序列用两行表示,第一行是长度L,第二行是该序列. 输出格式 在第一行,输出该LCIS的长度.第二行,输出该LCIS. ...

  7. 重写原生alert,弹出层过一会就消失

    window.alert = function(str) { if(document.querySelectorAll("div.shieldClass").length!=0){ ...

  8. Codeforces Paths and Trees

    Paths and Trees time limit per test3 seconds memory limit per test256 megabytes Little girl Susie ac ...

  9. win32程序使用CString

    https://www.cnblogs.com/qingtian224/p/5833456.html uafxcwd.lib(afxmem.obj) : error LNK2005: "vo ...

  10. H2数据库做单测数据库时踩到的坑

    H2数据库用来做单测数据库,可以自定义初始化数据,不用担心数据库内容更改造成单测跑不过问题,不过H2数据库跟实际使用的Mysql还是有一定区别. 1. H2数据库不支持Mysql的批量更新功能,支持批 ...