centos lnmp如何实现自动化部署
导读:一、自动化部署前的准备工作 在开始自动化部署前,需确保服务器满足基础环境要求: 系统要求:CentOS 7/8及以上(或其他兼容的Linux发行版,如openEuler); 网络要求:服务器可通过SSH访问,具备外网权限(用于下载安装包)...
一、自动化部署前的准备工作
在开始自动化部署前,需确保服务器满足基础环境要求:
- 系统要求:CentOS 7/8及以上(或其他兼容的Linux发行版,如openEuler);
- 网络要求:服务器可通过SSH访问,具备外网权限(用于下载安装包);
- 权限要求:使用
root
用户或具有sudo
权限的账户操作; - 基础工具:提前安装
wget
、vim
、gcc
、make
等编译工具(部分脚本会自动处理)。
二、使用Shell脚本实现自动化部署(手动编写/使用开源脚本)
Shell脚本是CentOS下最常用的自动化部署方式,通过编写脚本自动完成依赖安装→组件下载→配置修改→服务启动全流程。以下是具体步骤:
1. 编写基础Shell脚本(以LNMP 1.4为例)
创建脚本文件(如lnmp_deploy.sh
),内容涵盖:
- 依赖安装:安装Nginx、MariaDB、PHP及常用扩展所需的依赖包;
- 组件安装:通过
yum
仓库自动下载并安装Nginx、MariaDB、PHP; - 配置修改:自动配置Nginx支持PHP(修改
default.conf
)、优化PHP-FPM参数; - 服务管理:启动Nginx、MariaDB、PHP-FPM服务,并设置开机自启;
- 安全配置:自动执行
mysql_secure_installation
设置数据库root密码、移除匿名用户; - 防火墙放行:自动开放HTTP(80)、HTTPS(443)端口。
#!/bin/bash
# LNMP自动化部署脚本(基础版)
set -e # 遇到错误立即退出
# 1. 更新系统并安装依赖
echo "正在更新系统并安装依赖..."
yum update -y &
&
yum install -y epel-release wget vim gcc make pcre-devel openssl-devel libxml2-devel libjpeg-devel libpng-devel freetype-devel zlib-devel mariadb-server mariadb php php-fpm php-mysql php-mbstring php-xml php-gd php-opcache -y
# 2. 安装Nginx
echo "正在安装Nginx..."
yum install -y nginx
systemctl enable nginx --now
# 3. 安装MariaDB(MySQL兼容)
echo "正在安装MariaDB..."
systemctl enable mariadb --now
# 自动执行安全配置(自动输入密码)
DB_ROOT_PASS="your_password" # 替换为你的数据库密码
mysql_secure_installation <
<
EOF
y
$DB_ROOT_PASS
$DB_ROOT_PASS
y
y
y
y
EOF
# 4. 安装PHP及扩展
echo "正在安装PHP及扩展..."
yum install -y php php-fpm php-mysql php-mbstring php-xml php-gd php-opcache -y
systemctl enable php-fpm --now
# 5. 配置Nginx支持PHP
echo "正在配置Nginx支持PHP..."
cat >
/etc/nginx/conf.d/default.conf <
<
EOF
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files \$uri \$uri/ =404;
}
location ~ \.php\$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
# 6. 创建PHP测试页
echo "<
?php phpinfo();
?>
" >
/usr/share/nginx/html/index.php
# 7. 重启服务并验证
systemctl restart nginx php-fpm
echo "LNMP部署完成!请访问 http://服务器IP 查看PHP信息页。"
2. 使用开源LNMP部署脚本(推荐)
若不想手动编写脚本,可使用社区提供的开源LNMP部署脚本,这些脚本已集成常见功能(如交互式选择、错误处理、卸载/重置),更稳定可靠:
- LNMP 1.4官方脚本:支持CentOS 6/7/8,自动检测系统环境,提供
lnmp
(Nginx+MySQL+PHP)、lnmpa
(Nginx+Apache+MySQL+PHP)等模式选择。
使用方法:wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz & & tar zxf lnmp1.4.tar.gz & & cd lnmp1.4 & & ./install.sh lnmp
- openEuler专用脚本:适配openEuler 24.03 Minimal系统,支持无人值守安装(自动输入参数)、卸载(–uninstall)、**重置(–reset)**功能,集成Nginx 1.24、PHP 8.3、MariaDB 10.6等组件。
使用方法:curl -O https://github.com/fire-dog/shell-fire/blob/main/lnmp_install_auto.sh chmod +x lnmp_install_auto.sh bash lnmp_install_auto.sh # 无人值守安装 bash lnmp_install_auto.sh --uninstall # 卸载 bash lnmp_install_auto.sh --reset # 重置
3. 脚本优化技巧
- 参数化配置:将数据库密码、PHP版本、网站目录等参数提取到
config.sh
文件中,通过source config.sh
引入脚本,提高灵活性; - 错误处理:使用
set -e
让脚本在遇到错误时立即退出,避免继续执行导致更严重的问题; - 日志记录:将脚本输出重定向到日志文件(如
./lnmp_deploy.sh > lnmp_deploy.log 2> & 1
),便于后续排查问题; - 端口检测:在安装前自动检测80、443、3306等端口是否被占用,若占用则提示用户并退出。
三、使用Ansible Playbook实现自动化部署(适合大规模集群)
若需要批量部署(如多台服务器),可使用Ansible(基于SSH的自动化运维工具),无需在被管理节点安装客户端,通过Playbook定义部署流程。
1. 准备Ansible环境
- 管理节点(部署服务器):安装Ansible(
yum install -y ansible
),配置SSH免密登录(被管理节点); - 被管理节点(目标服务器):确保可通过SSH访问,具备root权限。
2. 编写Ansible Playbook(lnmp.yml
)
Playbook使用YAML格式,定义任务(tasks)(如安装组件、配置文件、启动服务):
---
- name: Deploy LNMP on CentOS 7
hosts: webservers # 被管理节点组(需在inventory文件中定义)
become: yes # 以root权限执行
tasks:
# 1. 更新系统
- name: Update system
yum:
name: "*"
state: latest
update_cache: yes
# 2. 安装依赖
- name: Install dependencies
yum:
name:
- epel-release
- wget
- gcc
- make
- pcre-devel
- openssl-devel
- mariadb-server
- mariadb
- php
- php-fpm
- php-mysql
- php-mbstring
- php-xml
- php-gd
- php-opcache
state: present
# 3. 启动MariaDB并设置开机自启
- name: Start and enable MariaDB
service:
name: mariadb
state: started
enabled: yes
# 4. 执行MariaDB安全配置
- name: Secure MariaDB installation
command: >
mysql_secure_installation <
<
EOF
y
your_password
your_password
y
y
y
y
EOF
args:
stdin: yes
# 5. 启动PHP-FPM并设置开机自启
- name: Start and enable PHP-FPM
service:
name: php-fpm
state: started
enabled: yes
# 6. 配置Nginx支持PHP
- name: Configure Nginx for PHP
copy:
dest: /etc/nginx/conf.d/default.conf
content: |
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 7. 创建PHP测试页
- name: Create PHP test page
copy:
dest: /usr/share/nginx/html/index.php
content: "<
?php phpinfo();
?>
"
# 8. 重启Nginx
- name: Restart Nginx
service:
name: nginx
state: restarted
3. 执行Playbook
- 定义inventory文件(
hosts
):指定被管理节点的IP地址。[webservers] 192.168.1.100 192.168.1.101
- 运行Playbook:
ansible-playbook -i hosts lnmp.yml
Ansible会自动连接到所有被管理节点,依次执行Playbook中的任务,实现批量自动化部署。
四、自动化部署的注意事项
- 测试环境验证:正式部署前,先在测试环境运行脚本,确保脚本兼容性(如CentOS版本、组件版本);
- 备份重要数据:部署前备份服务器上的重要数据(如
/etc
、/var/www
),避免脚本误操作导致数据丢失; - 密码安全管理:避免在脚本中明文写入数据库密码,可使用
vault
(Ansible)或环境变量加密密码; - 日志监控:部署过程中记录详细日志,便于后续排查问题(如组件安装失败、服务无法启动);
- 版本兼容性:确保Nginx、MariaDB、PHP版本兼容(如PHP 8.3需匹配MariaDB 10.6及以上)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lnmp如何实现自动化部署
本文地址: https://pptw.com/jishu/732132.html