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 LibraryTroubleshooting - 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でエラー
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!
やっとたどり着きました。
参考
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/
コメント