Help us understand the problem. What is going on with this article?

さくらVPSでCentOS7 10.Ruby On Railsインストール

はじめに

自由にテスト出来るLinuxのサーバーがほしくて、さくらVPSで構築してみました。
順次手順をアップしていく予定です。

今回は、Ruby On Railsをインストールします。
どういった構成が正解かは判断がつきかねているのですが、今のところこんな感じです・・(^^;

目次

  1. 申し込み
  2. CentOS7インストール
  3. SSH接続
  4. Apache・PHPインストール
  5. MariaDBインストール
  6. FTP接続
  7. sftp接続
  8. phpMyAdminインストール
  9. 環境のバックアップ
  10. Ruby On Railsインストール
  11. RailsプロジェクトをGitで共同開発

10.Ruby On Railsインストール

必要パッケージインストール

Node.jsインストール

Node.jsのバージョンを管理する「n」パッケージをインストールします。
鶏と卵のような話ですが、「n」パッケージインストールにはnpmが必要で、npmにはNode.jsが必要ということで、Node.jsをインストールする為にまずnpmとNode.jsをインストールします。

npmインストール

$ sudo yum install epel-release

node.jsインストール

$ sudo yum install nodejs npm

「n」パッケージインストール

$ sudo npm install -g n

「n」パッケージを使ってNode.jsをインストール

最新版は「latest」、安定版は「stable」でインストールできます。

$ sudo n latest
$ node -v
v11.13.0
$ sudo n stable
$ node -v
v10.15.3

「n」パッケージの使い方

コマンド 内容
n インストールしているバージョンの表示やバージョンを切り替える
n ls すべてのバージョンを表示する
n --latest 最新バージョンを表示する
n --lts 安定バージョンを表示する
n latest 最新バージョンをインストールする
n stable 安定バージョンをインストールする
n [version] 指定したバージョンをインストールする
n rm [version] 指定したバージョンを削除する
n prune すべてのバージョンを削除する

その他もろもろインストール

$ sudo yum -y install gcc make openssl openssl-devel gcc-c++ mysql-devel readline-devel libxml2-devel libxslt-devel git bzip2 zlib-devel sqlite-devel
$ sudo npm install yarn -g

Rubyインストール

rbenvインストール

rbenvは、複数のRubyのバージョンを管理し、プロジェクトごとにRubyのバージョンを指定して使うことを可能としてくれるツールです。
まずこれをインストールします。

$ cd /usr/local
$ sudo git clone https://github.com/rbenv/rbenv.git
$ sudo mkdir rbenv/plugins && cd rbenv/plugins
$ sudo git clone git://github.com/sstephenson/ruby-build.git

ログイン時にrbenvを使えるようにする初期化スクリプトを記述します。

$ sudo vi /etc/profile.d/rbenv.sh

以下を追加

export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"

パーミッションの変更

$ sudo chmod -R 777 /usr/local/rbenv

設定を反映させるために、ここで一度ログアウトして再ログインします。
再ログインしたら、確認。

$ rbenv install -l
2.6.5

Rubyインストール

rbenvを使ってRubyをインストールします。
インストール可能なRubyバージョン一覧を表示します。

$ rbenv install -l

バージョン2.6.5のRubyをインストールします。

$ rbenv install 2.6.5

全体で使用するRubyのバージョンを指定

$ rbenv global 2.6.5

確認

$ ruby --version
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]

Rails環境構築

GemとBundler

GemはRubyGems(Ruby用のパッケージ管理ツール)で管理されるrubyのアプリケーションやライブラリです。
Bundlerは、gem動詞の互換性を保ちながらパッケージの種類やバージョンを管理するツールです。

gem

確認

$ which gem
/usr/local/rbenv/shims/gem

最新版にアップデート

$ gem update --system

バージョン確認

$ gem -v
3.0.6

bundlerインストール

システムのgemにはbundlreのみインストールし、bundler以外のものはプロジェクトのvendor/bundleに格納します。
ので、ここではbundlerのみインストール。

$ gem install bundler

プロジェクトのフォルダ

以前、4. Apache・PHPインストールでApacheをインストールした時に作成した、/var/www/の中にappというフォルダを作成し、その中にプロジェクトを作っていきます。

フォルダ作成

$ mkdir /var/www/app

Webコンテンツに複数のユーザが操作出来るように作成したグループに権限を与えます。

$ sudo chown root:webadmin /var/www/app/
$ sudo chmod 2775 /var/www/app/ -R

「bundle exec」の省略設定

railsコマンドをプロジェクト内のvendor/bundleに格納すると、railsコマンド呼出時に、「bundle exec rails server」のように「bundle exec」を付けて呼び出す必要があります。
このbundle execを省略できるように設定します。
この設定は、各ユーザーごとに必要です。

スクリプトをダウンロード

