未分類

さくらのVPS-Ruby on Railsのインストール、開発環境の構築

今回は、さくらのVPSにてRuby on Railsのインストール、開発環境の構築を行う。

参考)初心者でもかんたん!Ruby on Rails の開発環境の構築手順
https://www.sejuku.net/blog/39936

やること

1.Ruby on Railsに必要なソフトウェアの確認
2.Ruby on Railsのセットアップ
3.Ruby on Rails を起動・確認
4.Firewallの設定

1.Ruby on Ralsに必要なソフトウェアの確認

必要なソフトウェア、バージョン

ソフトウェア バージョン
rbenv 最新のもの
ruby-buildプラグイン 最新のもの
ruby 2.4.1
Bundler 最新のもの
Ruby on Rails 5.1.6

rbenv をインストール

rbenvは、rubyのバージョンを選択できるようにする管理ソフト。
バージョンを切り替えたりできるみたい。
新しいバージョンに更新する場合などに、前のバージョンを使ったりできるので便利。
今回はバージョン変更は行いませんが、RubyをインストールするPluginを利用するために必要なためインストールする。
まずrbenvをインストールするために必要なyumパッケージを追加

# yum install -y git gcc openssl-devel readline-devel zlib-devel sqlite-devel gcc-c++ libicu-devel cmake vim

ずらずらーと出るが、Complete! が出れば成功
rbenvインストール

# git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
Cloning into '/root/.rbenv'...
remote: Counting objects: 2737, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 2737 (delta 11), reused 13 (delta 4), pack-reused 2714
Receiving objects: 100% (2737/2737), 518.23 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1711/1711), done.

パスを通す(rootユーザに対して)

# echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# source ~/.bash_profile

これをしないとコマンドが使用できない。
パスが通っていないと、/bin/****/コマンド名 みたいに全パスを指定してあげないと
インストールしたソフトウェアのコマンドが使えないので不便。
そのため、どの場所でもパス指定なしでコマンド名だけで実行できるようにするために設定する。

rbenv が使えることを確認

# rbenv --version
rbenv 1.1.1-37-g1c772d5

ruby-buildプラグイン を追加

ruby-buildプラグインは、rubyをコンパイル・インストールをするためのプログラム

# git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Cloning into '/root/.rbenv/plugins/ruby-build'...
remote: Counting objects: 8867, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 8867 (delta 8), reused 18 (delta 2), pack-reused 8843
Receiving objects: 100% (8867/8867), 1.85 MiB | 1.20 MiB/s, done.
Resolving deltas: 100% (5704/5704), done.

Ruby をインストール

ruby バージョン2.4.1を入れる

# rbenv global 2.4.1
# rbenv rehash
# ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
#

Bundler のインストール

Gemfileというファイルにインストールしたいライブラリを記載して、管理するためのプログラム
いろんなライブラリを入れると何が入っているか分からなくなったり、互換性がなかったり問題がおきる場合があるので
ライブラリのインストール・管理を行ってくれる。

# gem install bundler
Fetching: bundler-1.16.2.gem (100%)
Successfully installed bundler-1.16.2
Parsing documentation for bundler-1.16.2
Installing ri documentation for bundler-1.16.2
Done installing documentation for bundler after 6 seconds
1 gem installed

# rbenv rehash
# bundle -v
Bundler version 1.16.2
#

Ruby on Rails のインストール

# bundle init
# sed -i 's/# gem "rails"/gem "rails", "~> 5.1.0"/g' Gemfile

# bundle install --path vendor/bundler
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root
users on this machine.
・
Bundle complete! 1 Gemfile dependency, 38 gems now installed.
Bundled gems are installed into `./vendor/bundler`

問題なく成功したみたいだけど、
⇒rootではbundlerを走らせるな(太字)と書かれている。。。Rootでしちゃったが大丈夫なのか。。。

# bundle exec rails new .   
・
・
         run  bundle exec spring binstub --all
* bin/rake: spring inserted
* bin/rails: spring inserted

問題なく完了
rootでいろいろなソフトをインストールしてしまったことが不安ですが、何とかなると思って先に進もう
参考)Rails開発環境をrootユーザーで作成した場合
https://teratail.com/questions/15075

3.Ruby on Rails を起動・確認

# bin/rails s
/root/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bundler-1.16.2/lib/bundler/runtime.rb:84:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
Backtrace for gem load error is:

⇒エラーが出てだめだった
調べてみると、therubyracer というライブラリを有効にすると改善する模様。

参考)rails server で There was an error while trying to load the gem 'uglifier'.と言われる解決方法。
https://qiita.com/pugiemonn/items/11a2bc8403e5947a8f13

therubyracer を有効にする。

Gemfileの
# gem 'therubyracer', platforms: :ruby
の、頭の#を消す

# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby

バンドルインストールを実行

# bundle install

RAILSを起動

# bin/rails s
=> Booting Puma
=> Rails 5.1.6 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.4.1-p111), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

⇒いけたーーー

補足

再度ログインしたときにrootでruby -v やrbenv --versionが使えなかった。

# ruby -v
bash: ruby: command not found

これは、suコマンドでrootになるとログインスクリプト(.bash_profile)が読み込まれないためだった。
ログインスクリプトを読み込むためには、「su -」(スペース、ハイフンを付ける)でrootになると
ログインスクリプトを読み込むので、コマンドが使えるようになる。

$ su -
Password:
Last login: Tue Jun 12 09:50:52 JST 2018 on pts/0
Last failed login: Tue Jun 12 09:53:17 JST 2018 on pts/0
There were 2 failed login attempts since the last successful login.

4.Firewallの設定

rails用の接続ポートをFirewallで許可する

現設定確認

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https
  ports: 9443/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

tcp3000を許可

#  firewall-cmd --add-port=3000/tcp --zone=public --permanent
success

設定反映のためのリロード

# firewall-cmd --reload
success

設定確認

#  firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-**** http https
  ports: 9443/tcp 3000/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

3000/tcpが追加されている。

rails sで起動

# bin/rails s
=> Booting Puma
=> Rails 5.1.6 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.4.1-p111), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

アクセスしてみる
http://VPSのアドレス:3000

できたーーー!!

-未分類