当前位置: 首页 > news >正文

CentOS部署PHP项目完整步骤

CentOS 7.9 部署 PHP 7.4 + MySQL 5.7.44 完整步骤

由于 CentOS 7 已于 2024 年 6 月 30 日停止官方维护,原有的 yum 源已不可用,因此必须首先更换为阿里云镜像源才能正常安装软件。

一、系统环境准备

1.1 更换阿里云 YUM 源

# 1. 备份原有源mv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2>/dev/null# 2. 下载阿里云 CentOS 7 源curl-o/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 3. 下载 EPEL 扩展源(可选,但推荐)curl-o/etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 4. 清理缓存并生成新缓存yum clean all&&yum makecache# 5. 更新系统(可选,耗时较长)yum update-y

1.2 安装基础开发工具

yuminstall-yvimwgetcurlnet-tools gcc gcc-c++make

二、安装 Nginx

# 安装 Nginxyuminstall-ynginx# 设置开机自启并启动systemctlenablenginx systemctl start nginx# 验证安装nginx-v

三、安装 PHP 7.4

CentOS 7 默认源中 PHP 版本较低,需要先安装 REMI 源来获取 PHP 7.4。

3.1 安装 REMI 源

# 安装 EPEL 和 REMI 源yuminstall-yepel-release yuminstall-yhttps://rpms.remirepo.net/enterprise/remi-release-7.rpm# 启用 REMI 的 PHP 7.4 仓库yuminstall-yyum-utils yum-config-manager--enableremi-php74

3.2 安装 PHP 7.4 及扩展

# 安装 PHP 7.4 核心及常用扩展yuminstall-yphp php-cli php-fpm php-common\php-mysqlnd php-pdo\php-gd php-mbstring php-xml php-curl php-zip\php-bcmath php-json php-opcache php-fileinfo# 验证 PHP 安装php-vphp-m

3.3 配置 PHP-FPM

# 编辑 php-fpm 配置,修改运行用户为 nginxsed-i's/user = apache/user = nginx/g'/etc/php-fpm.d/www.confsed-i's/group = apache/group = nginx/g'/etc/php-fpm.d/www.conf# 优化 php.ini(生产环境)vim/etc/php.ini# 建议修改以下参数:# date.timezone = Asia/Shanghai# expose_php = Off# max_execution_time = 300# max_input_time = 300# memory_limit = 256M# post_max_size = 50M# upload_max_filesize = 50M# 启动 PHP-FPMsystemctlenablephp-fpm systemctl start php-fpm# 验证启动状态systemctl status php-fpm

四、安装 MySQL 5.7.44

4.1 添加 MySQL 官方 YUM 源

# 下载 MySQL 5.7 官方源wgethttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm# 安装源rpm-ivhmysql57-community-release-el7-11.noarch.rpm# 验证源已添加yum repolist|grepmysql

4.2 安装 MySQL 5.7

# 安装 MySQL 5.7yuminstall-ymysql-community-server# 验证安装mysql--version

4.3 配置 MySQL

# 启动 MySQLsystemctlenablemysqld systemctl start mysqld# 获取临时密码grep'temporary password'/var/log/mysqld.log# 输出示例:2024-01-15T06:23:45.123456Z 1 [Note] A temporary password is generated for root@localhost: Abc123!@## 运行安全配置脚本mysql_secure_installation# 按提示输入临时密码,然后设置新密码,建议使用强密码

五、配置 Nginx 支持 ThinkPHP

创建 Nginx 站点配置文件:

vim/etc/nginx/conf.d/thinkphp.conf

添加以下配置(根据实际项目路径调整):

