PHP

Codeigniter3でつくったアプリをherokuで公開する

codeigniter3
o_wani
この記事は作成から7年以上経過しているため、内容が古くなっている可能性があります。

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で管理していたライブラリを、プロジェクト直下に移動

自分の場合、Codeigniter3Smartyの連携を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-toolbelt

herokuを使ってみる

Git Bashなどのシェルで以下の作業を実行。シェルは新規で立ち上げて作業する◎

herokuにログインする
$ heroku login

Enter your Heroku credentials.
Email: {Emailを入力}
Password(typing will be hidden): {passwordを入力}

EmailPasswordは会員登録したものを使います。

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を使用する場合、クレジットカードの登録が必要です。無料範囲なので、料金は発生しません。

クレジットカード情報の登録

Alt text

Add-onの登録

Add-onを登録するサービスを選び、タブの「Resources」を選び
Add-onsで、ClearDB MySQLを検索して「Provision」ボタンを押下する。

 ClearDB MySQL
接続情報の確認

ターミナルで確認しましょう。

$ 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しよう。

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました