KUSANAGI RoD のデータベースに外部のDBを用いる方法
TOP › Forums › インストール(Installing KUSANAGI) › KUSANAGI RoD のデータベースに外部のDBを用いる方法
KUSANAGI RoD のデータベースに外部のDBを用いる方法
Tagged: RoD
- This topic has 19 replies, 2 voices, and was last updated 11 months ago by soybeans59.
-
AuthorPosts
-
-
2023年10月11日 at 10:03 #1282
お世話になります。
KUSANAGI Runs on Dockerのデータベースを localhost 以外(例えば、AWS の RDS)を指定した際に provision 実行時にエラーとなる原因についてご指摘をいただけると助かります。なお、データベースオプション未指定(localhost 指定)時は正常に起動することを確認済みです。
*環境情報
AWS EC2
Ubuntu 22.04
kusanagi-docker 1.5.1
Docker version 24.0.2
docker-compose version 1.29.2*KUSANAGI RoD が正常起動するコマンド例
kusanagi-docker provision –fqdn hogehoge.com –wp –php74 wordpress*KUSANAGI RoD の起動に失敗する外部サーバーを指定する例
kusanagi-docker provision –wp –nginx –php74 –admin-user adminuser –admin-pass adminpass –admin-email mailaddress –dbsystem mysql –dbhost awsdbhost —dbname wordpress –dbuser dbuser –dbpass dbpassword –fqdn hogehoge.com wordpress※Value の値はダミーの文字列に書き換えております
また、今回のケースではすでに作成済みのデータベースを利用したいため、以下のドキュメントの通り、DBNAME/DBUSER/DBPASS を指定しております。
https://github.com/prime-strategy/kusanagi-docker/blob/master/HowToUse_RoD.jp.md上記コマンド実行時のエラー
###
ERROR: Named volume “database:/var/run/mysqld:rw” is used in service “config” but no declaration was found in the volumes section.
ERROR: Failed.
###docker-compose.yml ファイルを確認すると
config
とphp
の2つのサービスの volumes にdatabase:/var/run/mysqld
といった形で指定がされていますが、ymlファイルの最下部のvolumes:
にはkusanagi:
のみが定義されている状況です。その他必要な情報は適宜提供さえていただくことは可能ですので、ご確認いただけると助かります。
よろしくお願い致します。- This topic was modified 1 year, 1 month ago by soybeans59.
- This topic was modified 1 year, 1 month ago by soybeans59.
-
2023年10月13日 at 09:47 #1285
こちら、KUSANAGI RoDのバグのようです。修正を行いますのでお待ちください。
-
2023年10月16日 at 12:37 #1287
お世話になります。
返信ありがとうございます。バグだったようで安心致しました。
12月中に AWS で KUSANAGI RoD の導入&リリースを検討しておりますので、迅速にご対応いただけますと幸いです。 -
2023年11月1日 at 10:54 #1301
お世話になります。
AWS RDS などの外部(リモート)のデータベースに接続するワークアラウンドが見つかりましたのでご連絡致します。
接続がされたという確認のみできた状況です。【以下、対応方法】
運用中のデータベースに対して接続するということが前提で進めているため、アカウント情報などの情報は以下のprovision
時にセット済み1. provisionの実施
`
kusanagi-docker provision –fqdn hogefuga.com –wp –admin-user adminuser –admin-pass adminpass –nginx –php74 –admin-email hogefuga@hogefuga.com –dbsystem mysql –dbname wordpress –dbuser dbuser –dbpass dbpass wordpress
`
2. wp-config.php のhost名を外部 DB に書き換える
3.
kusanagi-docker config push
で更新を反映する以上の手順で外部(リモート)のデータベースに接続がされることを確認いたしました。
なお、上記の対応が適切かは保証できません。バグについて進捗やアップデートがございましたらお知らせいただけますと助かります。
- This reply was modified 1 year ago by soybeans59.
- This reply was modified 1 year ago by soybeans59.
-
2023年11月17日 at 15:08 #1310
先ほど、KUSANAGI RoDの1.6.0をリリースしました。
このリリースで、kusanagi-docker provison –dbost ホスト名を指定した場合に、外部ホストへ接続しWordPressの展開まで行えます。このとき、–dbnameでオプションで指定する名前のdatabase が作成済みで、–dbuser/–dbpassオプションで接続可能である必要があります。もし問題があれば、レポートいただけると幸いです。
-
2023年11月20日 at 18:25 #1311
お世話になります。
ご対応いただきましてありがとうございます。早速アップデートして使ってみたところ、以下のエラーに遭遇しました。
現在オプション指定を最小限にした初期の立ち上げの provision にも失敗する状況でして、外部のデータベース接続以前の部分でエラーとなっております。
また、 provision に出るエラーが EC2 Ubuntu 22.04 と MacOS 上で異なっていることも確認済みです。
アップデート時に追加でやるべきことが漏れているなど環境のセットアップが不適切だった可能性もあり、ご確認いただけると助かります。*EC2 Ubuntu 22.04
$ kusanagi-docker provision --fqdn hogefuga.com --wp wordpress env: ‘database:/var/run/mysqld’: No such file or directory ERROR: yaml.parser.ParserError: expected '<document start>', but found '<block mapping start>' in "./docker-compose.yml", line 27, column 1 ERROR: Failed.
*MacOS
$ kusanagi-docker provision --fqdn wp.localhost --wp wordpress /Users/username/.kusanagi/lib/provision.sh: line 558: ${KUSANAGI_DB_SYSTEM,,}: bad substitution \e[31mERROR: 失敗しました。\e[m
Mac で作業する場合、標準出力の前後に文字化けのようなものが入り込んでくることも確認しております。
以上、ご確認よろしくお願い致します。
-
2023年11月20日 at 19:04 #1312
報告ありがとうございます。
dbhostを指定しない場合に失敗するのはバグでした。KUSANAGI RoD 1.6.1 をリリースしましたので、こちらをご使用ください。Macで文字化けするのは、環境変数TERM に指定した値が色出力に対応していないためだと思います。以下のように、TERMを設定してください。
export TERM=xterm-256color -
2023年11月21日 at 19:43 #1313
お世話になります。
アップデート後、各環境で検証したところ以下の状況でございます。*EC2 Ubuntu 22.04
wordpress_config_runで繰り返しErrorとなってしまう。$ kusanagi-docker provision --fqdn hogefuga.com --wp wordpress mkdir: cannot create directory ‘wordpress’: File exists Starting wordpress_httpd ... done Recreating wordpress_config ... done Recreating wordpress_db ... done Recreating wordpress_php ... done Recreating wordpress_ftp ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done ERROR: 1 Creating wordpress_config_run ... done ERROR: 1 Creating wordpress_config_run ... done ERROR: 1 Creating wordpress_config_run ... done ERROR: 1
コンテナは立ち上がっているようですが、contents ディレクトリなどが展開されておりません。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d33a9fc5b55a mariadb:10.6.16-focal "docker-entrypoint.s…" 3 minutes ago Up 3 minutes wordpress_db ff4f6bdc5753 primestrategy/kusanagi-php:8.1.25-r3 "/usr/local/bin/dock…" 3 minutes ago Up 3 minutes (healthy) wordpress_php 9795b83402d8 primestrategy/kusanagi-ftpd:1.0.9-r2 "/bin/sh -c /docker-…" 3 minutes ago Up 3 minutes wordpress_ftp 2287ad58f8aa wordpress:cli-2.9.0-php8.2 "docker-entrypoint.s…" 3 minutes ago Restarting (0) 41 seconds ago wordpress_config 6cb30993f594 primestrategy/kusanagi-nginx:1.25.3-r3 "/docker-entrypoint.…" 22 minutes ago Up 3 minutes (healthy) 8443/udp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp wordpress_httpd
ymlファイルのみ生成されております。
$ ls wordpress docker-compose.yml
また、DBHOSTをlocalhostで指定すると有効な値を入力してくださいというエラーが出る状況です。
$ kusanagi-docker provision --fqdn hogefuga.com --dbhost localhost wordpress ERROR: option: --dbhost localhost: please input valid hostname. ERROR: Failed.
*MacOS
Macbook は前回と同じ状況です。$ kusanagi-docker provision --fqdn wp.localhost wordpress /Users/username/.kusanagi/lib/provision.sh: line 558: ${KUSANAGI_DB_SYSTEM,,}: bad substitution \e[31mERROR: 失敗しました。\e[m
ご確認よろしくお願い致します。
-
2023年11月22日 at 10:07 #1314
報告ありがとうございます。
> wordpress_config_runで繰り返しErrorとなってしまうこれは、以下のエラーの通り、wordpressディレクトリがすでに存在するため発生します。
> mkdir: cannot create directory ‘wordpress’: File exists一度、kusanagi-docker remove wordpress を実行し、一度削除してから再度実行してください。
> Macbook は前回と同じ状況です。
ここでエラーが出る場合は、bash のバージョンが古いことが原因です。
MacOS Xの場合、OSにインストールているbashのバージョンが古いため、homebrewなどで最新のbashをインストールする必要があります。上記の件、お試しいただければと思います。
-
2023年11月22日 at 19:07 #1315
ご返信ありがとうございます。
>一度、kusanagi-docker remove wordpress を実行し、一度削除してから再度実行してください。
こちらの対応でひとまずコンテナが立ち上がることを確認できました。
忙しい中迅速にご対応いただきまして、ありがとうございます。追加の質問となるのですが、バージョン 1.5.1 ではfqdnで指定したアドレスにアクセスができていた以下のコマンドが 1.6.1 で実行するとアクセスができなくなる(502 Bad Gateway)事象が発生しております(本件が解決していないため外部DBへの接続検証ができておりません。申し訳ありません)。ただい、Public IPをfqdnに指定し、Public IP からのアクセスであれば接続ができることを確認済みです。
kusanagi-docker provision --fqdn hogehoge.com --wp wordpress
おそらくコンテナはすべて立ち上がっております。
*コンテナ一覧
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 98c30eb694ca primestrategy/kusanagi-ftpd:1.0.9-r2 "/bin/sh -c /docker-…" 3 minutes ago Up 3 minutes wordpress_ftp 651cfb7a23ee primestrategy/kusanagi-php:8.1.25-r3 "/usr/local/bin/dock…" 3 minutes ago Up 3 minutes (healthy) wordpress_php 9de0741bfd8d mariadb:10.6.16-focal "docker-entrypoint.s…" 3 minutes ago Up 3 minutes wordpress_db bcc236fdd31a wordpress:cli-2.9.0-php8.2 "docker-entrypoint.s…" 3 minutes ago Restarting (0) 35 seconds ago wordpress_config 0d275bed92a0 primestrategy/kusanagi-nginx:1.25.3-r3 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes (healthy) 8443/udp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp wordpress_httpd
上記のコンテナは AWS EC2 のサーバーで立ち上げており、ロードバランサーで接続しております。1.5.1の方では wordpress_httpd コンテナに対してヘルスチェックのリクエストが届いておりましたが、1.6.1 ではリクエストすら届いていない状況でした。バージョンの違いによる影響はどのあたりにありますでしょうか?
また、PHP や Nginx のバージョンを指定するフォーマットをご教授いただけますでしょうか(フォーラム内で「kusanagi-docker」で検索しヒットしないことを確認しております)。
DockerHub の以下のリポジトリのタグを参照にバージョンを指定しておりますが、「invalid reference format」となってしまいます。
https://hub.docker.com/r/primestrategy/kusanagi-nginx
https://hub.docker.com/r/primestrategy/kusanagi-php以下のバージョンは 1.5.1 のときにデフォルトで使われていたバージョンを指定しております。
$ kusanagi-docker provision --fqdn hogehoge.com --wp --nginx=1.23.4-r14 --php=7.4.33-r22 wordpress Creating network "wordpress_default" with driver "bridge" Creating volume "wordpress_kusanagi" with default driver Creating volume "wordpress_database" with default driver ERROR: invalid reference format ERROR: Failed.
追加の質問など発生しており申し訳ありませんが、ご確認いただけると助かります。
-
2023年11月25日 at 16:40 #1316
> 追加の質問となるのですが、バージョン 1.5.1 ではfqdnで指定したアドレスにアクセスができていた以下のコマンドが 1.6.1 で実行するとアクセスができなくなる(502 Bad Gateway)事象が発生しております
上記現象は、docker-compose を再起動すると直る場合があります。docker-compose の再起動は、wordpress ディレクトリ上で
docker-compose down && docker-compose up -d
を実行します。一度再起動してみてください。> また、PHP や Nginx のバージョンを指定するフォーマットをご教授いただけますでしょうか
上記はバグの可能性があります。調査に少々時間をいただきます。
暫定処置としては、docker-compoose.yml の image 部分を修正し、docker-compose を再起動してください。
なお、php7.4およびphp8.0 はセキュリティサポートが終了したバージョンになります。新たな環境を作成する場合は、php8.1 以上をお使いください。 -
2023年11月25日 at 16:40 #1317
> 追加の質問となるのですが、バージョン 1.5.1 ではfqdnで指定したアドレスにアクセスができていた以下のコマンドが 1.6.1 で実行するとアクセスができなくなる(502 Bad Gateway)事象が発生しております
上記現象は、docker-compose を再起動すると直る場合があります。docker-compose の再起動は、wordpress ディレクトリ上で
docker-compose down && docker-compose up -d
を実行します。一度再起動してみてください。> また、PHP や Nginx のバージョンを指定するフォーマットをご教授いただけますでしょうか
上記はバグの可能性があります。調査に少々時間をいただきます。
暫定処置としては、docker-compoose.yml の image 部分を修正し、docker-compose を再起動してください。
なお、php7.4およびphp8.0 はセキュリティサポートが終了したバージョンになります。新たな環境を作成する場合は、php8.1 以上をお使いください。 -
2023年11月29日 at 19:02 #1322
お世話になります。
Kusanagi docker 1.6.2 で検証致しました。>上記現象は、docker-compose を再起動すると直る場合があります。docker-compose の再起動は、wordpress ディレクトリ上で docker-compose down && docker-compose up -d を実行します。一度再起動してみてください。
こちら検証致しましたが、改善が見られませんでした。
以下のコマンドを順に実行:kusanagi-docker provision --fqdn hogehoge.com --wp wordpress docker-compose down && docker-compose up -d
>上記はバグの可能性があります。調査に少々時間をいただきます。
1.6.2 で修正されたことを確認したため検証致しました。以下のようにNginxとPHPのバージョンを kusanagi-docker 1.5.1 で指定されていたバージョンでコンテナを起動するとすると hogehoge.com からのアクセスが可能であることを確認致しました。
kusanagi-docker provision --fqdn hogehoge.com --wp --nginx=1.23.4-r14 --php=7.4.33-r22 wordpress
また、以下もアクセス可能であることを確認致しました。
kusanagi-docker provision --fqdn hogehoge.com --wp --nginx=1.23.4-r14 wordpress
kusanagi-docker provision --fqdn hogehoge.com --wp --nginx1.24 wordpress
Nginx のバージョンが 1.25 のときにアクセス不可となることを確認いたしました。
kusanagi-docker provision --fqdn hogehoge.com --wp --nginx1.25 wordpress
そのため、Nginxのバージョンの違いによる影響がどこにあるのか気になっております。
*dbhostのオプションを追加指定
上記でアクセス可能であることを確認した3つの nginx と PHP のバージョンを指定し、dbhost についての情報も追加し以下のコマンドを実行したところ、
途中でchmod: ./wp-content/uploads: No such file or directory
と出てしまう状況です。kusanagi-docker provision --fqdn hogehoge.com --wp --nginx=1.23.4-r14 --php=7.4.33-r22 --dbsystem mysql --dbhost host --dbname wordpress --dbuser user --dbpass pass wordpress Creating network "wordpress_default" with driver "bridge" Creating volume "wordpress_kusanagi" with default driver Creating wordpress_config ... done Creating wordpress_httpd ... done Creating wordpress_php ... done Creating wordpress_ftp ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Successfully copied 6.66kB to 474d29e1fcdb70a3d805110abc54d48c1b3a1e5368bffedff91af8b64257ace2:/home/kusanagi/wordpress Successfully copied 2.56kB to 474d29e1fcdb70a3d805110abc54d48c1b3a1e5368bffedff91af8b64257ace2:/home/kusanagi/wordpress Successfully copied 12.8kB to 474d29e1fcdb70a3d805110abc54d48c1b3a1e5368bffedff91af8b64257ace2:/home/kusanagi/wordpress Successfully copied 3.58kB to 474d29e1fcdb70a3d805110abc54d48c1b3a1e5368bffedff91af8b64257ace2:/home/kusanagi/wordpress Creating wordpress_config_run ... done Downloading WordPress 6.4.1 (en_US)... Warning: Failed to create directory '/.wp-cli/cache/': mkdir(): Permission denied. md5 hash verified: 5f9044e6b3f78f1bbdf85fed0244f778 Success: WordPress downloaded. Success: Generated 'wp-config.php' file. WordPress is already installed. Successfully copied 261kB to 474d29e1fcdb70a3d805110abc54d48c1b3a1e5368bffedff91af8b64257ace2:/home/kusanagi/wordpress/DocumentRoot/wp-content Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done Creating wordpress_config_run ... done chmod: ./wp-content/uploads: No such file or directory ERROR: 1 ERROR: Failed.
dbhostの情報を追加した状態で途中でスクリプトがエラーになる原因についてご確認いただけると助かります。
以上、よろしくお願い致します。
- This reply was modified 12 months ago by soybeans59.
- This reply was modified 12 months ago by soybeans59.
-
2023年11月30日 at 15:47 #1325
> Nginx のバージョンが 1.25 のときにアクセス不可となることを確認いたしました。
> kusanagi-docker provision –fqdn hogehoge.com –wp –nginx1.25 wordpress
>
> そのため、Nginxのバージョンの違いによる影響がどこにあるのか気になっております。上記の件ですが、こちらで再現しません。疎通方法は、curl -v http://IPアドレス/ で200 OKを返していることを確認しています。
すいませんが、どのような方法で疎通確認を行っているか、ご教授ください。> dbhostの情報を追加した状態で途中でスクリプトがエラーになる原因についてご確認いただけると助かります。
こちら、指定したデータベースに WordPressで使用するテーブル( wp_ で始まるテーブルすべて)が存在する場合に、WordPressのプロビジョンが失敗するために発生します。データベース内のテーブルを削除してから kusanagi-docker provison を実行してください。
-
2023年12月7日 at 16:19 #1328
お世話になります。
返信が遅くなり申し訳ございません。>>MacOS Xの場合、OSにインストールているbashのバージョンが古いため、homebrewなどで最新のbashをインストールする必要があります。
以前返信をいただいておりましたこちらの件、確かにBashのバージョンを上げることで解決致しました。>>上記の件ですが、こちらで再現しません。疎通方法は、curl -v http://IPアドレス/ で200 OKを返していることを確認しています。
再度検証いたします。結果がまとまり次第ご連絡させていただきます。>>こちら、指定したデータベースに WordPressで使用するテーブル( wp_ で始まるテーブルすべて)が存在する場合に、WordPressのプロビジョンが失敗するために発生します。データベース内のテーブルを削除してから kusanagi-docker provison を実行してください。
wp_などで始まるテーブルが存在する既存の外部のデータベースにはプロビジョンでは接続できないという理解であっておりますか?
また、上記の仕様を踏まえますと、Kusanagi Runs on Dockerが動いているサーバーをスケールする(サーバーの台数を増やす(負荷分散))運用が生じる場合、プロビジョンではなく、contents フォルダなどのベースとなるコードセットがある前提でdocker-compose up -d
を実施後、kusanagi-docker config push
でコードのリリースという運用になるのでしょうか?
スケールを考慮したTipsなどがあれば教えていただけると助かります。 -
2023年12月7日 at 17:12 #1329
> wp_などで始まるテーブルが存在する既存の外部のデータベースにはプロビジョンでは接続できないという理解であっておりますか?
あっています。kusanagi-docker provision –wp コマンドは、あくまでも WordPress の環境を設定するものです。また、docker-compose では Scale In/Out の機能は実装していません。
単純にALB配下にdocker host を追加したい場合は、上位の認識通りで、ディレクトリコピー、docker-compose up -d
、kusanagi-docker config push
を実行します。Scale In/Out を使用する場合 docker swarm を使用する方法があります。
https://docs.docker.jp/swarm/toc.html
KUSANAGI RoD 作成当時は、docker swarmは廃止の方向だったため採用していません。しかし、現在もdocker swarmは廃止されることなく提供されているため、こちらを使用する方法もあります。
また、AWSをお使いの場合、ECS/Fargate を用いてdocker-compose の内容をもとに、環境構築と運用をできるようです。ただし、こちらではこの方法は未検証です。
-
2023年12月8日 at 17:17 #1330
追加情報です。
docker-compose で ecs を使用する方法は、つい最近(2023/11)にEOLになったようです。 -
2023年12月21日 at 19:01 #1341
返信が遅れ申し訳ありません。
>上記の件ですが、こちらで再現しません。疎通方法は、curl -v http://IPアドレス/ で200 OKを返していることを確認しています。
>すいませんが、どのような方法で疎通確認を行っているか、ご教授ください。
AWSのロードバランサーの下に接続するターゲットグループのプロトコルをHTTPにすることで接続ができることを確認いたしました。プロトコルがHTTPSだとKusanagi RoD に接続ができませんでした(こちらの原因と詳細は詰めれておりません)。RoDでも以下のURL先のようにSSL証明書の発行オプションの用意はないのでしょうか。
https://kusanagi.tokyo/document/commands/ssl/
>単純にALB配下にdocker host を追加したい場合は、上位の認識通りで、ディレクトリコピー、docker-compose up -d、kusanagi-docker config push を実行します。
ありがとうございます。こちらの方法で対応しようと思います。>また、AWSをお使いの場合、ECS/Fargate を用いてdocker-compose の内容をもとに、環境構築と運用をできるようです。ただし、こちらではこの方法は未検証です。
>docker-compose で ecs を使用する方法は、つい最近(2023/11)にEOLになったようです。
貴重な情報ありがとうございました。 -
2023年12月22日 at 10:08 #1342
RoD では、SSL証明書の登録が可能です。
kusanagi-docker ssl --cert 証明書ファイル --key 鍵ファイル
ただし、RoDでは Let’s Encryptを使用した証明書の更新には対応していません。ご注意ください。
-
2023年12月25日 at 10:59 #1347
ご連絡ありがとうございます。
>RoD では、SSL証明書の登録が可能です。
こちらの方法を検証したいと思います。また、外部データベースを用いたRoDの運用方針が固まって参りましたので、改めて御礼申し上げます。
いつも丁寧に迅速にサポート頂きまして、ありがとうございました。今後も利用させていただく際に気になったところはフィードバックさせていただこうと思いますのでよろしくお願いいたします。
-
-
AuthorPosts
- You must be logged in to reply to this topic.
- Topic Tags
- RoD