$ cd
$ curl -L https://github.com/gma/bundler-exec/raw/master/bundler-exec.sh > ~/.bundler-exec.sh

bundler-exec.shを編集

$ vi ~/.bundler-exec.sh

リストにrailsを追記(下の方にあります)

  ・
  ・
 (省略)
  ・
  ・
unicorn
unicorn_rails
wagon
rails
}"

define-bundler-aliases

unset -f define-bundler-aliases

反映させます。

$ source ~/.bashrc

利用可能なRailsのバージョンの確認

$ gem query -ra -n "^rails$"

現時点で最新は6.0.1でしたが、以下のプロジェクトでは5.2.4を使います。

プロジェクト作成

プロジェクト用フォルダ

bundlerを利用する為、「rails new 」する前に、フォルダを作成します。

$ mkdir /var/www/app/HelloWorld
$ cd /var/www/app/HelloWorld

ローカルのrubyのバージョンを指定。

$ rbenv local 2.6.5

確認

$ rbenv version
2.6.5 (set by /var/www/app/HelloWorld/.ruby-version)

Gemfile

Gemfileの雛形作成

$ bundle init
riting new Gemfile to /var/www/app/HelloWorld/Gemfile

Gemfileの編集

$ vi Gemfile

railsのバージョン5.2.4を使用できるように下記のように修正します。

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# コメントを外し、バージョンを記述
gem "rails", "5.2.4"

gemのインストール

$ bundle install --path vendor/bundle

インストールのメッセージが流れ、無事に終わるかと思ったのですが、こんなメッセージが・・・

HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.

Please check your Rails app for 'config.i18n.fallbacks = true'.
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
'config.i18n.fallbacks = [I18n.default_locale]'.
If not, fallbacks will be broken in your app by I18n 1.1.x.

For more info see:
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0

「i18nの設定方法が変わったので気を付けなさい」ということみたいです。
だだ、今回はRailsのバージョン5.2.4にしていますので、I18n (>= 1.1.0) and Rails (< 5.2.2)の条件には引っ掛からないので大丈夫だと思います。

新規プロジェクト作成

これでやっとrailsコマンドが使えるようになりましたので、プロジェクトを作成します。
フォルダは作成済みですので、プロジェクト名の指定は不要です。

$ rails new .

.ruby-versionを上書きしますか?と聞いてきますのでYを入力。

Overwrite /var/www/app/HelloWorld/.ruby-version? (enter "h" for help) [Ynaqdhm]Y

Gemfileを上書しますか?と聞いてきますのでYを入力。

Overwrite /var/www/app/HelloWorld/Gemfile? (enter "h" for help) [Ynaqdhm]Y

順調に行くと思いきや、以下のメッセージが出ました。

The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Bundler could not find compatible versions for gem "sprockets":
  In snapshot (Gemfile.lock):
    sprockets (= 4.0.0)

  In Gemfile:
    sass-rails (~> 5.0) was resolved to 5.1.0, which depends on
      sprockets (>= 2.8, < 4.0)

    rails (~> 5.2.4) was resolved to 5.2.4, which depends on
      sprockets-rails (>= 2.0.0) was resolved to 3.2.1, which depends on
        sprockets (>= 3.0.0)

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
         run  bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`

依存関係に問題があるから、「bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java」を実行しろということのようです。
あと、「bundle update」を実行すると、スナップショットを最初から再構築します、と。
なので、やってみます。

$ bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies......
Bundler could not find compatible versions for gem "sprockets":
  In snapshot (Gemfile.lock):
    sprockets (= 4.0.0)

  In Gemfile:
    sass-rails (~> 5.0) was resolved to 5.1.0, which depends on
      sprockets (>= 2.8, < 4.0)

    rails (~> 5.2.4) was resolved to 5.2.4, which depends on
      sprockets-rails (>= 2.0.0) was resolved to 3.2.1, which depends on
        sprockets (>= 3.0.0)

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
$ bundle update
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
 ・
 ・
(以下略)
 ・
 ・

と、同じようなメッセージが・・・
とりあえず、再度「bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java」して、「bundle update」すると、「Bundle updated!」と出たので、とりあえずOKかなと。

サーバー起動

3000のポートを開ける

ファイアウォールを使っている場合

ポートを開ける

$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload

さくらVPSのパケットフィルタを使っている場合

  1. さくらVPSコントロールパネルにログインし、サーバーを選択
  2. [パケットフィルタ]-[パケットフィルタ設定へ>]を選択
  3. [+任意の解放ポート設定を追加する]ボタンをクリック
  4. [TCP][3000]を設定
  5. [設定]ボタンをクリック


以上でポートが開きます。

サーバー起動

$ rails server -b 0.0.0.0
=> Booting Puma
=> Rails 5.2.4 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.5-p114), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

無事起動しました。

ブラウザで確認

次回

前回:Ruby On Railsインストール
次回:RailsプロジェクトをGitで共同開発

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした