在部署网站时,许多开发者会遇到一系列坑,其中我最近也经历了类似的过程。从安装 PHP 和 PHP-FPM,到配置 Nginx,再到把网站放到指定目录,最开始的一切似乎都很顺利。然而,随之而来的问题却让我意识到,部署过程中不仅仅是简单的配置,很多细节也需要仔细检查。
一开始的部署问题
我首先安装了 PHP、PHP-FPM 和 Nginx,并将网站代码放置到指定的目录。在完成了 Nginx 配置和 PHP-FPM 的指向配置后,按理说应该可以直接访问网站了。但当我尝试通过 IP 地址访问网站时,页面并没有正常显示。
在进一步检查后,我发现是 Nginx 的权限不足,导致无法访问网站。经过调整 Nginx 配置文件,确保它能够访问正确的文件目录后,仍然无法通过 IP 地址访问,虽然使用 curl 命令在本地访问时却没有问题。这时我才意识到,可能是阿里云的安全组没有开放外部端口。通过在阿里云控制台中打开相应的端口后,终于可以正常通过 IP 地址访问网站首页。
网站首页可以访问,但后续页面无法访问
虽然网站首页终于可以正常访问了,但接下来我发现一个更令人头疼的问题——其他页面无法访问。我通过查看错误日志和搜索资料,发现问题出在 Nginx 配置上。在配置 Nginx 时,虽然首页能够加载,但是路由设置有些错误,导致页面跳转和其他页面加载失败。
通过仔细调整 Nginx 配置,确保了所有路径的处理方式和正确的权限设置,其他页面终于能够正常显示了。这时我以为一切都结束了,结果又碰到一个问题。
PHP Session 无法使用
在解决了页面加载问题后,我突然发现,网站中需要用到 PHP Session 的地方并没有正常工作。无论是登录状态还是其他依赖 Session 的功能,似乎都无法正常处理。经过长时间的排查,我发现问题的根源在于 Nginx 没有对 PHP Session 的访问权限。
为了解决这个问题,我需要确认几个关键点:
- PHP-FPM 配置:确保 PHP-FPM 的配置允许 Session 文件的读写,特别是在文件存储路径上。
- Nginx 配置:确保 Nginx 配置中能够访问到 PHP Session 文件,通常是通过设置合适的文件权限和目录路径来解决。
- 文件权限:检查 PHP Session 存储目录的权限,确保 Nginx 和 PHP-FPM 都有适当的权限来读取和写入 Session 文件。
在排查后,我执行了以下命令来修复权限问题:
bash
复制编辑
sudo systemctl restart php-fpm nginx
sudo chmod -R 700 /var/lib/php/session
sudo chown -R nginx:nginx /var/lib/php/session
sudo chmod -R 755 /home/test
这些命令分别重启了 PHP-FPM 和 Nginx 服务,确保 PHP Session 存储目录 /var/lib/php/session 的权限正确,并且将目录的所有者设置为 nginx 用户。同时,也为网站文件目录 /home/test 设置了合适的权限,以便 Nginx 可以访问这些文件。
通过调整文件权限和重新配置 Nginx,我最终解决了 PHP Session 无法使用的问题。
总结
在将网站从开发环境部署到生产环境时,许多小细节都可能成为障碍。无论是 Nginx 的权限配置、端口开放,还是 PHP Session 相关的权限设置,每一步都需要仔细检查和调试。最终,尽管过程中经历了许多困惑和挑战,但这些经验也让我对 Nginx 和 PHP-FPM 的配置有了更深入的理解。希望这篇文章能帮助其他开发者在部署过程中少走一些弯路。