PHP-FPM 环境与 Composer 准备
适用人群:准备在云服务器上为 PHP 框架搭建运行环境的开发者与运维。
核心概念
组件
- Nginx:接收请求、转发 .php 给 PHP-FPM、服务静态资源。
- PHP-FPM:PHP 的 FastCGI 进程管理器,实际执行 PHP 代码。
- MySQL/MariaDB:多数框架应用的数据库。
- Composer:PHP 依赖管理器,装框架和第三方库。
必备扩展
Laravel/ThinkPHP 常需 mbstring、openssl、pdo_mysql、tokenizer、xml、ctype、json、bcmath、fileinfo 等 PHP 扩展,缺失会导致 composer 安装或运行报错。
操作步骤
步骤 1装 Nginx + PHP-FPM + MySQL
用包管理器或宝塔面板安装,PHP 选框架要求的版本(如 8.1/8.2)。
步骤 2装 PHP 扩展
安装 mbstring、pdo_mysql、openssl、xml、bcmath、fileinfo 等框架必需扩展。
步骤 3装 Composer
全局安装 Composer,用于安装框架依赖;国内可配置镜像加速。
步骤 4建数据库
创建应用数据库与专用用户,字符集用 utf8mb4。
步骤 5验证
php -v、php -m 确认版本与扩展,composer -V 确认可用。
实际示例
# Ubuntu 示例
apt install -y nginx mysql-server php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml php8.2-bcmath php8.2-curl php8.2-zip
systemctl enable --now nginx php8.2-fpm mysql
# 装 Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# 建数据库
mysql -e "CREATE DATABASE app DEFAULT CHARACTER SET utf8mb4;"
常见错误
- ⚠️少装框架必需的 PHP 扩展,composer install 或运行时报缺扩展
- ⚠️PHP 版本与框架要求不符(过低装不上、过高部分包未适配)
- ⚠️数据库字符集用 utf8 而非 utf8mb4,存 emoji/生僻字出错
- ⚠️Composer 没配国内镜像,境内拉依赖慢或失败
对应工具
常见问题
PHP-FPM 是什么?
Composer 装依赖很慢怎么办?
相关教程
相关文章
网站上线前怎么测试?测试环境、预发布与上线前检查清单
直接把没测过的网站推到线上,很容易上线即翻车:页面报错、链接失效、证书没配好,甚至因为空白页被判备案不合格。正式上线前做一轮测试和逐项检查,能把问题挡在用户之前。本文讲清测试环境怎么搭、备案期间怎么合规地测,以及上线前该核对什么。 为什么要先测 功能验证:注册、表单、支付、接口等关键流程能不能跑通; 展示验证:各页面…
备案站点的 Serverless 函数计算运维
免运维不等于没有运维工作,只是运维对象换了 Serverless 函数计算承诺的核心卖点是"不用管服务器、不用管扩缩容,写好函数逻辑直接部署就行"。这个承诺在很大程度上是真的——确实不再需要自己配置和维护服务器实例。但它并没有消灭运维工作,只是把运维的对象从"服务器和进程"换成了"函数的调用行为本身",而这些新对象带…
备案站点的多环境与配置管理实践
配置是被低估的事故源 复盘线上事故会发现一个规律:相当一部分不是代码写错,而是配置改错——连错了数据库、开关开反了、超时被设成 0、缓存时间多打了个零。代码有 review、有测试、有灰度,配置却常常有人直接改生产、改完立即生效。把配置当成和代码同等重要的变更来管,能省掉很多深夜。 配置与代码分离 遵循十二要素原则:…
网站上线备案与等保测评的先后顺序如何衔接
网站正式对外提供服务前,通常涉及ICP备案与网络安全等级保护(等保)测评两项合规工作,但二者监管逻辑并不相同,很多运营者容易把顺序搞混。 备案与等保测评管的是两件事 ICP备案由通信管理局主管,核验的是网站主办者身份和接入信息,解决“谁在办网站、通过谁接入”的问题;等保测评由公安机关网络安全保卫部门主管,评估的是信息…
Vercel、GitHub Pages 等境外托管平台绑自定义域名的备案问题
部署很顺畅,绑上域名却傻眼了 用 Vercel、Netlify、GitHub Pages、Cloudflare Pages 这类平台做静态站点或者前端项目,体验普遍很好——推送代码自动构建部署,平台自带全球加速,几分钟就能上线。问题出现在"绑定自己的域名"这一步:如果这个域名准备给中国大陆用户访问,很多开发者这才发现…
官方资料来源