Docker環境のWordPressで、WP Offload Mediaプラグインを試します。
WP Offload Mediaプラグインを使用すると、画像を AWSのS3に保存できますが、今回は、
S3互換の minioを使用して、Docker環境のminioに画像を保存したいと思います。
下記URLを参考にしました。
作業環境
私の作業環境は以下のとおり。
Windows10のWSL2(ubuntu20.04)で作業します。
なお、Dockerは、ubuntuにインストールして起動しています。(Docker Desktopではない)
なお、Dockerは、ubuntuにインストールして起動しています。(Docker Desktopではない)
- Windows10
- WSL2(ubuntu20.04)
- docker 19.03.12
docker-compose
WordPressの検証環境を docker-compose で作ります。
docker-compose.yml を下記のように作成しました。
version: "3" services: # wordpress wordpress: image: wordpress container_name: wordpress hostname: wordpress volumes: - ./wordpress:/var/www/html restart: always depends_on: - mysql network_mode: host expose: - 80 environment: WORDPRESS_DB_HOST: 172.30.0.10:3306 WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: P@ssw0rd # aws s3 mock minio: image: minio/minio container_name: minio hostname: minio volumes: - ./minio:/data restart: always network_mode: host expose: - 9000 environment: MINIO_ACCESS_KEY: key00000 MINIO_SECRET_KEY: key00000 command: server /data # mysql database mysql: image: mysql:5.7 container_name: mysql hostname: mysql volumes: - ./mysql:/var/lib/mysql restart: always networks: app_net: ipv4_address: 172.30.0.10 environment: MYSQL_ROOT_PASSWORD: P@ssw0rd!! MYSQL_DATABASE: wordpress MYSQL_USER: wpuser MYSQL_PASSWORD: P@ssw0rd # mysql admin gui phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin hostname: phpmyadmin restart: always links: - mysql ports: - 18080:80 networks: app_net: ipv4_address: 172.30.0.20 environment: PMA_HOST: 172.30.0.10 networks: app_net: driver: bridge ipam: driver: default config: - subnet: 172.30.0.0/24
下記のようにコマンドを実行すると起動します。
$ docker-compose up -d
各画面には下記URLでアクセスします。
- WordPress
http://localhost - minio (S3互換)
http://localhost:9000 - PhpMyAdmin (MySQL管理)
http://localhost:18080
WordPressのインストール
ブラウザで http://localhost にアクセスすると、下図のように表示されます。
[日本語]を選択して[次へ]をクリック
下図のように入力して[WordPressをインストール]をクリック
下図のように表示されたらインストール完了です。
WP Offload Mediaプラグインのインストール
WordPress管理画面の[プラグイン]>[新規追加]をクリックすると下図の画面が表示されます。
[キーワード]に "s3" を入力すると、「WP Offload Mediaプラグイン」が表示されるので、[今すぐインストール]をクリックします。
インストールが完了したら[有効化]をクリックします。
wp-config.php を修正します。
ファイルの場所は、"<docker-compose.ymlのあるDIR>/wordpress/wp-config.php" です。
下記のように docker-compose.yml で設定したアクセスキー、シークレットキーを追記します。
define( 'AS3CF_SETTINGS', serialize( array( 'provider' => 'aws', 'access-key-id' => 'key00000', 'secret-access-key' => 'key00000', ) ) );
追記した場所は下図のとおり。
WP Offload Media Tweaksプラグインのインストール
プラグインのディレクトリに移動します。
$ <docker-compose.ymlのあるDIR>/wordpress/wp-content/plugins
下記コマンドでプラグインをダウンロードし、オーナを変更します。
$ sudo git clone https://github.com/deliciousbrains/wp-amazon-s3-and-cloudfront-tweaks.git $ sudo chown -R www-data.www-data wp-amazon-s3-and-cloudfront-tweaks
WordPressの管理画面でプラグインを有効化します。
下記ファイルを修正します。
- <docker-compose.ymlのあるDIR>/wordpress/wp-content/plugins/wp-amazon-s3-and-cloudfront-tweaks/amazon-s3-and-cloudfront-tweaks.php
add_filter のコメントを下図のように削除して有効化します。
minio_s3_url_domain のフィルタは、エラーになるので有効にしませんでした。
minio_s3_client_args() のホスト名とポートを下図のように変更します。
minio_s3_url_domain() のホスト名とポートを下図のように変更します。
(たぶん、必要ないと思うが、念のため変更しました)
minio_s3_console_url() のホスト名とポートを下図のように変更します。
WP Offload Mediaプラグインの設定
WordPress管理画面でプラグインの設定を開きます。
試しに[Browse existing buckets]をクリックして、既存のバケットを表示してみます。
まだ、minioにはバケットを作成していないので、
当然、バケットは存在しません。
[Create new bucket] をクリックしてバケットを作成します。
[Bucket]にバケット名を入力して、[Create New Bucket]をクリックします。
下図のように表示されたら設定完了です。
動作確認
WordPressの管理画面で[メディア]から画像をアップロードします。
メディアライブラリにアップロードした画像が表示されたらOKです。
アップロードした画像の詳細を参照し、
ファイルのURLが minio (http://localhost:9000)であればOKです。
minio を見てみます。
http://localhost:9000 にアクセスします。
docker-compose.yml に記載したアクセスキー(key00000)とシークレットキー(key00000)でログインできます。
下図のように画像が格納されていればOKです。