- 准备工作:更新系统、设置防火墙和 SELinux。
- 安装 Nginx:配置和启动 Web 服务器。
- 安装 MariaDB:创建数据库和用户。
- 安装 PHP-FPM:让 Nginx 能够处理 PHP 文件。
- 整合与测试:创建一个
info.php文件来验证整个环境是否工作正常。 - 后续步骤:部署网站、配置虚拟主机等。
第一步:准备工作 (系统初始化)
在开始安装任何软件之前,最好先将系统更新到最新状态,并确保防火墙和 SELinux 配置正确,以免服务无法访问。

更新系统
打开终端,执行以下命令更新所有已安装的软件包:
sudo yum update -y
配置防火墙 (Firewalld)
CentOS 7 默认使用 firewalld 防火墙,我们需要为 HTTP (80) 和 HTTPS (443) 端口开放流量。
# 永久开放 HTTP (80) 端口 sudo firewall-cmd --permanent --add-service=http # 永久开放 HTTPS (443) 端口 sudo firewall-cmd --permanent --add-service=https # 重新加载防火墙配置,使更改生效 sudo firewall-cmd --reload
(可选) 配置 SELinux
SELinux 是一个强大的安全模块,但配置不当会导致服务无法启动。对于新手,最简单的方法是将其设置为 permissive 模式(只记录警告,不阻止操作)或直接禁用。
检查 SELinux 状态:

