この記事では、Ruby on Railsの環境構築として
- Linux(CentOS7)にRailsをインストール
- Railsアプリを作成(MySQL連携)
- Railsアプリを起動
- Railsアプリにアクセス
- Railsの初期画面を確認
といった流れで、初心者にもわかりやすく体系的に紹介していきます。
MySQLとの連携や、エラーでハマりやすいポイントなどについても解説しているので、勉強になるところも多いと思いますよ!
「CentOSなんて持ってない!」という方は、以下の記事を読んで、Linux環境を作るところから始めてみてくださいね。

もくじ
Rubyのインストール
Railsを使う前に、まずはCentOS7にRubyがインストールされているかを確認しましょう。
$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]
もし、上のようにRubyのバージョンが表示されていなければ、Rubyをインストールする必要があります。
以下の記事を読んで、CentOS7にRubyをインストールしてみてください。

Ruby on Railsのインストール
「Ruby on Rails(Rails)」は、「gem」コマンドでインストールします。
このとき、Railsのバージョンを指定したい場合は「-v」オプションをつけて実行してください。
# 最新バージョンのRailsをインストールする場合
$ gem install rails
# 指定したバージョンのRailsをインストールする場合
$ gem install rails -v 5.1.6
「gem」がわからない方は以下の記事を読んで、さきにRailsの概要について知っておくと、このさきもスムーズに理解できると思います。

Railsのバージョンの確認
Railsをインストールすると、「rails」コマンドが使えるようになります。
本当に「rails」コマンドが使えるか、試しにrailsのバージョンを表示させてみましょう。
$ rails -v
Rails 5.2.3
Railsアプリの作成
では、Railsアプリを作成していきましょう。
ここでは、ホームディレクトリの下に「training」ディレクトリを作成して、その中に「training_app」というアプリを作ることにします。
また、アプリを作成する際に、使用するデータベースを「MySQL」に指定します。
MySQLがインストールされていない方は、以下の記事を読みながらインストールしておきましょう。

ディレクトリの作成
ディレクトリはどこでもいいのですが、今回はホームディレクトリの下に「training」という名前のディレクトリを作成します。
# ホームディレクトリに移動
$ cd
# 「training」ディレクトリを作成
$ mkdir training
# 「training」ディレクトリに移動
$ cd training

Railsアプリの作成
「rails new」コマンドで、Railsアプリを作成します。その際に、使用するデータベースもあわせて指定しましょう。
今回は「MySQL」を指定するので、オプションで「-d mysql」をつけてください。
実際の業務ではMySQLなどのDBサーバを使うことが多いので、今のうちから慣れておきましょう。
ちなみに、オプションを指定しない場合は「SQLite」というデータベースがデフォルトで使用されます。
$ rails new training_app -d mysql
:
:
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.
:
:
Install missing gem executables with `bundle install`
コマンドを実行すると、上記のようなエラーが出るかもしれません。
どうやら、「mysql2というパッケージのインストールに失敗した」ということみたいです。
mysql2がインストールできない原因
「rails new」コマンドを実行すると、アプリ生成時に必要なパッケージを「RubyGems」で自動的にインストールする仕組みになっています。
さきほど、「-d mysql」オプションを指定したことにより、「gem install mysql2」コマンドが内部で実行されました。
ところが、「mysql2」というgemパッケージをインストールするには、「mysql-devel」というrpmパッケージがCentOSにインストールされていることが前提となっていたため、「mysql2」のインストールに失敗してしまったようです。
つまり、この問題を解決するには
- yumで「mysql-devel」をインストール
- gemで「mysql2」をインストール
という手順を踏む必要があります。
ちなみに「mysql-devel」は、MySQLの機能をプログラム側から使えるようにするためのパッケージです。
mysql-develのインストール
エラーの原因もわかったので、まずはCentOS7に「mysql-devel」をインストールしましょう。
$ sudo yum install -y mysql-devel

