Vagrant+Rails+virtualhostをMacで設定してみた

Web制作

Vagrant+CentOS7でWordPressをローカル環境を整えていたのですが、Ruby on Railsの環境もつくりたなと思い実行。

いろいろ設定を弄り、取り合えずトップは表示できるようになったので、メモ。

追加でやったこと

vagrantでvirtualhost(test.vagrant.testやsub.vagrant.testなど)のサブドメインの設定をしているので、そのほかにやったことをリストアップ。Railsのチュートリアルサイトに合わせていきたいのでRailsは5.1.6になるように。
Ruby on Rails チュートリアル

CentOS7にrailsを入れたい

$ gem install bundler

ERROR: Error installing bundler:
bundler requires Ruby version >= 2.3.0.
バージョンが低いのか。。

rubyのバージョン管理してたほうがあとあといいのかな?

rubyのバージョン管理ができるようにrbenvをインストールしたい

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

あ、gitがはいっていない。

gitのイストール

$ sudo yum -y install git
$ git --version
git version 1.8.3.1

もう一回

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
Cloning into '/home/vagrant/.rbenv'...
fatal: unable to access 'https://github.com/sstephenson/rbenv.git/': Peer reports incompatible or unsupported protocol version.

プロトコルのバージョン?

ひとまずcurlをアップデート

$ sudo yum update -y nss curl libcurl

も一度

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

環境変数を設定

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

rbenvインストールができたのでrubyを。
bundlerインストールで、2.3.0.以上ということだったので、

——–
コマンドのrdenv installが使えそうなので、ruby-buildのインストール

$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ sudo ~/.rbenv/plugins/ruby-build/install.sh

インストールできるrubyの確認

$ rbenv install -l

現時点での安定版の2.6.1をインストール

$ rbenv install 2.6.1
Downloading ruby-2.6.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.bz2
Installing ruby-2.6.1...
Installed ruby-2.6.1 to /home/vagrant/.rbenv/versions/2.6.1

あれ、結構時間かかる。。。

インストールしたバージョンを選択

$ rbenv global 2.6.1

rubyのバージョン確認

$ruby -v 
ruby 2.0.0p598 (2014-11-13) [x86_64-linux]

あれ?

rbenv の使い方的な。

$ rbenv -h
・・・・省略
versions List installed Ruby versions
・・・・省略

vertionsがよさそうです。

$ rbenv versions
system
* 2.6.1 (set by /home/vagrant/.rbenv/version)

いますね。

rubyのバージョンが切りからないので、
https://qiita.com/opiyo_taku/items/3312a75d5916f6cd32b1

$ vi ~/.bash_profile

$ export PATH="~/.rbenv/shims:/usr/local/bin:$PATH"
$ eval "$(rbenv init -)"
$ source ~/.bash_profile # 変更をPCに反映させる
$ ruby -v
ruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-linux]

やっと目的のbundlerインストール。

$ gem install bundler
Fetching bundler-2.0.1.gem
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Installing ri documentation for bundler-2.0.1
Done installing documentation for bundler after 3 seconds
1 gem installed

こちらの
リスト 1.1: バージョンを指定してRailsをインストールする
と同じバージョンを。
https://railstutorial.jp/chapters/beginning?version=5.1#cha-beginning

$ gem install rails -v 5.1.6
$ rails -v
Rails 5.1.6

参考サイト
https://qiita.com/nyanyamo/items/952823ca044859232d82

Vagrantの設定ファイルでディレクトリ権限変更

Macでファイルを編集したものをブラウザで確認したいので、centosとmacで同期しているフォルダの権限の設定。

Vagrantfile

config.vm.synced_folder "./", "/var/www/vhost", owner: "vagrant", group: "apache", mount_options: ['dmode=755', 'fmode=644']

gemの追加

railsをapacheで動かすためにgem(passenger)をインストール。

$ gem install passenger

passengerで設定をする

$ passenger-install-apache2-module

enterでとりあえず進んでいく。

Warning: some directories may be inaccessible by the web server!

The web server typically runs under a separate user account for security
reasons. That user must be able to access the Phusion Passenger files.
However, it appears that some directories have too strict permissions. This
may prevent the web server user from accessing Phusion Passenger files.

It is recommended that you relax permissions as follows:

sudo chmod o+x "/home/vagrant"

Press Ctrl-C to return to the shell. (Recommended)
After relaxing permissions, re-run this installer.
-OR-
Press Enter to continue anyway.

っていわれるけど進む。

Checking for required software...

* Checking for C compiler...
Found: yes
Location: /usr/bin/cc
* Checking for C++ compiler...
Found: yes
Location: /usr/bin/c++
* Checking for Curl development headers with SSL support...
Found: no
Error: Cannot find the `curl-config` command.
* Checking for Zlib development headers...
Found: yes
Location: true
* Checking for Apache 2...
Found: yes
Location of httpd: /usr/sbin/httpd
Apache version: 2.4.6
* Checking for Rake (associated with /home/vagrant/.rbenv/versions/2.6.1/bin/ruby)...
Found: yes
Location: /home/vagrant/.rbenv/versions/2.6.1/bin/ruby /home/vagrant/.rbenv/versions/2.6.1/bin/rake
* Checking for OpenSSL support for Ruby...
Found: yes
* Checking for RubyGems...
Found: yes
* Checking for Ruby development headers...
Found: yes
Location: /home/vagrant/.rbenv/versions/2.6.1/include/ruby-2.6.0/ruby.h
* Checking for rack...
Found: yes
* Checking for OpenSSL development headers...
Found: yes
Location: true
* Checking for Apache 2 development headers...
Found: no
* Checking for Apache Portable Runtime (APR) development headers...
Found: no
* Checking for Apache Portable Runtime Utility (APU) development headers...
Found: no

