作業ログの部屋 -7ページ目

作業ログの部屋

いろいろな作業ログを公開。何かの時に便利・・・かも。記録とメモ代わりに。

 

 

AIでいろいろできるので味を占めてCMSを作りたいといったところ、かなり重めなものを提示してきたので、軽めのものを・・と伝えると「Grav」を提案してくれたので、全く知らないものをAIの協力で作れるのか試してみた。

 

 

結果、いろいろ苦労の末、
「静的Webサイト(`/`)とGrav(`/grav`)を共存させる」ことができたので、その最終手順を残しておきます。

 

その前に苦労話

・最初に / にあるコンテンツは残したままで、gravを共存させたいと伝えなかったので、/にgravが構築されてしまい、先のRRDTOOLのグラフが見えなくなってしまった。

・その後、リセットすることなく、対処を続けた結果、なんども同じような設定を繰り返えしては、NGとなることをくりかえすはめに

・最終的には、最初から入れるようにしたところ比較的スムーズにできた。

・が、最後の最後でCSSが読み込めないトラブルに見舞われた。が、AIの助けでなんとか完成

-----

1.Grav環境の初期化(もしすでにある場合)

システムに古い設定やファイルが残ることを防ぐため、Grav環境を一度リセットします。

1)Gravファイルの削除:

    cd /var/www/
    sudo rm -rf grav


2)Nginx設定の最小化:
    `/etc/nginx/sites-available/default` を開き、Gravに関する設定を**すべて削除**し、静的ページのみの最小構成に戻します。
    (以前の履歴を参考に、`location /` ブロックと `root`、`index` のみ残します。)

2.Gravの再インストールと権限設定

1)Gravを再ダウンロード:

    cd /var/www/
    sudo wget https://github.com/getgrav/grav/releases/download/1.7.49/grav-admin-v1.7.49.zip
    sudo unzip grav-admin-v1.7.49.zip
    sudo mv grav-admin grav


2)権限の修正:

    sudo chown -R www-data:www-data grav


3.Nginx設定の最終適用(成功した構成)

Nginxの設定ファイル /etc/nginx/sites-available/default の server { ... } ブロック内に、以下の3つのブロックを追記します。


1)`location /grav` ブロック:
 `alias` で実体パスを指定し、`rewrite` でクリーンURLを `index.php` に強制的に誘導します。

2)`location ~ \.php$` ブロック:
 `SCRIPT_FILENAME` を **`$fastcgi_script_name` と組み合わせ、Nginxの不安定なパス計算を回避します。

【Nginx設定(/etc/nginx/sites-available/default)の内容】※追記部分を太字にしています

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name 192.168.11.109;

    # 静的ページ(/var/www/html)を指す
    root /var/www/html;
    index index.html index.htm index.php;

    # ルートへのリクエストは静的ファイルとして処理
    location / {
        try_files $uri $uri/ =404;
    }
    # ----------------------------------------------------
    # Gravを /grav/ のサブディレクトリで動かすための設定
    # ----------------------------------------------------
    location /grav {
        # alias で Grav の実体パスを明確に指定
        alias /var/www/grav;

        # クリーンURLを全て /grav/index.php にリライトを強制する
        rewrite ^/grav/(.*)$ /grav/index.php;

    }

    # ★★★ Gravアセット(静的ファイル)の処理の最終形 ★★★
    location ~ ^/grav/(assets|images|user/plugins|user/themes|system/assets)/ {
        # locationのパターンからキャプチャしたパスを$asset_pathに格納
        # 例: /admin/themes/grav/css/admin.css
        set $asset_path $1;

        # aliasではなく、rootとrewriteを組み合わせ、絶対パスを強制する
        root /var/www/grav;

        # /grav/ の部分を削除し、ファイルシステム上で探すパスに変換
        # /grav/assets/... → /var/www/grav/assets/...
        rewrite ^/grav/(.*)$ /$1 break;

        try_files $uri $uri/ =404;

    }

    # PHPファイルの処理設定(Gravの実行を最優先)
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;

        # ★★★ SCRIPT_FILENAMEを強制的に正しく計算させる ★★★
        # $fastcgi_script_name が /grav/index.php を受け取ったとき、
        # /var/www/grav/grav/index.php とならないように、/var/www/ をベースにす                        る
        fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
    }

    # Gravのセキュリティ関連設定
    location ~ /grav/(cache|images|logs|tmp|backup|user)/ {
        deny all;
    }

}


4.サービスの再起動と最終確認

1)NginxとPHP-FPMの再起動:

    sudo nginx -t
    sudo systemctl restart nginx
    sudo systemctl restart php7.4-fpm


2)動作確認:
    ブラウザで以下の3点が正常に表示されるか確認します。
      * `http://192.168.11.109/` (静的ページ)
      * `http://192.168.11.109/grav/admin` (管理者画面)
      * `http://192.168.11.109/grav/typography` (クリーンURL)

 

 

今回の経験で、やりたいことを伝えれば、なんのツールを使えばいいのかも、そのツールに設定も、全てAIが教えてくれることがわかった。
ただ、ちゃんとやりたいことを伝えないと中途半端な感じになるので、色々やって最終的に成功した手順をまとめてもらうと、良いかもしれない。