新手如何在CentOS服务器上从零部署PHP项目?

在服务器领域,CentOS 以其卓越的稳定性和安全性,一直是部署 Web 服务的首选操作系统之一,而 PHP 作为一门成熟且广泛使用的服务器端脚本语言,承载着互联网上大量的网站与应用,将 PHP 项目部署到 CentOS 服务器上,是每一位后端开发和运维人员必须掌握的核心技能,本文将详细介绍如何在 CentOS 系统上,通过搭建 Nginx + PHP-FPM + MariaDB 的经典技术栈,来部署一个 PHP 项目。

新手如何在CentOS服务器上从零部署PHP项目?

准备工作

在开始部署之前,请确保您已经具备以下条件:

  • 一台已安装 CentOS 7 或更高版本的云服务器或物理服务器。
  • 拥有服务器的 root 权限或一个具有 sudo 权限的普通用户。
  • 通过 SSH 客户端成功连接到您的服务器。
  • 一个准备好的 PHP 项目代码(Laravel, ThinkPHP, WordPress 等)。

安装核心软件栈

我们将使用 dnf(CentOS 8+)或 yum(CentOS 7)包管理器来安装所需的软件,以下命令以 dnf 为例,在 CentOS 7 上请替换为 yum

安装 Nginx

Nginx 是一款高性能的 HTTP 和反向代理 Web 服务器,以其轻量级和高并发能力著称。

sudo dnf install nginx -y

安装完成后,启动 Nginx 并设置其开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

在浏览器中访问您服务器的公网 IP 地址,应该能看到 Nginx 的默认欢迎页面。

安装 PHP-FPM 及常用扩展

PHP-FPM(FastCGI Process Manager)是 PHP 的一个 FastCGI 管理器,可以显著提高 PHP 的性能,我们同时安装一些项目常用的扩展。

sudo dnf install php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json php-opcache -y

同样,启动并设置 PHP-FPM 开机自启:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

安装 MariaDB

MariaDB 是 MySQL 的一个分支,完全兼容 MySQL,并且在 CentOS 中是默认的数据库系统。

sudo dnf install mariadb-server -y

启动并设置 MariaDB 开机自启:

sudo systemctl start mariadb
sudo systemctl enable mariadb

安装后,建议运行安全安装脚本来进行基础安全配置,如设置 root 密码、移除匿名用户等:

新手如何在CentOS服务器上从零部署PHP项目?

sudo mysql_secure_installation

按照提示操作即可。

配置软件环境

软件安装完成后,需要进行一系列配置才能让它们协同工作。

配置 Nginx 以处理 PHP 请求

这是部署过程的核心,我们需要为 PHP 项目创建一个 Nginx 配置文件,我们会将配置文件放在 /etc/nginx/conf.d/ 目录下。

创建一个新的配置文件,myproject.conf

sudo vi /etc/nginx/conf.d/myproject.conf

在文件中写入以下内容,请根据您的项目路径和域名进行修改:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com; # 替换为您的域名或服务器IP
    root /var/www/myproject/public; # 项目根目录,通常是框架的 public 目录
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ .php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock; # PHP-FPM 的监听地址
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /.ht {
        deny all;
    }
}

保存并退出后,检查 Nginx 配置文件语法是否正确:

sudo nginx -t

如果显示 syntax is oktest is successful,则重新加载 Nginx 配置:

sudo systemctl reload nginx

配置数据库

登录到 MariaDB,为您的 PHP 项目创建一个专用的数据库和用户。

sudo mysql -u root -p

进入 MariaDB 控制台后,执行以下 SQL 命令:

CREATE DATABASE myproject_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myproject_user'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON myproject_db.* TO 'myproject_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

请将 your_strong_password 替换为一个安全的密码,将以上数据库名、用户名和密码配置到您的 PHP 项目环境文件(如 .env 文件)中。

新手如何在CentOS服务器上从零部署PHP项目?

部署项目代码与设置权限

  1. 上传代码:将您的 PHP 项目代码上传到服务器的 /var/www/ 目录下,您可以使用 git clonescprsync 等工具,创建项目目录并使用 git:

    sudo mkdir -p /var/www/myproject
    sudo chown -R $USER:$USER /var/www/myproject # 暂时将所有权赋予当前用户以便操作
    cd /var/www/myproject
    git clone https://github.com/your-repo/your-project.git .
  2. 设置权限:Nginx 运行时所使用的用户(通常是 nginx)需要对项目目录拥有适当的权限,特别是写入权限(如存储日志、缓存、用户上传文件等)。

    sudo chown -R nginx:nginx /var/www/myproject
    sudo find /var/www/myproject -type d -exec chmod 755 {} ;
    sudo find /var/www/myproject -type f -exec chmod 644 {} ;

    如果某些特定目录(如 storage, bootstrap/cache)需要可写权限,可以单独设置:

    sudo chmod -R 775 /var/www/myproject/storage
    sudo chmod -R 775 /var/www/myproject/bootstrap/cache

