Vagrant & VirtualBox Heroku & Railsでアプリケーションを作るまでの道のり
目次
- はじめに
- システム構成
- 開発環境構築(Vagrant & VirtualBox)
はじめに
RailsアプリをHerokuでホスティングする方法に加えて開発環境
Pushした時にエラー地獄にあったので開発環境構築からHeroku反映までの手順を忘れない用に自分にメモしておく。
基本はこの流れにそっています(RVMではなくrbnevを使うとか細かいところで違いはありますが)
実際にやってみて幾つか詰まったところがあったので追記あり
下記の記事から手順を参考にさせてもらいましたm(_ _)m
- MacOS XでVagrantにCentOS入れ、Railsアプリ制作、Heroku公開
- rbenv を使って ruby をインストールする(CentOS編)
- Vagrantのsynced_folderはrsyncで
- Getting Started with Rails 5.x on Heroku - Heroku dev center
システム構成
本番はHeroku、ローカルはVagrantとVirtualBox使ってVMたてる。
あとで詳しく書く。
開発環境構築
インストールが必要なアプリケーション
1: CentOSのboxを追加して仮装マシンを作成する
vagrant box add centos65-x86_64-20140116 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
2: 追加されたboxの確認
vagrant box list
centos65-x86_64-20140116 (virtualbox, 0)
3: vagrantの初期化
初期化は初回のみ
vagrant init centos65-x86_64-20140116
4: Vagrantfile修正
railsで利用するためVagrantfileを書き換える
vim Vagrantfile
// 3000番ポートへのアクセスを許可
config.vm.network "forwarded_port", guest: 3000, host: 3000
// 下記のIPでアクセスできる用にする
config.vm.network "private_network", ip: "192.168.33.10"
// vagrant内のデータを./data以下に展開する(エディタで作業し易いように)
config.vm.synced_folder "~/path/to/your/git/folder", "/home/vagrant/path/to/synced",
type: "rsync",
rsync__args: ["--verbose", "--archive", "--delete", "--copy-links", "--times", "-z"],
rsync__exclude: [".git/"]
5: 仮想サーバー操作でよく使うコマンドたち
ここではサーバの起動とssh接続までやっておく
// サーバー起動
vagrant up
// ローカルのデータとrsyncさせる(watch状態になる)
vagrant rsync-auto
// サーバーへのssh接続
vagrant ssh
// サーバーシャットダウン(Mac側からやる場合は下記。VMにsshした状態でshutdownしてもおk)
vagrant halt
6: 仮想サーバーの基本設定
ホストのMacからしかアクセスしないため、VMにsshした状態でiptablesを止める。(作業し易いため)
sudo service iptables stop
sudo chkconfig iptables off
yum最新化
sudo yum -y update
サーバーの時間合わせる
date
//時間がズレていたら、以下を実行
sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime
必要最低限の設定追加
sudo yum -y install vim wget
sudo yum install -y curl-devel openssl-devel readline-devel zlib-devel expat-devel gettext-devel perl-ExtUtils-MakeMaker sqlite-devel
※ gitはyum経由で入れるとバージョンが古いため、リポジトリから直接持ってくる
git-core リポジトリ
wget https://www.kernel.org/pub/software/scm/git/git-2.9.4.tar.gz
sudo tar -zxf git-2.9.4.tar.gz
rm git-2.9.4.tar.gz
cd git-2.9.4
sudo make prefix=/usr/local all
sudo make prefix=/usr/local install
git --version
git version 2.9.4
// 右記のエラー出たとき: -bash: /usr/bin/git: No such file or directory
hash -r
bitbucketとかと接続するために鍵作っとく
ツール側に鍵の登録忘れずに
ssh-keygen -t rsa -f id_rsa -b 4096
7: rbenv経由でrubyを追加
gitからrbenvとruby-buildを落としてパスを通しておく
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
// 環境変数系
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL -l
現在rbenv経由でインストールできるrubyのversionをチェックしておく
rbenv install --list
※ Herokuが現状2.3.1っぽいのでそれを使っておく
rbenv install -v 2.3.1
環境読み込み
rbenv rehash
インストールされているruby一覧を確認
rbenv versions
2.3.1
globalに指定する
rbenv global 2.3.1
rubyのバージョンチェック
ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
8: rails導入
インストールとバージョン確認
gem install rails
rails -v
Rails 5.1.0
※ アプリ作成は後ほど
9 :Heroku導入
CLIインストール
sudo wget -qO- https://toolbelt.heroku.com/install.sh | sh
echo 'PATH="/usr/local/heroku/bin:$PATH"' >> ~/.profile
echo 'source .profile' >> ~/.bash_profile
// 初回のみ.profileを読み直す
source .profile
// インストール確認
heroku version
heroku-cli: Installing CLI... 23.85MB/23.85MB
heroku-toolbelt/3.99.1 (x86_64-linux) ruby/2.3.1
heroku-cli/5.9.2-2622131 (linux-amd64) go1.7.5
// ログインチェック
heroku login
Email: herokuにログインしているemail
Password: herokuにログインしているパスワード
// アプリ作成 myappの部分は好きな名前に
heroku create myapp
※ HerokuのApp名とrailsのApp名は合わせる必要がある
10: railsアプリ作成
// vm上にsqliteがないので先に追加しておく
gem install sqlite3 -v '1.3.13'
// myappの部分はherokuのapp名と合わせる
rails new myapp
Gemfileの書き換え
// devではsqlite、prodではpostgresをつかう
# Use sqlite3 as the database for Active Record
group :development do
gem 'sqlite3'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
// 表示確認用に追加
gem 'therubyracer', platforms: :ruby
// Gemfile.lock作成
bundle install --without production
サーバー起動するか確認
rails s
// これでwelcomeの画面でるはず
http://localhost:3000/
herokuにPushした際にpublic以下にhtmlファイルが必要なため作っておく
vim public/index.html
// 中身はよしなに
11: HerokuにPushする
初回のみherokuのリモートにあるアプリと紐付ける
heroku git:remote --app myapp
プッシュする
git push heroku master
これでHeroku側のURLにアクセスすればpublic/index.htmlが表示されます