さくらのレンタルサーバ(スタンダードプラン)では、自分で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
上記の設定を済ませた後、以下の動作確認用のコードを実行する。
#!/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だけでもよい。
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