提问人:Lagot 提问时间:10/11/2023 最后编辑:Andrey SemakinLagot 更新时间:10/20/2023 访问量:200
如何为 wordpress 对 apache php fpm 进行 dockerize
How to dockerize apache php fpm for wordpress
问:
似乎我遵循的带有php-fpm的基本Apache教程工作正常。
我很难使用与基本 wordpress 一起运行的 docker 容器来构建相同的标签,很多标签似乎对使用哪一个感到困惑。我已经尝试下载像 wordpress:6.3.1-php8.2-apache 这样的 docker 映像,但仍然不知道如何在单独的运行容器 wordpress:6.3.1-php8.2-fpm 上链接它
答:
听起来您正在尝试使用 Apache 和 php-fpm 使用 WordPress 设置 Docker 环境。Docker Compose 允许您在单个 YAML 文件中定义多个容器及其配置,从而帮助您管理这一点。以下是使用 Apache 和 php-fpm 的 WordPress 的基本设置:
创建 Docker Compose 文件 (docker-compose.yml):
version: '3.8'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: your_db_password
wordpress:
image: wordpress:6.3.1-php8.2-apache
depends_on:
- db
ports:
- "8000:80"
volumes:
- ./wp-content:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: your_db_password
php-fpm:
image: wordpress:6.3.1-php8.2-fpm
volumes:
- ./wp-content:/var/www/html/wp-content
depends_on:
- db
在此设置中:
db
使用 MySQL 5.7 镜像,并为 WordPress 设置数据库。wordpress
使用基于 Apache 的 WordPress 镜像,连接到 数据库,并将主机上的端口 8000 映射到 容器。php-fpm
使用 php-fpm 版本的 WordPress 图像。它 不会公开任何端口,因为 Apache 将处理 Web 请求。
为您的 WordPress 文件创建一个目录:
在与文件相同的目录中创建一个命名的目录。这将用于持久存储 您的 WordPress 文件。
wp-content
docker-compose.yml
启动 Docker 容器: 在文件所在的目录中运行以下命令:
docker-compose.yml
docker-compose up -d
这将拉取必要的图像并在后台启动容器。
- 访问您的 WordPress 网站:打开您的 Web 浏览器并转到 http://localhost:8000。您应该会看到 WordPress 设置页面。
此设置应该为您提供一个带有 Apache 和 php-fpm 的工作 WordPress 站点。该目录将挂载在 Apache 和 php-fpm 容器中,允许它们共享相同的文件。wp-content
请替换 和 实际的安全密码。此外,如果版本号或映像名称已更改,请记住调整它们your_root_password
your_db_password
评论
如果您将 Apache 与该模块一起使用,则切换到 Apache 需要对服务器配置进行一些更改。以下是从 切换到mod_php
php-fpm
mod_php
php-fpm
1. 安装 php-fpm:确保系统上安装了 php-fpm。您通常可以使用软件包管理器(例如 apt、yum 等)安装它:
sudo apt-get install php-fpm
2. 配置 php-fpm 编辑 php-fpm 配置文件。位置可能因您的系统而异。常见路径包括 /etc/php/7.4/fpm/php-fpm.conf 或 /etc/php/7.4/fpm/pool.d/www.conf(将 7.4 替换为您的 PHP 版本)。
确保 www.conf 文件中的 listen 参数设置正确:
listen = /var/run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
3. 配置 Apache 禁用 mod_php 模块并启用 proxy_fcgi 模块:
sudo a2dismod php7.4
sudo a2enmod proxy_fcgi
创建新的 Apache 虚拟主机配置或编辑现有虚拟主机配置以使用 php-fpm。下面是它可能看起来像什么的示例:
<VirtualHost *:80>
ServerName your_domain.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/var/www/html/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
将 your_domain.com 和 /var/www/html 替换为您的实际域和文档根目录。
4. 重新启动服务
sudo systemctl restart apache2
sudo systemctl restart php7.4-fpm
验证
再次检查 phpinfo() 以确保服务器 API 现在显示 FPM/FastCGI。您可能还想创建一个简单的 PHP 文件,其中包含查看详细信息。
评论