PHPの無料お試しサーバを探したらAzureAppServiceに行き着いたメモ

## 概要
PHPのslimフレームワークを少し試したいなと考えて無料サーバを探したけれど、
検索上位の環境はのきなみHTTPS化できなかった。
最終的にAzureにたどり着いたのでそこに至るメモ。

[この時点のソース](https://github.com/hibohiboo/azure-php/tree/ab54adba95ea7a45163e419e2694ab705dbf4de4)


## 対象読者
MySQL使わなくてもよい、PHPの勉強中の人。お金のない学生とか。


WordPressを無料で使いたい人は対象外。
調べたり勉強する手間より、有料プランにして無料SSL一発適用がコスパよいと思う。
[今まで無料範囲で構築できたGCP](https://qiita.com/ulwlu/items/dbb0db5cf7099b7a7cc4)も規約変更で月300円くらいかかるそうですし。

## やりたいこと
* PHPの動作環境
* HTTPSでのアクセス
  * 最近はHTTPでは使えないjavascript apiもあったりするので。(例: [clipboardの操作](https://developer.mozilla.org/ja/docs/Web/API/Clipboard#clipboard_availability))

## 比較検討
* 無料PHPはWordPressをメインの対象にしているっぽい
* MySQLが入っているのはAMP(Apache,MySQL,PHP)環境が一時期流行ってたからかと
* xfreeはphp用とwordpress用でスペックに差があった。もうwordpressしか力を入れていないのかもしれない。
* △ ... xreaは1年間は`.shop`ドメインでhttps可能
  * 1年後は`.shop`ドメインが有料になるため、完全無料とは言えない


サービス|容量|PHP|MySQL|HTTPS
--|--|--|--|--
[netowl](https://www.star.ne.jp/free/functions.php)|2000M|7.4|5.7|×
[xfree](https://www.xfree.ne.jp/) - PHP|1000M|7.1|5.0|×
xfree- WordPress|2000M|7.4|5.7|×
[xrea](https://www.xrea.com/plan/)|2000M|8.0|5.7|△
[AppService](https://docs.microsoft.com/ja-jp/azure/app-service/configure-language-php?pivots=platform-linux)|1000M|7.4|-|〇

## Azure APP ServiceでSlimを動かしてみたメモ
以下のドキュメントに従って構築した。

* [Azure App Service に PHP Web アプリを作成する](https://docs.microsoft.com/ja-jp/azure/app-service/quickstart-php?pivots=platform-linux)
* [Azure App Service 向けの PHP アプリを構成する](https://docs.microsoft.com/ja-jp/azure/app-service/configure-language-php?pivots=platform-linux)

### 前提条件

* Azureの[無料アカウント](https://azure.microsoft.com/ja-jp/free/?ref=microsoft.com&utm_source=microsoft.com&utm_medium=docs&utm_campaign=visualstudio)を取得していること。
* [azure-cli](https://community.chocolatey.org/packages/azure-cli)がインストールされていること
  * 割と頻繁に更新されるので、[chocolateyでのインストール](https://qiita.com/konta220/items/95b40b4647a737cb51aa)がおススメ
* gitが使えること

ログインしておくこと

```
az login
```


### デプロイユーザの構成
gitでデプロイするためのユーザを作成する。

```
az webapp deployment user set --user-name hogeDeployUser --password fugapasssword
```

### Resouce Groupの作成

AppServicePlan,AppSeriveをまとめるためのコンテナを作成。

```
az group create --name freeHogeGroup --location "Japan East"
```

### App Service Planの作成
アプリケーションの動作環境を作成

```
az appservice plan create --name freeHogeAppServicePlan --resource-group freeHogeGroup --sku FREE
```


### App Serviceの作成
アプリケーションを作成

```
az webapp create --resource-group freeHogeGroup --plan freeHogeAppServicePlan --name freeHogeAppService --runtime "PHP|7.4" --deployment-local-git
```

実行すると、以下のようにgitのパスが表示されるので控えておく。

```
Local git is configured with url of 'https://hogeDeployUser@freeHogeAppService.scm.azurewebsites.net/freeHogeAppService.git'
```

### gitからAzureへのpush

#### ファイルの準備
[Azure App Service 向けの PHP アプリを構成する](https://docs.microsoft.com/ja-jp/azure/app-service/configure-language-php?pivots=platform-linux)を参考にgitに必要なファイルをコミットしておく。

* [リポジトリサンプル](https://github.com/hibohiboo/azure-php/tree/ab54adba95ea7a45163e419e2694ab705dbf4de4)
  * `.htaccess`の設定で、publicフォルダをwwwルートにしている
  * slim,twigのインストール(composerに書かれたライブラリはgit push するとサーバ側で自動的にインストールされる）

#### リモートリポジトリの登録

デプロイ用のgitリポジトリを登録する。

```
git remote add azure https://hogeDeployUser@freeHogeAppService.scm.azurewebsites.net/freeHogeAppService.git
```

#### デプロイ
初回はパスワードを求められる

```
git push azure
```

#### 確認
作成されたAPPServiceをみると、デプロイ先のURLを確認できる。
[デプロイされたHPの確認](https://az-php-app.azurewebsites.net/)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/4f0e34aa-d931-e53e-19fe-6148ed3067c0.png)

#### デプロイ先のフォルダ確認
以下のコマンドを入れると、ブラウザが立ち上がり、
デプロイ先のAppServiceのコンソールにアクセスできる。
`/home/site/wwwroot/`ディレクトリにgitでpushした中身が入っている。
`vendor`ディレクトリがあるので、きちんとcomposerが動作していることが分かる。


```
az webapp ssh -n freeHogeAppService -g freeHogeGroup 
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/39fe6891-d5e3-1794-90cf-e6558cd28d2d.png)

なお、gitのコミットで消したファイルも、デプロイ先では残っていたりするので時々様子見したほうがいいかも。

## 余談

netowlの無料プランの管理画面の入り口って初見殺しじゃないですかね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/67267b4b-82e5-1ee2-9910-e1cfe45ef924.png)


## 参考

[無料レンタルサーバーXFREEで無料SSL化は可能か？【WordPress・ブログ作成初心者】②](https://rubirubi.hateblo.jp/entry/xfree-ssl2)

[Azure App Service に PHP Web アプリを作成する](https://docs.microsoft.com/ja-jp/azure/app-service/quickstart-php?pivots=platform-linux)
[Azure App Service 向けの PHP アプリを構成する](https://docs.microsoft.com/ja-jp/azure/app-service/configure-language-php?pivots=platform-linux)
[az webapp ssh](https://docs.microsoft.com/ja-jp/cli/azure/webapp?view=azure-cli-latest#az_webapp_ssh)Service
[slim](https://www.slimframework.com/docs/v3/start/installation.html)