当前位置: 首页 > backend >正文

Ansible 部署LNMP

Ansible 部署LNMP

1.环境准备

[wsh@controller ~ ?]$ mkdir LNMP
[wsh@controller ~ ?]$ ls
ansible  LNMP
[wsh@controller ~ ?]$ cp ansible/ansible.cfg ansible/inventory LNMP/
[wsh@controller ~ ?]$ cd LNMP/
[wsh@controller LNMP ?]$ ls
ansible.cfg  inventory[wsh@controller LNMP ✔]$ rz -E
rz waiting to receive.
[wsh@controller LNMP ✔]$ ls
ansible.cfg  inventory  wordpress-4.9.4-zh_CN.zip
  • 准备环境变量

#主机清单
[wsh@controller LNMP ✔]$ cat inventory 
[lnmps]
lnmp ansible_host=node1[controllers]
controller[dev]
node1[test]
node2[prod]
node3
node4
# ansible 配置
[wsh@controller LNMP ✔]$ cat ansible.cfg 
[defaults]                         
inventory = ./inventory            
remote_user = wsh                 
vault_password_file=./secret.txt   [privilege_escalation]             
become=True                        
become_method=sudo                 
become_user=root                   
become_ask_pass=False[wsh@controller LNMP ✔]$ cat secret.txt 
redhat

2.准备Maria DB

1.变量配置

[wsh@controller LNMP ✔]$ mkdir -p host_vars/lnmp
[wsh@controller LNMP ✔]$ cat host_vars/lnmp/vars.yml 
db_name: webapp
[wsh@controller LNMP ✔]$ ansible-vault view host_vars/lnmp/vaults.yml
mysql_root_password: wsh@123
app_user: wordpress
app_password: wsh@123
app_host: '%'
app_priv: '*.*:ALL'
[wsh@controller LNMP ✔]$ vim LNMP-playbook.yml

2.服务的安装启动与安全初始化

---                          
- name: deploy mariadb       hosts: lnmp                tasks:                     #安装                    - name: install mariadb yum:                   name:                - mariadb-server   - python2-PyMySQL  state: present       # 启动                   - name: enabled and start db service:               name: mariadb        enabled: yes         state: started# 设置 root 密码    - name: set root@localhost passwordshell: mysqladmin password {{ mysql_root_password }}ignore_errors: yes - name: set root passwordmysql_user:       name: root       password: "{{ mysql_root_password }}"host: "{{ item }}"state: present  login_user: rootlogin_password: "{{ mysql_root_password }}"with_items:       - "{{ ansible_fqdn }}"- 127.0.0.1     - ::1           # 删除匿名用户        - name: delete user anonymousmysql_user:       name: ""        host_all: yes   state: absent   login_user: rootlogin_password: "{{ mysql_root_password }}"#login_unix_socket: /var/lib/mysql/mysql.sock# 删除测试数据库    - name: delete database testmysql_db:         name: test      state: absent   login_user: rootlogin_password: "{{ mysql_root_password }}"

3.创建用户与数据库

#创建新用户和库
- name: prepare db for webapphosts: lnmp  tasks:       # 创建新用户- name: create user {{ user }}mysql_user:name: "{{ app_user }}"password: "{{ app_password }}"host: "{{ app_host }}"priv: "{{ app_priv }}"state: presentlogin_user: rootlogin_password: "{{ mysql_root_password }}"# 创建新库 - name: create database db_namemysql_db:name: "{{ db_name }}"state: presentlogin_user: root

3.准备nginx

安装和启动服务器

#准备web服务器                                
- name: deploy web server                     hosts: lnmp                                 tasks:- name: install nginx                     yum:                                    name: nginx                           state: present                        #启动服务                                 - name: enabled and started nginx         services:                               name: nginx                           state: started                        enabled: yes                          - name: prepare test page                 copy:                                   content: hello world from nginx       dest: /usr/share/nginx/html/index.html

4.准备php

1.准备配置文档

[wsh@controller LNMP ✔]$ vim php.conf
location ~ \.php$ {try_files $uri =404;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;
}

2.安装与启动php

#准备php服务
- name: phphosts: lnmptasks: - name: install phpyum:name: php,php-fpm,php-mysqlndstate: present#准备配置文件- name: modify running user for phplineinfile:path: /etc/php-fpm.d/www.confregexp: "{{ item }} = "line: "{{ item }} = nginx"loop:- user- group#启动php服务- name: enabled and start phpservices:name: php-fpmstate: startedenabled: yes#为nginx配置php- name: config php for nginxcopy:src: php.confdest: /etc/nginx/default.d/php.conf- name: restart nginxservice: nginxstate: restarted

5.准备webapp文件

1.准备配置文档