Some required software is not installed.
But don't worry, this installer will tell you how to install them.
Press Enter to continue, or Ctrl-C to abort.

っていわれても進む。

Installation instructions for required software

* To install Curl development headers with SSL support:
Please install it with yum install libcurl-devel

* To install Apache 2 development headers:
Please install it with yum install httpd-devel

* To install Apache Portable Runtime (APR) development headers:
Please install it with yum install apr-devel

* To install Apache Portable Runtime Utility (APU) development headers:
Please install it with yum install apr-util-devel

If the aforementioned instructions didn't solve your problem, then please take
a look at our documentation for troubleshooting tips:

Installation, upgrade and uninstallation - Apache - Passenger Library
Troubleshooting - Apache - Passenger Library

っといわれる。

libcurl-devel、httpd-devel、apr-devel、apr-util-develが必要そうなのでインストール。

$ sudo yum install libcurl-devel httpd-devel apr-devel apr-util-devel

もう一度実行してみる。

$ passenger-install-apache2-module

警告がでる

ctrl + c で ストップ。

virtualboxのメモリを上げてみる。

一応インストール完了。

インストールの最後のほうにでてくるLadModule passenger_moduleから</IfModule>あたりまでが、httpd.confに記述する設定なのでそれをコピーする。

コピーしたのはこちらの部分。

LoadModule passenger_module /home/vagrant/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/vagrant/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/passenger-6.0.2
PassengerDefaultRuby /home/vagrant/.rbenv/versions/2.6.1/bin/ruby
</IfModule>

設定ファイルは新規で作成。ファイルの場所はconf.dの中に。

$ sudo vi /etc/httpd/conf.d/passenger.conf

apacheのディレクトリの設定

virtualhostの設定。自分はvhost.confとかに設定を分けている。

$ sudo vi /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
DocumentRoot /var/www/vhost/_rails.vagrant.test/hello_app/public
RailsEnv development
PassengerEnabled on
ServerName rails.vagrant.test
ErrorLog /var/www/vhost/_rails.vagrant.test/error_log
CustomLog /var/www/vhost/_rails.vagrant.test/access_log combined
AddDefaultCharset UTF-8

<Directory /var/www/vhost/_rails.vagrant.test/hello_app/public>
AllowOverride all
Require all granted
Options -MultiViews
</Directory>

</VirtualHost>

<Directory /var/www/vhost/_rails.vagrant.test/hello_app/public>のところは、$ rails _5.1.6_ new hello_app で作成しているRailsのpublicを指定する。

ブラウザアクセス

apachectl 再起動してブラウザアクセスしてみる。

スクリーンショット:ランタイムエラー

エラー….。
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
/home/vagrant/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect’

runtimeがない?!

Gemfileファイルを修正してみる

/var/www/vhost/_rails.vagrant.test/hello_app/Gemfile

# gem 'therubyracer', platforms: :ruby
↓
gem 'therubyracer', platforms: :ruby

参考
Rails s するとCould not find a JavaScript runtimeって怒られる問題
https://qiita.com/Thort/items/f7204832ea7bc704d677

node.jsがはいってたらいらないそうなので、node.js最終的にはnode.jsをいれてみる。

$ sudo yum install -y nodejs

な感じでいけるらしい。

次はsqlite3でエラー

スクリーンショット・sqlite3エラー

Specified ‘sqlite3’ for database adapter, but the gem is not loaded. Add `gem ‘sqlite3’` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)

sqlite3がおかしいぽい

$ gem list | grep sqlite3
sqlite3 (1.4.0)

1.4.0がつかわれている。バージョン指定してインストール。

$ gem install sqlite3 -v "1.3.8"

gemが複数はいって

$ sudo gem cleanup

https://railstutorial.jp/chapters/beginning?version=5.1#cha-beginning
Gemfileに合わせてみる

$ bundle install

Resolving dependencies…
Bundler could not find compatible versions for gem “activesupport”:
In snapshot (Gemfile.lock):
activesupport (= 5.1.6.1)

In Gemfile:
rails (= 5.1.6) was resolved to 5.1.6, which depends on
activesupport (= 5.1.6)

coffee-rails (= 4.2.2) was resolved to 4.2.2, which depends on
railties (>= 4.0.0) was resolved to 5.1.6.1, which depends on
activesupport (= 5.1.6.1)

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

コンフリクトエラー。と

$ bundle update

Could not find gem ‘turbolinks (= 5.0.1)’ in any of the gem sources listed in your Gemfile. (Bundler::GemNotFound)

というふうにgemで入っていないものがあったら、

$ gem install turbolinks -v "5.0.1"

でインストール。

$ bundle update
省略
Using uglifier 3.2.0 (was 4.1.20)
Using web-console 3.5.1 (was 3.7.0)
Bundle updated!

やっとたどり着きました。

スクリーンショット・Ruby on Rails5.1.6

 

参考

rails sコマンド実行時に「Could not find a JavaScript runtime.」とエラーが出る場合の対処法
https://qiita.com/azusanakano/items/771dc9919f347de061d7

Apache上でRailsのアプリケーションを動かすためにやったこと
https://qiita.com/taccaya/items/a3cb28ed17c9ab917aab

Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用http://redmine.jp/tech_note/apache-passenger/

コメント

タイトルとURLをコピーしました