概要
VagrantのAmazonLinux2仮想環境にrbenv/Rubyをインストール後、Railsをインストールした記録。
- ホスト:Windows10
- ゲスト:Vagrant + VirtualBox + bento/amazonlinux-2
Railsの最新版ではなく、オリジナルの環境に併せて特定のバージョンを指定してインストールした。
Railsに影響する機能の停止
SELinux
もともとSELinuxは無効状態だった。
1 2 |
[vagrant@vagrant ~]$ getenforce Disabled |
firewalld
そもそもfirewalldはセットされていなかった。
1 2 |
[vagrant@vagrant ~]$ systemctl status firewalld Unit firewalld.service could not be found. |
Railsのインストール
一応、gemで使用できるRailsの確認。使用可能なRailsはない。
1 2 3 |
[vagrant@vagrant ~]$ gem list rails *** LOCAL GEMS *** |
gemでRailsのバージョン5.1.7を指定してインストール。
1 2 3 4 5 6 7 |
[vagrant@vagrant ~]$ gem i -v 5.1.7 railsFetching concurrent-ruby-1.1.8.gem Fetching thread_safe-0.3.6.gem Fetching rack-2.2.3.gem ..... Done installing documentation for concurrent-ruby, i18n, thread_safe, tzinfo, activesupport, irack, rack-test, racc, nokogiri, crass, loofah, rails-html-sanitizer, rails-dom-testing, builder, erubi, actionview, actionpack, activemodel, arel, activerecord, globalid, activejob, mini_mime, mail, actionmailer, nio4r, websocket-extensions, websocket-driver, actioncable, thor, method_source, railties, sprockets, sprockets-rails, rails after 81 seconds 35 gems installed |
再度使用可能なRailsを探して、インストールされていることを確認する。
1 2 3 4 5 6 7 8 |
[vagrant@vagrant ~]$ gem list rails *** LOCAL GEMS *** rails (5.1.7) rails-dom-testing (2.0.3) rails-html-sanitizer (1.3.0) sprockets-rails (3.2.2) |
Railsサーバーの稼働
エラー~JavaScriptランタイムがない
テスト用のプロジェクトを生成してRailsサーバーを起動しようとしたところ、エラーになった。
1 2 3 4 5 6 |
[vagrant@vagrant test_app]$ rails s Traceback (most recent call last): 36: from bin/rails:3:in `<main>' 35: from bin/rails:3:in `load' ..... /home/vagrant/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) |
Node.jsでもよさそうなので、CentOS7と同じ手順でNode.jsをインストール。Rails6では最新安定版のNode.jsだと警告が出たのでダウングレード下が、Rails5では最新版では警告が出なかった。
1 2 3 4 5 6 7 8 |
[vagrant@vagrant test_app]$ nvm install stable Downloading and installing node v15.11.0... Downloading https://nodejs.org/dist/v15.11.0/node-v15.11.0-linux-x64.tar.xz... ######################################################################### 100.0% Computing checksum with sha256sum Checksums matched! Now using node v15.11.0 (npm v7.6.0) Creating default alias: default -> stable (-> v15.11.0) |
ここまででrails server
の実行が可能になった。
ホストブラウザーからの接続
vagrantfileに以下の1行を記述
config.vm.network "forwarded_port", guest: 3000, host: 3000
テスト用のプロジェクトを生成してrails s
を実行すると、「このサイトにアクセスできません」と弾かれる。
netstatで確認すると、ポート3000は開いている。
1 2 3 4 5 6 7 8 |
[vagrant@vagrant ~]$ netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN ..... |
サーバー立ち上げのオプションを以下の様にして接続成功。
rails s -b 0.0.0.0
以前参考にしたサイトを再度確認すると、Rails4.2以降ではこの接続方法になるとのこと。オリジナルの環境ではrails sで十ていたが(エイリアス?)。
既存プロジェクトの実行
オリジナルの環境でつくったプロジェクトをダウンロードし、共有フォルダー経由で仮想環境に移して実行したところ、db:createでエラーが出た。
1 2 3 |
[vagrant@vagrant bbs]$ rails db:create Could not find minitest-5.14.3 in any of the sources Run `bundle install` to install missing gems. |
指示通りにbundle install
。
1 2 3 4 5 |
[vagrant@vagrant bbs]$ bundle install Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`. ..... Bundle complete! 16 Gemfile dependencies, 70 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed. |
この後db:migrationは問題なく、これでアプリケーションがオリジナルの環境通りに実行できるようになった。
一方、仮想環境で作ったプロジェクトをオリジナルの環境にアップロードした場合、オリジナル側でbundle install
が必要になったが、これで問題なく実行できた。