Memo/Heroku/herokucli

https://dexlab.net:443/pukiwiki/index.php?Memo/Heroku/herokucli
 


heroku cli: CLIコマンド

  • CLI Usage | Heroku Dev Center
    Webアプリケーションのバージョンアップ(release)
    リリース管理機能(release / rollback)
    メンテナンス画面への切り替え(maintenance)
    データベースのバックアップ取得(pgbackups)
    データベースのリストア(pgbackups:restore)
    ログの確認(logs)
    実行プロセスであるdyno数の変更(dynos)
    バックグラウンドジョブであるworker数の変更(workers)
    アプリケーションの再起動(restart)
  • コマンド引数 "--app app_name" を省略するには .git/config に[remote "heroku"] 項目が必要
    git remote add heroku git@heroku.com:damp-temple-5458.git

heroku-accounts: 複数herokuアカウントの管理

shell script中のループ

  • data.csv が複数行ある場合、単純に「heroku run rake」を実行すると1行目を処理して止まる。
  • これは、stdinがherokuコマンドに取られるためのようだ。
  • 対策として「< /dev/null」を足している
#!/bin/bash

i=0
cat "data.csv" | while IFS=',' read -a cols || [ -n "${cols}" ]; do
  if [ $i == 0 ]; then
    # skip header line
    i=$(($i+1))
    continue;
  fi

  heroku run rake example:example param1=${cols[1]} --app ${cols[0]} < /dev/null 2>/dev/null | grep -A 100 '^Called from' | grep -v "^Called from"
done

rake task一覧

heroku run rake --tasks -a $HEROKU_APP
heroku run rake -T -a $HEROKU_APP

Windows環境にインストール

  • 以下Heroku Toolbeltは旧版。新版はHeroku CLI
  1. https://toolbelt.heroku.com/windows から heroku-toolbelt.exe をダウンロードして、インストール
  2. PATHを通すために再起動が必要。
  3. 再起動せずにためすには、
    set HerokuPath=C:\Program Files (x86)\Heroku
    set PATH=%PATH%;C:\Program Files (x86)\Heroku\bin;C:\Program Files (x86)\git\cmd;C:\Program Files (x86)\Git\cmd
    
    heroku login
    
    heroku version
    heroku/toolbelt/3.43.2 (i386-mingw32) ruby/2.1.7
    heroku-cli/5.2.9-e9df6ac (windows-386) go1.6.2
    You have no installed plugins.

特定のweb,workerを再起動

特定のdynoだけ応答不能になる事がある

  • heroku psで現在のプロセスを確認して再起動
    heroku ps -a app-id
    
    heroku restart web.1 -a app-id
    heroku restart worker.1 -a app-id

前のバージョンにロールバック

  • リリースしたが動作しない場合に、以前の状態に戻せる
    # リリースバージョンの一覧を表示
    heroku releases
    
    # 一つ前のバージョンにロールバック
    heroku releases:rollback
    
    # バージョンを指定してロールバック
    heroku releases:rollback v10

インストール済みアプリからソースコード取得

  • herokuのGit URLを調べる
    heroku info --app app_name | grep git@
    
    Git URL:       git@heroku.com:damp-temple-5458.git
  • ローカルにclone
    git clone git@heroku.com:damp-temple-5458.git
  • 修正して再デプロイ
    git add .
    git commit -m "commit message"
    git push origin master
  • "git push heroku master"が使いたい場合、別名登録する
    git remote add heroku git@heroku.com:damp-temple-5458.git
    # または以下ファイルを直接編集
    vi .git/config

