Site icon Tips Note by TAM

いますぐ出来る!HerokuのセットアップからPHP環境の作成まで

きゃぷ

Paasの一つであるHerokuにて、PHP環境を構築するまでを紹介します。
ちなみに、macでの作業を想定しています。

Herokuとは

いわゆるPaaSと呼ばれるプラットフォームの一種。
サーバー周りの難しい設定をほとんど考えずに環境を構築でき、豊富なアドオンと組み合わせることでアプリケーションの構築が簡単に行える、というものです。

Heroku - Wikipedia

ユーザー登録

Herokuにアクセスし、ユーザー登録します。

Heroku | Cloud Application Platform

Sign Up For Freeをクリックし、必要事項を入力し、Create Free Accountをクリック。
途中、Pick your development language:は、PHPを選択しておきます。
(他の言語を選んでも特に変わらない気がしますが……)

heroku02

少しするとメールが送られてきますので、そちらをクリックし、本登録して下さい。
パスワードの設定のみ、となります。
全部英語ですが、特に気をつける箇所はないと思います。

ちなみに、無料での利用が可能です。
無料の場合は、1日に18時間しか稼働せず、6時間は強制的にアプリが落ちた(寝た)状態になってしまうので、注意が必要です。
Heroku | Pricing

heroku toolbeltのインストール

Herokuはサーバーのファイルの管理にgitを使用しています。
というより、gitでしか管理が出来ないようになっています。
(gitで管理していないファイルは再起動時に自動で削除される。
また、再起動は1日1回必ず行われます。)

そんなHerokuをコマンドラインで使用するためのツールである、Heroku toolbelt をインストールします。
このツールにはgitも含まれているため、gitをインストールしていなくても大丈夫です。

ログインした後のページで、「Download Heroku Toolbelt for Mac OS」からダウンロードするか、
以下のページからダウンロードします。
Heroku Toolbelt

ダウンロードしたファイルを開いてインストールします。

ログインと証明書の登録

ターミナルを開き、Herokuにログインします。

$ heroku login

登録したメールアドレスとパスワード(表示されない)を入力してログインします。

初めてのログインであれば、Herokuと通信するための証明書がないため、作成するか聞かれます。
今回は作成することとします。

Could not find an existing public key.
Would you like to generate one? [Yn] 

少しすると作成が完了します。
また、Herokuのアカウントにも自動的に登録が完了します。
(Manage account内の、SSH Keysに登録される)

Generating new SSH public key.
Uploading SSH public key /Users/USERNAME/.ssh/id_rsa.pub... done
Authentication successful.

ここまでで準備は完了です。

アプリの作成

アプリの作成はターミナルからでも出来ますが、今回はブラウザから作業してみます。
heorkuにアクセスしすると、現状はアプリがないため、以下のような表示になっていると思います。
ここで右上にある、「+」ボタンをクリックし、「Create a new app」を選択します。

遷移先で、アプリ名を入力して「create app」します。
Regionはデフォルトのまま、United Statesを選択します。(EuropeはUSより遠いため日本国内から選ぶメリットはありません)
また、すでに存在するアプリ名は使用できません。
ちなみに、入力せずにcreateすると、ランダムな名前で作成されます。
今回はランダムな名前にしてみました。

作成後、表示される画面の、Deploy using Heroku Gitの指示にしたがって作業します。
Heroku Toolbeltはインストール、ログイン済なので、ローカルにディレクトリを作成し、そこにgitのリモートリポジトリを追加します。
Herokuコマンドを使ってアプリ名を指定してやることで自動的にURLを追加する事が出来ます。

$ cd my-project/
$ git init
$ heroku git:remote -a floating-beyond-4978

これでgitにプッシュする準備が出来ました。
次に、PHPアプリとして動作させるために、直下にindex.phpファイルを作成します。
中身は何でもよいですが、仮でphpinfoを表示させるようにしておきます。
index.phpの中身は、仮でphoinfoを表示させるようにしておきます。

$ echo '<?php phpinfo();' > index.php

この状態で追加、コミットしてプッシュします。
プッシュすると自動的にHeroku側でdeployが走ります。

$ git add .
$ git commit -m 'init'
$ git push heroku master

デプロイ完了後、アクセスします。
アプリのページヘのアクセスは、以下のコマンドを打つ事でブラウザでトップページが開きます。

$ heroku open

特に設定のない単純なものの場合、index.phpがあるなどで自動的にPHPと判定されています。

これでとりあえずはHerokuにPHP環境を作成できました!
お疲れ様でした。

ビルドパック

Herokuでは様々な環境を構築出来ます。

なので、index.phpがあるから毎回PHPの環境として認識されるか、というとそうではありません。
これを確実にPHP環境として構築するにはビルドパックを指定してやる必要があります。
ビルドパックとは、Heroku内で環境を構築される際に利用されるパッケージみたいなものです。

各言語用にビルドパックは用意されていますが、PHPのビルドパックは以下になります。
heroku/heroku-buildpack-php

このビルドパックをHerokuでの環境構築の際に利用するには以下のように設定します。

$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-php

これで必ずPHPの環境として構築されるようになりました。

もっと知りたい

Heroku + PHPのことがもっと知りたければ、PHPerのためのHerokuコミュニティがありますので、チェックしてみてください。
定期的に勉強会も開催される予定ですので、是非ご参加ください。
Heroku PUG