概要 †
- サポート言語 (2017年8月現在)
- Node.js / Ruby / Java / PHP / Python / Go / Scala / Clojure
- 前提条件 / 知識
- Heroku無償アカウント登録済み
- Ruby on Rails / Ruby
- Unixコマンド / Vim
- Git
- PostgreSQL
- ローカル開発環境
- OS X 10.11 El Capitan
- VirtualBox 5.0.20
- Vagrant 1.9.7
- Ubuntu 16.04 (LTS)
- Git 2.7.4
- Ruby 2.4.1
- Rails 5.1.3
- PostgreSQL 9.6.3
ローカル開発環境の構築 †
Vagrant初期設定 †
- Ubuntu 16.04 (64bit) のbox (テンプレート) を追加
$ vagrant box add Ubuntu16.04 https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box
$ mkdir heroku_lessons
$ cd heroku_lessons
$ vagrant init Ubuntu16.04
$ vi Vagrantfile
--------------------
config.vm.network "private_network", ip: "192.168.78.90"
--------------------
$ vagrant up
$ vagrant ssh
$ sudo apt-get update
Gitインストール †
$ sudo apt-get install git
$ git --version
git version 2.7.4
$ git config --global user.name "Yuji Shimojo"
$ git config --global user.email "y.shimojo@example.com"
$ git config --global color.ui true
Rubyインストール †
$ sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libpq-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ exec $SHELL
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
$ exec $SHELL
$ echo "${PATH}"
/home/ubuntu/.rbenv/plugins/ruby-build/bin:/home/ubuntu/.rbenv/shims:/home/ubuntu/.rbenv/bin:/home/ubuntu/.rbenv/shims:/home/ubuntu/.rbenv/bin:/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$ rbenv install --list
- 最新安定板のCRuby (2.4.1) インストール
$ sudo rbenv install 2.4.1
$ sudo rbenv global 2.4.1
$ rbenv global
2.4.1
$ rbenv version
2.4.1 (set by /home/ubuntu/.rbenv/version)
$ ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
$ gem --version
2.6.11
$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.6.11
- RUBY VERSION: 2.4.1 (2017-03-22 patchlevel 111) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/ubuntu/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
- USER INSTALLATION DIRECTORY: /home/ubuntu/.gem/ruby/2.4.0
- RUBY EXECUTABLE: /home/ubuntu/.rbenv/versions/2.4.1/bin/ruby
- EXECUTABLE DIRECTORY: /home/ubuntu/.rbenv/versions/2.4.1/bin
- SPEC CACHE DIRECTORY: /home/ubuntu/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /home/ubuntu/.rbenv/versions/2.4.1/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /home/ubuntu/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
- /home/ubuntu/.gem/ruby/2.4.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- "install" => "--no-rdoc --no-ri"
- "update" => "--no-rdoc --no-ri"
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /home/ubuntu/.rbenv/versions/2.4.1/bin
- /home/ubuntu/.rbenv/libexec
- /home/ubuntu/.rbenv/plugins/ruby-build/bin
- /home/ubuntu/bin
- /home/ubuntu/.local/bin
- /home/ubuntu/.rbenv/plugins/ruby-build/bin
- /home/ubuntu/.rbenv/shims
- /home/ubuntu/.rbenv/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /snap/bin
$ rbenv rehash
- rbenvリハッシュの自動化 (rbenv-rehash gemのインストール)
$ sudo gem i rbenv-rehash
Ruby on Railsインストール †
$ curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
$ sudo apt-get install -y nodejs
- gemが自動生成するri docドキュメントの無効化
$ echo 'install: --no-rdoc --no-ri' >> ~/.gemrc
$ echo 'update: --no-rdoc --no-ri' >> ~/.gemrc
$ gem query -ra -n "^rails$"
$ sudo gem install rails -v 5.1.3
$ rails -v
Rails 5.1.3
PostgreSQLインストール †
$ sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
$ wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install -y postgresql-common
$ sudo apt-get install -y postgresql-9.6 libpq-dev
$ psql --version
psql (PostgreSQL) 9.6.3
$ psql -l
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
$ sudo vi /etc/postgresql/9.6/main/postgresql.conf
listen_addresses = 'localhost'
$ sudo -u postgres createuser ubuntu -s
$ sudo systemctl restart postgresql
$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
PaaS (Heroku) の仕組みを知ろう †
- IaaS
- Local Env: Ruby/Rails, Database, Web Server, Source Code
- Server: Ruby/Rails, Database, Web Server, Source Code, Analytics, Logging
- Heroku (PaaS)
- Source Code
- Dependencies: ライブラリの依存関係を示したファイル (RubyのGemfile, Node.jsのpackage.json等)
- Procfile: Heroku上で動かしたいコマンド一覧
- Slug: Source CodeとDependenciesをまとめたファイル
- Dyno: Linuxコンテナ (Slugを読み込んで稼働, 容易に起動/破棄/スケールアウトが可能)
- Addon: 本番環境に必要なツールを提供 (Addon:Logging, Addon:Mail, Addon:Analytics等)
- Herokuの制約
- Dyno上のディスク領域は揮発性のため永続データはAddon:Databaseや外部のストレージサービス利用が必要
- Slugにもサイズ制限があるためJS, CSS, Images等は外部ストレージに保存する必要あり
- 基本機能の利用は無料だがDynoにアクセスが一定期間無いとスリープになり次回アクセス時に起動に数秒掛かる
Heroku CLIインストール †
- Debian/Ubuntu用の公式インストールシェルスクリプトをダウンロード&実行
$ wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh
$ heroku --version
heroku-cli/6.13.7 (linux-x64) node-v8.2.1
- ※ OS X (Elcapitan) 上にインストールする場合は以下参照
$ brew upgrade
$ brew update
- Heroku (Heroku CLI) インストール
$ brew install heroku
$ heroku --version
heroku-cli/6.13.7 (darwin-x64) node-v8.2.1
$ ssh-keygen -t rsa -C y.shimojo@example.com
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): /home/ubuntu/.ssh/id_heroku_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ubuntu/.ssh/id_heroku_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_heroku_rsa.pub.
- Herokuアカウントとの紐付け (heroku login)
$ heroku login
Enter your Heroku credentials:
Email: y.shimojo@example.com
Password: ********
Logged in as y.shimojo@example.com
$ heroku keys:add /home/ubuntu/.ssh/id_heroku_rsa.pub
Uploading /home/ubuntu/.ssh/id_heroku_rsa.pub SSH key... done
Railsアプリケーションを作ろう †
- rails newでmymemoアプリ作成 (postgres使用)
$ rails new mymemo -d postgresql
$ cd mymemo
$ vi Gemfile
gem 'therubyracer', platforms: :ruby
$ rails s
Could not find gem 'therubyracer' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
- Bundlerをインストール ※ --no-document オプション無しの場合はRDocもインストール
$ sudo gem install bundler --no-document
- Gemの依存性解決 (bundle install)
$ bundle install
$ rails s
=> Booting Puma
=> Rails 5.0.5 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.9.1 (ruby 2.3.1-p112), codename: Private Caller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
- ブラウザ経由で 192.168.78.90:3000 へ接続しRailsのデフォルトページが表示されることを確認
- Scaffoldを使ってRailsアプリ作成 ※ エラー発生
$ rails g scaffold Memo title:string body:text
$ sudo rbenv exec gem install bundler
$ rbenv rehash
$ bundle config build.nokogiri --with-xml2-config=/usr/local/opt/libxml2/bin/xml2-config --with-xslt-config=/usr/local/opt/libxslt/bin/xslt-config
$ bundle config build.mini_portile2 --use-system-libraries
$ bundle install
$ rbenv rehash
$ rails g scaffold Memo title:string body:text
Running via Spring preloader in process 13342
invoke active_record
create db/migrate/20170806093511_create_memos.rb
create app/models/memo.rb
invoke test_unit
create test/models/memo_test.rb
create test/fixtures/memos.yml
invoke resource_route
route resources :memos
invoke scaffold_controller
create app/controllers/memos_controller.rb
invoke erb
create app/views/memos
create app/views/memos/index.html.erb
create app/views/memos/edit.html.erb
create app/views/memos/show.html.erb
create app/views/memos/new.html.erb
create app/views/memos/_form.html.erb
invoke test_unit
create test/controllers/memos_controller_test.rb
invoke helper
create app/helpers/memos_helper.rb
invoke test_unit
invoke jbuilder
create app/views/memos/index.json.jbuilder
create app/views/memos/show.json.jbuilder
create app/views/memos/_memo.json.jbuilder
invoke test_unit
create test/system/memos_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/memos.coffee
invoke scss
create app/assets/stylesheets/memos.scss
invoke scss
create app/assets/stylesheets/scaffolds.scss
$ bundle exec rake db:create
Created database 'mymemo_development'
Created database 'mymemo_test'
$ bundle exec rake db:migrate
== 20170806093511 CreateMemos: migrating ======================================
-- create_table(:memos)
-> 0.0051s
== 20170806093511 CreateMemos: migrated (0.0063s) =============================
$ rails s
- ブラウザ経由で 192.168.78.90:3000/memos へ接続しCRUDアプリが動作することを確認
$ bundle install
$ pwd
/home/ubuntu/mymemo
$ git init
$ git add .
$ git commit -m "initial commit"
heroku createしてみよう †
- Gemfile内にherokuで必要なgemを追記
$ vi Gemfile
gem 'rails_12factor', group: :production
$ vi Procfile
web: bundle exec rails server -p $PORT
$ git add .
$ git commit -m "Gemfile updated, Procfile added"
- Herokuアプリを作成 (heroku createコマンドでgit remote repositoryも自動的に作成)
$ heroku create
Creating app... done, ⬢ tranquil-headland-xxxxx
https://tranquil-headland-90386.herokuapp.com/ | https://git.heroku.com/tranquil-headland-xxxxx.git
Heroku上で確認してみよう †
$ git push heroku master
$ heroku addons:add heroku-postgresql
Creating heroku-postgresql on ⬢ tranquil-headland-xxxxx... free
Database has been created and is available
! This database is empty. If upgrading, you can transfer
! data from another database with pg:copy
Created postgresql-encircled-xxxxx as DATABASE_URL
Use heroku addons:docs heroku-postgresql to view documentation
$ heroku run rake db:migrate
$ heroku apps:info
=== tranquil-headland-xxxxx
Addons: heroku-postgresql:hobby-dev
Auto Cert Mgmt: false
Dynos:
Git URL: https://git.heroku.com/tranquil-headland-xxxxx.git
Owner: y.shimojo@example.com
Region: us
Repo Size: 0 B
Slug Size: 0 B
Stack: heroku-16
Web URL: https://tranquil-headland-xxxxx.herokuapp.com/
- カレントディレクトリがHerokuアプリのローカルリポジトリ直下でない場合 (リモート<->ローカルリポジトリの紐付けができない)
$ heroku apps:info
▸ No app specified.
▸ USAGE: heroku info my-app
$ cd mymemo/
$ heroku apps:info
$ heroku apps:info --app tranquil-headland-xxxxx
$ heroku list
=== y.shimojo@example.com Apps
tranquil-headland-xxxxx
- Herokuアプリ名を指定して情報表示 (heroku apps:info --app [app_name] でも可)
$ heroku info tranquil-headland-xxxxx
=== tranquil-headland-xxxxx
Addons: heroku-postgresql:hobby-dev
Auto Cert Mgmt: false
Dynos: web: 1
Git URL: https://git.heroku.com/tranquil-headland-xxxxx.git
Owner: y.shimojo@example.com
Region: us
Repo Size: 37 KB
Slug Size: 38 MB
Stack: heroku-16
Web URL: https://tranquil-headland-xxxxx.herokuapp.com/
heroku ps/logs/maintenanceを使おう †
$ heroku ps
Free dyno hours quota remaining this month: 550h 0m (100%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping
=== web (Free): bundle exec rails server -p $PORT (1)
web.1: up 2017/08/06 10:52:12 +0000 (~ 4m ago)
- Dynoの台数を変更するコマンド (1=>2) ※ 有料プラン登録必要
$ heroku ps:scale web=2
Scaling dynos... !
▸ Cannot update to more than 1 Free size dynos per process type.
- ログ確認コマンド ※ デフォルト1,500行まで保存
$ heroku logs
$ heroku logs --tail
$ heroku maintenance:on
$ heroku maintenance
on
$ heroku maintenance:off
One-off Dynosを使ってみよう †
- heroku runでDynoに対してコマンド実行する際に裏側ではOne-off Dynoという一時的なDynoが起動
$ heroku run bash
~ $ ls
app bin config config.ru db Gemfile Gemfile.lock lib log package.json Procfile public Rakefile README.md test tmp vendor
~ $ exit
exit
$ heroku run rails console
irb(main):001:0> m = Memo.new({title:"hoge",body:"hogehoge"})
=> #<Memo id: nil, title: "hoge", body: "hogehoge", created_at: nil, updated_at: nil>
irb(main):002:0> m.save
(1.3ms) BEGIN
SQL (1.7ms) INSERT INTO "memos" ("title", "body", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["title", "hoge"], ["body", "hogehoge"], ["created_at", "2017-08-06 11:07:29.045107"], ["updated_at", "2017-08-06 11:07:29.045107"]]
(2.1ms) COMMIT
=> true
irb(main):003:0> auit
heroku releasesを使ってみよう †
- index.html.erbに "hello world" 追記
$ vi app/views/memos/index.html.erb
<p>hello world</p>
- Rails Server起動しブラウザ経由 (192.168.78.90:3000/memos) で確認
$ git add .
$ git commit -m "added hello world"
$ git push heroku master
$ heroku releases
=== tranquil-headland-xxxxx Releases - Current: v6
v6 Deploy 24731a70 y.shimojo@example.com 2017/08/06 11:15:12 +0000 (~ 1m ago)
v5 Deploy 80b93304 y.shimojo@example.com 2017/08/06 10:52:04 +0000 (~ 24m ago)
v4 Set LANG, RACK_ENV, RAILS_ENV, RAILS_LOG_TO_STDOUT, RAILS_SERVE_STATIC_FILES, SECRET_KEY_BASE config vars yjshimojo@gmail.com 2017/08/06 10:52:03 +0000 (~ 24m ago)
v3 Attach DATABASE (@ref:postgresql-encircled-86963) y.shimojo@example.com 2017/08/06 10:42:49 +0000 (~ 33m ago)
v2 Enable Logplex y.shimojo@example.com 2017/08/06 10:35:32 +0000 (~ 40m ago)
v1 Initial release y.shimojo@example.com 2017/08/06 10:35:32 +0000 (~ 40m ago)
$ heroku releases:rollback
環境変数を使ってみよう †
- APIキーやDBホストは環境変数にセットすることが推奨
- 環境変数のセット
$ heroku config:set mykey=value
$ heroku config:get mykey
$ heroku config
$ heroku config:unset mykey
$ vi app/views/memos/index.html.erb
<p><%= ENV['mykey'] %></p>
$ git add .
$ git commit -m "mykey added"
$ git push heroku master
- ブラウザ経由でmykeyの値が表示されていることを確認
foremanを使ってみよう †
$ sudo apt-get install ruby-foreman
- 環境変数をローカル環境でも参照する方法 (.envファイルを作成)
$ vi .env
mykey=mylocalvalue
- 実行の際は rails s ではなく foreman コマンドを使用 (ポート番号: 5000)
$ foreman start
- ※ 未解決: ブラウザ経由で 192.168.78.90:5000/memos へアクセスしてもサイト表示不可
- ローカル環境用の環境変数をgit ignoreに追加
$ vi .gitignore
.env
- Heroku環境の環境変数は
- Dashboard >> アプリ選択 >> Settings >> "Reveal Config Vars" を選択
Python 環境構築 †
ローカル開発環境の構築 †
$ sudo apt-get install libbz2-dev llvm libncurses5-dev libncursesw5-dev
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
$ vi ~/.bashrc
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi
$ source ~/.bashrc
- インストール可能な Python 3.6 バージョン確認
$ pyenv install -l | grep 3.6
3.3.6
3.6.0
3.6-dev
3.6.1
3.6.2
$ pyenv install 3.6.1
$ pyenv global 3.6.1
$ python --version
Python 3.6.1
Heroku アプリ作成 / デプロイ †
$ git clone https://github.com/heroku/python-getting-started.git
$ cd python-getting-started
$ heroku create
Creating app... done, ⬢ lit-shelf-xxxxx
https://lit-shelf-xxxxx.herokuapp.com/ | https://git.heroku.com/lit-shelf-xxxxx.git
$ git push heroku master
Counting objects: 328, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (146/146), done.
Writing objects: 100% (328/328), 50.90 KiB | 0 bytes/s, done.
Total 328 (delta 160), reused 328 (delta 160)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing python-3.6.2
remote: -----> Installing pip
remote: -----> Installing requirements with pip
remote: Collecting dj-database-url==0.4.1 (from -r /tmp/build_bb2966442a02c5c434c952dd4f1f9c93/requirements.txt (line 1))
remote: Downloading dj-database-url-0.4.1.tar.gz
remote: Collecting Django==1.11 (from -r /tmp/build_bb2966442a02c5c434c952dd4f1f9c93/requirements.txt (line 2))
remote: Downloading Django-1.11-py2.py3-none-any.whl (6.9MB)
remote: Collecting gunicorn==19.6.0 (from -r /tmp/build_bb2966442a02c5c434c952dd4f1f9c93/requirements.txt (line 3))
remote: Downloading gunicorn-19.6.0-py2.py3-none-any.whl (114kB)
remote: Collecting psycopg2==2.6.2 (from -r /tmp/build_bb2966442a02c5c434c952dd4f1f9c93/requirements.txt (line 4))
remote: Downloading psycopg2-2.6.2.tar.gz (376kB)
remote: Collecting whitenoise==3.3.0 (from -r /tmp/build_bb2966442a02c5c434c952dd4f1f9c93/requirements.txt (line 5))
remote: Downloading whitenoise-3.3.0-py2.py3-none-any.whl
remote: Collecting pytz (from Django==1.11->-r /tmp/build_bb2966442a02c5c434c952dd4f1f9c93/requirements.txt (line 2))
remote: Downloading pytz-2017.2-py2.py3-none-any.whl (484kB)
remote: Installing collected packages: dj-database-url, pytz, Django, gunicorn, psycopg2, whitenoise
remote: Running setup.py install for dj-database-url: started
remote: Running setup.py install for dj-database-url: finished with status 'done'
remote: Running setup.py install for psycopg2: started
remote: Running setup.py install for psycopg2: finished with status 'done'
remote: Successfully installed Django-1.11 dj-database-url-0.4.1 gunicorn-19.6.0 psycopg2-2.6.2 pytz-2017.2 whitenoise-3.3.0
remote:
remote: -----> $ python manage.py collectstatic --noinput
remote: 63 static files copied to '/tmp/build_bb2966442a02c5c434c952dd4f1f9c93/gettingstarted/staticfiles', 79 post-processed.
remote:
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 49.1M
remote: -----> Launching...
remote: Released v4
remote: https://lit-shelf-xxxxx.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/lit-shelf-xxxxx.git
* [new branch] master -> master
$ heroku ps:scale web=1
$ heroku ps
$ heroku logs --tail
$ view Procfile
- requirements.txt 確認 (依存関係のあるライブラリ管理)
$ cat requirements.txt
dj-database-url==0.4.1
Django==1.11
gunicorn==19.6.0
psycopg2==2.6.2
whitenoise==3.3.0
- ローカル仮想環境に requirements.txt をインストール ※ python 3.6 から pyenv スクリプト (コマンド) は非推奨
$ python -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
$ deactivate
$ python manage.py collectstatic
$ heroku local web
[OKAY] Loaded ENV .env File as KEY=VALUE Format
12:55:24 web.1 | [2017-08-20 12:55:24 +0000] [12622] [INFO] Starting gunicorn 19.6.0
12:55:24 web.1 | [2017-08-20 12:55:24 +0000] [12622] [INFO] Listening at: http://0.0.0.0:5000 (12622)
12:55:24 web.1 | [2017-08-20 12:55:24 +0000] [12622] [INFO] Using worker: sync
12:55:24 web.1 | [2017-08-20 12:55:24 +0000] [12625] [INFO] Booting worker with pid: 12625
12:55:32 web.1 | Not Found: /favicon.ico
- ブラウザ経由で 192.168.78.90:5000 へアクセスし確認
Heroku アプリ削除 †
$ heroku destroy
▸ WARNING: This will delete ⬢ lit-shelf-xxxxx including all add-ons.
▸ To proceed, type lit-shelf-xxxxx or re-run this command with --confirm lit-shelf-xxxxx
> lit-shelf-xxxxx
Destroying ⬢ lit-shelf-xxxxx (including all add-ons)... done