herokuコマンド

heroku

 

Herokuは2010年にSalesforce.comにより買収され、Salesforce.comが掲げるソーシャルエンタープライズを実現させるために生まれました。現在ではRuby on Railsだけでなく、PHP、Java、Python、JavaScript(Node.js)、Scala、Cloujureにも対応したマルチ言語なプラットフォームとなっています。Herokuは、元々Ruby on Railsを対象とした、Amazon Web ServicesのIaaS(仮想サーバコンピュータを提供してくれるサービス)上に構築されたPaaS(Platform as a Service)です。PaaSは、開発に必要なソフトウエアが準備されたサービスのことです。

1. Herokuへのユーザー登録

Cloud Application Platform | Heroku
Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the...

からユーザー登録を行う

2. Heroku Command Line(Heroku CLI)のインストール

The Heroku CLI | Heroku Dev Center
How to download, install, and start using the Heroku CLI. The Heroku CLI used to be part of the Heroku Toolbelt.

からインストーラをインストール

3. Herokuへログイン

heroku login

4. Herokuアプリケーションを作成

heroku create アプリケーション名

既存のHerokuアプリケーション名と重複できません。
ユニークになるように考えておつくりください

ここまで行うとURLが自動発行されます

https://XXXXX.herokuapp.com/ | https://git.heroku.com/XXXXX.git

Herokuアプリケーションが作成されたかの確認
heroku apps

No such app as XXXXX. というエラーが出るときは

git remote rm heroku

としてから再度アプリ作成を行いましょう

5.Heroku用設定ファイルを新規作成

Herokuアプリケーション用に Procfile という名前のファイルを作成します。

Procfile は「Herokuで何のWebサーバソフトウェアを使うか」を指定をするためのファイルです。 フォルダの直下で下記のコマンドを実行すると、 フォルダの直下に Procfile が作成されます。

echo "web: vendor/bin/heroku-php-apache2 public/" > Procfile

作成された Procfile は下記の内容になります。 Heroku上のapache2というWebサーバソフトウェアを利用することを指定しています。

6.デプロイ

デプロイする前に、HerokuのPHPの対応バージョンを変更しておきます。

なお、現状のままデプロイするとphp8.1が対応となっているため、エラーが出てしまいます。

まずは、composer.jsonファイルにある

"require": {
        "php": "^7.2.5|^8.0",

の部分を

"require": {
        "php": "^7.2.5",
        "symfony/polyfill-ctype": "1.22.0",
        "symfony/polyfill-iconv": "1.22.0",
        "symfony/polyfill-mbstring": "1.22.0",

に修正し、保存します。

さらに、composer.lockファイルを削除したのち、

composer update

を実行するとcomposer.lockファイルが再生成されます。これらの変更をGitへコミットします。

これで、HerokuでもPHP 7で実行されるようになります。

では、一度デプロイしてみましょう。

登録されたリモートリポジトリherokuに対して git push を行うとそのままデプロイされます。何かファイルを更新しても git commit してからgit push heroku main するだけで、簡単にデプロイすることが可能です。

git push heroku main
heroku open

リモートリポジトリherokuの確認
Heroku上に作成されたGitリポジトリがリモートリポジトリ heroku として登録されます。

git remote -v

7.Herokuアプリケーションを開く

デプロイが成功したらHerokuアプリケーションのURLにアクセスしましょう。URLは heroku apps:info コマンドで確認できます。 Web URL に表示されるURLへWebブラウザでアクセスしてください。

heroku apps:info
Web URL:        https://Herokuアプリケーション名.herokuapp.com/

8.Herokuアプリケーションの環境変数の設定

いくつか設定する必要のある環境変数があります。Cloud9上では .env が環境変数の役割を担っていましたが、 .env は .gitignore によって無視ファイルとして扱われているため、Gitのコミットには含まれていません。

また、環境変数はその名の通り環境の変数であるため、異なる環境毎に設定する必要があります。

APP_KEY

APP_KEY はLaravelアプリケーションのセキュリティを強化するために設定されるものです。これを最初に設定しておく必要があります。ローカル(Cloud9)でも .env 上に APP_KEY が設定されています。

以下を実行し、表示される base64: で始まる文字列をコピーします(base64: も含めてコピーしてください)。

php artisan --no-ansi key:generate --show

続いて、コピーした文字列 の箇所に先程の文字列をペーストして実行します。

heroku config:set APP_KEY=コピーした文字列

環境変数の確認方法

Herokuアプリケーション上の環境変数を確認する方法を知っておきましょう。適宜、確認してみてください。

先ほど設定した APP_KEY が設定されているはずです。

heroku config
=== Herokuアプリケーション名 Config Vars
APP_KEY:       base64:...

9.MySQLを追加

cleardbというクラウド上でMysqlを使うためのサービスがあります。プランはがいくつかありますが、igniteは無料です。

$ heroku addons:create cleardb:ignite
Creating cleardb:ignite on ⬢ [アプリ名]... free
Created cleardb-objective-20233 as CLEARDB_DATABASE_URL
Use heroku addons:docs cleardb to view documentation

10.MySQLの接続設定を修正

HerokuのアプリにDB情報の環境変数を設定します。

$ heroku config
=== [アプリ名] Config Vars
CLEARDB_DATABASE_URL: mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true

$ heroku config:add DB_NAME='[データベース名]'
$ heroku config:add DB_USERNAME='[ユーザー名]'
$ heroku config:add DB_PASSWORD='[パスワード]'
$ heroku config:add DB_HOSTNAME='[ホスト名]'
$ heroku config:add DB_PORT='3306'
$ heroku config:add DATABASE_URL='mysql2://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true'

$ heroku config
=== [アプリ名] Config Vars
CLEARDB_DATABASE_URL:     mysql2://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true
DATABASE_URL:             mysql2://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true
DB_HOSTNAME:              [ホスト名]
DB_NAME:                  [データベース名]
DB_PASSWORD:              [パスワード]
DB_PORT:                  3306
DB_USERNAME:              [ユーザー名]
LANG:                     en_US.UTF-8
RACK_ENV:                 production
RAILS_ENV:                production
RAILS_LOG_TO_STDOUT:      enabled
RAILS_SERVE_STATIC_FILES: enabled
SECRET_KEY_BASE:          [シークレットキー]

11.デプロイ

ローカルリポジトリをHeorkuへプッシュ(デプロイ)します。

$ git push heroku main

よく使うherokuコマンド

▼ herokuへログイン

heroku login

「メールアドレス」「パスワード」を入力してログインします。

▼ heroku上のアプリを表示

heroku apps

▼ herokuアプリをブラウザで表示

アプリ hogehoge-fugafuga をブラウザで表示するには

heroku open --app hogehoge-fugafuga

と入力します。 またはブラウザのアドレス欄に直接

https://hogehoge-fugafuga.herokuapp.com

と入力してもOKです。

▼ heroku上のアプリを削除

アプリ hogehoge-fugafuga を削除するには

● 確認なしで削除
heroku apps:destroy --app hogehoge-fugafuga --confirm hogehoge-fugafuga
● 確認ありで削除
heroku apps:destroy --app hogehoge-fugafuga

▼ heroku上でbashを使用する

heroku run bash

▼ heroku上で任意のLinuxコマンドを使用する

・Heroku上のホームディレクトリのファイル一覧を表示

heroku run pwd ;  ls -la

・Heroku上のphantomjsのバージョンを表示

 heroku run phantomjs -v

コメント

タイトルとURLをコピーしました