PHPを静的サイトジェネレータとして使う
tl;dr
- Static Site Generater を使わなくても PHP だけでも簡単なものは作れるぞ
- ツールのインストールしなくても Linux だとデフォルトで入っていることが多いのでツールのインストールがいらない
- PHPはテンプレートエンジンです
最近仕事でサーバーの調査などをしてたら、会社のホームページが以下のような構成になっていた。
主な技術スタック
- EC2
- CentOS
- nginx
- php-fpm
問題点
- 会社のHPは重い処理をするわけでもなく、アクセスが多いわけでもないのでEC2で動かすほどでもない
- 会社のサービスが動いているサーバーと同居しているので、サーバーが落ちるとサービスとホームページ両方とも見れなくなる
- 更新はほぼされないが、ミドルウェアなどのアップデートしないといけない
中身を見ると動的に中身を変更したいというわけではなく、ヘッダーとフッターをインクルードしているだけだった。 それならば html ファイルにしてまとめてしまえば問題ないかなと考えた。
そこまで考えれば静的サイトとして作ってしまおうと考えた。
候補
しかし、すでにある php ファイルを乗せ換えるのも面倒だった。
そこで思いついたのが、既存の php ファイルを実行して、html を生成して、それを hosting すれば解決なのではということに気づいた。
最近では php をテンプレートエンジンとして使う人はあまりいないと思うが、もともとはテンプレートエンジンだし正しい使い方なのではという気持ちになった。
新環境の主な技術スタック
- PHP
- GithubActions
- Firebase Hosting
CI/CD フロー
- master branch の更新をフックに GithubActions が実行
- PHP実行して html ファイル生成
- 生成したファイルを Firebase Hosting へアップロード
結果
これで、サーバーの同居問題、ミドルウェアのアップデートから解放された。またアクセスを見ても Firebase Hosting の無料枠で収まっており追加でお金もかからない。また、副産物として、証明書の管理からも解放された。
教訓としては、解決したい問題に向き合ってできるだけスマートに問題を解決するにはたくさんの選択肢を持ちそこから適切な手段を選びましょう。