[wsh@controller LNMP ✔]$ vim vhost-wordpress.conf.j2server {listen       80;server_name  {{ blog_vhost }};root         /usr/share/nginx/html/{{ blog_vhost }}/wordpress;index index.php;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;# log fileaccess_log  /var/log/nginx/access-{{ blog_vhost }}.log;error_log /var/log/nginx/error-{{ blog_vhost }}.log;}

2.准备文件

#准备webapp文件     
- name: deploy web app                               hosts: lnmpvars:blog_vhost: blog.wsh.cloud                       tasks:#准备虚拟主机   - name: prepare vhost                            template:     src: vhost-wordpress.conf.j2                 dest: /etc/nginx/conf.d/vhost-wordpress.conf #准备虚拟主机目录                                - name: create /usr/share/nginx/html/{{ blog_vhost }}file:path: /usr/share/nginx/html/{{ blog_vhost }} state: directory                             #准备webapp文件- name: Unarchive a worepress fileunarchive:src: wordpress-4.9.4-zh_CN.zipdest: /usr/share/nginx/html/{{ blog_vhost }}/owner: nginxgroup: nginx#重启nginx- name: restart nginxservice:name: nginxstate: restarted

6.执行ansible

1.测试playbook

[wsh@controller LNMP ✔]$ ansible-playbook LNMP-playbook.yml --syntax-checkplaybook: LNMP-playbook.yml

2.执行测试

[wsh@controller LNMP ✔]$ ansible-playbook LNMP-playbook.ymlPLAY [deploy mariadb] *******************************************************************TASK [Gathering Facts] ******************************************************************
ok: [lnmp]TASK [install mariadb] ******************************************************************
changed: [lnmp]TASK [enabled and start db] *************************************************************
changed: [lnmp]TASK [set root@localhost password] ******************************************************
changed: [lnmp]TASK [set root password] ****************************************************************
changed: [lnmp] => (item=node1.wsh.cloud)
changed: [lnmp] => (item=127.0.0.1)
changed: [lnmp] => (item=::1)
[WARNING]: Module did not set no_log for update_passwordTASK [delete user anonymous] ************************************************************
changed: [lnmp]TASK [delete database test] *************************************************************
changed: [lnmp]PLAY [prepare db for webapp] ************************************************************TASK [Gathering Facts] ******************************************************************
ok: [lnmp]TASK [create user {{ user }}] ***********************************************************
changed: [lnmp]TASK [create database db_name] **********************************************************
changed: [lnmp]PLAY [deploy web server] ****************************************************************TASK [Gathering Facts] ******************************************************************
ok: [lnmp]TASK [install nginx] ********************************************************************
changed: [lnmp]TASK [enabled and started nginx] ********************************************************
changed: [lnmp]TASK [prepare test page] ****************************************************************
changed: [lnmp]PLAY [php] ******************************************************************************TASK [Gathering Facts] ******************************************************************
ok: [lnmp]TASK [install php] **********************************************************************
changed: [lnmp]TASK [modify running user for php] ******************************************************
changed: [lnmp] => (item=user)
changed: [lnmp] => (item=group)TASK [enabled and start php] ************************************************************
changed: [lnmp]TASK [config php for nginx] *************************************************************
changed: [lnmp]TASK [restart nginx] ********************************************************************
changed: [lnmp]PLAY [deploy web app] *******************************************************************TASK [Gathering Facts] ******************************************************************
ok: [lnmp]TASK [prepare vhost] ********************************************************************
changed: [lnmp]TASK [create /usr/share/nginx/html/blog.wsh.cloud] **************************************
changed: [lnmp]TASK [Unarchive a worepress file] *******************************************************
changed: [lnmp]TASK [restart nginx] ********************************************************************
changed: [lnmp]PLAY RECAP ******************************************************************************
lnmp                       : ok=25   changed=20   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

3.结果验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.xdnf.cn/news/18112.html

相关文章:

  • Read View 在 MVCC 里如何工作的?
  • 下载大模型经常遇到的报错Still waiting to acquire lock on Wan2.1-VACE-14B/.cache与解决办法
  • Linux系统WireShark抓取本地网卡报文
  • 发布npmjs组件库
  • 套接字超时控制与服务器调度策略
  • 多台服务器批量发布arcgisserver服务并缓存切片
  • 开发指南133-设定列表分页的初始默认每页行数
  • vue从入门到精通:搭建第一个vue项目
  • 【React Hooks】封装的艺术:如何编写高质量的 React 自-定义 Hooks
  • Rust学习笔记(六)|Rust 中的常用集合(Vector、String、HashMap)
  • Rust 异步中的 Waker
  • Linux权限的学习
  • 概率论基础教程第4章 随机变量(三)
  • 【opencv-Python学习笔记(7):图像平滑处理】
  • IntelliJ IDEA 开发配置教程
  • 独立看门狗(IWDG)
  • 决策树简单实战
  • 「数据获取」《防城港市统计年鉴》(2014-2020)(获取方式看绑定的资源)
  • 图像分类精度评价的方法——误差矩阵、总体精度、用户精度、生产者精度、Kappa 系数
  • 详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
  • 一套GoldenGate → Kafka → Flink → MySQL 的端到端增量同步方案
  • IDE开发系列(1)基于QT的简易IDE框架设计
  • 3D检测笔记:基础坐标系与标注框介绍
  • 深层语义知识图谱:提升NLP文本预处理效果的关键技术
  • 【P18 3-10】OpenCV Python—— 鼠标控制,鼠标回调函数(鼠标移动、按下、。。。),鼠标绘制基本图形(直线、圆、矩形)
  • 在 PyCharm Notebook 中安装 YOLO
  • Jupyter 中实现交互式图表:ipywidgets 从入门到部署
  • 短剧小程序系统开发:推动短剧行业规范化与标准化发展
  • 01数据结构-交换排序
  • AWS Neptune:图数据库的强大潜力