Open1

PHPでサクッとWebアプリを開発

naonao

Laravelが難所過ぎた

Laravelで開発するのが王道だろうと思ってLaravelのnone,breeze,jetstreamのうちログインの機能を用意しているbreezeを選択した。

最初にbreezeを選択したのが間違いだった

学習コストが高すぎ。
最初にログイン機能もついてないプレーンなものを選ぶべきだった。フレームワークの学習をしたらそもそもWebの基本を押さえられないような気がしたため、フレームワークなしでPHPで開発することを決める。

Apacheの設定がやばい

PHPは分かりやすい言語だったため、csrf対策、xss対策等やってみたけど、大丈夫そうだった。問題はapache。ページ遷移したときにForbiddenになるわ、URLの.php拡張子をなくしたいけどそれのrewriteの設定や色々が結構大変だった。これらを学べてよかった。

dockerが必要だった

1週間か2週間程度で完成し、いざデプロイしようとしたらHerokuは無料枠を終了していたため、Renderに切り替え。しかし、RenderはGitから直接デプロイはできるが、これではDBとかApacheの設定はどうするんだ?と思い、dockerが必要だったことに気づいた。のちにDBはpostgreSQLを使えばrenderにpostgreSQLを置いて、そのdbに接続するようにしたらよかった。しかしapacheはどうするんだ?これはまたのちに必要なときに調べようと思った。
そしてdockerがまためちゃくちゃ難しい。これに学習が1週間~2週間以上取られた。正直dockerはどこでも使える技術なのでここで学べてよかった。
PHP+apacheをイメージとしてdockerHubに上げて、dockerHubに上がったイメージをデプロイするという感じでrenderにはデプロイできた。

開発はMySQLを使っていたが、本当はPostgreSQLが必要だった。

XAMMPと言われているとおり、MySQLで開発をした方がPHPの情報が多いと思って開発をしていたが、renderがサポートしていたDBはpostgresのみだったため、急遽本番はpostgresを使用した。
それほどSQLの書き方に違いがなくてよかった。

無事にrenderにリリース

正直render以外にリリースができるサービスはHeroku以外に調べた感じだと、GCP、firebase、Azure(Azureは正直.NET用だと思ってたけど違う感じらしいぞ)、レンタルサーバー(ロリポップ、conoha、さくら色々)だが、料金体制をよく読まないときつい。完全無料はrenderくらいじゃないか?
renderは無料プランだとクッソ遅い。
あと、サーバーに画像ファイルをアップロードして、アクセス権限で一時ファイルをいじれないみたいなアクシデントがあったが、一応dockerfileのCOPYでchmod 777を施してなんとか一時的にアップロードできるようにはなったが、如何せんrenderが再起動をした際にサーバーに上げたファイルにアクセスできずブラウザに表示できないという問題が今の問題で、これが解決するためにはどうしたらよいかは今現在進行形で抱えている問題。