【月間10万PV達成】ブログの作り方を無料公開中!

【Ruby on Rails環境構築】インストールから起動までの手順【MySQL】

Ruby on Railsのインストール

この記事では、Ruby on Railsの環境構築として

  1. Linux(CentOS7)にRailsをインストール
  2. Railsアプリを作成(MySQL連携)
  3. Railsアプリを起動
  4. Railsアプリにアクセス
  5. Railsの初期画面を確認

といった流れで、初心者にもわかりやすく体系的に紹介していきます。

MySQLとの連携や、エラーでハマりやすいポイントなどについても解説しているので、勉強になるところも多いと思いますよ!

「CentOSなんて持ってない!」という方は、以下の記事を読んで、Linux環境を作るところから始めてみてくださいね。

Linux環境構築【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!

実際に手を動かしながら覚えていこう!

Rubyのインストール

Railsを使う前に、まずはCentOS7にRubyがインストールされているかを確認しましょう。

Rubyのバージョンを確認
$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]

もし、上のようにRubyのバージョンが表示されていなければ、Rubyをインストールする必要があります。

以下の記事を読んで、CentOS7にRubyをインストールしてみてください。

Rubyのインストール【rbenvの使い方】RubyをCentOSにインストールしよう【超簡単】

Ruby on Railsのインストール

「Ruby on Rails(Rails)」は、「gem」コマンドでインストールします。

このとき、Railsのバージョンを指定したい場合は「-v」オプションをつけて実行してください。

Railsをインストール(最新バージョン)
# 最新バージョンのRailsをインストールする場合
$ gem install rails
Railsをインストール(指定バージョン)
# 指定したバージョンのRailsをインストールする場合
$ gem install rails -v 5.1.6

「gem」がわからない方は以下の記事を読んで、さきにRailsの概要について知っておくと、このさきもスムーズに理解できると思います。

Ruby on Railsとは【初心者】Ruby on Railsとは?MVC,Gem,Bundler,Puma,Rackがわかる!

Railsのインストール自体は、RubyGemsを使えば簡単だね!

Railsのバージョンの確認

Railsをインストールすると、「rails」コマンドが使えるようになります。

本当に「rails」コマンドが使えるか、試しにrailsのバージョンを表示させてみましょう。

Railsのバージョンを表示
$ rails -v
Rails 5.2.3

上のように「Railsのバージョン」が表示されていればOK!

Railsアプリの作成

では、Railsアプリを作成していきましょう。

ここでは、ホームディレクトリの下に「training」ディレクトリを作成して、その中に「training_app」というアプリを作ることにします。

また、アプリを作成する際に、使用するデータベースを「MySQL」に指定します。

MySQLがインストールされていない方は、以下の記事を読みながらインストールしておきましょう。

Mysqlのインストール【初心者】MySQLをLinux(CentOS)にインストールして起動しよう!

ディレクトリの作成

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

ディレクトリを作成
# ホームディレクトリに移動
$ cd
# 「training」ディレクトリを作成
$ mkdir training
# 「training」ディレクトリに移動
$ cd training
Linuxのディレクトリ構成Linuxのディレクトリ構成(構造)とは?Windowsフォルダとの違いを覚える!

Railsアプリの作成

「rails new」コマンドで、Railsアプリを作成します。その際に、使用するデータベースもあわせて指定しましょう。

今回は「MySQL」を指定するので、オプションで「-d mysql」をつけてください。

実際の業務ではMySQLなどのDBサーバを使うことが多いので、今のうちから慣れておきましょう。

ちなみに、オプションを指定しない場合は「SQLite」というデータベースがデフォルトで使用されます。

MySQLを指定してRailsアプリを作成
$ 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」のインストールに失敗してしまったようです。

つまり、この問題を解決するには

  1. yumで「mysql-devel」をインストール
  2. gemで「mysql2」をインストール

という手順を踏む必要があります。

ちなみに「mysql-devel」は、MySQLの機能をプログラム側から使えるようにするためのパッケージです。

「devel」はdevelopmentの略だよ!

mysql-develのインストール

エラーの原因もわかったので、まずはCentOS7に「mysql-devel」をインストールしましょう。

mysql-develをインストール
$ sudo yum install -y mysql-devel
yumとはyumとは?コマンドの使い方やリポジトリの指定、追加、一覧、rpmの違いなど

