HerokuへFuelPHP環境を構築する手順をメモ
FuelPHP Advent Calendar 2013の23日目です。昨日は、@egmcさんの「FuelPHPがOpAuth対応になったのでfacebookログインをしてみる」でした。
以前まではサービスをリリースするときにはレンタルサーバを借りてサービスをデプロイすることが一般的でしたが、最近はPaaSと呼ばれるアプリケーションの動作環境をプラットフォーム上で一式提供されている形態を使う事が増えてきています。有名どころではAmazonのAWSやMicrosoftのWindows Azureなどがあります。
PaaSサービスのそれぞれの違いはスペック・料金・機能などがあり、レンタルサーバと比較した場合のPaaSのメリットはスケールアップ、アウトが簡単に行えることです。
サービスのユーザ数が大幅にふえてサーバに負荷がかかるようになった場合や、予想してた以上にユーザ数が延びなかった場合などに役立ちます。
個人的にはHerokuはRailsのアプリをテスト的に公開したくなったときなどに使ったりしています。もともとHeroku自体はrubyの環境用としてスタートしていて現在はjava,node.js,ruby,phthonなどをサポートしています。
現在Herokuではphpは非サポートとなっていますがphpも動作します。
Herokuコマンド参考ページ:http://d.hatena.ne.jp/xyk/20101102
————————————————————————————————–
試みたのは、下記サイトに記載されているbuildpackを使用してサーバはnginxを使用するつもりでしたが、
nginxのconfigファイルの設定がFuelPHPのプロジェクトに合わせるとなぜかうまくページが表示されず原因不明だったので今回は見送ることにします。すみません。
http://tkyk.name/blog/2012/11/28/php-on-heroku/
————————————————————————————————–
1.Herokuアカウントを取得
公式サイトより「login」押下して「signup」よりアカウントを取得します
公式サイト:https://www.heroku.com/
2.heroku toolbelt(ターミナルからherokuを操作するツール)をインストール
下記サイトよりtoolbeltを環境に合わせてインストールします
3.SSH公開鍵の設定
(1)ターミナルを立ち上げてloginコマンドを実行
$ heroku login Enter your Heroku credentials. Email: [1で作成したアカウントを入力] Password (typing will be hidden): [1で作成したアカウントのパスワードを入力] Authentication successful.
「Authentication successful.」でアカウント認証成功 ※「Authentication failed.」は失敗
(2)公開鍵をジェネレート
Could not find an existing public key. Would you like to generate one? [Yn] [Yを指定してエンター] Generating new SSH public key. Uploading SSH public key /Users/(PCユーザー名)/.ssh/id_rsa.pub Authentication successful.
「Authentication successful.」で成功
初期ログイン時に公開鍵を生成しなかった場合は手動で「ssh-keygen」で作成しherokuに公開鍵を設定する必要があります
ssh-keygenについては前記事参照http://to-developer.com/blog/?p=563
Herokuに公開鍵を設定する
$ heroku keys:add
※Herokuのgui画面から設定も可
4.fuelphpプロジェクトを生成
(1)アプリケーションを作成
$ oil create [アプリ名を入力]
(2)index.php作成
Herokuはrootディレクトリにindex.phpがないと動作しないため、今のところ空のindex.phpファイルを生成しときます
$ touch index.php
(3).htaccessを作成(fuelphpのディレクトリ構成に合わせてリダイレクト処理を入れる)
fuelphpディレクトリ構成のpublic/以下にindex.phpのアクセスをリダイレクト
参考サイト:http://blog.livedoor.jp/erscape/archives/6937126.html
$ vim .htaccess
.htaccessの設定情報
RewriteEngine on RewriteBase / RewriteRule ^(.+)-info\.php$ $1-info.php [L] RewriteCond %{SCRIPT_FILENAME} !^/app/www/public/ RewriteRule ^(.*)$ public/$1 [L]
(4)不要ファイル削除(サブモジュールなどはaddできないので削除)
$ rm -rf .git .gitmodules $ rm *.md $ rm -rf docs // 下記も不要なため削除 $ rm -fr fuel/core/ $ rm -fr fuel/packages/auth/ $ rm -fr fuel/packages/email/ $ rm -fr fuel/packages/oil/ $ rm -fr fuel/packages/orm/ $ rm -fr fuel/packages/parser/
※サブモジュールをaddする方法(git submodule addコマンド)
例)opauthサブモジュールの場合
$ git submodule add git://github.com/andreoav/fuel-opauth.git fuel/packages/opauth
5.ローカルリポジトリにコミット
$ cd [アプリ名を入力] $ git init $ git commit -am "initial commit"
6.buildpackをherokuへインストール
$ heroku create --buildpack https://github.com/winglian/heroku-buildpack-php [アプリ名を入力]
※アプリ名はここで入れなくてもデフォルトの名前が付けられる。gui画面などから確認・変更が可能
buildpack:https://github.com/winglian/heroku-buildpack-php
7.herokuのリポジトリへ反映
$ git push heroku master
※アプリが複数存在する場合、Herokuのリモートリポジトリが違いpushできない場合があるので都度確認が必要
※1 リモートリポジトリherokuの設定
$ git remote add heroku [リモートリポジトリ]
※2 リモートリポジトリ確認
$ git remote show
※3 リモートリポジトリ削除
$ git remote rm [リモートリポジトリ]
8.動作確認
$ heroku open
9.mysqlアドオンを入れる
無料版のアドオンを入れる場合も公式サイトからログインを行いクレジットカードの登録が必要です。
ただ無料版の場合は料金が引かれるなど初期費用なども基本ないようです。
mysqlのアドオンはhttps://addons.heroku.com/からsearchボックスに「mysql」と検索すると2013/12時点で4つのアドオンが見つかりました。
Adminium Full fledged admin interface without touching your app code heroku addons:add adminium
Amazon RDS Hook your app up to Amazon’s RDS heroku addons:add amazon_rds
ClearDB MySQL Database The high speed, 100% uptime database for your MySQL powered applications. heroku addons:add cleardb
Xeround Cloud Database αlpha Scalable, highly available, zero-management cloud database for MySQL heroku addons:add xeround
今回は「ClearDB」とする
参考サイト:http://www.ownway.info/Ruby/index.php?heroku%2Fhow%2Fmanagement%2Fdatabase%2Fcleardb
(1)公式サイトよりクレジットカード登録を行う
(2)アドオンをインストール
$ heroku addons:add cleardb:ignite Adding cleardb:ignite on tranquil-cliffs-2547... done, v6 (free) Use `heroku addons:docs cleardb:ignite` to view documentation.
インストール完了
(3)接続情報を確認
$ heroku config === tranquil-cliffs-2547 Config Vars BUILDPACK_URL: https://github.com/winglian/heroku-buildpack-php CLEARDB_DATABASE_URL: mysql://[ユーザ名]:[パスワード]@[ホスト名]/[DB名]?reconnect=true
※CLEARDB_DATABASE_URLに接続文字列が表示
CLEARDB_DATABASE_URL: mysql://[ユーザ名]:[パスワード]@[ホスト名]/[DB名]?reconnect=true
(4)シェル接続方法は?
mysql –host=[ホスト名] –user=[ユーザ名] –password=[パスワード] [DB名]
10.fuelphpプロジェクトからmysqlへ環境変数で接続
$cleardb = parse_url(getenv('CLEARDB_DATABASE_URL')); $conn = new PDO( sprintf("mysql:dbname=%s;host=%s", substr($cleardb['path'], 1), $cleardb['host']), $cleardb['user'], $cleardb['pass'] );
ここまででphp + mysql + apacheのFuelPHPが動作する環境の構築完了です
まとめ
Herokuにやや癖があり使いにくいと思ってしまった事もありましたが、慣れるとここまで行うのに15分程でできるとおもいます。一度環境を作ってしまえばあとの更新作業はすぐにできますね。
他のPaaSはあまり使った事がありませんが、動作確認程度の使用でしたらHerokuでいいと思います。
またHerokuから公式にphpがサポートされれば、もっとアドオン等増えてくるのではないでしょうか。
明日はクリスマスイブですね。いいことありますように!
その他おすすめの備忘録
- [FuelPHP]GitHubエラー:fatal: Not a git repository: fuel/core/../../.git/modules/fuel/core
- [Vagrant + Chef]CentOSにPHP + MYSQL + APACHE 環境を構築する
- [Grunt]デザイナ向け自動化ツールGruntの開発環境構築から動作確認まで
- [heroku]herokuでphpをスケジューラ(heroku Scheduler)実行する
- [GitHub]新規リポジトリ作成したあとのremoteとpushコマンドについて
- [Rails]MacにRails開発環境を構築(インストール)する
- [FuelPHP]GitHubは空ディレクトリがあるとプッシュできない。対応方法をメモ
- [CentOS][Ruby][Rails]最新・安定版のRuby2.2.1(rbenv) / Rails4.1.1環境を構築する
- [MAC]差分チェックdiffツール(story + p4marge環境)を使用する方法※ディレクトリdiff対応
- [Vagrant][Rails]Vagrant(CentOS) + VirtualBoxでRailsの開発環境を構築する
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年5月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