Githubに置いてあるプロジェクトをAzure App Serviceで動かそうとしたのだけど、思ったより苦労してしまったのでメモ。とりあえず作業のみ。ちなみにLaravel のバージョン5.6.23でした。
1. GithubにLaravelプロジェクトをプッシュする
まず、新しくLaravelプロジェクトを作ります。
Laravel new laravelapp
そしてこれをとりあえずGithubに突っ込んでおきましょう。
2. Azure App Serviceで新しいアプリを作成する
無料プランで使おうと思った場合、Windowsを選択する必要がああります。
3. アプリケーションの設定を行う
設定項目は下記の通り。
全般設定
phpのバージョン 7.1
アプリケーション設定
APP_KEY base64:AwYPHtuaOUQIUjAGVCwNg8/jEboqexg1q
APP_DEBUG true
SCM_REPOSITORY_PATH ..\repository
SCM_TARGET_PATH ..
なお、ここでAPP_KEYは下記のようにして生成します。
php artisan key:generate --show
仮想アプリケーションとディレクトリ
/ site\public
デプロイオプションとして、Githubの上記プロジェクトを指定
4. MySQL in App
せっかくなのでMySQL in Appを使用しますオンにします。
5. MySQL接続情報の取得
「開発ツール」の「コンソール」を開き、下記のようなコマンドで、接続情報を取得できます。
> cd d:\home\data\mysql
d:\home\data\mysql
> cat MYSQLCONNSTR_localdb.txt
Database=localdb;Data Source=127.0.0.1:<ポート>;User Id=azure;Password=<パスワード>
6.ソースコードの修正
上記接続情報をソースに反映させます。
.envとdatabase.phpに反映させれば多分大丈夫。
web.configの生成
IISでは.htaccessが使えないので、web.configを下記のように設定します。
<configuration> <system.webServer> <handlers accessPolicy="Read, Execute, Script"> </handlers> <rewrite> <rules> <rule name="Rules for laravel" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
7. Githubにコミット
上記修正したファイルをコミットします
migrate
Azureのコンソールから
php artisan migrate
以上で、動くはず。
参考にしたサイト