Gemfileの確認

1つ注意してほしいのは、さきほど「rails new」コマンドを実行したため、未完成ながらも、すでにRailsアプリが作成されているという点です。

つまり、「rails new」コマンドでRailsアプリを作る必要はないということです。

「ls -al」で、「training_app」ディレクトリの中を確認してみましょう。

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」をインストールできそうですね。

Ruby on Railsとは【初心者】Ruby on Railsとは?MVC,Gem,Bundler,Puma,Rackがわかる!

mysql2のインストール

では、「bundle」コマンドを実行して「mysql2」パッケージをインストールしましょう。

mysql2をインストール
# 作成したRailsアプリに移動
$ cd ~/training/training_app
# bundleでGemfileに記述されているgemをインストール
$ bundle install

これでRailsアプリを作成することができました。

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」に書き変えます。

Gemfileを編集
$ cd ~/training/training_app
$ vi Gemfile
      :
      :
# gem 'mini_racer', platforms: :ruby(変更前)
gem 'mini_racer', platforms: :ruby(変更後)
      :
      :
vim入門【Vim入門】viエディタとは?初心者向けの使い方とコマンド操作方法

ここで、再度「bundle install」を実行して、「mini_racer」をインストールします。

mini_racerをインストール
$ bundle install
      :
      :
make: g++: Command not found
      :
      :

今度は「g++コマンド(C++のコンパイラ)が見つからない」というエラーが発生しました。

gcc-c++のインストール

「mini_racer」をインストールするためには「gcc-c++(C++のコンパイラ)」が必要なようなので、yumでインストールしましょう。

gcc-c++をインストール
$ sudo yum -y install gcc-c++
      :
      :
Complete!

インストールが完了したら、再度「bundle install」を実行してみます。

mini_racerをインストール
$ bundle install

無事、「mini_racer」のインストールに成功したようです。

Railsアプリの起動(Vagrant環境)

Vagrant環境でLinuxを起動している方は、「rails s -b 0.0.0.0」でRailsアプリを起動させてください。

Railsアプリを起動(Vagrantの場合)
$ 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アプリを起動(Vagrant以外の場合)
$ 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の初期画面

さっそく、Railsアプリにアクセスしてみましょう。上のような画面になれば成功です。

ここからは環境によってアクセス方法が変わります。

初心者のためのLinux環境構築」を読んで構築した方は、以下のURLからアクセスしてください。

http://192.168.33.10:3000

Vagrantなどの仮想環境を使わずにRails環境を構築した場合は、以下のURLでアクセスできるはずです。

http://localhost:3000

もし、上のような画面が表示されなかった場合は、一度Railsアプリを停止し、以下の方法を試してみてください。

サイトにアクセスできない

railsの「not access」エラー

もし、上の画像のように「このサイトにアクセスできません」と表示されている場合は、Railsの起動コマンドが間違っている可能性があります。(ブラウザによって表示される画面は多少違います)

Vagrantなどの仮想環境を使って構築した方は、必ず「rails s -b 0.0.0.0」で起動するようにしてください。

それでもアクセスできない場合は、Vagrantfileや「vagrant up」時の起動ログなどを確認し、IPアドレスが間違っていないかも確認してみてください。

Vagrant環境からアクセスする場合は、注意しないとだね!

MySQLのパスワード設定

Railsの「access denied」エラー

ブラウザからアクセスすると、「Access denied for user 'root'@'localhost' (using password: NO)」とエラーが表示されることがあります。

これは、RailsアプリがMySQLにrootユーザーでログインしようとした結果、「パスワードがない」とMySQL側に怒られていることが原因です。

まずは、MySQLにログインできるかを確認してみてましょう。

ログイン方法がわからない方やログインできない方は、以下の記事を参考にしてみてください。

MysqlにログインできないMySQLにrootでログインできない!初期設定やファイル変更が必要です!

MySQLにログインできることを確認したら、ログインユーザーのパスワードをRailsのデータベース設定ファイル「database.yml」に記述する必要があります。

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用データベースを作成

Railsの「unknown database」エラー

上のように、「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)でした!

【Ruby入門】初心者向けプログラミング勉強法と学習ステップ【Ruby入門】プログラミング独学勉強法とRails環境構築【学習ステップ】
テキストのコピーはできません。