最终验证

完成以上所有步骤后,您的 PHP 项目应该已经成功部署,在浏览器中访问您配置的域名或 IP 地址,应该能看到项目的首页,如果遇到问题,可以检查 Nginx 和 PHP-FPM 的错误日志(通常位于 /var/log/nginx//var/log/php-fpm/)来排查。


相关问答 FAQs

问题1:访问网站时出现 “502 Bad Gateway” 错误,是什么原因?如何解决?

解答: “502 Bad Gateway” 错误通常意味着 Nginx 作为网关,无法从上游服务(这里是 PHP-FPM)获取有效的响应,排查步骤如下:

  1. 检查 PHP-FPM 服务状态:确认 PHP-FPM 是否正在运行,执行 sudo systemctl status php-fpm,如果未运行,使用 sudo systemctl start php-fpm 启动它。
  2. 检查 Nginx 配置:确认 Nginx 配置文件中的 fastcgi_pass 指令指向的路径是否正确,默认通常是 unix:/run/php-fpm/www.sock,检查该 Socket 文件是否存在且 PHP-FPM 有权限访问。
  3. 检查权限:确保 PHP-FPM 进程的用户(在 /etc/php-fpm.d/www.conf 中定义,默认为 apache)和 Nginx 的用户(nginx)对项目目录和 Socket 文件有正确的读写权限,有时需要将 PHP-FPM 的用户和组也改为 nginx
  4. 查看错误日志:查看 Nginx 的错误日志 (/var/log/nginx/error.log),通常会记录更详细的错误信息,指明是连接超时还是权限被拒绝。

问题2:网站部分页面无法加载,或者提示文件权限错误,该如何处理?

解答: 这通常是文件或目录权限设置不当导致的,Web 服务器用户(nginx)需要对项目文件拥有足够的权限。

  1. 确认所有者:确保项目文件的所有者是 nginx 用户和 nginx 组,使用 sudo chown -R nginx:nginx /var/www/myproject 递归地设置所有权。
  2. 设置基本权限:目录权限应为 755,文件权限应为 644,这允许所有者读写执行,而组用户和其他用户只能读和执行(对于目录)或读(对于文件)。
  3. 设置特殊可写目录:对于需要 Web 服务器写入文件的目录,如用户上传目录、框架的缓存和日志目录(storage, cache 等),需要设置更高的权限,如 775770775 允许所有者和同组用户写入,770 则仅允许所有者和同组用户访问和写入,确保这些目录的所有者也是 nginx:nginx
  4. SELinux 问题:如果权限设置正确后仍有问题,可能是 SELinux(Security-Enhanced Linux)阻止了访问,可以临时关闭 SELinux (sudo setenforce 0) 测试是否是此原因,如果是,需要为相关目录设置正确的 SELinux 上下文,sudo chcon -R -t httpd_sys_rw_content_t /var/www/myproject/storage

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-05 21:14
下一篇 2025-10-05 21:17

相关推荐

  • CentOS最小安装版容量是多少?不同需求选多大合适?

    在部署CentOS服务器时,选择合适的服务器大小是一个重要的考虑因素,这不仅关系到服务器的性能,还涉及到成本和资源利用率,以下是一些关于CentOS最小服务器大小的探讨,选择最小服务器大小的考虑因素系统需求需要明确服务器将要运行的应用和服务的具体需求,不同的应用对系统资源的需求不同,轻量级的应用如Web服务器可……

    2026-01-23
    008
  • centos set display

    在CentOS系统中设置显示环境是许多用户在配置服务器或桌面环境时需要掌握的基础操作,无论是为了安装图形界面应用程序,还是为了远程访问图形化工具,正确配置显示环境都至关重要,本文将详细介绍CentOS系统中设置显示环境的相关步骤和注意事项,帮助用户顺利完成配置,确认系统环境与安装图形界面在开始设置显示环境之前……

    2026-01-01
    002
  • CentOS卸载LNMP时如何彻底清除残留配置文件?

    在CentOS系统中卸载LNMP(Linux、Nginx、MySQL、PHP)环境是一项需要谨慎操作的任务,尤其是在确保数据安全和系统稳定性方面,卸载过程涉及多个组件的彻底清理,包括软件包、配置文件、服务以及相关的依赖项,本文将详细介绍如何在CentOS系统中完整卸载LNMP环境,并提供具体的操作步骤和注意事项……

    2025-11-19
    004
  • centos系统下hadoop下载地址哪里找?最新版本下载链接是什么?

    Hadoop在CentOS系统中的安装与配置指南Hadoop作为Apache基金会开发的开源分布式计算框架,广泛应用于大数据存储和处理领域,在CentOS系统上部署Hadoop,需要遵循规范的步骤以确保环境稳定运行,本文将详细介绍Hadoop在CentOS中的下载、安装及配置流程,并提供常见问题解答,系统环境准……

    2025-11-26
    004

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信