WordCampサイトをローカル環境を構築しようとした際の覚書

WordPressコミュニティのカンファレンス、WordCampのウェブサイトはWordPressで作られています。GitHubに公開されているソースコードを利用し、ローカル環境で立ち上げる際にはいくつかのエラーに遭遇することがあります。プラグインや設定ファイルの配置に関する手順や注意点を記録しておき、問題が発生した際にはSlackなどでコミュニティと協力して解決していくことが大切です。

広告ここから
広告ここまで

目次

    WordPressコミュニティのカンファレンス、WordCampはウェブサイトももちろんWordPressでできています。

    WordCampサイトのソースコードはGitHubに公開されている

    このWordCampサイト、実は事前に用意されているプラグインやテーマ以外が利用できない作りになっています。サイト編集者としての権限のみ付与されている、マルチサイトを利用しているようなイメージです。

    もしWordCamp専用のプラグインに不具合が見つかって、改善が必要になった場合などは、GitHubに公開されているリポジトリに対してPull Requestを出すことができます。

    https://github.com/WordPress/wordcamp.org

    ローカル環境構築は、GitHubの手順書を見ながらDockerなどで行う

    OSSらしくこのリポジトリのコードを動かす方法などは、GitHubのドキュメントに明記されています。

    https://github.com/WordPress/wordcamp.org/tree/production/.docker

    基本的にはこの手順に従って作業を進めることで、ローカルで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/configcomposer installしてから、ファイルを直接持ってきましょう。

    % cd .docker/config
    % composer install
    % cd ../../
    % cp -R .docker/config/public_html/wp-content/mu-plugins-private public_html/wp-content 

    起動に成功

    いくつかのエラーに遭遇しましたが、ある程度手作業を挟むことで環境の立ち上げに成功しました。

    今後WordCampサイトに対してパッチを送りたい方が出てきた場合などに、参考になればと思います。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark