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

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 allyum makecache# 5. 更新系统可选耗时较长yum update-y1.2 安装基础开发工具yuminstall-yvimwgetcurlnet-tools gcc gcc-cmake二、安装 Nginx# 安装 Nginxyuminstall-ynginx# 设置开机自启并启动systemctlenablenginx systemctl start nginx# 验证安装nginx-v三、安装 PHP 7.4CentOS 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-php743.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-m3.3 配置 PHP-FPM# 编辑 php-fpm 配置修改运行用户为 nginxsed-is/user apache/user nginx/g/etc/php-fpm.d/www.confsed-is/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.444.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|grepmysql4.2 安装 MySQL 5.7# 安装 MySQL 5.7yuminstall-ymysql-community-server# 验证安装mysql--version4.3 配置 MySQL# 启动 MySQLsystemctlenablemysqld systemctl start mysqld# 获取临时密码greptemporary password/var/log/mysqld.log# 输出示例2024-01-15T06:23:45.123456Z 1 [Note] A temporary password is generated for rootlocalhost: 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; # 或使用 socketfastcgi_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; } }测试并重载 Nginxnginx-tsystemctl reload nginx六、部署 ThinkPHP 项目6.1 创建项目目录mkdir-p/var/www/your_projectcd/var/www/your_project6.2 安装 ComposerPHP 依赖管理工具# 安装 Composercurl-sShttps://getcomposer.org/installer|phpmvcomposer.phar /usr/local/bin/composerchmodx /usr/local/bin/composer# 验证安装composer--version6.3 安装 ThinkPHP 项目方式一创建新项目composercreate-project topthink/think /var/www/your_project方式二上传已有项目# 使用 git 克隆gitclone your_repository_url /var/www/your_project# 或使用 scp 上传# 从本地上传scp -r ./your_project rootyour_server_ip:/var/www/6.4 安装项目依赖cd/var/www/your_projectcomposerinstall--optimize-autoloader --no-dev6.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/runtime6.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执行 SQLCREATEDATABASEyour_database_nameCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;CREATEUSERyour_usernamelocalhostIDENTIFIEDBYyour_password;GRANTALLPRIVILEGESONyour_database_name.*TOyour_usernamelocalhost;FLUSHPRIVILEGES;EXIT;6.8 生成应用密钥如项目需要cd/var/www/your_project php think generate:key# 或根据实际框架命令七、防火墙与安全配置7.1 配置防火墙# 开放 HTTP 和 HTTPS 端口firewall-cmd--permanent--add-servicehttp firewall-cmd--permanent--add-servicehttps firewall-cmd--reload# 查看已开放端口firewall-cmd --list-all7.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十、优化建议开启 OPcache在/etc/php.ini中设置opcache.enable1 opcache.memory_consumption128 opcache.max_accelerated_files10000 opcache.revalidate_freq60配置 HTTPS使用 Let’s Encrypt 免费证书yuminstall-ycertbot python2-certbot-nginx certbot--nginx-dyour_domain.com定期更新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进行排查。

相关文章:

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…...

智能表格在敏捷项目管理中的工时统计实践

1. 为什么敏捷团队需要智能工时统计 在敏捷开发中,两周一次的迭代就像一场短跑比赛。我见过太多团队在冲刺过半时才发现工时严重超支,这时候再调整已经来不及了。传统Excel表格需要手动更新公式,光是合并不同成员的工作量报表就能消耗半天时间…...

springboot+vue基于web的美食外卖点餐平台的设外卖员商家

目录同行可拿货,招校园代理 ,本人源头供货商外卖员功能分析商家功能分析技术实现要点项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 外卖员功能分析 外卖员在美食外卖点餐平台中的核心…...

认知内耗:在亚马逊,为何品牌名内部的“关键词”正在相互厮杀

在亚马逊的品牌丛林中,最隐蔽的悲剧莫过于:你精心构思的品牌名,其内部的各个组成部分(如“欧文斯”、“康宁”、“玻璃纤维”),并未协同指向你,反而各自激活了消费者心智中其他更强大品牌的“认…...

RTX3070 + CUDA 11.0 实战:手把手教你从零搭建 PointNet.pytorch 环境(附常见报错解决)