server { listen 80; server_name your_domain.com; # 替换为你的域名或 IP root /var/www/your_project/public; # 项目 public 目录 index index.php index.html; # 日志配置 access_log /var/log/nginx/thinkphp_access.log; error_log /var/log/nginx/thinkphp_error.log; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # 或使用 socket:fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 禁止访问 .env 等敏感文件 location ~ /\.env { deny all; } # 静态资源缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public, immutable"; } }

测试并重载 Nginx:

nginx-tsystemctl reload nginx

六、部署 ThinkPHP 项目

6.1 创建项目目录

mkdir-p/var/www/your_projectcd/var/www/your_project

6.2 安装 Composer(PHP 依赖管理工具)

# 安装 Composercurl-sShttps://getcomposer.org/installer|phpmvcomposer.phar /usr/local/bin/composerchmod+x /usr/local/bin/composer# 验证安装composer--version

6.3 安装 ThinkPHP 项目

方式一:创建新项目

composercreate-project topthink/think /var/www/your_project

方式二:上传已有项目

# 使用 git 克隆gitclone your_repository_url /var/www/your_project# 或使用 scp 上传# 从本地上传:scp -r ./your_project root@your_server_ip:/var/www/

6.4 安装项目依赖

cd/var/www/your_projectcomposerinstall--optimize-autoloader --no-dev

6.5 配置项目权限

# 设置目录所有者chown-Rnginx:nginx /var/www/your_project# 设置目录权限find/var/www/your_project-typed-execchmod755{}\;find/var/www/your_project-typef-execchmod644{}\;# runtime 和 storage 目录需要可写权限chmod-R775/var/www/your_project/runtime

6.6 配置数据库连接

# 复制环境配置文件cp/var/www/your_project/.env.example /var/www/your_project/.env# 编辑 .env 文件vim/var/www/your_project/.env

配置数据库信息:

APP_DEBUG = false APP_TRACE = false [DB] DATABASE_TYPE = mysql DATABASE_HOSTNAME = 127.0.0.1 DATABASE_DATABASE = your_database_name DATABASE_USERNAME = your_username DATABASE_PASSWORD = your_password DATABASE_PORT = 3306 DATABASE_PREFIX = tp_

6.7 创建数据库

登录 MySQL 并创建数据库:

mysql-uroot-p

执行 SQL:

CREATEDATABASEyour_database_nameCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;CREATEUSER'your_username'@'localhost'IDENTIFIEDBY'your_password';GRANTALLPRIVILEGESONyour_database_name.*TO'your_username'@'localhost';FLUSHPRIVILEGES;EXIT;

6.8 生成应用密钥(如项目需要)

cd/var/www/your_project php think generate:key# 或根据实际框架命令

七、防火墙与安全配置

7.1 配置防火墙

# 开放 HTTP 和 HTTPS 端口firewall-cmd--permanent--add-service=http firewall-cmd--permanent--add-service=https firewall-cmd--reload# 查看已开放端口firewall-cmd --list-all

7.2 配置 SELinux(如开启)

如果 SELinux 处于 enforcing 模式,需要配置策略:

# 设置 Nginx 访问网络setsebool-Phttpd_can_network_connect1# 设置允许 Web 服务器读写文件chcon-R-thttpd_sys_rw_content_t /var/www/your_project/runtime

八、验证部署

8.1 测试 PHP 环境

创建测试文件:

echo"<?php phpinfo(); ?>">/var/www/your_project/public/info.php

访问:http://your_server_ip/info.php,看到 PHP 信息页面即表示环境配置成功。

8.2 测试项目

访问:http://your_server_ip/,看到 ThinkPHP 欢迎页面或项目首页即部署成功。

8.3 删除测试文件

rm-f/var/www/your_project/public/info.php

九、常见问题排查

问题现象可能原因解决方案
502 Bad GatewayPHP-FPM 未启动或配置错误systemctl status php-fpm检查状态;检查 Nginx 中 fastcgi_pass 配置
404 Not FoundNginx 配置 root 未指向 public确认 root 路径为/var/www/your_project/public
数据库连接失败.env 配置错误或数据库未授权核对 .env 中的数据库信息;检查数据库用户权限
权限错误runtime 目录不可写chmod -R 775 runtime;确认目录所有者正确
类找不到Composer 依赖未安装执行composer install --optimize-autoloader

十、优化建议

  1. 开启 OPcache:在/etc/php.ini中设置:

    opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60
  2. 配置 HTTPS:使用 Let’s Encrypt 免费证书:

    yuminstall-ycertbot python2-certbot-nginx certbot--nginx-dyour_domain.com
  3. 定期更新

    yum update-ycomposerupdate --optimize-autoloader --no-dev

以上步骤已完成 PHP 7.4 + MySQL 5.7.44 + Nginx 环境的搭建,以及 ThinkPHP 项目的完整部署。如有问题,请查看 Nginx 日志/var/log/nginx/error.log和 PHP-FPM 日志/var/log/php-fpm/error.log进行排查。

http://www.jsqmd.com/news/568505/

相关文章:

  • 特朗普政府发布《国家人工智能立法框架》,多维度布局AI领域
  • 别再手动敲命令了!用PyCharm自带功能一键创建Linux桌面快捷方式(附手动配置备份方案)
  • RAG的真相!别再被“知识库外挂”骗了,这才是让AI Agent真正“聪明”的关键!
  • BEAST 2完整指南:如何利用贝叶斯方法进行生物进化分析
  • 浙江润鑫 STW-18 轮轴重检测仪:匠心打造,让每一组轮轴重数据都精准可靠
  • FunASR Docker部署SSL配置的四个‘天坑’与避坑指南(附完整启动命令)
  • 济南精神心理专科如何帮您缓解失眠困扰
  • 【Linux】Ubuntu22.04 Docker+四大数据库(挂载本地)一键安装脚本
  • 深入OpenHarmony NAPI引擎:从‘@ohos.hilog’导入到so库加载的底层链路剖析
  • 千问3.5-2B效果对比评测:与Qwen-VL-Chat基础版在OCR精度和响应速度上的实测差异
  • Scream:打破设备边界的网络音频传输解决方案
  • 数据库---Day5 数据表的增删改查
  • 用STM32和示波器搞定美的/格力空调红外遥控(附完整C代码)
  • 涂装行业 VOCs 治理全场景选型指南
  • 第二章 从Netlist到System Partitioning:VLSI物理设计的模块化艺术
  • 原神帧率解锁架构解析:内存注入与反汇编技术实现原理
  • 【Agents】自定义子代理进阶:沙盒隔离
  • AI写论文超厉害!4款AI论文生成工具,解决毕业论文写作难题!
  • 别再只画可达空间了!宇树Z1机械臂‘死角’排查与灵活工作空间优化实战
  • IRRemoteControl库:超轻量红外收发嵌入式实现
  • 别乱点‘回滚’!用SourceTree撤销提交前必须搞懂的3件事(附远程仓库同步指南)
  • 从AKShare到XTick,稳定数据源的获取与应用技巧
  • 2025年中国人力资源风控报告:江湖背调凭借智能化优势稳居国内背调公司排名第一
  • LH6828@ACP# 产品参数解析 + 竞品参数对比 + 应用场景分享
  • S32K312实战:手把手教你配置AUTOSAR Fls驱动,搞定Flash读写与ECC异常处理
  • 别再死记硬背MVP矩阵了!用GLM库在OpenGL ES 3.0里手把手调试模型、视图、投影矩阵
  • 旧设备复活指南:如何通过OpenCore Legacy Patcher让你的Mac再战三年
  • GEO提示词工程:如何让AI“主动问你”?
  • Git连接GitHub失败:443端口被阻的全面排查与修复指南
  • 还在为网盘下载速度而烦恼?这款开源工具为你解锁高效下载新体验