centos lnmp如何实现自动部署
导读:CentOS下LNMP自动部署的实现方法 在CentOS系统中,实现LNMP(Linux+Nginx+MySQL/MariaDB+PHP)环境的自动部署,核心是通过自动化脚本完成软件安装、配置及服务管理,减少手动操作步骤。以下是具体实现方案...
CentOS下LNMP自动部署的实现方法
在CentOS系统中,实现LNMP(Linux+Nginx+MySQL/MariaDB+PHP)环境的自动部署,核心是通过自动化脚本完成软件安装、配置及服务管理,减少手动操作步骤。以下是具体实现方案:
一、基础准备
- 系统要求:确保CentOS系统为7/8版本(或其他兼容版本),且已更新至最新状态(
yum update -y
)。 - 权限要求:脚本需以root用户运行(或通过
sudo
提权),避免权限不足导致安装失败。 - 网络要求:服务器需联网,以便下载依赖包及软件源码包。
二、自动部署脚本实现步骤
1. 编写Shell脚本
创建一个Shell脚本文件(如lnmp_auto_deploy.sh
),内容包含依赖安装、Nginx部署、MySQL/MariaDB部署、PHP部署及服务配置等环节。以下是一个简化但完整的示例:
#!/bin/bash
# LNMP自动部署脚本(CentOS 7/8适用)
# 功能:自动安装Nginx、MariaDB、PHP及基础配置
# 检查root权限
if [ "$(id -u)" != "0" ];
then
echo "错误:必须使用root用户运行此脚本!"
exit 1
fi
# 安装系统依赖
install_dependencies() {
echo "正在安装系统依赖..."
yum install -y epel-release wget gcc make cmake openssl-devel pcre-devel zlib-devel \
libxml2-devel libjpeg-devel libpng-devel freetype-devel \
curl-devel libxslt-devel bzip2-devel sqlite-devel
yum groupinstall -y "Development Tools"
}
# 安装Nginx
install_nginx() {
echo "正在安装Nginx..."
yum install -y nginx
systemctl start nginx
systemctl enable nginx
echo "Nginx安装完成,状态:$(systemctl is-active nginx)"
}
# 安装MariaDB(MySQL兼容)
install_mariadb() {
echo "正在安装MariaDB..."
yum install -y mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb
# 安全初始化(设置root密码及移除匿名用户)
DB_ROOT_PASS="your_root_password" # 替换为你的root密码
mysql_secure_installation <
<
EOF
$DB_ROOT_PASS
$DB_ROOT_PASS
y
y
y
y
EOF
echo "MariaDB安装完成,root密码:$DB_ROOT_PASS"
}
# 安装PHP及扩展
install_php() {
echo "正在安装PHP..."
# 添加Remi仓库(支持PHP多版本)
yum install -y yum-utils
yum-config-manager --enable remi-php82 # 替换为所需PHP版本(如remi-php74、remi-php81)
# 安装PHP及常用扩展
yum install -y php php-fpm php-mysqlnd php-opcache php-gd php-curl php-mbstring php-xml
systemctl start php-fpm
systemctl enable php-fpm
# 配置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
systemctl reload nginx
echo "PHP安装完成,Nginx已配置支持PHP。"
}
# 主流程
main() {
install_dependencies
install_nginx
install_mariadb
install_php
# 验证部署
echo "正在验证LNMP环境..."
if curl -s -I http://localhost | grep -q "200 OK";
then
echo "✅ LNMP环境部署成功!可通过浏览器访问http://服务器IP查看效果。"
else
echo "❌ LNMP环境部署失败,请检查日志排查问题。"
fi
}
# 执行主流程
main
2. 赋予脚本执行权限
保存脚本后,通过chmod
命令赋予执行权限:
chmod +x lnmp_auto_deploy.sh
3. 运行脚本
执行脚本(需root权限):
./lnmp_auto_deploy.sh
4. 验证部署
- Nginx状态:
systemctl status nginx
(应显示“active (running)”)。 - MariaDB状态:
systemctl status mariadb
(应显示“active (running)”)。 - PHP状态:
systemctl status php-fpm
(应显示“active (running)”)。 - 网页访问:在浏览器输入服务器IP,若看到Nginx默认欢迎页或PHP信息页(
http://IP/info.php
),则说明部署成功。
三、进阶优化方向
- 参数化配置:将脚本中的版本号(如Nginx、PHP、MariaDB)、密码(如root密码)、安装目录等改为变量,通过命令行参数传入,提升脚本灵活性。
- 端口冲突检测:在安装前添加端口占用检测逻辑(如检查80、3306、9000端口是否被占用),避免服务启动失败。
- 防火墙自动配置:通过
firewall-cmd
命令自动放行HTTP(80)、HTTPS(443)端口,无需手动操作。 - 日志记录:将脚本执行过程中的输出重定向到日志文件(如
./lnmp_auto_deploy.sh > lnmp_deploy.log 2> & 1
),便于后续排查问题。
四、注意事项
- 备份数据:脚本执行前建议备份重要数据(如
/etc
目录、/home
目录),防止误操作导致数据丢失。 - 测试环境:优先在测试环境中运行脚本,确认无误后再应用于生产环境。
- 版本兼容性:确保Nginx、PHP、MariaDB版本之间的兼容性(如PHP 8.2需搭配MariaDB 10.4及以上版本)。
通过上述步骤,可实现CentOS系统下LNMP环境的快速、自动化部署,大幅减少手动操作时间,提升运维效率。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lnmp如何实现自动部署
本文地址: https://pptw.com/jishu/721082.html