导语:在中小型网站、企业内部系统、博客和测试环境中,LAMP 仍是非常实用的经典组合:Ubuntu 负责操作系统层,Apache 处理 HTTP 请求,MySQL 存储数据,PHP 生成动态页面。🙂 本文以 Ubuntu 服务器为场景,梳理一套可落地的部署流程,并整理常见故障排查思路,便于新手快速上线,也方便运维人员复盘。
一、部署前准备
开始前建议准备一个具备 sudo 权限的普通用户,而不是长期直接使用 root;同时确认服务器能访问软件源,域名解析已指向服务器公网 IP,安全组或云防火墙开放必要端口。Ubuntu 官方文档中也明确说明,安装 PHP 前通常需要先准备 Web 服务器和数据库服务,可参考 Ubuntu PHP 配置文档。
基础更新建议先执行:
sudo apt update
sudo apt upgrade
这样可以尽量减少因包索引过期导致的依赖问题。生产环境不建议边部署边大规模改配置,最好先记录当前系统版本、开放端口、站点目录和数据库账号,方便后续回滚。
二、安装 Apache Web 服务
Apache 是 LAMP 中的 Web 服务组件,负责接收浏览器请求并返回页面。常见安装命令为:
sudo apt install apache2
安装后可通过 systemctl status apache2 查看服务状态,通过浏览器访问服务器 IP 验证默认页面是否出现。Apache 官方文档可参考 来源链接 HTTP Server 文档。
如果服务器启用了 UFW 防火墙,需要放行 Web 访问:
sudo ufw allow 'Apache Full'
sudo ufw status
如果只部署 HTTP,可先开放 80 端口;如果后续启用 HTTPS,则应开放 443 端口。线上环境不建议随意开放 MySQL 的 3306 到公网,数据库通常只允许本机或可信内网访问。
三、安装 MySQL 并做基础加固
数据库安装可执行:
sudo apt install mysql-server
sudo systemctl status mysql
安装完成后建议运行 mysql_secure_installation。根据 MySQL 官方说明,该工具可用于设置 root 账号密码、移除匿名用户、限制远程 root 登录、删除测试库等安全操作,详见 MySQL 官方说明。
实践中不要让业务程序直接使用 root 连接数据库。更稳妥的方式是为每个站点创建独立数据库和独立账号,只授予所需权限。例如博客站点只需要访问自己的库,就不要给全局权限。这样即使某个站点泄露账号,也能降低横向影响范围。🔐
四、安装 PHP 与常用扩展
PHP 负责处理动态逻辑,并通过扩展连接 MySQL。常见安装方式为:
sudo apt install php libapache2-mod-php php-mysql
Ubuntu 文档说明,安装 libapache2-mod-php 后,Apache 可通过对应模块运行 PHP 脚本,并在必要时重启 Apache 使配置生效,可参考 官方配置指南。
验证 PHP 时,可以在站点目录临时创建 phpinfo 页面,但测试完成后应立即删除,因为它会暴露 PHP 版本、模块、路径等环境信息。更推荐的验证方式是放置一个简单的业务健康检查页面,只输出“OK”或连接数据库的简短结果。
五、配置虚拟主机与站点目录
不要把所有项目都堆在 /var/www/html。更清晰的做法是为每个站点建立独立目录,例如 /var/www/example.com/public,并为其创建 Apache VirtualHost 配置。这样多站点共存时,日志、权限、证书和重定向规则都更容易管理。Apache 虚拟主机相关概念可查阅 来源链接 VirtualHost 文档。
配置完成后通常执行:
sudo apache2ctl configtest
sudo systemctl reload apache2
如果 configtest 返回 Syntax OK,再 reload 服务。不要在未检查语法的情况下直接 restart,尤其是线上服务器,否则一个小小的拼写错误就可能导致站点中断。⚙️
六、常见问题排查
1. 浏览器无法访问默认页面
先检查 Apache 是否运行,再检查防火墙和云厂商安全组。命令可从 systemctl status apache2、sudo ufw status、curl -I 来源链接 依次排查。如果本机 curl 正常但外部访问失败,大概率是安全组、路由或公网 IP 绑定问题。
2. PHP 文件被下载或显示源码
这通常说明 PHP 没有被 Apache 正确解析。检查 php、libapache2-mod-php 是否安装,确认 PHP 模块已启用,并重启 Apache。还要确认访问的是 .php 文件,而不是错误地放在未被 Apache 管理的目录中。
3. 数据库连接失败
常见原因包括账号密码错误、权限未授予、服务未启动、连接主机写错。先用 mysql -u 用户名 -p 在服务器本机测试登录,再检查应用配置。若应用和数据库在同一台服务器,host 通常使用 localhost 或 127.0.0.1,但两者在某些客户端中的连接方式可能不同,排查时要留意。
4. 访问出现 403 或 500
403 多与目录权限、Apache Directory 配置或首页文件缺失有关;500 多与 PHP 语法错误、扩展缺失、应用配置错误有关。优先查看日志:
sudo tail -n 100 /var/log/apache2/error.log
日志往往比浏览器页面更接近真实原因。
七、上线后的维护建议
- 定期执行系统更新,并关注 Ubuntu、Apache、MySQL、PHP 的安全公告。
- 启用 HTTPS,证书续期要纳入监控,不要等用户反馈才发现过期。
- 限制 SSH 登录方式,优先使用密钥登录,关闭不必要端口。
- 为站点目录、日志目录、上传目录设置最小可用权限。
- 数据库定期备份,并实际演练恢复流程,避免“有备份但无法恢复”。
总结
LAMP 部署并不复杂,但稳定运行依赖细节:安装顺序要清晰,Apache、MySQL、PHP 各司其职;上线前要验证服务、权限、防火墙和日志;上线后要持续更新、备份和监控。对于新手来说,最重要的不是一次性背下所有命令,而是建立“先看状态、再查日志、最后改配置”的排障习惯。这样遇到 403、500、数据库连接失败或 PHP 不解析等问题时,就能快速定位并安全修复。🚀