新手如何在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

相关推荐

  • 如何成功在服务器上创建一个新的网站站点?

    根据您提供的内容,我理解您想了解如何在服务器上创建站点。简而言之,创建站点通常涉及在服务器上配置网络设置、安装所需的软件和应用程序,以及设置域名和DNS解析。具体步骤可能因服务器类型和所使用的技术而异。

    2024-08-02
    003
  • 服务器 raid5_安装环境

    服务器RAID 5安装环境需要兼容的硬件(如主板和RAID控制器)、多块硬盘、操作系统支持,以及用于配置和管理RAID的软件或固件工具。

    2024-07-13
    006
  • 如何制定有效的分销网站建设方案与分销计划?

    分销网站建设方案涉及创建高效、用户友好的在线平台,支持产品展示、订单处理和客户管理。该计划包括定制设计、安全支付集成、自动化库存更新及多级分销追踪系统,确保合作伙伴轻松管理销售并跟踪佣金。

    2024-07-25
    0011
  • Mac通过SSH连接CentOS服务器时登录失败怎么解决?

    当您在 Mac 上尝试通过 SSH 连接到 CentOS 服务器时,遇到无法登录的情况,这确实令人沮丧,但请放心,这个问题通常可以通过系统化的排查步骤来解决,本文将引导您从网络基础到服务配置,逐一排查可能的原因,帮助您恢复正常的远程连接,基础网络连通性排查在深入检查 SSH 服务之前,首先要确保您的 Mac 和……

    2025-10-04
    001

发表回复

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

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信