在LAMP架構中實現自動化部署可以通過多種工具和方法來完成,其中Ansible是一個廣泛使用的工具。以下是使用Ansible實現LAMP架構自動化部署的步驟:
首先,你需要在所有需要部署的服務器上安裝Ansible??梢酝ㄟ^以下命令在CentOS系統上進行安裝:
sudo yum install epel-release
sudo yum install ansible
創建一個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
創建一個Inventory文件來定義你的服務器組:
# hosts
[lamp]
192.168.1.100
192.168.1.101
使用以下命令運行Playbook:
ansible-playbook -i hosts lamp.yml
你可以創建一個角色來處理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
你也可以使用一個簡單的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架構中實現自動化部署。根據具體需求,你可以進一步擴展和優化這些腳本和配置。