nakamurakko’s diary

仕事で覚えたこと、勉強したことを自分のメモ代わりに書いていこうかなと。

Azure DevOps その4 Azure App Service(Laravel)からAzure MySQLに接続する

前提

チュートリアルを参考にする

AzureでLaravelアプリケーションのAppサービスからMySQLに接続する方法は、Microsoftのサイトチュートリアル:Azure で PHP と MySQL アプリを構築するを参考に作業すれば、基本的には接続出来るようだ。

接続のポイント

チュートリアルの中でAzure MySQL接続で参考にしたものをいくつかまとめてみた。

ファイアウォール設定

サーバーのファイアウォールを構成するには開始 IP と終了 IP の両方が 0.0.0.0 に設定されている場合、ファイアウォールは他の Azure リソースに対してのみ開かれます。と書かれている。 ただ、チュートリアルが古いのか、今はファイアウォールに「0.0.0.0」を登録しなくても接続出来た。

もし設定が必要な場合は、 対象のAzure MySQLの「接続のセキュリティ」を開いて、IPアドレスに「0.0.0.0」を登録する。

f:id:nakamurakko:20200118161040p:plain

SSL証明書

SSL 証明書を構成するを参考に、SSL証明書をダウンロードして、database.phpに使用するSSL証明書のファイル名を記載する。

今回、DockerでLaravelのAppサービスを作成するので、gitにSSL証明書をコミットして、Dockerfileにもコピー処理を記述しておく。

COPY BaltimoreCyberTrustRoot.crt.cer /var/www/html/Application/BaltimoreCyberTrustRoot.crt.cer

コピー先は.envと同じ場所にすれば問題ないと思う。gitにコミットせず、curlで直接ダウンロードしてもいいと思う。

チュートリアル以外の設定

現状選択出来るAzure MySQLの最新バージョンは8.0で、新しめのバージョンに接続する場合はstrictモードをオフにする必要があるので、database.phpを変更する。

参考:MySQL 5.6 で「General error: 1364 Field ‘xxx’ doesn’t have a default value」が出る問題の解決方法

'mysql' => [
    'strict' => false,
],

確認

後は、ビルドを走らせて、Appサービスでデータ取得の確認が出来れば完了。