在 CentOS 上通过 yum 搭建 LNMP(Linux + Nginx + MySQL/MariADB + PHP)环境是一种高效且便捷的方式,本文将详细介绍如何在 CentOS 7.x 系统上,通过 yum 包管理器来安装和配置 LNMP 环境,并包含一些常见问题的解答。
LNMP 环境搭建步骤
1. 安装 Nginx

确保你的系统已经安装了 EPEL Repo(Extra Packages for Enterprise Linux),这是 CentOS 官方的软件仓库,如果未安装,可以使用以下命令进行安装:
- sudo yum install epelrelease y
安装 Nginx:
- sudo yum install nginx y
启动 Nginx 并设置开机自启:
- sudo systemctl start nginx
- sudo systemctl enable nginx
2. 安装 MySQL
为了安装 MySQL,你需要先添加 MariaDB 仓库(因为 CentOS 默认使用 MariaDB 作为 MySQL 的替代品):
- sudo yum localinstall https://repo.mariadb.org/yum/centos/MariaDBfocalamd64mps.rpm
安装 MySQL 服务器:

- sudo yum install mariadbserver y
启动 MariaDB 并设置开机自启:
- sudo systemctl start mariadb
- sudo systemctl enable mariadb
运行安全脚本以设置 root 密码和其他安全选项:
- sudo mysql_secure_installation
3. 安装 PHP
同样地,你可以通过 yum 来安装 PHP:
- sudo yum install php y
为了支持 PHP 与 Nginx 的集成,还需要安装 PHPFPM:
- sudo yum install phpfpm y
编辑 PHPFPM 配置文件/etc/phpfpm.d/www.conf
,将listen
指令的值改为/run/phpfpm/www.sock
,并保存退出。

4. 配置 Nginx 支持 PHP
编辑 nginx 配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
),在 server 块中添加以下内容:
- location ~ \.php$ {
- fastcgi_pass unix:/run/phpfpm/www.sock;
- fastcgi_index index.php;
- include fastcgi_params;
- }
保存并退出编辑器,重启 Nginx 和 PHPFPM 服务以使更改生效:
- sudo systemctl restart nginx
- sudo systemctl restart phpfpm
至此,LNMP 环境已经成功搭建。
常见问题解答(FAQs)
问题 1:如何更改 PHP 版本?
答:要更改 PHP 版本,你可以使用 Remi's RPM Repository,它提供了多个 PHP 版本的软件包,添加 Remi 仓库:
- sudo yum install http://rpms.remirepo.net/enterprise/remirelease7.rpm
- sudo yum install yumutils y
启用你想要的 PHP 版本(PHP 8.0):
- sudo yumconfigmanager enable remiphp80
安装或升级到指定版本的 PHP:
- sudo yum update php phpcommon phpfpm phpcli phpopcache y
问题 2:如何优化 Nginx 的性能?
答:优化 Nginx 性能的方法有很多,以下是一些常见的建议:
调整工作进程数:根据你的 CPU 核心数调整worker_processes
和worker_connections
的值。
开启缓存:配置静态文件缓存以减少服务器负载。
压缩传输:启用 gzip 压缩以减少传输的数据量。
调整超时时间:根据应用需求调整客户端和后端超时时间。
具体配置示例如下:
- http {
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 65;
- types_hash_max_size 2048;
- include /etc/nginx/mime.types;
- default_type application/octetstream;
- include /etc/nginx/conf.d/*.conf;
- server {
- listen 80;
- server_name your_domain;
- root /var/www/html;
- index index.php index.html index.htm;
- location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
- expires 30d;
- log_not_found off;
- }
- location ~ \.php$ {
- include fastcgi_params;
- fastcgi_pass unix:/run/phpfpm/www.sock;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- }
- }
- }
问题 3:如何备份和恢复 MySQL 数据库?
答:备份和恢复 MySQL 数据库是日常运维的重要任务之一,你可以使用mysqldump
工具来备份数据库,使用mysql
命令来恢复数据库。
备份数据库:
- mysqldump u [username] p[password] [database_name] > [backup_file].sql
恢复数据库:
- mysql u [username] p[password] [database_name] < [backup_file].sql
注意:在执行这些命令之前,请确保你已经有足够的权限来访问和操作相应的数据库,定期备份是非常重要的,以防数据丢失或损坏。
通过以上步骤和解答,你应该能够在 CentOS 上成功搭建 LNMP 环境,并解决一些常见的问题,如果你有任何疑问或需要进一步的帮助,请随时提问。