RTX3070 CUDA 11.0 实战:手把手教你从零搭建 PointNet.pytorch 环境(附常见报错解决) 当你手握一块RTX3070显卡,想要复现PointNet这一经典点云处理网络时,是否曾被环境配置的各种坑绊住脚步?本文将带你避开…...

OpenCV实战:3种图像降噪滤波器的Python代码对比(附效果图)

OpenCV实战:3种图像降噪滤波器的Python代码对比(附效果图) 在数字图像处理中,噪声是影响图像质量的主要因素之一。无论是来自传感器的不完美,还是传输过程中的干扰,噪声都会降低图像的清晰度和可用性。对于…...

保姆级教程:在RK3588上交叉编译Qt 5.15.15(含完整配置流程)

保姆级教程:在RK3588上交叉编译Qt 5.15.15(含完整配置流程) 在嵌入式开发领域,RK3588作为一款高性能的ARM处理器,正逐渐成为智能终端设备的首选平台。而Qt框架凭借其跨平台特性和丰富的GUI组件,为嵌入式界面…...

如何通过WeChatMsg实现微信聊天记录永久保存:从数据安全到情感记忆的完整解决方案

如何通过WeChatMsg实现微信聊天记录永久保存:从数据安全到情感记忆的完整解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.co…...

UnityLockstep:构建零延迟多人游戏的终极同步框架

UnityLockstep:构建零延迟多人游戏的终极同步框架 【免费下载链接】UnityLockstep Deterministic Lockstep with clientside prediction and rollback 项目地址: https://gitcode.com/gh_mirrors/un/UnityLockstep 在多人游戏开发中,你是否曾为网…...

GHelper:华硕笔记本的轻量级性能管理解决方案

GHelper:华硕笔记本的轻量级性能管理解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and …...

Windows系统优化神器:Winhance中文版全面使用指南

Windows系统优化神器:Winhance中文版全面使用指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_CN …...

抖音批量下载工具:高效获取无水印视频与图文内容的全攻略

抖音批量下载工具:高效获取无水印视频与图文内容的全攻略 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

5个技巧掌握DINO注意力可视化:从入门到模型可解释性分析

5个技巧掌握DINO注意力可视化:从入门到模型可解释性分析 【免费下载链接】dino PyTorch code for Vision Transformers training with the Self-Supervised learning method DINO 项目地址: https://gitcode.com/gh_mirrors/di/dino 视觉模型可解释性已成为人…...

IP查询API性能评测指南:从响应时间到QPS的完整评估方法

在广告投放、反作弊、内容风控、日志分析等系统中,IP地理位置查询通常是高频、基础、不可或缺的环节。然而,很多团队在技术选型时往往停留在“能查到就行”的层面,忽视了其对系统性能、稳定性与长期成本的影响。 本文从技术评估角度出发&…...

如何将微信聊天记忆转化为数字珍藏:WeChatMsg的数据主权革命

如何将微信聊天记忆转化为数字珍藏:WeChatMsg的数据主权革命 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...

从零到一:AI工程开源资源全栈指南与实战应用

从零到一:AI工程开源资源全栈指南与实战应用 【免费下载链接】aie-book [WIP] Resources for AI engineers. Also contains supporting materials for the book AI Engineering (Chip Huyen, 2025) 项目地址: https://gitcode.com/GitHub_Trending/ai/aie-book …...

OpenRocket终极指南:专业火箭设计与飞行仿真软件完全解析

OpenRocket终极指南:专业火箭设计与飞行仿真软件完全解析 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket OpenRocket是一款功能强大的开源火箭…...

别再手动敲命令了!用PyCharm自带功能一键创建Linux桌面快捷方式(附手动配置备份方案)

告别终端:PyCharm内置工具3秒生成Linux桌面快捷方式(附应急手动方案) 每次打开PyCharm都要在终端输入一长串路径?作为开发者,我们的时间应该花在创造价值上,而不是重复输入命令。JetBrains早就为Linux用户准…...

【STM32F103标准库开发】DMA+USART双剑合璧:实战环形缓冲区与空闲中断解析

1. 为什么需要DMAUSART组合方案 第一次用STM32做GPS数据采集时,我被串口中断折磨得够呛。当时用的是传统中断接收模式,每收到一个字节就触发一次中断,在115200波特率下,CPU几乎被串口中断占满,其他任务根本跑不动。后来…...

让 AI 听懂业务、直接干活:销售易 NeoAgent 2.0 的三大跃迁

