当前位置:   article > 正文

playbooks 分布式部署 LNMP

playbooks 分布式部署 LNMP

使用Ansible Playbooks进行分布式部署LNMP(Linux, Nginx, MySQL, PHP)是一种高效的方法。以下是一个详细的指南,包含Ansible Playbook的创建和配置,以便在多个服务器上自动化部署LNMP栈。

1. 安装Ansible

首先,在控制节点(通常是你的管理机器)上安装Ansible。

sudo yum install epel-release -y
sudo yum install ansible -y
  • 1
  • 2

2. 设置主机清单

创建一个主机清单文件,定义你的服务器。

# /etc/ansible/hosts

[webservers]
webserver1 ansible_host=192.168.1.101
webserver2 ansible_host=192.168.1.102

[dbservers]
dbserver ansible_host=192.168.1.103
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 创建Playbooks

3.1. 全局变量文件

创建一个包含全局变量的文件。

# group_vars/all.yml

---
nginx_version: "1.20.1"
mysql_root_password: "your_root_password"
mysql_database: "example_db"
mysql_user: "example_user"
mysql_password: "example_password"
php_version: "7.4"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
3.2. 安装Nginx的Playbook

创建用于安装和配置Nginx的Playbook。

# playbooks/nginx.yml

---
- hosts: webservers
  become: yes
  tasks:
    - name: 安装Nginx
      yum:
        name: nginx
        state: present

    - name: 启动并启用Nginx服务
      systemd:
        name: nginx
        state: started
        enabled: yes

    - name: 配置Nginx
      template:
        src: templates/nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify:
        - restart nginx

  handlers:
    - name: restart nginx
      systemd:
        name: nginx
        state: restarted
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

创建一个Nginx配置模板。

# templates/nginx.conf.j2

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;

    server {
        listen 80;
        server_name localhost;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
3.3. 安装MySQL的Playbook

创建用于安装和配置MySQL的Playbook。

# playbooks/mysql.yml

---
- hosts: dbservers
  become: yes
  tasks:
    - name: 安装MySQL
      yum:
        name: mysql-server
        state: present

    - name: 启动并启用MySQL服务
      systemd:
        name: mysqld
        state: started
        enabled: yes

    - name: 设置MySQL root密码
      mysql_user:
        name: root
        host: localhost
        password: "{{ mysql_root_password }}"
        login_unix_socket: /var/lib/mysql/mysql.sock

    - name: 创建数据库
      mysql_db:
        name: "{{ mysql_database }}"
        state: present
        login_user: root
        login_password: "{{ mysql_root_password }}"

    - name: 创建数据库用户并授予权限
      mysql_user:
        name: "{{ mysql_user }}"
        password: "{{ mysql_password }}"
        priv: "{{ mysql_database }}.*:ALL"
        state: present
        login_user: root
        login_password: "{{ mysql_root_password }}"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
3.4. 安装PHP的Playbook

创建用于安装和配置PHP的Playbook。

# playbooks/php.yml

---
- hosts: webservers
  become: yes
  tasks:
    - name: 安装EPEL仓库
      yum:
        name: epel-release
        state: present

    - name: 安装Remi仓库
      yum:
        name: http://rpms.remirepo.net/enterprise/remi-release-7.rpm
        state: present

    - name: 启用Remi PHP仓库
      yum_repository:
        name: remi-php{{ php_version | replace('.', '') }}
        enabled: yes

    - name: 安装PHP和扩展
      yum:
        name: "{{ item }}"
        state: present
      with_items:
        - php
        - php-fpm
        - php-mysqlnd

    - name: 启动并启用PHP-FPM服务
      systemd:
        name: php-fpm
        state: started
        enabled: yes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

4. 运行Playbooks

运行Ansible Playbooks来部署LNMP。

ansible-playbook playbooks/nginx.yml
ansible-playbook playbooks/mysql.yml
ansible-playbook playbooks/php.yml
  • 1
  • 2
  • 3

5. 检查和验证

确认Nginx、MySQL和PHP已正确安装和配置。你可以访问Nginx默认页面并通过MySQL命令行工具检查数据库和用户的创建。

总结

通过上述步骤,你可以使用Ansible自动化工具在多个服务器上分布式部署LNMP栈。这种方法确保了安装过程的一致性,并简化了大规模部署和管理的复杂性。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/916497
推荐阅读
相关标签
  

闽ICP备14008679号