このエントリーをはてなブックマークに追加

Ruby 3のインストール手順@さくらのレンタルサーバ

更新:

さくらのレンタルサーバ(スタンダードプラン)では、自分でRubyをインストールして使うこともできる。 ここではCGIが実行できるまでを解説する。

インストール

Rubyを使っている人はrbenvを利用する人も多いと思うが、ここでは使わない方法で話を進める。

まず、適当なターミナルソフトを使ってSSHでサーバーにログインする。

さくらのホームディレクトリは以下のようになっている。

/home/自分のアカウント名/

インストールする場所はどこでも良いが、ここではこの配下にlocalというディレクトリを作り、そこで作業を行う。 ディレクトリ名はあくまで例であり、自分の好みの名称で良い。

さらにlocalの下にsrcとruby3というディレクトリを作成する。 最終的にディレクトリの構成は以下のようになる。

/home/自分のアカウント名
   └local
      ├ruby3
      └src

srcディレクトリに移動し、wgetで現在最新版のruby-3.0.2.tar.gzをダウンロード。 その後、展開(解凍)する。

cd src
wget https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.gz
tar -xvzf ruby-3.0.2.tar.gz

次に、configureの --prefix オプションでインストール先のディレクトリを指定する。 ここでは先ほど作成したruby3ディレクトリを指定する。 $HOME(または~(チルダ))は自分のホームディレクトリのことで、/home/自分のアカウント名/のように直接指定しても良い。

configureのオプションは他にもあり、いろいろ試した結果、エラーが出ずにインストールできたのは以下の通り。

./configure --prefix=$HOME/local/ruby3/ --with-baseruby=$HOME/local/ruby3/ --enable-shared
make
make install

Ruby 2.7.4も同様。 configureには --with-opt-dir といったオプションもあるが、ここでは必要なかった。

それぞれのコマンドを打った後、わりと時間がかかるのでしばらく待機する。

インストール完了後、以下のように打つとバージョンが確認できる。

~/local/ruby3/bin/ruby -v

パスを通す

さくらのレンタルサーバはデフォルトのシェルがcsh(.cshrc)となっている。 ここではこのファイルを編集してパスを設定する。 なお、パスを設定するか否かは自由で、設定しなくても上記のように実行ファイル(インタプリタ)を直接叩けば実行できる。

とはいえ、今後gem(ライブラリ)を追加でインストールする場合など、パスを通しておいた方が何かと便利である。

ホームディレクトリに移動し、viなどで.cshrcというファイルを開く。

cd ~
vi .cshrc

中に以下のような予め設定されているパスがある。

set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)

ここに連ねても良いが見にくいので、下に1行追加して以下のようにする。

set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)
set path = ($HOME/local/ruby3/bin $path)

$pathは上の変数を引き継いでいる。 引き継がないと通常のLinuxコマンド等が使えなくなるので注意する。 また、先に書いたものが優先されるので$pathを後に書く。

編集後、設定を更新。

source .cshrc

ログインしたとき一時的にパスが通れば良いという人は、このパスをコマンドとして打っても良い。

set path = ($HOME/local/ruby3/bin $path)

パスが通ったか確認する。

ruby -v

シンボリックリンク

Windowsでいうところのショートカットのようなもの。 長いパスを短くしたい場合などに設定する。 ここでは上記localディレクトリの下にbinディレクトリを作成し、そこにシンボリックリンクを作成する。

cd ~/local
mkdir bin
cd bin
ln -s ~/local/ruby3/bin/ruby ruby3

これで以下のようにコマンドが実行できるようになる。

~/local/bin/ruby3 -v

CGIを実行する

上記の設定を済ませた後、以下の動作確認用のコードを実行する。

#!/home/自分のアカウント名/local/ruby3/bin/ruby
# -*- coding: utf-8 -*-

print "Content-type: text/html; charset=utf-8\n\n"

print <<EOS
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CGI 動作テスト</title>
</head>
<body>
EOS

puts 'バージョン:' + RUBY_VERSION

print <<EOS
</body>
</html>
EOS

パス(シバン)は自分でインストールしたRuby本体(インタプリタ)またはそのシンボリックリンクを指定する。 その際、チルダ(~)等は使わず、/home/自分のアカウント名/から記述する。

ファイルの改行コードはLF、文字コードはUTF-8、パーミッションは755とする。

ファイルの拡張子は.cgiでも良いが、Rubyらしく.rbのまま動かしたい場合は.htaccessに以下のように書く。

Options +ExecCGI
AddType text/html .rb
AddHandler cgi-script .rb

AddHandlerだけでもよい。

rbenv

git clone git://github.com/sstephenson/rbenv.git rbenv
mkdir ~/local/rbenv/plugins
cd ~/local/rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git ruby-build
~/local/rbenv/bin/rbenv -v

パスを通さず作業したせいか、rbenv で install、uninstall、build といったコマンドが使えない状態だった。 とりあえず、rbenv/plugins/ruby-build/bin にある rbenv-install、rbenv-uninstall、ruby-build をそのまま rbenv/libexec にコピーすることで対処した。

また、インストールの際、テンポラリーディレクトリが必要なようである。

setenv TMPDIR $HOME/local/tmp
source ~/.cshrc
~/local/rbenv/bin/rbenv install 3.0.2
~/local/rbenv/bin/rbenv rehash
~/local/rbenv/bin/rbenv global 3.0.2

このエントリーをはてなブックマークに追加