当软件行业仍在争论“AI是否会杀死SaaS”时,销售易已经给出了自己的答案。3月27日,在2026腾讯云城市峰会首站上海站,腾讯旗下CRM销售易正式发布新一代营销服全场景AI原生CRM——NeoAgent 2.0。这并非一次简单的产品迭代,而是销售易…...

威纶通宏指令实战:从零构建中文输入与智能配方检索系统

1. 威纶通触摸屏的中文输入困境与破解之道 第一次接触威纶通中低端触摸屏时,我就被它缺乏中文输入支持的问题给难住了。当时接了个食品包装机的项目,客户要求操作界面必须支持中文输入,方便工人记录生产批号和产品信息。市面上常见的中高端HM…...

嵌入式开发必知:原码、反码与补码详解

1. 为什么嵌入式开发必须掌握原码、反码和补码作为一名在嵌入式领域摸爬滚打多年的工程师,我见过太多因为不理解底层数据表示而导致的诡异bug。记得刚入行时,我调试一个温度传感器项目,当温度低于零度时,读取的数值总是偏差127度。…...

别再只画可达空间了!宇树Z1机械臂‘死角’排查与灵活工作空间优化实战

宇树Z1机械臂死角排查与灵活工作空间优化实战指南 当宇树Z1机械臂在自动化产线上执行抓取任务时,工程师们常会遇到一个令人头疼的现象——某些看似可达的位姿却无法实现预期动作。这背后隐藏的往往是机械臂工作空间中的"死角"问题,即那些虽然理…...

千问3.5-2B效果对比评测:与Qwen-VL-Chat基础版在OCR精度和响应速度上的实测差异

千问3.5-2B效果对比评测:与Qwen-VL-Chat基础版在OCR精度和响应速度上的实测差异 1. 评测背景与模型介绍 视觉语言模型正在改变我们与图像交互的方式。作为Qwen系列的最新成员,千问3.5-2B以其轻量级架构和高效性能引起了广泛关注。本次评测将聚焦于两个…...

FunASR Docker部署SSL配置的四个‘天坑’与避坑指南(附完整启动命令)

FunASR Docker部署SSL配置的四个‘天坑’与避坑指南(附完整启动命令) 在语音识别服务的安全部署中,SSL/TLS加密已成为行业标配。但当我们实际为FunASR配置HTTPS时,那些看似简单的步骤背后却暗藏玄机。本文将带您穿越四个最具迷惑性…...

如何自学使用关键字排名软件_关键字排名软件与SEO有什么关系

如何自学使用关键字排名软件_关键字排名软件与SEO有什么关系 在当今数字化时代,SEO(搜索引擎优化)已成为每一个网站运营者必不可少的技能。其中,关键字排名软件扮演了极其重要的角色。如何自学使用关键字排名软件呢?关…...

从数据清洗到结果可视化:一份给地理学新手的R语言geodetector实战避坑指南

从数据清洗到结果可视化:一份给地理学新手的R语言geodetector实战避坑指南 第一次用R语言跑地理探测器时,我盯着满屏的报错信息差点崩溃——明明照着教程一步步操作,为什么别人的代码能跑出漂亮的结果,我的却总在数据导入环节就卡…...

协方差矩阵可视化指南:如何用Seaborn热力图解读变量关系(附完整代码)

协方差矩阵可视化指南:如何用Seaborn热力图解读变量关系(附完整代码) 在数据分析的实际工作中,我们常常需要向非技术背景的决策者解释复杂的统计结果。这时候,一张直观的热力图往往比几十页的统计报告更有说服力。协方…...

快手数据采集引擎:无水印解析与多源内容整合工具

快手数据采集引擎:无水印解析与多源内容整合工具 【免费下载链接】kuaishou-crawler As you can see, a kuaishou crawler 项目地址: https://gitcode.com/gh_mirrors/ku/kuaishou-crawler 价值定位:重新定义短视频数据采集标准 在数字内容分析与…...

事件驱动视觉革命:EVS技术如何重塑机器感知的未来格局

1. EVS技术:重新定义机器视觉的游戏规则 想象一下你正坐在高速行驶的列车上,窗外风景飞速掠过。传统相机就像每隔几秒才按下一次快门的游客,拍到的全是模糊不清的照片;而EVS(事件驱动视觉传感器)则像专业摄…...