迁移早先用 Oneinstack 安装的 PHP 到 Docker

迁移早先用 Oneinstack 安装的 PHP 到 Docker

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

文章介绍了如何通过 Docker 将旧版 PHP 7.4 升级到 8.2,以避免 Oneinstack 的安全问题。通过 Dockerfile 安装所需扩展,并配置 PHP-FPM 和 Nginx,实现容器内外的协作,确保 PHP 配置文件管理和扩展的灵活性。

🎯

关键要点

  • 文章介绍了如何通过 Docker 将 PHP 7.4 升级到 8.2,以避免 Oneinstack 的安全问题。

  • 由于 Oneinstack 的升级脚本不再安全,决定使用 Docker 部署 PHP。

  • Dockerfile 中安装了所需的 PHP 扩展,并配置了 PHP-FPM 和 Nginx。

  • PHP 和 Nginx 的配置文件管理在容器外,确保灵活性。

  • 使用 docker-compose 文件来管理容器的启动和配置。

  • PHP-FPM 的 socket 文件配置为 unix socket,以便与 Nginx 进行通信。

  • 在需要增加新的 PHP 扩展时,需要重新复制配置文件以确保新扩展加载。

🔎

延伸解读

Docker 部署的优势

使用 Docker 部署 PHP 8.2 相比传统的 Oneinstack 安装方式,能够有效避免安全隐患,并提供更好的环境隔离。Docker 容器化的特性使得不同版本的 PHP 可以并行运行,便于测试和迁移,同时也简化了扩展的管理和配置。

配置文件管理的重要性

在 Docker 中,PHP 和 Nginx 的配置文件管理在容器外进行,这样可以确保灵活性和可维护性。用户在更新或添加 PHP 扩展时,需注意重新复制配置文件,以确保新扩展能够正确加载,避免因配置遗漏导致的运行错误。

注意 Unix Socket 的配置

在配置 PHP-FPM 和 Nginx 时,使用 Unix Socket 进行通信需要特别注意权限设置。确保 Nginx 和 PHP-FPM 的用户一致,并正确配置 socket 文件的访问权限,以避免因权限问题导致的连接失败。

延伸问答

如何将 PHP 从 7.4 升级到 8.2?

可以通过 Docker 部署来将 PHP 从 7.4 升级到 8.2,避免使用 Oneinstack 的升级脚本。

为什么选择使用 Docker 而不是 Oneinstack 升级?

因为 Oneinstack 的升级脚本不再安全,且老系统的 apt 安装存在困难,因此选择使用 Docker 部署。

Dockerfile 中需要安装哪些 PHP 扩展?

需要安装的 PHP 扩展包括 bcmath、gd、intl、mysqli、opcache、imagick、redis 和 memcached 等。

如何配置 PHP-FPM 与 Nginx 的通信?

通过配置 PHP-FPM 的 socket 文件为 unix socket,并在 Nginx 配置中指向该 socket 文件来实现通信。

如何管理 Docker 容器的配置文件?

可以在容器外部管理 PHP 相关的配置文件,并通过挂载卷的方式将其与容器内的配置文件关联。

如果需要增加新的 PHP 扩展,应该怎么做?

需要重新启动一个容器,将新扩展的配置文件复制到容器外部的配置目录,以确保新扩展能够加载。

🏷️

标签

➡️

继续阅读