sestatus
如果状态为 enabled,你有以下选择:
-
设置为 Permissive 模式 (推荐新手)
# 临时设置(重启后失效) sudo setenforce 0 # 永久设置 sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
设置后需要重启系统才能永久生效。
-
完全禁用 (不推荐用于生产环境)
(图片来源网络,侵删)# 临时禁用 sudo setenforce 0 # 永久禁用 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
同样,永久设置需要重启系统。
第二步:安装 Nginx
Nginx 是一个高性能的 HTTP 和反向代理服务器。
安装 EPEL 仓库
EPEL (Extra Packages for Enterprise Linux) 仓库提供了许多 CentOS 官方源中没有的软件包。
sudo yum install epel-release -y
安装 Nginx
sudo yum install nginx -y
启动并设置开机自启
# 启动 Nginx 服务 sudo systemctl start nginx # 设置 Nginx 开机自启 sudo systemctl enable nginx
检查 Nginx 状态
sudo systemctl status nginx
如果看到绿色的 active (running) 字样,说明 Nginx 已经成功运行。
测试 Nginx
在浏览器中访问你的服务器 IP 地址:
http://<你的服务器IP地址>
你应该能看到 Nginx 的欢迎页面。
第三步:安装 MariaDB
MariaDB 是 MySQL 的一个分支,完全兼容 MySQL,并且是 CentOS 7 的默认数据库。
安装 MariaDB 服务器和客户端
sudo yum install mariadb-server mariadb -y
启动并设置开机自启
# 启动 MariaDB 服务 sudo systemctl start mariadb # 设置开机自启 sudo systemctl enable mariadb
运行安全脚本
这个脚本可以帮助你设置 root 密码、移除匿名用户、禁止 root 远程登录等,强烈建议运行。
sudo mysql_secure_installation
按照提示操作:
- 输入当前 root 密码(默认为空,直接回车)。
- 设置 root 密码 (Y)。
- 移除匿名用户。
- 禁止 root 远程登录 (Y)。
- 移除 test 数据库 (Y)。
- 重新加载权限表 (Y)。
创建数据库和用户 (示例)
为了你的应用,你需要创建一个数据库和一个专门的用户。
-
登录 MariaDB
mysql -u root -p
输入你刚才设置的 root 密码。
-
执行 SQL 命令
-- 创建一个名为 my_database 的数据库 CREATE DATABASE my_database; -- 创建一个名为 my_user 的用户,密码为 'your_strong_password' CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'your_strong_password'; -- 授予 my_user 对 my_database 的所有权限 GRANT ALL PRIVILEGES ON my_database.* TO 'my_user'@'localhost'; -- 刷新权限使更改生效 FLUSH PRIVILEGES; -- 退出 MariaDB EXIT;
请务必将
your_strong_password替换为一个强密码。
第四步:安装 PHP-FPM
PHP-FPM (FastCGI Process Manager) 是一个 PHP 的 FastCGI 实现,Nginx 可以通过它来处理 PHP 文件。
安装 PHP-FPM 和常用扩展
sudo yum install php-fpm php-mysql php-gd php-xml php-mbstring -y
这里我们安装了 php-fpm 核心以及与 MySQL、GD 图像库、XML 和多字节字符串相关的常用扩展。
配置 PHP-FPM
PHP-FPM 默认以 apache 用户运行,这可能会引起权限问题,我们将其修改为 nginx 用户,以匹配 Nginx 的运行用户。
-
打开配置文件:
sudo vim /etc/php-fpm.d/www.conf
或者使用
nano:sudo nano /etc/php-fpm.d/www.conf
-
找到并修改以下两行:
; user = apache ; group = apache
将它们修改为:
user = nginx group = nginx
-
保存并关闭文件,在
vim中是wq,在nano中是Ctrl+X,然后按Y和回车。
启动并设置开机自启
# 启动 PHP-FPM 服务 sudo systemctl start php-fpm # 设置开机自启 sudo systemctl enable php-fpm
第五步:整合 Nginx 和 PHP-FPM
现在我们需要告诉 Nginx,当遇到 .php 文件时,将其转发给 PHP-FPM 处理。
备份默认配置文件
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
修改 Nginx 主配置文件
打开 /etc/nginx/nginx.conf 文件:
sudo vim /etc/nginx/nginx.conf
找到 http 块中的 include /etc/nginx/conf.d/*.conf; 这一行,确保它没有被注释掉,这行的作用是加载 conf.d 目录下的所有配置文件。
修改默认站点配置
Nginx 的默认站点配置在 /etc/nginx/conf.d/default.conf,我们将修改它以支持 PHP。
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak sudo vim /etc/nginx/conf.d/default.conf
然后粘贴以下配置:
server {
listen 80;
server_name localhost; # 可以改成你的域名或IP
# 网站根目录
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 将所有 .php 文件都交给 PHP-FPM 处理
location ~ \.php$ {
# 网站根目录
root /usr/share/nginx/html;
# 指定 PHP-FPM 的监听地址和脚本文件名
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问隐藏文件(如 .htaccess, .git)
location ~ /\.ht {
deny all;
}
}
重启 Nginx 和 PHP-FPM
为了让配置生效,我们需要重启这两个服务。
# 重启 PHP-FPM sudo systemctl restart php-fpm # 重启 Nginx sudo systemctl restart nginx
创建测试文件
在网站根目录下创建一个 info.php 文件,用于测试 PHP 是否正常工作。
sudo echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
注意:为了安全,测试完成后应立即删除此文件。
测试整个环境
在浏览器中访问:
http://<你的服务器IP地址>/info.php
如果看到一个包含大量 PHP 配置信息的页面,恭喜你!你的 LEMP (Linux, Nginx, MariaDB, PHP) 环境已经成功搭建!
第六步:后续步骤与最佳实践
-
部署你的网站
-
将你的网站文件上传到
/usr/share/nginx/html目录。 -
如果使用
git,可以git clone到该目录。 -
注意文件和目录权限:Nginx 运行用户是
nginx,所以你需要确保nginx用户有读写权限。# 设置网站目录所有者为 nginx:nginx sudo chown -R nginx:nginx /usr/share/nginx/html/your-site # 设置正确的目录和文件权限 sudo find /usr/share/nginx/html/your-site -type d -exec chmod 755 {} \; sudo find /usr/share/nginx/html/your-site -type f -exec chmod 644 {} \;
-
-
配置虚拟主机 如果你需要托管多个网站(
site1.com和site2.com),你应该为每个网站创建一个独立的配置文件,而不是修改default.conf。- 在
/etc/nginx/conf.d/目录下创建新的配置文件,site1.com.conf。 - 在其中配置
server块,指定server_name和root目录。 - 重启 Nginx 即可。
- 在
-
使用 Let's Encrypt 配置 HTTPS 对于生产环境,强烈建议使用 Let's Encrypt 为你的域名配置免费的 SSL 证书,启用 HTTPS,可以使用
certbot工具自动化完成这个过程。 -
定期备份数据 设置定期备份你的 MariaDB 数据库和网站文件,以防数据丢失。
-
监控日志 定期查看 Nginx 的访问日志 (
/var/log/nginx/access.log) 和错误日志 (/var/log/nginx/error.log),可以帮助你排查问题。
