Herokuで簡単なPHPプログラムを動かす


Heroku上で簡単なPHPプログラムを動かします。
こちらの記事は、初学者の方にも分かりやすいよう簡単な説明を心がけています。

## 環境
OS：Windows10 Pro 64bit

## 事前準備

* Herokuにアカウントを作成
* Gitのインストール
* Heroku CLIのインストール

#### Herokuにアカウントを作成
Herokuを利用するにはアカウント登録が必要です。
[https://jp.heroku.com/](https://jp.heroku.com/)
<img width="600px" alt="heroku_hp" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/ce4fc6b8-8762-5809-3d5c-3e78ad44221c.png">

~~なお、無料、有料どちらのプランもありますが、個人で利用する程度ならば無料プランで十分でしょう。無料枠の制限についてはこちらに説明があります。~~
[https://jp.heroku.com/free](https://jp.heroku.com/free)

:::note warn
無料プランは廃止されました。
:::

登録したアドレスにメールが届くので、記載のURLからパスワードを設定します。
初回ログイン時に、以下のような画面が表示されたら "Accept" ボタンを選択します。
<img width="600px" alt="heroku_firstLogin" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/df72abc5-41cf-8d45-2844-87664ae9da93.png">

#### Gitのインストール
Herokuにコードをデプロイする（動かせる状態にする）にはGitが必要ですので、予めインストールしておきます。
[https://git-scm.com/downloads](https://git-scm.com/downloads)
<img width="600" alt="install_git01" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/b71f1402-e8a2-6f2f-75ec-bc8d58e3829e.png">
インストールの手順については、こちらの記事が大変参考になります。
[WindowsにGitをインストールする手順 - Qiita](https://qiita.com/nakazawaken1/items/bbcb4640cf9aceee5745)

インストールが完了したらターミナル（コマンドプロンプト、PowerShell 等）を開きます。

コマンドプロンプトの開き方は、``R``キーと``Windows``キーを同時に押します。すると、「ファイル名を指定して実行」というダイアログが表示されるので、``cmd``と入力し、``Enter``キーを押してください。
<img width="300" alt="open_cmd" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/a4b2fbbf-56ae-1971-d98e-09a50bd45920.png">

コマンドプロンプト上で、以下のコマンドを入力して自分の名前とメールアドレスを設定し、Gitの初期設定を行ってください。

```bash
git config --global user.name "your-git-name"
git config --global user.email "your-email@foo.bar"
```

<img width="400px" alt="git_config" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/701756b6-eea9-a51a-ed12-fdff7232e4ab.png">

#### Heroku CLIのインストール
Heroku Command Line Interface (CLI) を使用すると、Heroku アプリをターミナルから直接、簡単に作成および管理できるようになります。
[https://devcenter.heroku.com/ja/articles/heroku-cli](https://devcenter.heroku.com/ja/articles/heroku-cli)
<img width="600" alt="install_herokuCLI" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/16fafaae-1382-1105-54c9-1f7a4ec8c750.png">

## Herokuでアプリを作成
Herokuにログインして、アプリを作成します。
<img width="600px" alt="heroku_createNewApp" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/e1b89a3e-7378-0971-b9ed-860b39279ea3.png">

アプリの名前を入力し、"Create app" ボタンを選択します。
なお、アプリの名前は一意である必要があります。
<img width="600px" alt="heroku_createNewApp02" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/67cc5215-14c5-41c5-77c6-32b8a4bb54d8.png">

作成したアプリの "Settings" タブを開き、"Buildpacks" の箇所にある "Add buildpack" ボタンを選択します。
<img width="600px" alt="heroku_createNewApp03" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/719fe7f2-b4c2-6aa2-dec0-3657f6efcea7.png">
<img width="600px" alt="heroku_createNewApp04" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/895e5e03-309e-3577-f2ea-ad3da7b98e6c.png">

"php" を選び、"Save changes" ボタンを選択します。
<img width="400px" alt="heroku_createNewApp05" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/a0408c77-ba99-3f9c-4729-a81f79214f08.png">

"Buildpacs" の箇所に "heroku/php" が追加されていることを確認してください。
<img width="600px" alt="heroku_createNewApp06" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/7f4b274a-e7a7-fb7e-184f-65dbff552f3d.png">

## プログラムファイルの作成
ここでは、ドキュメントフォルダにプログラム用の新しいフォルダを作成します。
フォルダ名は、**test**としました。
<img width="400px" alt="make_folder" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/568b2fa8-84dd-a3dd-3fef-9fd4ca64ce10.png">

作成したtestフォルダの中に、テキストエディタ（メモ帳 等）を使って、動かしたいPHPファイルを作成します。
今回は簡単なテストのため、以下のような内容のファイルを作成しました。
※ファイル名は必ず **index.php** としてください。

```php:index.php
<?php
  echo 'Hello';
?>
```

<img width="300px" alt="editor_php" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/f878f170-7d85-8896-f1bd-73cc00762b48.png">


また同様に、同じフォルダに以下の JSON ファイルも作成しておきます。
このファイルがなければ、HerokuにPHPアプリケーションとして認識されません。
※ファイル名は必ず **composer.json** としてください。

```json:composer.json
{}
```

<img width="400px" alt="make_file" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/92c8d2f5-63f4-e5dd-a729-efd07be62a19.png">

## Herokuにデプロイする
testフォルダの中身を、GitでHerokuにデプロイします。

まずターミナルを開いて、ドキュメントフォルダ内の、testフォルダに移動します。
移動するには、``cd``というコマンドを使います。

```bash
cd Documents/test
```

<img width="400px" alt="command_cd" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/3a66c624-fdcb-c0ce-bbbd-1c942fb0cfe5.png">

移動できたら、以下のコマンドでGitを初期化します。

```bash
git init
```

次に、Herokuにログインします。

```bash
heroku login
```
`heroku: Press any key to open up the browser to login or q to exit:`と表示されたら、 ``Q`` 以外のキーを押します。ブラウザが開くのでログインを完了させてください。
<img width="400px" alt="git_herokuLogin" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373295/36f5fbf6-fd18-1ac3-b4b0-2babee207053.png">

ログインが完了したら、Herokuに作成したアプリとGitを連携させます。
以下のコマンドの「アプリ名」の箇所に、先程の**「Herokuでアプリを作成」**で作成したアプリの名前を入力します。

```bash
heroku git:remote -a アプリ名
```

ステージングエリア（コミット（記録）するファイルを置いておくための場所）にファイルを追加します。

```bash
git add .
```

ローカルリポジトリ（保管場所）にコミットします。

```bash
git commit -m "コメント（例: first commit）"
```
通常、コミットする際にはエディタが開いてコメントを記入しますが、``-m``を使用するとエディタを開くことなくコメントを入力できます。

Herokuにデプロイします。

```bash
git push heroku master
```

これで作成したPHPファイルをHeroku上にデプロイしました。
確認するには、以下のコマンドでアプリケーションを開きます。

```bash
heroku open
```
今回の場合は、ブラウザ上に``Hello``と表示されていれば成功です。

PHPファイルの中身を変更した場合は、``git add .``以降と同様の手順でHeroku上のアプリケーションを更新してください。


## 参考サイト
[Heroku スターターガイド(PHP) - Heroku Dev Center](https://devcenter.heroku.com/ja/articles/getting-started-with-php?singlepage=true)
[Heroku の PHPサポート - Heroku Dev Center](https://devcenter.heroku.com/ja/articles/php-support)
[First-Time Git Setup - Git](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)