Gemfileの確認
1つ注意してほしいのは、さきほど「rails new」コマンドを実行したため、未完成ながらも、すでにRailsアプリが作成されているという点です。
つまり、「rails new」コマンドでRailsアプリを作る必要はないということです。
「ls -al」で、「training_app」ディレクトリの中を確認してみましょう。
$ ls -al ~/training/training_app/
total 40
drwxrwxr-x. 14 vagrant vagrant 4096 Apr 18 09:18 .
drwxrwxr-x. 3 vagrant vagrant 26 Apr 18 08:34 ..
drwxrwxr-x. 10 vagrant vagrant 124 Apr 18 08:34 app
drwxr-xr-x. 2 vagrant vagrant 84 Apr 18 08:34 bin
drwxrwxr-x. 5 vagrant vagrant 270 Apr 18 08:34 config
-rw-rw-r--. 1 vagrant vagrant 130 Apr 18 08:34 config.ru
drwxrwxr-x. 2 vagrant vagrant 22 Apr 18 08:34 db
-rw-rw-r--. 1 vagrant vagrant 2216 Apr 18 08:34 Gemfile
-rw-rw-r--. 1 vagrant vagrant 5365 Apr 18 09:18 Gemfile.lock
drwxrwxr-x. 7 vagrant vagrant 119 Apr 18 08:34 .git
-rw-rw-r--. 1 vagrant vagrant 620 Apr 18 08:34 .gitignore
drwxrwxr-x. 4 vagrant vagrant 33 Apr 18 08:34 lib
drwxrwxr-x. 2 vagrant vagrant 19 Apr 18 08:34 log
-rw-rw-r--. 1 vagrant vagrant 70 Apr 18 08:34 package.json
drwxrwxr-x. 2 vagrant vagrant 159 Apr 18 08:34 public
-rw-rw-r--. 1 vagrant vagrant 227 Apr 18 08:34 Rakefile
-rw-rw-r--. 1 vagrant vagrant 374 Apr 18 08:34 README.md
-rw-rw-r--. 1 vagrant vagrant 5 Apr 18 08:34 .ruby-version
drwxrwxr-x. 2 vagrant vagrant 19 Apr 18 08:34 storage
drwxrwxr-x. 9 vagrant vagrant 179 Apr 18 08:34 test
drwxrwxr-x. 4 vagrant vagrant 47 Apr 18 08:34 tmp
drwxrwxr-x. 2 vagrant vagrant 19 Apr 18 08:34 vendor
作成された「training_app」の中を見ると、「Gemfile」が生成されていることがわかると思います。
実は、Railsアプリには「rails new」をした時点で「Gemfile」が自動生成され、すでにその中に「mysql2をインストールする」という記述が書かれているのです。
「Gemfile」があるということは、「Bundler」を使えば「mysql2」をインストールできそうですね。

mysql2のインストール
では、「bundle」コマンドを実行して「mysql2」パッケージをインストールしましょう。
# 作成したRailsアプリに移動
$ cd ~/training/training_app
# bundleでGemfileに記述されているgemをインストール
$ bundle install
これでRailsアプリを作成することができました。
Railsアプリの起動
では、さっそく作ったRailsアプリを起動してみます。
$ cd ~/training/training_app
$ rails s
:
:
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
おそらく、上のようなエラーが表示されたと思います。
原因は、Railsの内部処理で必要なJavaScriptの実行環境が存在しないからです。
これは、以下のどちらかで解消することができます。
- 「mini_racer」をbundleでインストール
- 「node.js」をyumでインストール
mini_racerのインストール
今回は、bundleで「mini_racer」をインストールして解決してみます。
まずは、Gemfileに記述されている「# gem 'mini_racer', platforms: :ruby」という行をアンコメントして「gem 'mini_racer', platforms: :ruby」に書き変えます。
$ cd ~/training/training_app
$ vi Gemfile
:
:
# gem 'mini_racer', platforms: :ruby(変更前)
gem 'mini_racer', platforms: :ruby(変更後)
:
:

