前にやった時もそうだったような気がするんだよなぁ。
詳しい話に入る前に、作業環境を整理しよう。web アプリのデプロイ先は、この間買った新しい マシン rollo (OS は CentOS 8)。これにいつもの作業用メインマシン apostrophe(OS は Ubuntu 16.04 LTS)から ssh で接続して作業してる。rollo 上での作業はアプリの専用ユーザ lcstorage で行った。
まずは、BitBucket から git clone した。
GitHub じゃないのは公開したくないプライベートなプロジェクトだから。オープンにしてもいいプロジェクトは GitHub、そうでないのは BitBucket と使い分けてる。
閑話休題。git clone が終わったので、必要なライブラリをインストールすべく bundle install したらコケた。
[lcstorage@rollo lcstorage]$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/………….
Using bundler 2.0.2
Fetching filestorage 0.1.0
Installing filestorage 0.1.0
Fetching httpclient 2.8.3
Installing httpclient 2.8.3
Fetching json 2.2.0
Installing json 2.2.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory:
/home/lcstorage/lcstorage/vendor/bundle/ruby/2.5.0/gems/json-2.2.0/ext/json/ext/generator
/usr/bin/ruby -r ./siteconf20191122-22908-wlblo2.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/share/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in
/home/lcstorage/lcstorage/vendor/bundle/ruby/2.5.0/gems/json-2.2.0 for
inspection.
Results logged to
/home/lcstorage/lcstorage/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/json-2.2.0/gem_make.out
An error occurred while installing json (2.2.0), and Bundler cannot
continue.
Make sure that gem install json -v '2.2.0' --source 'https://rubygems.org/'
succeeds before bundling.
In Gemfile:
json
どうも json gem が拡張ライブラリで、ビルドできなくてコケてるようだ。いろいろググって試行錯誤した結果、つぎのパッケージを dnf install したらできた。
- gcc
- make
- ruby-devel
- rpm-build
gcc や make が入ってなかったのか……
ともあれこれでインストールはできた。必要な設定ファイルやらディレクトリやらを作って、試しに起動してみた。
[lcstorage@rollo lcstorage]$ bundle exec rackup [2019-11-22 22:32:38] INFO WEBrick 1.4.2 [2019-11-22 22:32:38] INFO ruby 2.5.3 (2018-10-18) [x86_64-linux] [2019-11-22 22:32:38] INFO WEBrick::HTTPServer#start: pid=25617 port=9292
起動は大丈夫のようだ。9292番のポートは開けてないので、別のターミナルから別のユーザで rollo に入ってアクセスしてみた。
[takatoh@rollo ~]$ curl http://localhost:9292/ File not found.[takatoh@rollo ~]$ [takatoh@rollo ~]$ curl http://localhost:9292/path/to/file File not found.[takatoh@rollo ~]$
返すファイルがないので File not found. が帰ってくるのは正しい動作。どうやら大丈夫のようだ。
明日は Nginx を介して外部からアクセスできるようにする予定。