温馨提示×

CentOS PHP项目如何部署

小樊
35
2025-11-25 18:29:13
栏目: 编程语言

CentOS 上部署 PHP 项目的标准流程


一 环境准备与版本选择

  • 明确目标环境:选择 LAMP(Apache+MariaDB/PHP)LNMP(Nginx+PHP-FPM+MariaDB/MySQL),两者在 CentOS 上的部署都较成熟。
  • 更新系统并安装基础源:建议先执行 sudo yum update -y,按需启用 EPEL 源以获得更完整的软件包。
  • 版本建议:选择与项目兼容的 PHP 7.x/8.x,并提前准备数据库(如 MariaDB 10.xMySQL 8.0)。

二 方案一 LAMP 快速部署(Apache + MariaDB + PHP)

  • 安装组件
    • 执行:sudo yum install -y httpd mariadb-server php php-mysqlnd php-pdo php-gd php-mbstring
  • 启动与开机自启
    • 执行:sudo systemctl start httpd mariadb && sudo systemctl enable httpd mariadb
  • 数据库安全初始化
    • 执行:sudo mysql_secure_installation,按向导设置 root 密码、移除匿名用户、禁止远程 root 登录等。
  • 创建业务库与用户
    • 登录数据库后执行:
      • CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      • CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
      • GRANT ALL PRIVILEGES ON your_db. TO ‘your_user’@‘localhost’;*
      • FLUSH PRIVILEGES;
  • 配置 Apache 虚拟主机
    • 新建:sudo vi /etc/httpd/conf.d/your_app.conf
    • 示例:
      <VirtualHost *:80>
          ServerName your.domain.local
          DocumentRoot /var/www/your_app
          ErrorLog /var/log/httpd/your_app_error.log
          CustomLog /var/log/httpd/your_app_access.log combined
      
          <Directory /var/www/your_app>
              Options Indexes FollowSymLinks
              AllowOverride All
              Require all granted
          </Directory>
      </VirtualHost>
      
  • 部署代码与权限
    • 执行:sudo cp -r /path/to/app /var/www/your_app
    • 执行:sudo chown -R apache:apache /var/www/your_app && sudo chmod -R 755 /var/www/your_app
  • 重启与放行防火墙
    • 执行:sudo systemctl restart httpd
    • 放行端口:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 访问验证
    • 浏览器访问 http://服务器IP或域名,确认首页或接口可达。

三 方案二 LNMP 高性能部署(Nginx + PHP-FPM + MariaDB/MySQL)

  • 安装组件
    • 执行:sudo yum install -y epel-release nginx mariadb-server php php-fpm php-mysqlnd php-gd php-mbstring php-xml
  • 启动与开机自启
    • 执行:sudo systemctl start nginx mariadb php-fpm && sudo systemctl enable nginx mariadb php-fpm
  • 数据库安全初始化
    • 执行:sudo mysql_secure_installation 并按向导完成加固。
  • 配置 PHP-FPM(两种常见方式,二选一或并存)
    • Unix 套接字(推荐):编辑 /etc/php-fpm.d/www.conf,设置 listen = /run/php-fpm/www.sock,并确保运行用户与 Nginx 一致(常见为 apachenginx)。
    • TCP 端口:设置 listen = 127.0.0.1:9000
    • 启动:sudo systemctl restart php-fpm
  • 配置 Nginx 站点
    • 编辑:sudo vi /etc/nginx/conf.d/your_app.conf
    • 示例:
      server {
          listen 80;
          server_name your.domain.local;
          root /usr/share/nginx/html/your_app;
          index index.php index.html;
      
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      
          location ~ \.php$ {
              include fastcgi_params;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              fastcgi_pass unix:/run/php-fpm/www.sock;  # 若用 TCP,改为 127.0.0.1:9000
          }
      
          location ~ /\.ht {
              deny all;
          }
      }
      
  • 部署代码与权限
    • 执行:sudo cp -r /path/to/app /usr/share/nginx/html/your_app
    • 执行:sudo chown -R nginx:nginx /usr/share/nginx/html/your_app && sudo chmod -R 755 /usr/share/nginx/html/your_app
  • 重启与放行防火墙
    • 执行:sudo systemctl restart nginx
    • 放行端口:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 访问验证
    • 浏览器访问 http://服务器IP或域名,确认首页或接口可达。

四 部署后验证与常见问题处理

  • 基础验证
    • 在项目根目录创建 info.php,访问 /info.php 检查 PHP 版本已启用扩展(如 mysqli/pdo_mysql、gd、mbstring、xml)。
  • 数据库连接
    • 确认 .env 或配置文件中的 DB_HOST/DB_USER/DB_PASS/DB_NAME 正确,且数据库用户允许从 localhost 连接。
  • 权限与属主
    • Web 目录建议属主为 apache:apache(LAMP)或 nginx:nginx(LNMP),权限 755,上传目录可 775 并限制运行用户写入。
  • SELinux 与防火墙
    • 若访问异常且 SELinux 为 enforcing,可临时 setenforce 0 排查;生产环境请使用 semanage/fcontext 做精细策略而非直接关闭。
    • 确保 firewalld 放行 80/443sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 日志定位
    • Apache:/var/log/httpd/error_log;Nginx:/var/log/nginx/error.log;PHP-FPM:/var/log/php-fpm/www-error.log
  • 可选 HTTPS
    • 使用 Certbot 获取并自动配置 Let’s Encrypt 证书,启用 HTTPS 提升安全性。

五 一键健康检查清单

检查项 期望结果 命令或路径
Web 服务 80/443 正常访问 curl -I http://域名
PHP 解析 info.php 正常显示 /var/www/your_app/info.php
数据库 可本地登录并授权 mysql -u root -p;SHOW GRANTS;
防火墙 80/443 放行 firewall-cmd --list-services
SELinux 未阻断访问 getenforce(返回 Permissive/Disabled 便于排查)
目录权限 属主与权限正确 ls -ld /var/www/your_app;ps aux

以上流程覆盖 LAMP/LNMP 两种主流部署方式,按项目需求选择其一即可完成在 CentOS 上的 PHP 项目上线。

0