Codeigniter3でつくったアプリをherokuで公開する
Codeigniter3でつくったアプリをherokuで公開の流れをまとめました。
Codeigniter3
でつくったアプリをheroku
で公開する手順です。
herokuで公開するにあたり、いくつか修正した点があります。
- ドキュメントルートの設定のためにProcfileの追加
session
の管理をデータベースに変更application/vendor
で管理していたライブラリを、プロジェクト直下に移動- composer.pharをgit管理対象外に、または削除Codeigniter側のheroku公開準備
Codeigniter側のheroku公開準備
1. ドキュメントルートの設定のためにProcfileの追加
今回の環境では、ドキュメントルートはpublic
フォルダでWebサーバーはapache
なのでその設定をプロジェクト直下にProcfile
を新規追加します。
web: vendor/bin/heroku-php-apache2 public/
2. session
の管理をデータベースに変更
application/config/config.php
を修正します。
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';//chmod 777 session
session
用テーブルの新規作成
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
KEY `ci_sessions_timestamp` (`timestamp`)
);
3. application/vendor
で管理していたライブラリを、プロジェクト直下に移動
自分の場合、Codeigniter3
とSmarty
の連携をcomposer
で行っていて、application/composer.json
に設定を記載して管理していた。詳しくは、Codeigniter3にSmartyをComposerで設定に記載しています。herokuに公開となると不具合が生じるので、今回はプロジェクト直下のcomposer.json
に統合します。
composer.json
...
...
"require": {
"php": ">=5.2.4",
"smarty/smarty": "^3.1"
},
...
...
$ php composer.phar update
で、プロジェクト直下のvendorにSmarty
をインストールします。
4. composer.pharをgit管理対象外に、または削除
composer.pharがあるとheroku
にデプロイした時に、不具合があるので、削除しておきます。
herokuでの公開
アカウントの準備がまだの方はアカウントの新規作成から。
アカウントの新規作成
無料アカウントを新規作成
https://www.heroku.com/
sign upをクリックしてアカウント作成画面に進みます。
アカウントの入力
画面に従って、必要事項を入力します。
パスワードの登録
入力したメールアドレスに確認メールが届くので、そのリンクからパスワード登録画面に遷移し、パスワード登録します。
アプリケーションの新規作成
アプリケーション新規作成
ダッシュボード画面で、Create New App
をクリック。アプリケーション名(herokuアプリのサブドメイン名)を決めて
Create App
をクリックします。{アプリケーション名}.herokuapp.com
でWelcomeページが表示されるはず。
heroku toolbeltのインストール
https://toolbelt.heroku.com/
よりheroku toolbeltをダウンロードし、インストールします。
Windowsの場合は、「Windows」で。Macの場合は「Standalone」でもいけます。
herokuを使ってみる
Git Bash
などのシェルで以下の作業を実行。シェルは新規で立ち上げて作業する◎
herokuにログインする
$ heroku login
Enter your Heroku credentials.
Email: {Emailを入力}
Password(typing will be hidden): {passwordを入力}
Email
とPassword
は会員登録したものを使います。
Logged in as {メールアドレス}
と表示されればログイン完了です。
herokuでのgit操作
herokuで作業するフォルダを作成しておきましょう。
今回の作業フォルダは仮に、work/heroku
とし、
Git URLをhttps://git.heroku.com/codeigniter-php.git
とします。
git clone
新規作成したアプリケーション > Settings > Info
のGit URL
をクローンします。
例)
git clone https://git.heroku.com/codeigniter-php.git
work/heroku/codeigniter-php
がcloneしてきたフォルダとします。
git add
work/heroku/codeigniter-php
にCodeigniterのソースを設置し、インデックスにファイルを登録する。
git add -A
ローカルリポジトリにファイルを登録する。
git commit -a
リモートリポジトリにファイルを登録する。
git push origin master
herokuでMySQLを扱う
データベースを使わない場合はこれで問題ないが、MySQLを使う場合は、別途ClearDB MySQL
というAdd-onが必要です。そのAdd-onを使用する場合、クレジットカードの登録が必要です。無料範囲なので、料金は発生しません。
クレジットカード情報の登録
Add-onの登録
Add-onを登録するサービスを選び、タブの「Resources」を選び
Add-onsで、ClearDB MySQL
を検索して「Provision」ボタンを押下する。
接続情報の確認
ターミナルで確認しましょう。
$ heroku config | grep CLEARDB_DATABASE_URL
CLEARDB_DATABASE_URL: mysql://jdeu4efh32478:29w2f6db@us-cdbr-iron-east-04.cleardb.net/heroku_12dmii2j2di972xs9?reconnect=true
このコマンドで確認できるのは以下のような接続情報
CLEARDB_DATABASE_URL: mysql://(--username--)
:(--password--)
@(--hostname--)
/(--dbname--)
?reconnect=true
MySQLデータベースへの接続
取得したusername
, password
, hostname
, dbname
を使用して、ClearDBに接続します。
mysqlコマンドの使用できるターミナル上で
$ mysql --host=us-cdbr-iron-east-04.cleardb.net --user=jdeu4efh32478 --password=29w2f6db heroku_12dmii2j2di972xs9
あとはログイン後、必要なテーブルのSQLを実行する。
Codeigniter側のデータベース設定
データベースの設定後、application/config/database.php
を修正しましょう。
...
...
$db['default'] = array(
'dsn' => '',
'hostname' => 'us-cdbr-iron-east-04.cleardb.net',
'username' => 'jdeu4efh32478',
'password' => '29w2f6db',
'database' => 'heroku_12dmii2j2di972xs9',
...
...
データベース設定ファイルをPUSHしよう
ファイルを修正後、git commitして、pushしよう。