WordCampサイトをローカル環境を構築しようとした際の覚書
WordPressコミュニティのカンファレンス、WordCampのウェブサイトはWordPressで作られています。GitHubに公開されているソースコードを利用し、ローカル環境で立ち上げる際にはいくつかのエラーに遭遇することがあります。プラグインや設定ファイルの配置に関する手順や注意点を記録しておき、問題が発生した際にはSlackなどでコミュニティと協力して解決していくことが大切です。
目次
WordPressコミュニティのカンファレンス、WordCampはウェブサイトももちろんWordPressでできています。
WordCampサイトのソースコードはGitHubに公開されている
このWordCampサイト、実は事前に用意されているプラグインやテーマ以外が利用できない作りになっています。サイト編集者としての権限のみ付与されている、マルチサイトを利用しているようなイメージです。
もしWordCamp専用のプラグインに不具合が見つかって、改善が必要になった場合などは、GitHubに公開されているリポジトリに対してPull Requestを出すことができます。
ローカル環境構築は、GitHubの手順書を見ながらDockerなどで行う
OSSらしくこのリポジトリのコードを動かす方法などは、GitHubのドキュメントに明記されています。
基本的にはこの手順に従って作業を進めることで、ローカルでWordCampサイトを立ち上げることができます。
環境立ち上げ時に、手こずった場所の覚書
とはいえこのローカル環境、一発で立ち上がらないことがあります。Dockerの設定などをみると、すこし複雑な作りをしているため、何かしらの理由でfailすることがあるのかもしれません。Slackで相談した時には、「ここが一番手こずるし、改善していきたいとは思っている」という話をされたので、Dockerなどの勉強もかねてやれることがないかは見ていきたいなと思っています。
ということで、自分がWordCampサイトをローカルで立ち上げる際に手こずった場所を、覚書として簡単に記録しておきます。もし同じような場面に遭遇した人がいれば、この記事の手順が参考になればと思います。
必要なプラグインが見つからずにエラーになる場合
コンテナは立ち上がったものの、WordPressサイト(https://wordcamp.test)がFatal Errorを起こしていることがあります。/usr/src/public_html/wp-content/plugins
配下のファイルに関するエラーが出ている場合は、必要なプラグインのダウンロードまたは配置ができていない可能性があります。
自分のケースでは、.docker/config/public_html/wp-content/plugins
に要求されているファイルがあることを確認できました。そのため、次のような直接ファイルを移動させるコマンドで対処しました。
% cp -R ./.docker/config/public_html/wp-content/plugins/* public_html/wp-content/plugins/
Uncaught Error: Call to undefined function wp()が発生する
続いて遭遇したFatal Errorがこちらです。
エラーメッセージに従ってファイルを追いかけていくと、public_html/wp-config.php
の中身が何もないことがわかりました。Dockerの設定ファイルを見ると、.docker/wp-config.php
がここにコピーされてくるような動きをしているように見えます。
% git grep 'wp-config'
.docker/config/error-logging.ini:# https://codex.wordpress.org/Editing_wp-config.php#Configure_Error_Logging
.docker/readme.md:1. Optional: Add API keys to the `Third party services` section of `wp-config.php` to enabled working on specific features that require them.
.gitignore:public_html/wp-config.php
docker-compose.yaml: - ".docker/wp-config.php:/usr/src/public_html/wp-config.php"
そこでコピー元のファイルをコピーしてみました。
cp .docker/wp-config.php public_html
これでこのエラーを解消することに成功しました。
mu-pluginのファイルがない
続いて発生したのが、/usr/src/public_html/wp-content/mu-plugins-private
内にあるはずのプラグインがないというエラーです。
ファイルを確認してみると、確かにpublic_html/wp-content/mu-plugins-private
ディレクトリがありませんでした。
% ls -la public_html/wp-content/
total 112
drwxr-xr-x 14 okamotohidetaka staff 448 Mar 18 14:03 .
drwxr-xr-x 6 okamotohidetaka staff 192 Mar 18 14:02 ..
-rw-r--r-- 1 okamotohidetaka staff 1367 Mar 18 13:49 advanced-cache.php
-rw-r--r-- 1 okamotohidetaka staff 72 Mar 18 13:49 db.php
-rw-r--r-- 1 okamotohidetaka staff 444 Mar 18 14:03 debug.log
drwxr-xr-x 3 okamotohidetaka staff 96 Mar 18 13:49 miscellaneous
drwxr-xr-x 35 okamotohidetaka staff 1120 Mar 18 13:53 mu-plugins
drwxr-xr-x 62 okamotohidetaka staff 1984 Mar 18 14:06 plugins
-rw-r--r-- 1 okamotohidetaka staff 2371 Mar 18 13:49 sunrise-events.php
-rw-r--r-- 1 okamotohidetaka staff 26160 Mar 18 13:49 sunrise-wordcamp.php
-rw-r--r-- 1 okamotohidetaka staff 2269 Mar 18 13:49 sunrise.php
drwxr-xr-x 10 okamotohidetaka staff 320 Mar 18 13:53 themes
-rw-r--r-- 1 okamotohidetaka staff 5680 Mar 18 13:49 wp-cache-config.php
drwxr-xr-x 4 okamotohidetaka staff 128 Mar 18 13:49 wp-super-cache-plugins
.docker/config/composer.json
を確認したところ、関係しそうな記述が出てきました。
% git grep 'mu-plugins-private'
.docker/config/composer.json: "public_html/wp-content/mu-plugins-private/{$name}/pub-sync/tmp": ["wporg/wporg-mu-plugins"],
.docker/config/composer.json: "mv public_html/wp-content/mu-plugins-private/wporg-mu-plugins/pub-sync/tmp/mu-plugins/* public_html/wp-content/mu-plugins-private/wporg-mu-plugins/pub-sync",
.docker/config/composer.json: "rm -rf public_html/wp-content/mu-plugins-private/wporg-mu-plugins/pub-sync/tmp/"
Dockerを起動し直して、インストールし直しても良いのですが、力技でいく場合は、.docker/config
でcomposer install
してから、ファイルを直接持ってきましょう。
% cd .docker/config
% composer install
% cd ../../
% cp -R .docker/config/public_html/wp-content/mu-plugins-private public_html/wp-content
起動に成功
いくつかのエラーに遭遇しましたが、ある程度手作業を挟むことで環境の立ち上げに成功しました。
今後WordCampサイトに対してパッチを送りたい方が出てきた場合などに、参考になればと思います。