すたらブログ

文系Webプログラマの備忘録

Windows機でHerokuにPHPファイルをデプロイしました

(update: 2015-01-04)
Herokuが公式にPHPをサポートしたことにより、手順が大幅に変わりました。


目次

  1. 環境、要件
  2. HerokuToolbeltの導入
  3. PHPファイルをデプロイ
  4. ベアボーンをクローンしない場合
  5. SQLiteをPDOで使いたい

1. 環境、要件

環境

必要なもの


2. HerokuToolbeltの導入

インストール

公式サイトからダウンロード、インストールします。

Herokuにログイン

コマンドプロンプト
heroku login
Enter your Heroku credential
Email: <Herokuに登録したメールアドレス>
Password (typing will be hidden):
Authentication successful.

SSH公開鍵を追加

まだ公開鍵を作成していない場合は、まずssh-keygenを実行してください。

コマンドプロンプト
heroku keys:add ~/.ssh/id_rsa.pub

3. PHPファイルをデプロイ

まずは、ライブラリを何も追加しない簡潔な構成で動作させてみます。
基本的に公式ドキュメントに従って進めます。

ベアボーンをクローン

HerokuでPHPを動かすための最小限の構成が公式に用意されているので、それを利用します。

コマンドプロンプト
cd <任意の場所>
git clone https://github.com/heroku/php-getting-started.git
cd php-getting-started

不要な設定やファイルを削除

composer.json

今回はSilexMonologは使いません。
composer.jsonで無効にします。

{
  "require" : {
    // "silex/silex": "~1.1",
    // "monolog/monolog": "~1.7"
  },
  "require-dev": {
    "heroku/heroku-buildpack-php": "*"
  }
}
web/.htaccess

web/.htaccessの設定は、どうやらindex.phpが存在しないディレクトリを指定された場合にweb/index.phpを表示させるためのもののようです。
今回はテスト用なのでファイル一覧を見られても何も問題ありません。
削除します。

web/index.php

ライブラリを利用している箇所はバッサリ削除します。
とりあえず、下記のようにします。

<?php echo 'hello' ?>

Composerで管理するパッケージを更新

コマンドプロンプト
composer update

これで、vendor/ディレクトリが作成され、composer.lockが更新されます。

Herokuにデプロイ

コマンドプロンプト
git add -A
git commit -m "first deploy"
git push heroku master

リモート名はoriginではなくherokuです。
これで完了です。


4. ベアボーンをクローンしない場合

Composerとforemanの設定を適切に行えるのであれば、ベアボーンのクローンは必要ありません。
具体的には、下記の3点が必要だと思います。

  • composer.jsonheroku-buildpack-phpを登録する。
  • Composerが作成するvendor/.gitignoreで無視する。
  • foremanのProcfileheroku-php-apache2の起動を登録する。

5. SQLiteをPDOで使いたい

SQLiteは初期状態では使えませんが、Composerに登録することでpdo_sqliteが有効になるようです。

composer.json
{
  "require" : {
    "ext-pdo_sqlite": "*"
  },
  "require-dev": {
    "heroku/heroku-buildpack-php": "*"
  }
}