温馨提示×

LAMP架构中如何实现自动化部署

小樊
93
2025-02-15 16:00:35
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在LAMP架构中实现自动化部署可以通过多种工具和方法来完成,其中Ansible是一个广泛使用的工具。以下是使用Ansible实现LAMP架构自动化部署的步骤:

1. 安装Ansible

首先,你需要在所有需要部署的服务器上安装Ansible。可以通过以下命令在CentOS系统上进行安装:

sudo yum install epel-release
sudo yum install ansible

2. 准备Ansible Playbook

创建一个Ansible Playbook来定义LAMP环境的部署步骤。以下是一个简单的示例:

# lamp.yml
---
- hosts: all
  become: yes
  tasks:
    - name: Update apt cache
      apt:
        update_cache: yes

    - name: Install LAMP stack
      apt:
        name:
          - apache2
          - mysql-server
          - php libapache2-mod-php php-mysql php-cli
        state: present

    - name: Disable firewall and selinux
      hosts: all
      tasks:
        - name: Disable firewalld
          service:
            name: firewalld
            state: stopped
            enabled: no

        - name: Disable selinux
          selinux:
            state: disabled

3. 配置Ansible Inventory

创建一个Inventory文件来定义你的服务器组:

# hosts
[lamp]
192.168.1.100
192.168.1.101

4. 运行Ansible Playbook

使用以下命令运行Playbook:

ansible-playbook -i hosts lamp.yml

5. 自动化部署的详细步骤

批量编译安装LAMP

你可以创建一个角色来处理LAMP的编译和安装。以下是一个示例目录结构:

roles/
  lamp_install/
    files/
      apache/
      mysql/
      php/
    handlers/
    meta/
    tasks/
    templates/
    vars/
    main.yml

main.yml中定义变量和任务:

# roles/lamp_install/main.yml
---
- hosts: lamp
  become: yes
  tasks:
    - name: Copy source files to remote server
      copy:
        src: ./files/
        dest: /opt/lamp/

    - name: Install LAMP stack
      command: ./install.sh

install.sh中编写安装脚本:

#!/bin/bash
# Install Apache
wget http://apache.mirror.cn/httpd/httpd-2.4.48.tar.gz
tar -zxvf httpd-2.4.48.tar.gz -C /opt/lamp/
cd /opt/lamp/httpd-2.4.48/
./configure --prefix=/usr/local/apache2 --with-mpm=prefork --enable-mods-shared=all
make
make install

# Install MySQL
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum localinstall mysql57-community-release-el7-11.noarch.rpm -y
yum install mysql-community-server -y
systemctl start mysqld
systemctl enable mysqld

# Install PHP
yum install php php-mysqlnd -y

6. 使用Shell脚本实现一键部署

你也可以使用一个简单的Shell脚本来实现一键部署LAMP环境:

#!/bin/bash

# Change yum repo
Change_yum_repo() {
    url1=http://mirrors.aliyun.com/repo/Centos-7.repo
    url2=http://mirrors.163.com/.help/CentOS7-Base-163.repo
    code_st1=$(curl --connect-time 6 -I -s -o /dev/null -w %{http_code}${url1})
    code_st2=$(curl --connect-time 6 -I -s -o /dev/null -w %{http_code}${url2})
    if [ "$code_st1" -eq 200 ]; then
        wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    elif [ "$code_st1" != 200 -a "$code_st2" -eq 200 ]; then
        wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
    else
        mv -f /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
        echo "无法下载yum源,换源失败"
    fi
    yum makecache
}

# Install MySQL
Install_mysql() {
    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    rpm -ivh mysql57-community-release-el7-11.noarch.rpm
    yum install mysql-community-server -y
    if [ $? -eq 0 ]; then
        echo "mysql5.7安装成功"
        mysql -V
    else
        echo "mysql5.7安装失败!"
        exit
    fi
}

# Install PHP
Install_PHP() {
    yum update -y && yum -y install epel-release yum-utils
    rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
    yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
    yum install php php-common php-fpm php-opcache php-gd php-mysqlnd php-mbstring php-pecl-redis php-pecl-memcached php-devel --enablerepo remi-php70 -y
    if [ $? -eq 0 ]; then
        echo "php安装成功"
        php -v
    else
        echo "php安装失败!"
        exit
    fi
}

Deploy_main() {
    Centos_ver=$(cat /etc/redhat-release | grep '7.' | grep -i centos)
    if [ "$Centos_ver" ]; then
        Change_yum_repo
        Install_mysql
        Install_PHP
    fi
}

Deploy_main

将上述脚本保存为deploy_lamp.sh,并赋予执行权限:

chmod +x deploy_lamp.sh

然后运行脚本:

./deploy_lamp.sh

通过以上步骤,你可以在LAMP架构中实现自动化部署。根据具体需求,你可以进一步扩展和优化这些脚本和配置。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:微服务架构如何实现自动化部署

0