新人さんがRuby on Railsの開発環境構築に苦戦していたので、Vagrantでその手助けをしてあげました。
僕はその新人さん以上にRubyが全く分からない初心者ですが、先人の知恵をお借りすることで環境構築に成功しました。
ベースとなるCentOSのBOXを追加
Vagrant Cloudよりbentoを利用させてもらいます。
$ vagrant box add bento/centos-7.3 https://app.vagrantup.com/bento/boxes/centos-7.3
==> box: Loading metadata for box 'https://app.vagrantup.com/bento/boxes/centos-7.3'
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.
1) parallels
2) virtualbox
3) vmware_desktop
Enter your choice: 2
# 2) virtualboxを選択します
Vagrantの起動
適当にディレクトリを作成して移動します。
$ cd /Users/<NAME>/Vagrant/centos7-rails
Vagrantfileの作成と編集をします。
$ vagrant init bento/centos-7.3
生成されたVagrantfileをエディタ等で編集しておきます。
# config.vm.network "forwarded_port", guest: 80, host: 8080
↓
config.vm.network "forwarded_port", guest: 3000, host: 3000
# config.vm.network "private_network", ip: "192.168.33.10"
↓
config.vm.network "private_network", ip: "192.168.33.10"
コマンドを入力してVagrantを起動します。
$ vagrant up
起動したらSSHで接続してみます。
$ vagrant ssh
[vagrant@localhost ~]$
Vagrantにrbenvを導入してRubyをインストール
まずはCentOSの諸々をアップデートします。
[vagrant@localhost ~]$ sudo yum update
続いてGitをインストールします。
[vagrant@localhost ~]$ sudo yum install git
rbenvに必要なパッケージをインストールします。
[vagrant@localhost ~]$ sudo yum install gcc gcc-c++ openssl-devel readline-devel
rbenvをcloneします。
[vagrant@localhost ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
rbenvのPATHを通します。
[vagrant@localhost ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
[vagrant@localhost ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[vagrant@localhost ~]$ source ~/.bash_profile
rbenvがインストールされて使用できるか、バージョンを確認します。
[vagrant@localhost ~]$ rbenv --version
rbenvでRubyをインストールするため、ruby-buildプラグインをcloneします。
[vagrant@localhost ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
インストール可能なRubyのバージョンを確認します。
[vagrant@localhost ~]$ rbenv install -l
Available versions:
1.8.5-p52
1.8.5-p113
1.8.5-p114
.
.
.
2.5.0-rc1
2.5.0
2.6.0-dev
.
.
.
2018年2月時点での最新である2.5.0をインストールします。
少し時間がかかります。
[vagrant@localhost ~]$ rbenv install 2.5.0
Rubyをインストールしたバージョンに切り替えます。
[vagrant@localhost ~]$ rbenv global 2.5.0
[vagrant@localhost ~]$ rbenv rehash
Rubyがインストールされて使用できるか、バージョンを確認します。
[vagrant@localhost ~]$ ruby -v
Rails+bundlerのインストール
Railsとbundlerをインストールします。
[vagrant@localhost ~]$ gem install --no-ri --no-rdoc rails
[vagrant@localhost ~]$ gem install bundler
Railsがインストールされて使用できるか、バージョンを確認します。
[vagrant@localhost ~]$ rails -v
MySQLのインストール
CentOS7のmariaDBを削除します。
[vagrant@localhost ~]$ sudo yum remove mariadb-libs
MySQL :: Download MySQL Yum Repository
上記より新しいバージョンのリンクを取得してMySQLをインストールします。
2018年2月時点では以下のコマンドです。
[vagrant@localhost ~]$ sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
MySQLに関する諸々をインストールします。
[vagrant@localhost ~]$ sudo yum install mysql-community-server
MySQLがインストールされて使用できるか、バージョンを確認します。
[vagrant@localhost ~]$ mysqld --version
MySQLの起動、自動起動設定
MySQLの起動と自動起動の設定をします。
[vagrant@localhost ~]$ sudo systemctl start mysqld.service
[vagrant@localhost ~]$ sudo systemctl enable mysqld.service
MySQLのパスワード変更
MySQLの起動をすると初期パスワードが生成されます。
[vagrant@localhost ~]$ cat /var/log/mysqld.log | grep password
2018-02-19T15:20:23.947088Z 1 [Note] A temporary password is generated for root@localhost: ibgw6k!m+VDi
この場合では「ibgw6k!m+VDi」がパスワードです。
このパスワードを利用して、rootパスワードを変更します。
[vagrant@localhost ~]$ mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: #生成されたパスワードを入力
The existing password for the user account root has expired. Please set a new password.
New password: #新しく設定するパスワードを入力(8文字以上かつ英大文字・小文字・数字・記号)
Re-enter new password: #再び入力
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
New password:
Re-enter new password:
# 以降基本的に y をタイプして進めます
All done!
MySQLにログイン
設定したパスワードでMySQLにログインできるか確認します。
[vagrant@localhost ~]$ mysql -u root -p
Enter password:
.
.
.
mysql> quit
Bye
[vagrant@localhost ~]$
MySQLの文字コードを変更
viで下の2行をファイルの最後に追記して、MySQLの文字コードを「utf-8」に変更します。
[vagrant@localhost ~]$ sudo vi /etc/my.cnf
character_set_server=utf8
skip-character-set-client-handshake
設定を適用するため、MySQLを再起動します。
[vagrant@localhost ~]$ sudo systemctl restart mysqld.service
Rails with MySQLに必要なパッケージのインストール
RailsでMySQLを使うために必要なgemを使うためのパッケージのインストールをします。
[vagrant@localhost ~]$ sudo yum install mysql-devel
Vagrantにnodebrewを導入してNode.jsをインストール
nodebrewを導入してPATHを通します。
[vagrant@localhost ~]$ curl -L git.io/nodebrew | perl - setup
[vagrant@localhost ~]$ echo "export PATH=$HOME/.nodebrew/current/bin:$PATH" >> ~/.bash_profile
[vagrant@localhost ~]$ source ~/.bash_profile
Node.jsの最新安定版をインストールします。
[vagrant@localhost ~]$ nodebrew install-binary stable
[vagrant@localhost ~]$ nodebrew use stable
Node.jsがインストールされて使用できるか、バージョンを確認します。
[vagrant@localhost ~]$ node -v
[vagrant@localhost ~]$ npm -v
Railsサーバー起動
ここまでで開発環境構築は完了です。
Railsサーバー起動コマンドは以下になるかと思います。
[vagrant@localhost ~]$ bundle exec rails server
http://192.168.33.10:3000
上記URLで接続できたら成功です。
コメント