ここで、再度「bundle install」を実行して、「mini_racer」をインストールします。
$ bundle install
:
:
make: g++: Command not found
:
:
今度は「g++コマンド(C++のコンパイラ)が見つからない」というエラーが発生しました。
gcc-c++のインストール
「mini_racer」をインストールするためには「gcc-c++(C++のコンパイラ)」が必要なようなので、yumでインストールしましょう。
$ sudo yum -y install gcc-c++
:
:
Complete!
インストールが完了したら、再度「bundle install」を実行してみます。
$ bundle install
無事、「mini_racer」のインストールに成功したようです。
Railsアプリの起動(Vagrant環境)
Vagrant環境でLinuxを起動している方は、「rails s -b 0.0.0.0」でRailsアプリを起動させてください。
$ rails s -b 0.0.0.0
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.2-p47), 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
上のような表示になっていれば成功です。
localhost(127.0.0.1)以外のIPアドレスからは、デフォルトでアクセスができないようになっているので、「-b 0.0.0.0」オプションをつけて、すべてのIPアドレスを許可しています。
Railsアプリを停止したいときは「Ctrl + c」を押してください。
Railsアプリの起動(Vagrant環境以外)
Vagrant(VirtualBox)などの仮想環境を使っていない場合は、「rails s」コマンドでアプリ起動できます。
$ rails s
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.2-p47), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
上のように表示されていれば成功です。「Ctrl + c」を押せば、Railsアプリを停止できます。
Railsアプリにアクセス
さっそく、Railsアプリにアクセスしてみましょう。上のような画面になれば成功です。
ここからは環境によってアクセス方法が変わります。
「初心者のためのLinux環境構築」を読んで構築した方は、以下のURLからアクセスしてください。
Vagrantなどの仮想環境を使わずにRails環境を構築した場合は、以下のURLでアクセスできるはずです。
もし、上のような画面が表示されなかった場合は、一度Railsアプリを停止し、以下の方法を試してみてください。
サイトにアクセスできない
もし、上の画像のように「このサイトにアクセスできません」と表示されている場合は、Railsの起動コマンドが間違っている可能性があります。(ブラウザによって表示される画面は多少違います)
Vagrantなどの仮想環境を使って構築した方は、必ず「rails s -b 0.0.0.0」で起動するようにしてください。
それでもアクセスできない場合は、Vagrantfileや「vagrant up」時の起動ログなどを確認し、IPアドレスが間違っていないかも確認してみてください。
MySQLのパスワード設定
ブラウザからアクセスすると、「Access denied for user 'root'@'localhost' (using password: NO)」とエラーが表示されることがあります。
これは、RailsアプリがMySQLにrootユーザーでログインしようとした結果、「パスワードがない」とMySQL側に怒られていることが原因です。
まずは、MySQLにログインできるかを確認してみてましょう。
ログイン方法がわからない方やログインできない方は、以下の記事を参考にしてみてください。

MySQLにログインできることを確認したら、ログインユーザーのパスワードをRailsのデータベース設定ファイル「database.yml」に記述する必要があります。
$ vi ~/training/training_app/config/database.yml
:
:
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: (ここにパスワードを入力)
socket: /var/lib/mysql/mysql.sock
:
:
「password:」のあとに、MySQLのrootユーザーのパスワードを記述してファイルを更新してください。
MySQLにパスワードなしでログインできる設定にした方は、この変更はスキップして大丈夫です。
Rails用データベースを作成
上のように、「Unknown database」とエラーが表示される場合があります。
これは、今回作ったRailsアプリが使用する「training_app_development」というデータベースが存在しないことが原因です。
つまり、同名のデータベースを作ってしまえば解決するってことになります。
データベースを作るだけなら、MySQLから直接操作してもいいのですが、Railsには「rails db:create」という便利なコマンドがあるので、今回はそちらを使うことにします。
$ rails db:create
Created database 'training_app_development'
Created database 'training_app_test'
これで、開発用、テスト用それぞれのデータベースが自動で作られました。
ここまでの対応が完了したら、もう一度Railsアプリを起動することで、ブラウザからアクセスできるようになります。
データベースの設定
このように、Railsアプリ側からデータベースを操作できるのは、MySQLへの接続情報が「database.yml」に記述されているためです。
今回作ったアプリのデータベース名である「training_app_development」も、「rails new」コマンドを実行した際に、自動で「database.yml」に書き加えられていたからなんですね。
ちなみに、デフォルトのデータベースの命名ルールは「アプリ名_development」ですが、「database.yml」を編集することで接続するデータベースを変えることも可能です。
まとめ:Railsの環境構築は始まりに過ぎない
無事、Railsアプリを起動できたのではないでしょうか。
ここまで、とても長かったように感じたかもしれませんが、これがWebエンジニアの日常なんです。
そして、ここからさきのRailsの使い方や細かい仕組みなどは、いまのところ解説する予定はありません。
なぜなら、Railsチュートリアル の完成度が非常に高いため、そちらで学習してもらえれば十分だからです。
厳しいことを言いますが、Railsの環境構築は「Webエンジニアとしての始まり」に過ぎません。
最低でも、このさきにあるRailsチュートリアルの内容を理解できるレベルでなければ、Webエンジニアとして食べていくのは厳しいでしょう。
もし、この記事を読んで「難しい」と感じているなら、プログラミングスクールに通うことも真剣に考えてみてください。
わからないことがあるのは当たり前ですし、コツをつかむまで時間がかかることも普通のことです。
ただ、スクールに通って講師やメンターに教えてもらいながら成長するほうが、挫折もしづらく、圧倒的に早くWebエンジニアになれます。
スクールは、Webエンジニアになってお金を稼げるようになるまでの「投資」だと割り切ることも、時には重要です。
独学にしても、スクールにしても、最後はあなたの「やる気」次第。
「どこまで本気で取り組むか」だと思いますよ。
またね、キツネ(@kitaaaa_kitsune)でした!
