Docker版WordPressのアップデートでFTP画面になってしまうとき

Dockerの稼働環境の違いによって、WordPressのアップデートが上手くいかない場合があるようです。

WordPress更新時、FTP画面を出さず、直接アップデートできる設定手順を記録したいと思います。


Docker版WordPressのhtmlディレクトリパーミッション変更

アップデートがうまくいかない環境の例

Docker-composeを使用したWordPressサーバの構築手順はこちらになります。

これらの環境では、WordPressのアップデートは特に問題ありませんでした。

Fedora等、SELinuxが導入された環境では、アップデートが上手く行かず、FTP画面が表示されました。SELinux環境向けのdocker-compose.yamlは次のような内容です。

version: '2'
services:
  db:
    image: mysql:latest
    volumes:
      - "./.data/db:/var/lib/mysql:z"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: <管理用パスワード>
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: <MYSQLパスワード>

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    links:
      - db
    ports:
      - "8000:80"
    volumes:
      - "./.data/html:/var/www/html:z"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: <MYSQLパスワード>

各Volumesの:zラベルは、SELinux環境でボリュームへアクセスするためのものです。


htmlディレクトリのオーナー変更

次の手順でhtmlディレクトリオーナーを変更したところ、WordPressのアップデートが行えるようになりました。

  1. docker-compse execコマンドでwordpressコンテナのbashを起動します。
    docker-compose exec wordpress bash

  2. /var/www/htmlディレクトリのオーナーを確認します。
    ls -al /var/www/html

    オーナーはrootユーザになっているようです。

  3. apache(Webサーバ)の実行ユーザを確認します。
    ps -augx|grep apache

    一方、apacheプロセスはwww-dataユーザで実行されているようです。

  4. www-dataユーザのグループを確認します。
    grep www-data /etc/passwd
    grep www-dsata /etc/group

    ユーザID、グループIDとも33で、www-dataグループのようです。

  5. /var/www/htmlディレクトリのオーナーをwww-dataに変更します。
    chown -R www-data.www-data .
    ls -al .


設定変更後、WordPressのアップデートを行ってみました。

今度はFTP画面は表示されずに、無事にアップデートを行うことができました。

スポンサーリンク

フォローする

スポンサーリンク