在CentOS上部署LNMP环境的详细步骤
LNMP(Linux + Nginx + MySQL/MariaDB + PHP)是常见的Web服务器环境组合,适用于搭建动态网站(如WordPress、Discuz等)。以下是在CentOS系统上部署LNMP的标准化流程,涵盖系统准备、组件安装、配置整合及安全加固。
在开始部署前,需确保系统为最新状态,并安装必要的编译工具和依赖库,避免后续安装出错。
# 更新系统软件包(CentOS 7/8通用)
sudo yum update -y
# 安装EPEL仓库(提供额外软件包,如Nginx)
sudo yum install epel-release -y
# 安装编译工具(手动编译时需要,若用包管理器可跳过)
sudo yum install gcc gcc-c++ make cmake -y
Nginx作为轻量级、高性能的Web服务器,负责处理HTTP请求和静态资源。
# 安装Nginx
sudo yum install nginx -y
# 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 验证Nginx状态(显示"active (running)"即为成功)
sudo systemctl status nginx
# 配置防火墙(允许HTTP/HTTPS流量)
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
验证Nginx:在浏览器访问服务器IP地址,若看到Nginx默认欢迎页面(如“Welcome to nginx!”),则说明安装成功。
数据库用于存储网站数据,推荐使用MariaDB(MySQL的分支,兼容性更好)或MySQL(官方版本)。
# 查看是否安装MariaDB
rpm -qa | grep mariadb
# 卸载MariaDB(若有)
sudo yum remove mariadb-libs -y
# 下载MariaDB 10.6仓库文件(CentOS 7/8通用)
sudo yum install https://downloads.mariadb.com/MariaDB/mariadb_repo_setup-1.2-1.el7.noarch.rpm -y
# 更新仓库缓存
sudo yum update -y
# 安装MariaDB Server和客户端
sudo yum install mariadb-server -y
# 启动MariaDB并设置开机自启
sudo systemctl start mariadb
sudo systemctl enable mariadb
运行安全脚本,设置root密码、删除匿名用户、禁止远程root登录等:
# 执行安全脚本(按提示操作)
sudo mysql_secure_installation
关键操作:
/var/log/mariadb.log中的temporary password);y);y,除非需要远程管理);y)。# 登录MariaDB
mysql -u root -p
# 查看数据库版本(确认安装成功)
SELECT VERSION();
PHP是处理动态内容的脚本语言,需安装PHP核心及常用扩展(如MySQL、GD、MBString)。
推荐安装PHP 7.4+(兼容大多数CMS,如WordPress):
# 安装PHP核心、FPM(FastCGI进程管理器)、MySQL扩展及其他常用模块
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-curl php-xml -y
说明:
php-fpm:用于与Nginx通信,处理PHP请求;php-mysqlnd:MySQL数据库驱动(原生驱动,性能更好);php-gd/php-mbstring:处理图片和多字节字符(如中文)。编辑PHP-FPM配置文件,将默认用户(apache)改为nginx(与Nginx用户一致):
# 编辑www.conf文件
sudo vi /etc/php-fpm.d/www.conf
# 找到以下两行(约第12-13行),取消注释并修改
user = nginx
group = nginx
保存后重启PHP-FPM:
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
验证PHP:
# 查看PHP版本(确认安装成功)
php -v
默认情况下,Nginx无法处理.php文件,需修改Nginx配置文件,添加PHP解析规则。
编辑默认站点配置文件(/etc/nginx/conf.d/default.conf):
sudo vi /etc/nginx/conf.d/default.conf
在server块中,修改location ~ \.php$部分(若不存在则添加):
server {
listen 80;
server_name localhost; # 替换为你的域名(可选)
root /var/www/html; # Web根目录(默认)
index index.php index.html index.htm; # 添加index.php
location / {
try_files $uri $uri/ =404; # 尝试访问文件,不存在则返回404
}
# PHP解析配置
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # 与PHP-FPM通信(socket方式)
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 传递脚本路径
include fastcgi_params; # 包含通用FastCGI参数
}
}
# 检查配置语法(无错误则继续)
sudo nginx -t
# 重新加载Nginx(使配置生效)
sudo systemctl reload nginx
创建一个PHP测试文件,验证PHP是否能正常解析。
# 在Web根目录创建info.php
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
验证:在浏览器访问http://服务器IP/info.php,若看到PHP信息页面(包含PHP版本、模块列表等),则说明LNMP环境部署成功。
部署完成后,需进行基础安全配置,降低服务器风险。
# 删除info.php(避免暴露服务器信息)
sudo rm -f /var/www/html/info.php
若需要远程连接数据库,需修改MySQL配置:
# 登录MySQL
mysql -u root -p
# 授权远程访问(将"username"替换为你的数据库用户名,"password"替换为密码,"IP"替换为客户端IP)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'IP' IDENTIFIED BY 'password' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
# 更新所有软件包(保持系统安全)
sudo yum update -y
sudo firewall-cmd --list-all);fastcgi_pass路径是否正确(/run/php-fpm/php-fpm.sock是否存在);sudo mysqld_safe --skip-grant-tables &)。通过以上步骤,你即可在CentOS系统上成功部署LNMP环境,为后续搭建网站奠定基础。