如何为 wordpress 对 apache php fpm 进行 dockerize

How to dockerize apache php fpm for wordpress

提问人:Lagot 提问时间:10/11/2023 最后编辑:Andrey SemakinLagot 更新时间:10/20/2023 访问量:200

问:

似乎我遵循的带有php-fpm的基本Apache教程工作正常。

我很难使用与基本 wordpress 一起运行的 docker 容器来构建相同的标签,很多标签似乎对使用哪一个感到困惑。我已经尝试下载像 wordpress:6.3.1-php8.2-apache 这样的 docker 映像,但仍然不知道如何在单独的运行容器 wordpress:6.3.1-php8.2-fpm 上链接它

php wordpress apache fpm

评论


答:

0赞 Web Marketing Solution Network 10/11/2023 #1

听起来您正在尝试使用 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

在此设置中:

  1. db使用 MySQL 5.7 镜像,并为 WordPress 设置数据库。
  2. wordpress使用基于 Apache 的 WordPress 镜像,连接到 数据库,并将主机上的端口 8000 映射到 容器。
  3. php-fpm使用 php-fpm 版本的 WordPress 图像。它 不会公开任何端口,因为 Apache 将处理 Web 请求。

为您的 WordPress 文件创建一个目录:

  1. 在与文件相同的目录中创建一个命名的目录。这将用于持久存储 您的 WordPress 文件。wp-contentdocker-compose.yml

  2. 启动 Docker 容器: 在文件所在的目录中运行以下命令:docker-compose.yml

    docker-compose up -d

这将拉取必要的图像并在后台启动容器。

  1. 访问您的 WordPress 网站:打开您的 Web 浏览器并转到 http://localhost:8000。您应该会看到 WordPress 设置页面。

此设置应该为您提供一个带有 Apache 和 php-fpm 的工作 WordPress 站点。该目录将挂载在 Apache 和 php-fpm 容器中,允许它们共享相同的文件。wp-content

请替换 和 实际的安全密码。此外,如果版本号或映像名称已更改,请记住调整它们your_root_passwordyour_db_password

评论

0赞 Lagot 10/12/2023
我确实尝试过,但是在 phpinfo 页面上检查时,服务器 API 值仍然使用 Apache 2.0 处理程序,这意味着尚未使用 APACHE-FPM(值应为 FPM/FastCGI)
0赞 Web Marketing Solution Network 10/17/2023 #2

如果您将 Apache 与该模块一起使用,则切换到 Apache 需要对服务器配置进行一些更改。以下是从 切换到mod_phpphp-fpmmod_phpphp-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 文件,其中包含查看详细信息。