在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架构中实现自动化部署。根据具体需求,你可以进一步扩展和优化这些脚本和配置。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:微服务架构如何实现自动化部署