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

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.lryc.cn/news/625115.html

相关文章:

  • 每日AI要闻【20250818】
  • 自回归图像生成新突破!140亿参数自回归模型NextStep-1开源,图像生成无需扩散模型
  • 基于SFM的三维重建MATLAB程序
  • MBTI职业规划指南:发掘你的人格潜能,照亮职业发展之路
  • Elasticsearch查询中的track_total_hits参数
  • 力扣hot100:移动零问题的巧妙解决:双指针与原地交换策略(283)
  • 构建高效智能语音代理:技术架构、实现细节与API服务推荐
  • shell脚本第一阶段
  • Linux命令大全-rm命令
  • 音频算法工程师技能1
  • Docker常见指令速查
  • mq存量消息如何处理
  • 电商API接口实录对接:1688混批价格函数处理
  • python DataFrame基础操作
  • 烟草行政处罚案卷制作与评查平台被中国信通院认定为2025年商业产品及企业典型案例
  • 第一阶段C#基础-13:索引器,接口,泛型
  • AI出题人给出的Java后端面经(十八)(日更)
  • 什么是系统设计
  • 电竞酒店和高校宿舍对AI云电竞游戏盒子的需求有什么不同?
  • 从虚拟到现实:数字孪生赋能智能制造
  • docker部署flask并迁移至内网
  • 前端面试通关:Cesium+Three+React优化+TypeScript实战+ECharts性能方案
  • css word-pass
  • 强化学习-CH2 状态价值和贝尔曼等式
  • 【新手易混】find 命令中 -perm 选项的知识点
  • Unity2022打包安卓报错的奇葩问题
  • 云原生俱乐部-docker知识点归纳(1)
  • 2-4〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸AWVS(WEB扫描)
  • PyTorch数据处理工具箱详解|深入理解torchvision与torch.utils.data
  • 嵌入式设备Lwip协议栈实现功能