溫馨提示×

LAMP架構中如何實現自動化部署

小樊
97
2025-02-15 16:00:35
欄目: 編程語言

在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架構中實現自動化部署。根據具體需求,你可以進一步擴展和優化這些腳本和配置。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女