何のためにやったのか?
諸々の事情により、Laravelで作成したアプリを試験するサーバが必要となりました。社内で使ってたさくらサーバではOS/php/Laravel/MySQLなど、客先本番環境に合わせたバージョンをいれるのが難しく、環境構築ができませんでした。(さくらが悪いわけではなく契約内容が自由度が低かっただけだと思います。)そこで、Azureで仮想サーバ立てるくらいのやり方は覚えたてだったので、じゃあFreeBSD入れて必要なもん自分でインストールして構築してみるべえか、とやってみました。
ちなみに自分、この業界に入りたてで自分でサーバも立てたことないやや素人レベルです。おいおいそこ何言ってんのバカジャネーノな箇所があってもいずれ成長していきますので今は優しく見守ってください。
アプリが動くまでに結局何が必要だったか
なんやかんや必要でした。途中までは逐一やったことをbacklogに残してたんですけど、途中でどうにもならんくなって同僚に助けてもらうあたりからログが残せていない。。無念です。
1.Azureダッシュボードから仮想マシン作成。OSはFreeBSD10.4指定。
2.AzureダッシュボードからAzure Database for MySQL作成。
MySQLバージョンは5.6。
SSH、HTTP、HTTPDでのアクセス許可。
IPアドレス指定で1.で建てたサーバからのアクセスを許可した。
このあたりで、マウスでカチカチするだけで仮想サーバ立ち上げとDB作成までできてしまうことに軽く驚きました。
3.足りないモジュールの追加
teratermでサーバに直接入って色々と追加しました。
・perl5.26
・php7.1_20
・apache2.4
・MySQL client 5.6
4.php.ini修正
うろ覚えですが。。単にエラーログを出す設定をしてあげただけだったかな。
・display_errors = On
・error_reporting = E_ALL
5.httpd.conf修正(/usr/local/etc/apache24/httpd.conf)
これが一番大変だったような気がします。.htaccessは使いませんでした。
・ドキュメントルートの修正
・LoadModuleでコメントアウトされているものを外した。
足りないものがあればpkg installで追加した
・Directoryに下記指定追記
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Require all granted
AllowOverride All
確実にエラー発生して調査するだろうと思ってたので下記も追記。
ErrorLog "/var/log/httpd-error.log"
LogLevel debug
phpのソースを読み込んでもらえるように下記追記。
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch .phps$>
SetHandler application/x-httpd-php-source
</FilesMatch>
6.Laravelインストール
ページ下部の参考URLを参照
7..env修正
DBの接続情報を追記。
8.ソースコード配置&テーブル作成
gitで登録しているソースコードをpullして、Larabelインストールした箇所に配置。
A5M2ツールでDB接続してSQL打ってテーブル作成。(phpMyadmin?そんな便利なものは使いません。というかインストール&使い方を知らなかっただけなので次回使ってみます。)
これでようやっとindex.phpの内容が見れるとこまでいけたかな。
めんどくさかったこと
・teratermでサーバに入ってコンソール権限周りのコマンドを打つたびにパスワード打たなきゃいけなかった。自分が知らないだけでやりようがあると思う。
・不足モジュールが判明するたびにpkg searchで探してインストールするのがめんどくさかった。Azureのダッシュボード内でやれてもいいのにな、と思った。
今後の課題
Azure理解不足
「Azureで何ができるか」をあまり理解できてません。今達成したいことの為に必要なものを学ぶスタイルでもいいと思うんですが、それだと限界がありそうです。というわけで会社の金で書籍を買ってもらいました。
機能詳細全てを理解している暇はないので、まずは「何ができるか」レベルで理解する。そんでビジネスの要所で、「それAzureでできるじゃん」という形で必要に応じて理解を深めるスタイルでいきます。
CI/CD環境
現状でもgitと連携はしていますが、pullしたソースを手動で別箇所に配置するといういまいちな運用。反映漏れが発生しそうなので改善どころです。
あとテスト自動化。今回作成したアプリは帳票関連の処理を行うものなんですけども、システムに応じた自動化テストのベストプラクティスを学んでいきたいと思います。
もっと簡単なやりかた
Azureのダッシュボードから新規作成するときに「App Service Web Apps」ってありまして、これを使ってみたい。まずはどういう時にどのサービスを選択するのが適切なのか、ざっと把握するところから進めていこうと思います。
参考URL
■perl
https://yuisoft.com/?p=73
■apache
https://qiita.com/kaz1shuu2/items/1a5b36ab95b975f527e6
http://freebsd.server-manual.com/freebsd8_apache2.html
■MySQL
https://server-setting.info/freebsd/freebsd_mysql.html
■Laravel
https://note.mu/koushikagawa/n/nb69ebe8b3e90