soybeans59

Forum Replies Created

Viewing 15 posts - 1 through 15 (of 21 total)
  • Author
    Posts
  • soybeans59
    Participant

      フィードバックをヒントにソースコードを追いかけ、本来なら特定の条件の時にのみ advanced-cache.php ファイルが作成されることを確認しました。

      私のケースではHyperDBを利用しているため page-cache.php ファイル内の下記コードの $cache_db->dbname がNULLになり、その結果、advanced-cache.php ファイルがユーザーがサイトにアクセスする度に作成されていました。

      $sql = “SHOW TABLES FROM {$cache_db->dbname} LIKE ‘{$cache_db->prefix}site_cache'”;

      そこで、強制的にdbname=’wordpress’ にすることで毎回作成されないようにしました(念の為、ファイルロックは入れておくことにしました)。貴重なインプットありがとうございました!

      soybeans59
      Participant

        Kusanagiご担当者様

        WP KUSANAGI 1.3.3にバージョンアップ後も、advanced-cache.php でシンタックスエラーとなる事象を確認致しました。

        advanced-cache.php の具体的なシンタックスエラーは以下の部分となります。

        ###PHPコード###

        new SiteManagerAdvancedCache();
        ここから
        foreach ( $this->device_regexes as $group => $regex ) {
        if ( preg_match( $regex, $_SERVER[‘HTTP_USER_AGENT’] ) ) {
        return $group;
        }
        }
        return false;
        }
        }
        new SiteManagerAdvancedCache();
        ここまで
        ###PHPコード###

        new SiteManagerAdvancedCache(); を宣言している下の部分に上記のコード(”ここから”から”ここまで”とかいた部分)が紛れ込むというものです。

        以下、調査結果です。

        advanced-cache.php は kusanagi-core フォルダ内の advanced_cache_tpl フォルダ内の advanced-cache.tpl をベースに作成されていることを確認致しました。また、最終的な advanced-cache.php を生成するには page-cache.php で advanced-cache.tpl をベースとして文字列の置換処理が行われていることを確認致しました。

        トラブル改善に向けての最初の対応は、置換処理中に上記の構文エラーを引き起こす原因が紛れていると調査を進めていたのですが、もろもろ考慮した結果、文字列の置換処理が今回のエラーに直結している可能性は低いと判断致しました(置換処理が上記の構文エラーを引き起こすような処理になっていないはず?)。そこで、最終的に生成したプログラムを advanced-cache.php に書き込む部分に問題があるのではという結論に至りました。

        【対処】
        page-cache.php で advanced-cache.php に書き込み処理をしている部分に対して LOCK_EX オプションを追加致しました。実装は以下の通りです(ログを取得するようにカスタマイズ済)。

        // 出力先ファイルに書き込み(排他ロックを適用)
        $result = @file_put_contents($advanced_cache_file, $advanced_cache_data, LOCK_EX);
        if ($result === false) {
        error_log(“[ERROR] 同時アクセスが発生しました: ” . $advanced_cache_data);
        } else {
        error_log(“[INFO] ファイルの書き込みに成功しました: “);
        }

        結果、bcacheを有効にした日には必ず1度以上は起こっていたシンタックスエラーのトラブルが、現在5日連続で発生していない状況です。

        上記内容を踏まえ、
        ・LOCK_EXを入れることは適切なのか
        ・または別の問題なのか
        ・LOCK_EXを入れることはページ表示速度に影響はないかなど(1つのファイルをロックするので表示速度に影響がある可能性有)

        以上、アドバイスをいただけると助かります。

        soybeans59
        Participant

          上記の件について、現在リリース済みの環境で不具合の原因と思われる箇所にデバッグ機能を入れて動作確認を行なっております。結果が見えてきましたら改めてご報告させていただきます。

          >>上記ファイル更新後、現象が再発するようであれば、ご連絡お願いします。
          アップデート後も再現することを確認済でございます。

          soybeans59
          Participant

            Kusanagi Runs on Docker(1.6.5) スクリプト内で不具合を見つけたので報告致します。fcache 関連のコマンド(on, off, status)を実行する際に以下のエラーがでます(内部的にはfcacheは有効になっているようです)。

            $ kusanagi-docker config fcache status
            grep: $TARGETDIR/.kusanagi.httpd: No such file or directory
            /home/ubuntu/.kusanagi/lib/config.sh: line 61: [: : integer expression expected
            INFO: fcache is off
            INFO: Done.

            下記のファイルの k_fcache 関数の修正が必要のようです。

            lib/config.sh b/lib/config.sh
            修正前: local _t=”$(grep NO_USE_FCACHE= ‘$TARGETDIR/.kusanagi.httpd’)”
            修正後: local _t=”$(grep NO_USE_FCACHE= “$TARGETDIR/.kusanagi.httpd”)”

            AWS EC2 UbuntuOS、MacBook いずれの環境でも同様のエラーが見受けられますので共通のエラーかと思われます。

            ご確認よろしくお願いいたします。

            soybeans59
            Participant

              環境情報を共有致します。

              `
              $ docker version
              Client: Docker Engine – Community
              Version: 24.0.2
              API version: 1.43
              Go version: go1.20.4
              Git commit: cb74dfc
              Built: Thu May 25 21:51:00 2023
              OS/Arch: linux/amd64
              Context: default

              Server: Docker Engine – Community
              Engine:
              Version: 24.0.2
              API version: 1.43 (minimum version 1.12)
              Go version: go1.20.4
              Git commit: 659604f
              Built: Thu May 25 21:51:00 2023
              OS/Arch: linux/amd64
              Experimental: false
              containerd:
              Version: 1.6.21
              GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
              runc:
              Version: 1.1.7
              GitCommit: v1.1.7-0-g860f061
              docker-init:
              Version: 0.19.0
              GitCommit: de40ad0
              `

              `
              $ docker-compose –version
              docker-compose version 1.29.2, build unknown
              `

              `
              primestrategy/kusanagi-ftpd 1.0.10-r0 cea5b6081e8f 11 months ago 424MB
              primestrategy/kusanagi-httpd 2.4.58-r4 234f1ac4ff76 11 months ago 564MB
              primestrategy/kusanagi-nginx 1.24.0-r15 2521b56e418c 11 months ago 522MB
              primestrategy/kusanagi-nginx 1.25.3-r4 64e5db10e708 11 months ago 528MB
              primestrategy/kusanagi-php 8.1.26-r0 ba20117101d1 11 months ago 671MB
              primestrategy/kusanagi-php 8.1.25-r3 f64a5389cb1c 12 months ago 677MB
              primestrategy/kusanagi-nginx 1.25.3-r3 f5979d3b4b00 12 months ago 528MB
              primestrategy/kusanagi-ftpd 1.0.9-r2 2cd512df8772 12 months ago 427MB
              primestrategy/kusanagi-php 7.4.33-r22 0a050e863e45 12 months ago 675MB
              primestrategy/kusanagi-php 8.0.30-r5 dac722d1f988 12 months ago 673MB
              primestrategy/kusanagi-php 8.0.30-r3 9db9dacd74a5 14 months ago 656MB
              primestrategy/kusanagi-php 7.4.33-r20 4a7cd0a2a966 14 months ago 657MB
              primestrategy/kusanagi-nginx 1.23.4-r14 3b7e7f3f3473 14 months ago 501MB
              primestrategy/kusanagi-ftpd 1.0.9-r0 b9c89c0acb15 14 months ago 408MB
              `

              少々カスタマイズをしておりベースとしているイメージは以下になります。
              primestrategy/kusanagi-nginx:1.25.3-r5
              primestrategy/kusanagi-php:7.4.33-r22
              wordpress:cli-2.9.0-php8.3
              primestrategy/kusanagi-ftpd:1.0.10-r0
              データベースは外部のリモートデータベースを利用中

              soybeans59
              Participant

                追加情報です。

                下記のエラーログをPHPコンテナで確認しております。繰り返し以下のログが出ている状況です。上記のシンタックスエラーと関係はございますか?

                [13-Nov-2024 01:49:01 UTC] WordPress database error Incorrect database name ” for query SHOW TABLES FROM LIKE ‘wp_site_cache’ made by KUSANAGI_Page_Cache::create_cache_table
                [13-Nov-2024 01:49:01 UTC] WordPress database error Table ‘wp_site_cache’ already exists for query
                CREATE TABLE wp_site_cache (
                id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
                hash varchar(32) NOT NULL,
                content longtext NOT NULL,
                device_url text NOT NULL,
                type varchar(20) NOT NULL,
                post_type varchar(200) NOT NULL,
                headers text NOT NULL,
                user_agent text NOT NULL,
                server varchar(16) NOT NULL,
                updating tinyint(1) NOT NULL DEFAULT ‘0’,
                create_time datetime NOT NULL,
                expire_time datetime NOT NULL,
                PRIMARY KEY (id),
                KEY hash (hash),
                KEY expire_time (expire_time),
                KEY type (type,post_type),
                KEY updating (updating)
                ) DEFAULT CHARACTER SET utf8mb4 made by KUSANAGI_Page_Cache::create_cache_table
                [13-Nov-2024 01:49:01 UTC] WordPress database error Incorrect database name ” for query SHOW TABLES FROM LIKE ‘wp_site_cache’ made by KUSANAGI_Page_Cache::create_cache_table
                [13-Nov-2024 01:49:02 UTC] WordPress database error Table ‘wp_site_cache’ already exists for query
                CREATE TABLE wp_site_cache (
                id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
                hash varchar(32) NOT NULL,
                content longtext NOT NULL,
                device_url text NOT NULL,
                type varchar(20) NOT NULL,
                post_type varchar(200) NOT NULL,
                headers text NOT NULL,
                user_agent text NOT NULL,
                server varchar(16) NOT NULL,
                updating tinyint(1) NOT NULL DEFAULT ‘0’,
                create_time datetime NOT NULL,
                expire_time datetime NOT NULL,
                PRIMARY KEY (id),
                KEY hash (hash),
                KEY expire_time (expire_time),
                KEY type (type,post_type),
                KEY updating (updating)
                ) DEFAULT CHARACTER SET utf8mb4 made by KUSANAGI_Page_Cache::create_cache_table

                • This reply was modified 1 month, 1 week ago by soybeans59.
                • This reply was modified 1 month, 1 week ago by soybeans59.
                soybeans59
                Participant

                  追加の質問なのですが、advanced-cache.php というファイルは頻繁に書き換えが行われるファイルなのでしょうか?
                  もしその場合、どこで書き換え処理(ファイルの更新)が行われているのか教えていただけると助かります。

                  soybeans59
                  Participant

                    satoru 様

                    ご連絡ありがとうございます。
                    KRoDがバージョンアップされていることを確認し、新しいバージョンのKusanagiプラグインを取得できました。

                    新しいバージョンで検証させていただきます。

                    soybeans59
                    Participant

                      yosuke 様、ご連絡ありがとうございます。
                      提供情報が不足しており申し訳ございません。

                      エラーログとKusanagiの情報などを共有いたします。

                      $ kusanagi-docker status
                            Name                    Command                  State                                                  Ports                                            
                      ---------------------------------------------------------------------------------------------------------------------------------------------------------------
                      wordpress_config   docker-entrypoint.sh wp -- ...   Restarting                                                                                                 
                      wordpress_ftp      /bin/sh -c /docker-entrypo ...   Up                                                                                                         
                      wordpress_httpd    /docker-entrypoint.sh /usr ...   Up (healthy)   0.0.0.0:80->80/tcp,:::80->80/tcp, 8080/tcp, 0.0.0.0:443->8443/tcp,:::443->8443/tcp, 8443/udp
                      wordpress_php      /usr/local/bin/docker-entr ...   Up (healthy)                                                                                               
                      INFO: Done.
                      $ kusanagi-docker --version
                      1.6.2
                      INFO: Done.

                      nginxコンテナ
                      以下のような500エラーを吐いております。
                      {"log":"10.0.31.196 - - [07/Nov/2024:04:38:23 +0000] \"GET / HTTP/1.1\" 500

                      phpコンテナ
                      シンタックスエラーの情報です

                      {"log":"[07-Nov-2024 04:38:30 UTC] PHP Parse error:  syntax error, unexpected '}', expecting end of file in /home/kusanagi/wordpress/DocumentRoot/wp-content/advanced-cache.php on line 239\n","stream":"stderr","time":"2024-11-07T04:38:30.062941601Z"}
                      {"log":"[07-Nov-2024 04:38:30 UTC] PHP Parse error:  syntax error, unexpected '}', expecting end of file in /home/kusanagi/wordpress/DocumentRoot/wp-content/advanced-cache.php on line 239\n","stream":"stderr","time":"2024-11-07T04:38:30.269020456Z"}
                      {"log":"[07-Nov-2024 04:38:31 UTC] PHP Parse error:  syntax error, unexpected '}', expecting end of file in /home/kusanagi/wordpress/DocumentRoot/wp-content/advanced-cache.php on line 239\n","stream":"stderr","time":"2024-11-07T04:38:31.159448671Z"}
                      {"log":"[07-Nov-2024 04:38:31 UTC] PHP Parse error:  syntax error, unexpected '}', expecting end of file in /home/kusanagi/wordpress/DocumentRoot/wp-content/advanced-cache.php on line 239\n","stream":"stderr","time":"2024-11-07T04:38:31.516737511Z"}
                      {"log":"[07-Nov-2024 04:38:34 UTC] PHP Parse error:  syntax error, unexpected '}', expecting end of file in /home/kusanagi/wordpress/DocumentRoot/wp-content/advanced-cache.php on line 239\n","stream":"stderr","time":"2024-11-07T04:38:34.180800412Z"}

                      また、頻繁に advanced-cache.php ファイルの書き換えが行われていることも確認しております。

                      • This reply was modified 1 month, 1 week ago by soybeans59.
                      soybeans59
                      Participant
                        <?php
                        if ( ! defined( 'ABSPATH' ) ) { exit; }
                        if ( is_admin() ) { return; }
                        
                        class SiteManagerAdvancedCache {
                        	private $device_regexes = array(
                        		'smart' => '/\(iPhone|\(iPod|Android .+ Mobile|IEMobile|Windows Phone|Android; Mobile; .+Firefox/',
                        		'tablet' => '/\(iPad| Android |Android; Tablet; .+Firefox/',
                        
                        	);
                        	private $sites = array(
                        
                        	);
                        	private $allowed_query_keys;
                        	private $site_mode = false;
                        	private $theme_switcher_disabled = false;
                        	private $replace_class_file;
                        
                        	function __construct() {
                        		global $table_prefix;
                        		$this->replace_class_file = WP_CONTENT_DIR . '/replace-class.php';
                        		if ( ! isset( $_SERVER['REQUEST_URI'] ) || ! isset( $_SERVER['HTTP_USER_AGENT'] ) || ! isset( $_SERVER['REQUEST_METHOD'] ) || ! isset( $_SERVER['SCRIPT_NAME'] ) || ! isset( $_SERVER['SERVER_NAME'] ) ) { return; }
                        		if ( ! isset( $_SERVER['REQUEST_METHOD'] ) || $_SERVER['REQUEST_METHOD'] != 'GET' ) { return; }
                        		if ( defined( 'CACHE_EXCLUDE_IP' ) ) {
                        			$exclude_ips = explode( '|', CACHE_EXCLUDE_IP );
                        			foreach ( $exclude_ips as $exclude_ip ) {
                        				if ( $_SERVER['REMOTE_ADDR'] == $exclude_ip || preg_match( '/' . preg_quote( $exclude_ip ) . '/', $_SERVER['REMOTE_ADDR'] ) ) {
                        					return;
                        				}
                        			}
                        		}
                        		if ( defined( 'CACHE_EXCLUDE_GET' ) && isset( $_GET[CACHE_EXCLUDE_GET] ) ) {
                        			return;
                        		}
                        		foreach ( array_keys( $_COOKIE ) as $key ) {
                        			if ( strpos( $key, 'wordpress_logged_in_' ) === 0 || strpos( $key, 'comment_author_' ) === 0 ) {
                        				return;
                        			}
                        		}
                        		$this->allowed_query_keys = array( 'm','p','posts','w','cat',略 );
                        
                        		switch ( $this->site_mode ) {
                        		case 'domain' :
                        			$add_prefix = isset( $this->sites[$_SERVER['SERVER_NAME']] ) && $this->sites[$_SERVER['SERVER_NAME']] != 1 ? $this->sites[$_SERVER['SERVER_NAME']] . '_' : '';
                        			$site_id = isset( $this->sites[$_SERVER['SERVER_NAME']] ) ? $this->sites[$_SERVER['SERVER_NAME']] : '';
                        			$table = $table_prefix . $add_prefix;
                        			$this->replace_class_file = WP_CONTENT_DIR . '/replace-class-' . $site_id . '.php';
                        			break;
                        		case 'directory' :
                        			$key = '/';
                        			if ( trim( $_SERVER['REQUEST_URI'], '/' ) ) {
                        				$dirs = explode( '/', trim( $_SERVER['REQUEST_URI'], '/' ), 2 );
                        				$key .= array_shift( $dirs ) . '/';
                        				unset( $dirs );
                        			}
                        			$add_prefix = isset( $this->sites[$key] ) && $this->sites[$key] != 1 ? $this->sites[$key] . '_' : '';
                        			$site_id = isset( $this->sites[$key] ) ? $this->sites[$key] : BLOG_ID_CURRENT_SITE;
                        			$table = $table_prefix . $add_prefix;
                        			$this->replace_class_file = WP_CONTENT_DIR . '/replace-class-' . $site_id . '.php';
                        			break;
                        		default :
                        			$table = $table_prefix;
                        			$site_id = '';
                        		}
                        
                        		if ( $this->theme_switcher_disabled || ( ! $group = $this->get_device_group() ) ) {
                        			$group = '';
                        		}
                        		if ( ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) || ( isset( $_SERVER['X-Forwarded-Proto'] ) && $_SERVER['X-Forwarded-Proto'] == 'https' ) ) {
                        			$protocol = 'https';
                        		} else {
                        			$protocol = 'http';
                        		}
                        
                        		$requerst_query = '';
                        		$request_uri = parse_url( $_SERVER['REQUEST_URI'] );
                        		if ( isset( $request_uri['query'] ) ) {
                        			parse_str( $request_uri['query'], $requerst_query );
                        
                        			foreach ( $requerst_query as $key => $var ) {
                        				if ( ! in_array( $key, $this->allowed_query_keys ) ) {
                        					unset( $requerst_query[$key] );
                        				}
                        			}
                        			ksort( $requerst_query );
                        			$requerst_query = http_build_query( $requerst_query );
                        		}
                        
                        		if ( $requerst_query ) {
                        			$request_uri = $request_uri['path'] . '?' . $requerst_query;
                        		} else {
                        			$request_uri = $request_uri['path'];
                        		}
                        
                        		$device_url = array(
                        			$group,
                        			$protocol,
                        			$_SERVER['SERVER_NAME'],
                        			$request_uri
                        		);
                        		$device_url = implode( '|', $device_url );
                        		$hash = md5( $device_url );
                        
                        		$now = date( 'Y-m-d H:i:s' );
                        		$expire = date ( 'Y-m-d H:i:s', time() - 30 );
                        
                        		if ( defined( 'CACHE_DB_NAME' ) && defined( 'CACHE_DB_USER' ) && defined( 'CACHE_DB_PASSWORD' ) && defined( 'CACHE_DB_HOST' ) ) {
                        			$dbset = array(
                        				'host' => CACHE_DB_HOST,
                        				'user' => CACHE_DB_USER,
                        				'pass' => CACHE_DB_PASSWORD,
                        				'name' => CACHE_DB_NAME
                        
                        			);
                        		} else {
                        			$dbset = array(
                        				'host' => DB_HOST,
                        				'user' => DB_USER,
                        				'pass' => DB_PASSWORD,
                        				'name' => DB_NAME
                        
                        			);
                        		}
                        
                        		$dbh = mysqli_connect(
                        			$dbset['host'],
                        			$dbset['user'],
                        			$dbset['pass'],
                        			$dbset['name']
                        		);
                        		if ( false === $dbh ) { return; }
                        		if ( function_exists( 'mysqli_set_charset' ) ) {
                        			mysqli_set_charset( $dbh, DB_CHARSET );
                        		} else {
                        			$sql = 'set names ' . DB_CHARSET;
                        			mysqli_query( $dbh, $sql );
                        		}
                        		mysqli_select_db( $dbh, $dbset['name'] );
                        
                        		$sql = "
                        SELECT	*
                        FROM	{$table}site_cache
                        WHERE	<code>hash</code> = '$hash'
                        AND		<code>expire_time</code> >= '$expire'
                        ";
                        		$ret = mysqli_query( $dbh, $sql );
                        
                        		if ( $ret ) {
                        			while ( $row = mysqli_fetch_object( $ret ) ) {
                        				if ( $row->device_url == $device_url && ( strpos( $row->content, '<!-- page cached by KUSANAGI. ' ) !== false || strpos( $row->content, '<!-- page cached by WP SiteManager. ' ) !== false ) ) {
                        					if ( $row->expire_time < $now ) {
                        						if ( ! $row->updating ) {
                        							$sql = "
                        UPDATE  {$table}site_cache
                        SET     <code>updating</code> = 1
                        WHERE   <code>hash</code> = '$hash'
                        AND     <code>type</code> = '{$row->type}'
                        AND     <code>expire_time</code> = '{$row->expire_time}'
                        ";
                        							mysqli_query( $dbh, $sql );
                        							break;
                        						}
                        					}
                        					$headers = unserialize( $row->headers );
                        					if ( $headers ) {
                        						foreach ( $headers as $key => $header ) {
                        							header( $key . ': ' . $header );
                        						}
                        					}
                        					if ( $row->updating ) {
                        						header( 'Cache-Control: no-cache' );
                        						header( 'X-B-Cache: updating' );
                        					} else {
                        						header( 'X-B-Cache: cache' );
                        					}
                        					if ( file_exists( $this->replace_class_file ) ) {
                        						require_once( $this->replace_class_file );
                        						$row->content = KUSANAGI_Replace::replace( $row->content );
                        					}
                        
                        					if ( 'rest_api' == $row->type ) {
                        						header( 'X-cache-ID: ' . $row->hash );
                        						echo $row->content;
                        					} else {
                        						echo $row->content;
                        						echo "\n" .'<!-- CacheID : ' . $row->hash . ' -->';
                        					}
                        					exit;
                        				}
                        			}
                        		}
                        		mysqli_close( $dbh );
                        	}
                        
                        	function get_device_group() {
                        		$path = preg_replace( '#^' . str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] ) . '#', '', str_replace( '\\', '/', ABSPATH ) );
                        
                        		if ( isset( $_GET['site-view'] ) ) {
                        			if ( strtolower( $_GET['site-view'] ) == 'pc' ) {
                        				setcookie( 'site-view', 'pc', 0, $path );
                        				return false;
                        			}
                        			foreach ( $this->device_regexes as $group => $regex ) {
                        				if ( strtolower( $_GET['site-view'] ) == strtolower( $group ) ) {
                        					setcookie( 'site-view', $group, 0, $path );
                        					return $group;
                        				}
                        			}
                        		} elseif ( isset( $_COOKIE['site-view'] ) ) {
                        			if ( strtolower( $_COOKIE['site-view'] ) == 'pc' ) {
                        				setcookie( 'site-view', 'pc', 0, $path );
                        				return false;
                        			}
                        			foreach ( $this->device_regexes as $group => $regex ) {
                        				if ( strtolower( $_COOKIE['site-view'] ) == strtolower( $group ) ) {
                        					setcookie( 'site-view', $group, 0, $path );
                        					return $group;
                        				}
                        			}
                        		}
                        
                        		foreach ( $this->device_regexes as $group => $regex ) {
                        			if ( preg_match( $regex, $_SERVER['HTTP_USER_AGENT'] ) ) {
                        				return $group;
                        			}
                        		}
                        		return false;
                        	}
                        }
                        new SiteManagerAdvancedCache();
                        		foreach ( $this->device_regexes as $group => $regex ) {
                        			if ( preg_match( $regex, $_SERVER['HTTP_USER_AGENT'] ) ) {
                        				return $group;
                        			}
                        		}
                        		return false;
                        	}
                        }
                        new SiteManagerAdvancedCache();
                        soybeans59
                        Participant

                          ご連絡ありがとうございます。
                          理由が分かり安心致しました。
                          次回の更新を待っております。

                          soybeans59
                          Participant

                            ご連絡ありがとうございます。

                            >RoD では、SSL証明書の登録が可能です。
                            こちらの方法を検証したいと思います。

                            また、外部データベースを用いたRoDの運用方針が固まって参りましたので、改めて御礼申し上げます。
                            いつも丁寧に迅速にサポート頂きまして、ありがとうございました。

                            今後も利用させていただく際に気になったところはフィードバックさせていただこうと思いますのでよろしくお願いいたします。

                            soybeans59
                            Participant

                              ご返信ありがとうございます。

                              >docker-compose run config sh を実行し、/home/kusanaigi の該当ファイルを削除することで対処してください。
                              こちらの方法で運用したいと思います。

                              soybeans59
                              Participant

                                返信が遅れ申し訳ありません。

                                >上記の件ですが、こちらで再現しません。疎通方法は、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になったようです。
                                貴重な情報ありがとうございました。

                                soybeans59
                                Participant

                                  お世話になります。
                                  返信が遅くなり申し訳ございません。

                                  >>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などがあれば教えていただけると助かります。

                                Viewing 15 posts - 1 through 15 (of 21 total)