CUIのインストール、アップデート、バージョン表示

  • Heroku CLI(新版)
    wget https://cli-assets.heroku.com/heroku-linux-x64.tar.gz
    sudo tar xvfz heroku-linux-x64.tar.gz -C /usr/local/lib
    sudo ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku
    heroku --version
    heroku/7.22.7 linux-x64 node-v11.10.1
  • Heroku Toolbelt: (旧版)
    # インストール
    gem install heroku
    
    # アップデート
    gem update heroku
    
    # バージョン確認
    heroku version
    heroku-gem/2.32.6 (x86_64-linux) ruby/1.9.2 autoupdate
  • herokuアカウントのメールアドレス、パスワードを保存
    heroku keys:add

アプリ

  • アプリ一覧
    heroku apps
  • アプリ情報
    # アプリ情報
    heroku info --app damp-temple-5458
    
    === damp-temple-5458
    Git URL:       git@heroku.com:damp-temple-5458.git
    Owner Email:   example@example.com
    Repo Size:     1M
    Slug Size:     1M
    Stack:         cedar
    Web URL:       http://damp-temple-5458.herokuapp.com/
    
    # アプリ設定
    heroku config --app damp-temple-5458
    
    === damp-temple-5458 Config Vars
    GEM_PATH: vendor/bundle/ruby/1.9.1
    LANG:     en_US.UTF-8
    PATH:     bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin

現在のプロセス数表示

heroku ps
=== run: one-off processes
run.1: complete 2012/10/01 12:05:24 (~ 14m ago): `bundle exec irb`

=== web: `bundle exec ruby web.rb -p $PORT`
web.1: up 2012/10/01 12:01:45 (~ 18m ago)

httpアクセスログの表示

heroku logs --tail

メンテナンス/エラー画面の表示

  • Maintenance Mode | Heroku Dev Center
    heroku maintenance:on
    heroku maintenance:off
    
    # 現在のモードの表示
    heroku maintenance
    off
    • メンテナンスページの変更。S3など任意のURLを指定できる。空を指定するとデフォルトに戻る。指定したURLはIFRAMEで開かれる
      heroku config:add MAINTENANCE_PAGE_URL=http://s3.amazonaws.com/heroku_pages/maintenance.html
    • エラーページの変更。S3など任意のURLを指定できる。空を指定するとデフォルトに戻る。指定したURLはIFRAMEで開かれる。HTTP STATUS 503になる
      heroku config:add ERROR_PAGE_URL=http://s3.amazonaws.com/heroku_pages/error.html

ロケール、タイムゾーンの変更

  • デフォルトのタイムゾーン:PST(太平洋標準時)=JST - 17
heroku config:add TZ=Asia/Tokyo
heroku config:add LANG=ja_JP.UTF-8

stackの確認(bamboo, cedar等)

heroku stack --app アプリケーション名

DB関係

  • ローカル
    # db 作成
    heroku run rake db:migrate
    
    # db 初期値インポート
    heroku run rake db:seed
    
    # db:pull, db:push するために必要なモジュール
    gem install taps
    
    # dbダウンロード(指定DBの初期化、インポートがされるので注意)
    heroku db:pull sqlite://path/to/保存ファイル名.sqlite3 --app アプリケーション名
    heroku db:pull sqlite://mydb.sqlite3
    heroku db:pull mysql://root:mypass@localhost/mydb.mysql
    heroku db:pull postgres://postgres:mypass@remotehost/mydb.postgres
    
    # heroku config のデータベースURLでも良い。db/development.sqlite3 が上書きされる
    heroku db:pull DATABASE_URL
    
    # dbアップロード
    heroku db:push sqlite://path/to/アップロードファイル名.sqlite --app アプリケーション名
    heroku db:push sqlite://mydb.sqlite
    heroku db:push mysql://root:mypass@localhost/mydb.mysql
    heroku db:push postgres://postgres:mypass@remotehost/mydb.postgres
    
    # localのdb/development.sqlite3 をpush
    heroku db:push DATABASE_URL

アプリの削除

  • CUI
    heroku destroy アプリケーション名
  • GUI
  1. 該当アプリを選択 > Settings
  2. Delete app... > アプリケーション名を入力し削除

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-29 (水) 11:00:18 (26d)