2015年3月5日木曜日

今更ながらHerokuを試してみた

logo_heroku.png

概要

herokuは自分が作ったアプリケーションをデプロイして動作させることのできるPlatform as a Service (PaaS)です
今回はサンプルのPHPアプリを動作させるところまでやってみました

環境

  • Heroku 2015/03/05 時点のサービス
  • Mac 10.10.2
  • PHP 5.6.6
  • Composer 1.0.0-alpha9
  • Homebrew 0.9.5

アカウントの作成

アカウントがない場合は作成します
メールアドレスさえあれば登録することができます
トップ画面から「Sign up」をクリックすれば登録画面に遷移するので必要な項目を入力して「Create Free Account」でアカウントを作成します
regist_account.png
アカウントの作成ができたらHerokuのダッシュボードにログインできることを確認してください
dashboard.png

開発環境の準備

Herokuと連携するためのツールやPHPアプリを開発するためのツールをローカル環境に構築していきます

heroku-toolbelt のインストール

heroku-toolbelt というHerokuにアプリをデプロイしたりすることのできるコマンドラインツールをインストールします
Homebrewがあるならば

brew install heroku-toolbelt

でOKです

Homebrewない場合はここのダウンロードボタンをクリックするとpkgファイルがダウンロードできます
download_toolbelt.png
pkgファイルを起動するとheroku-toolbeltをインストールするためのインストーラが起動するのでポチポチしてインストールしていきます
/usr/local/herokuに必要なコマンド等がインストールされました

最終的にherokuコマンドが使えるようになっていればOKです

heroku --version

heroku-toolbelt/3.28.2 (x86_64-darwin10.8.0) ruby/1.9.3
You have no installed plugins.

herokuへのログイン

インストールしたherokuコマンドを使ってコマンドからherokuにアクセスできるようにログインします
heroku loginというコマンドを使います
実行するとダッシュボードにログインするためのメールアドレスとパスワードを聞かれるので入力します

heroku login

Enter your Heroku credentials.
Email: xxxxxxxxx@gmail.com
Password (typing will be hidden): 
Authentication successful.

「Authentication successful.」と出ればOKです

PHP関係のインストール

サンプルを動作させるのに必要になるのはphpcomposerです
Homebrewを使ってインストールしました
ない場合はそれぞれの公式サイトにインストール方法が記載されているので適宜インストールしてください

  • PHP
brew tap homebrew/php
brew install php56
php -v

PHP 5.6.6 (cli) (built: Feb 25 2015 17:07:38) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
  • Composer
brew install composer
composer -v

Composer version 1.0.0-alpha9 2014-12-07 17:15:20

サンプルアプリの作成

PHPアプリを開発できる環境が整ったらサンプルアプリを作成していきましょう
作成するといってもすでにあるサンプルアプリを持ってくるだけです
gitで持ってきましょう

git clone https://github.com/heroku/php-getting-started.git

持ってきたらローカルで動作するか試してみます

cd php-getting-started
composer udpate
foreman start web

http://localhost:5000/にアクセスしてみましょう
「Hello」と表示されるサンプルのアプリが表示されると思います

ローカルので動作が確認できたら次にHeroku上にデプロイしてみます

Tips

  • Could not fetch https://api.github.com/authorizations, enter your GitHub credentials to go over the API rate limit
    composer update時に上記が出たときにUsernameとPasswordを求められると思います
    GithubのAPIをcomposer上でコールしており、もしGithubのアカウントがあるならばGithubのUsernameとPasswordを入力してください
    入力後一旦Ctrl+cで抜けて再度composer updateすれば問題なく動作すると思います

  • foreman
    唐突に出てきましたがRuby製のツールでProcfileを読み込み複数のプロセスを管理してくれます
    コマンド自体はheroku-toolbeltをインストールした際に同時にインストールされています
    ただ、今回の場合サンプルアプリを動作させるのにhttpdコマンドが必要になるのでインストールされていない場合は別途インストールしてforemanコマンドを実行してみてください
    また、mod_proxy, mod_proxy_fcgi, mod_rewrite の拡張モジュールも必要になるので有効にする必要があります

brew tap homebrew/apache
brew install httpd24

sed -i -e 's/\#LoadModule proxy_module libexec\/mod_proxy.so/LoadModule proxy_module libexec\/mod_proxy.so/g' /usr/local/etc/apache2/2.4/httpd.conf
sed -i -e 's/\#LoadModule proxy_fcgi_module libexec\/mod_proxy_fcgi.so/LoadModule proxy_fcgi_module libexec\/mod_proxy_fcgi.so/g' /usr/local/etc/apache2/2.4/httpd.conf
sed -i -e 's/#LoadModule rewrite_module libexec\/mod_rewrite.so/LoadModule rewrite_module libexec\/mod_rewrite.so/g' /usr/local/etc/apache2/2.4/httpd.conf

apachectl stop
apachectl start

Heroku上にデプロイ

早速サンプルアプリをデプロイしてみましょう

アプリの作成

herokuコマンドを使って作成します

heroku create

Creating shielded-citadel-7646... done, stack is cedar-14
https://shielded-citadel-7646.herokuapp.com/ | https://git.heroku.com/shielded-citadel-7646.git
Git remote heroku added

上記の場合「shielded-citadel-7646」というアプリがHeroku上に作成されています
ダッシュボードで確認してみるといいと思います
create_app.png

アプリ名を変更する場合は「heroku apps:rename changed-app-name」でできます
「changed-app-name」に好きなアプリ名を入力してください
アプリ名はHeroku上で一意である必要があるのですでに使われている場合は使用できません
アプリ名の変更はダッシュボード上からでも可能です(アプリ選択 -> Settings -> Name)

アプリのデプロイ

gitコマンドを使ってデプロイすることができます

git push heroku master

これだけです
デプロイが完了したら
https://shielded-citadel-7646.herokuapp.com/
にアクセスしてみましょう(私のアプリの場合)

URLは https://your-app-name.herokuapp.com/ の命名規則でアクセスすることができます
デプロイ時のログにもアクセスURLが記載されていると思います
もしくはもっと簡単に開く方法として

heroku open

があります

その他便利なコマンド

  • heroku logs –tail
    サーバ上のアクセスログを確認することができます
  • heroku apps
    存在するアプリの一覧を表示することができます
  • heroku apps:destroy –app shielded-citadel-7646 –confirm shielded-citadel-7646
    指定したアプリをHeroku上から削除します
    普段は使いませんが、テストで繰り返しアプリを作成し直したい場合に便利です
  • heroku apps:info
    アプリの詳細を確認することができます

最後に

詳細に説明しているので長くなっていますがやっていることは単純なので、簡単に導入できると思います
同じやり方で既存のPHPアプリもデプロイできそうなので、次回は自分が作成したサンプルアプリでも動かしてみようと思います

無料でここまで使えるのは素晴らしいですね

参考サイト

0 件のコメント:

コメントを投稿