スポンサーリンク

sassとcompassをさくらのレンタルサーバーで使いたい。しかしRuby1.8。アップグレードはrbenvがカギ。

sass(scssで書いたものをコンパイルしてくれるアプリって言えばいいかな)を前々から使いたかったのだが、なかなか導入できず。
しかし思い立って、そのおざなりにしていたSassにやっと手を出したのだ。だが簡単な道のりではなかったので、ここにその解消した方法を記しておきたい。

基本参考にしたページ
「さくらのレンタルサーバー上でsass&compassをインストールして使う」

さくらのレンタルサーバー上でsass&compassをインストールして使う

だが、このページの例と違って、私がさくらサーバーを契約したのがだいぶ前なので、Rubyが古い。
1.8系がインストールされているのだ。これが大問題。

【さくらのレンタルサーバ】基本仕様
https://help.sakura.ad.jp/206053142/
「※2018年12月5日以降に新規で提供しているスタンダードプランは、2.5.xです。」

Rubyのバージョンが1.8だとSassだのCompassだのがインストールできないのだ。
2018年12月5日以降に借りた人にとってはすごい簡単、すんなり行けるはず。新しい契約で借りた別のサーバーで試したら即できてしまった。めんどくさけりゃ借り換えてしまうというのも一つの手だ。
後から考えりゃそうも思いつくのだけれど、古いサーバーでなんとかしようとしてしまうのが人間の業というもの。なので「Rubyのバージョンをあげて」から、「SassとCompassのインストール」をする、ということになり、これがまた長い長い旅になるのだ…。

準備の準備
・まずはさくらサーバーの「スタンダードプラン」以上であることを確認。「スタンダードプラン」以上でない場合は断念かな。いや、それでもやっている人はいた。
http://hanikami.sblo.jp/article/103892887.html
あきらめずやってみよう。私にはその気力はない…。
・SSHでサーバーに接続。そしてvimの使い方をちょっと覚える。
接続とvimの使い方は、上に挙げたページを参照してほしい。

SSHでサーバーに接続できたら、さて、ここからが大変なところなのだ。とにかく進めてみよう。

コマンドアレルギーの治療のためと思って…
サーバーに接続できると

%

というだけのまっくら画面になってると思う。
もし

[xxxxx@xxxxxx]$

みたいな場合はシェル(操作方法)がbashになっているということだ。なにかの過程でログインシェルをbashに変更したのでしょうけど、記憶にない場合は、cshに変えたほうがいいかもしれない。どちらでもいいのだけれど、さくらサーバーのデフォルトシェルはcshで、bashに切り替える手間が一つ減るので。よくわかっている人はbashで出来るだろうし、そこそこの経験者だろうから迷いもないはず。
「bash csh 変更」みたいなキーワードで調べてみてくれ。

しかしこのコマンドまっくら画面が嫌いな人も多いだろう。たしかに普段サーバーを触っていない人にはわけがわからないはず。サーバーを触っている私でさえも、別のサーバーとなるとわからないことが多い。だが、アレルギーと思い込んでいるだけかもしれない。コマンドを何回も打っているうちに気にしなくなる時がくる。それまでの辛抱だから、ちょっと頑張ってみようぜ。

rubyのバージョン確認
えーっと、まずはrubyのバージョン確認をしよう。

ruby -v

と打って、ENTER。

ruby 1.8.7 (2012-10-12 patchlevel 371) [amd64-freebsd9]

やっぱりruby 1.8.xと出てきてしまったら長旅を覚悟。
ruby 2.x.xと出てきたら新しい契約のサーバーなので、SassとCompassのインストールをそのまま進めてもらってOK。

ここからは長旅覚悟になってしまった方へ。
ではサーバーの設定ファイルとでも言える「.cshrc」ファイルをvimで開いてみよう。
「.cshrc」はログインしたときにcshシェルが走るイニシャルコマンドファイルってとこかな。
開くために次のコマンドを入れる。

vi ~/.cshrc
もしくはログインしたまんまだと$HOMEディレクトリから始まるので、
vi .cshrc
と打ってもOK。とにかく、ユーザールートのディレクトリにある.cshrcを開ければOKってこと。

viって先頭につけると、vimっていうエディタでファイルを開く、ってことなわけだね。vimはLinuxで使いなれているから抵抗はなかったけど、さくらサーバーのvimは使い勝手がちょっと違って困った。なんかvimにもいくつか種類があるんだよね。ま、いいや。使えない人は調べてみてくれ。慣れるまで大変だけれどさ。

で、「.cshrc」を開くとこんなふうになっていると思う。

alias h history 25
alias j jobs -l
alias la ls -a
alias lf ls -FA
alias ll ls -lA

# A righteous umask
umask 22

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

setenv EDITOR vi
setenv PAGER more
setenv BLOCKSIZE K
setenv PKG_DBDIR ~/db/pkg

if ($?prompt) then
# An interactive shell -- set some stuff up
set filec
set history = 100
set savehist = 100
set mail = (/var/mail/$USER)
if ( $?tcsh ) then
bindkey "^W" backward-delete-word
bindkey -k up history-search-backward
bindkey -k down history-search-forward
endif
endif

これに書き足しながら、Rubyバージョンアップを行っていくわけだ。
Rubyはデフォルトでサーバーに準備されているが、共用サーバーなので、みんなでつかうRubyはバージョンアップはできない。やっちゃったら困る人も出てきちゃうだろうね。マンションの共用部分みたいなもんだ。
なのでカスタマイズできるのは自分ちだけってことで、己のディレクトリにRubyをインストールしていく。

ちょっと雑だが、~/ディレクトリにダイレクトにrbenvを置く方法で行ってみる。もちろん/local/フォルダなんかにインストールしてもOK。

cd ~/

念のため、カレントディレクトリをホームディレクトリに移す。
そんで、/tmpフォルダを作る。これはダウンロードするときに必要になるのだ。

mkdir ~/tmp

そんでrbenvっていうのをダウンロードしてインストールする。
rbenvはRubyを管理できるアプリと思っていいかな。
まずはダウンロード。

% git clone https://github.com/rbenv/rbenv.git ~/.rbenv

そしたら

% vi ~/.cshrc

で.cshrcを編集。追記したところは太字の部分。

alias h history 25
alias j jobs -l
alias la ls -a
alias lf ls -FA
alias ll ls -lA

# A righteous umask
umask 22

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

setenv EDITOR vi
setenv PAGER more
setenv BLOCKSIZE K
setenv PKG_DBDIR ~/db/pkg
setenv GEM_HOME $HOME/local/rubygems
setenv RB_USER_INSTALL true
setenv TMPDIR ~/tmp
setenv RUBY_CONFIGURE_OPTS --with-openssl-dir=/usr/local/ssl

setenv RBENV_ROOT $HOME/.rbenv
setenv PATH $RBENV_ROOT/shims:$RBENV_ROOT/bin:${PATH}

rbenv init -

if ($?prompt) then
# An interactive shell -- set some stuff up
set filec
set history = 100
set savehist = 100
set mail = (/var/mail/$USER)
if ( $?tcsh ) then
bindkey "^W" backward-delete-word
bindkey -k up history-search-backward
bindkey -k down history-search-forward
endif
endif

と記入。viを使いなれていないと大変かもしれないが頑張ろう。右クリックでペーストできるはず。
保存してviから出たら以下を続ける。(viの使い方は調べてね。)

% source ~/.cshrc
% mkdir -p ~/.rbenv/plugins
% git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

このページを参照した。ありがとうございます。
https://qiita.com/takemaro/items/7e2b4b7770aff4e0aa93

記述の解説
以下、めんどくせえ時は読み飛ばしてもらってもOK。
この2行は先に紹介したページにある通り。
setenv GEM_HOME $HOME/local/rubygems
setenv RB_USER_INSTALL true

これは
setenv TMPDIR ~/tmp
インストールのテンポラリフォルダを指定する。インストールするときに作業用のフォルダが必要になるのだが、共用サーバーなのでルートのものは使えず、しかたなく自前で作った~/tmpでインストール作業はしていいよ、という意味になる。さっき作ったよね。

長ったらしいこいつは、
setenv RUBY_CONFIGURE_OPTS --with-openssl-dir=/usr/local/ssl
opensslのバージョンが1.0を使われているために、インストールでエラーになったのでRubyの設定を書き換えるために書き足したもの。インストールが終わってしまえばいらない1行か。
このページを参照。

さくらサーバーにはopensslの1.0.2がインストールされているそうなので、そっちを使いますよ、という記述だ。
参考ページのように
RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/ssl" rbenv install 2.6.1
とコマンドを1行で済ませられればよかったのだが、そうはいかなかったのでこれを書く羽目に。うまくいくならなくていい1行だ。
というように、困ったときにはsetenvでパスを設定しちゃえる、ってことがわかったのは怪我の功名ってやつだよね。

そう、話の途中だが、ときどきこんな感じで

export RBENV_ROOT=$HOME/local/rbenv
export PATH=$RBENV_ROOT/bin:$HOME/local/bin:$PATH

exportから始まる記述を見かけるが、これはbashのやり方で、cshとは違うので注意。
調べていると.bash_profileとか.bashrcみたいなファイルを作ってやる方法があるでしょ。それは別の方法で悪いわけじゃないからわかっていればいいんだけれど。でもまったく参考にならないかというとそうでもなくて、
export RBENV_ROOT=$HOME/local/rbenv
がbashだとしたら、cshでは
setenv RBENV_ROOT $HOME/local/rbenv
などと書き表せる。どちらを使ってもいいけど、さくらサーバーはcshでやった方が手数が少なくて済みそうだ。
混同しやすいのでメモ。

これはこれからインストールするrbenvのパス。
setenv RBENV_ROOT $HOME/.rbenv
setenv PATH $RBENV_ROOT/shims:$RBENV_ROOT/bin:${PATH}

これを記述することで、自前でインストールしたrbenvが働くようになってくれる。
これがない、あるいはうまくいってないと、ルートの/usr/にあるRubyを使用することになってしまうので、自前でインストールするには必要になるわけだ。
そして最後の
rbenv init -
これは、rbenvの再起動だね。bashでやる例にはよく
eval "$(rbenv init -)"
と書かれているやつだね。いろいろありすぎでわからねえや笑

rbenvを使う。
とにかくrbenvが使えるようになっているはず。ならば

rbenv -v

でバージョンを確認してみよう。rbenv 1.1.2-61-g585ed84みたいなのが出ればOK。
rbenv: Command not found.
と出てしまったらパスが通っていないかなにかでrbenvが使えない状態。見直してみよう。
確認するだけなら、rbenvをインストールしてあるところまでのパスを直接書いてコマンドにしてもOKだよ。例えば

~/.rbenv/bin/rbenv -v

でもとりあえずのコマンドは使えてしまうのだ。ただ毎回「~/.rbenv/bin/rbenv」と打つのは大変なので、パスを通してあげて「~/.rbenv/bin/」にあるアプリは「rbenv」みたいな省略形で叩けるようにしてあげるってわけだね。

rbemvのコマンドが使えるようになったら、では1.8系のrubyとおさらばするために、2系のバージョンをインストールする。
その準備体操として、以下を行っておいてくれ。アップデートだ。

cd ~/.rbenv
とディレクトリを移動して、
git pull
と打つ。アップデートが始まるはず。
あともう一個も。
cd ~/.rbenv/plugins/ruby-build
git pull

よし。ではインストールできるrubyのバージョンを探してみる。そういうコマンドがあるのは便利だね。

rbenv install --list

ずらずらっと出てくるが、2.7.0が最新のようなので

rbenv install 2.7.0

とインストールを試したが…だがしかし

BUILD FAILED (FreeBSD 9.1-RELEASE-p24 using ruby-build...

と出てしまいダメ。なんか2.7だとなんかがダメみたいなので欲張らず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/hogehoge/.rbenv/versions/2.6.1

おお、できた!では使えるように反映しよう。しかし…

rbenv global 2.6.1

と打つと反映される、的なことがよく書いてあるのだけれど、反映されない。

ruby -v

と確認するも、ruby 1.8.7 (2012-10-12 patchlevel 371) [amd64-freebsd9]のまま。

rbenv rehash

もよく書かれているので試すも同じ。
そう、それもそのはず。まだ新しいバージョンがインストールされたこと自体がサーバーには認識されていないのだ。

source ~/.cshrc

こいつでシェルを再読み込みしてあげる。中に書かれているrbenv init -がrbenvを再起動するのだ。

ruby -v
と打つと…
ruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-freebsd9.1]

みごとバージョンがあがった。
これでやっと、SassとCompassのインストール準備が整ったというわけ。準備だけでもくたくただぜ。

エラー
途中にこういうエラーもでた。

BUILD FAILED (FreeBSD 9.1-RELEASE-p24 using ruby-build 20200115-8-g73b926b)

ruby-build: TMPDIR=/tmp cannot hold executables (partition possibly mounted with `noexec`)

なので「.cshrc」に
setenv TMPDIR ~/tmp
setenv RUBY_CONFIGURE_OPTS --with-openssl-dir=/usr/local/ssl

を記述したんですね。/tmpフォルダが使えないのと、OPENSSLのバージョンが低いのが原因なので。
もしエラーが出たら、この2行を見直してみてくれ。あるいはこれをカギに調べてみるといいかもね。とにかくエラー文をコピーしてGoogleにぶっこむ。これが基本だ。

SassとCompassをインストール
そんでは行ってみようか。Sassからインストールだ。

gem install sass

ここでERRORが出たらRubyが古いとか問題がある。

ERROR:While executing gem .....
You don't have write permissions for the /usr/bin directory.
とか
ERROR: Could not find a valid gem 'sass' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: tlsv1 alert protocol version (https://rubygems.org/latest_specs.4.8.gz)とかが出るみたい

エラーはそのままエラー文をGoogleにぶちこんでもらうと解決の早道。それでもなかなかうまくいかないんだけれどね。
SSLを使わないでインストールすると成功する、なんていうのも見かけた。どうやるんだろか。わからないけどなんか方法はあるかもね。
成功しているときはこんなのが出てくるけど、このなかにERRORがあると完了できていないことがあるので注意深くチェックだ。

Successfully installed ffi-1.15.1
Successfully installed rb-inotify-0.10.1
Successfully installed sass-listen-4.0.0
...
4 gems installed

お次はCompassをインストール。Compassっていうのはscssを保存するたんびに、cssに書き出してくれる装置と思えばいいね。マイクラだったらオブザーバーブロックだね。

gem install compass

これもエラーが出まくる。.cshrcの設定をしてあればたぶん大丈夫。みなおしてみてくれ。
成功っぽかったら、.cshrcを読み込みなおしだ。

source ~/.cshrc

確認のため、ヴァージョンを確認する。

sass -v

Ruby Sass 3.7.4とか出てきたらOK。
もしsass: Command not found.が出てしまったら、こいつを確認。
Sassの入っている場所が読み込まれていないので、それを探す。

find ~/ -name sass

これでファイル検索を行う。/www/内も探し始めるのでちょっと時間かかるかも。気長にまとう。
検索結果の中に、この一例のような

/home/hogehoge/local/rubygems/bin/sass

ものが出てきたら、これがアプリの実行ファイルがあるところだ。そこにパスを通してあげよう。この例の場合は、
「.cshrc」のこの部分に

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

$HOME/local/rubygems/binというパスの記載があるからsassのコマンドが使える。もし別の場所だったら、その場所にパスを通すためにパス記述してあげてくれ。
ふいー、ではCompassも確認だ。

compass -v
Compass 1.0.3 (Polaris)
Copyright (c) 2008-2021 Chris Eppstein
Released under the MIT License.
Compass is charityware.
Please make a tax deductable donation for a worthy cause: http://umdf.org/compass

こんな感じでバージョン情報が出てくればOK。
ここまで出来たら、やっとコーディングに移れるのだ。長いよ。さくらサーバーがこれをサポートしてくれたら最高なんだけれどな。管理画面からボタン一個でインストールとかバージョン変更とかさ。

SassとCompassを使ってみる。
SassとCompassの使いかたは調べてみてくれ。先に出しているこのページでも十分だ。

さくらのレンタルサーバー上でsass&compassをインストールして使う

Compassの「watch」コマンドは便利だなあ。ただ、毎度シェルログインしないといけないのはめんどくせえ。なんか方法ないのかな。たとえばCGIとかでスイッチつくるとかか。。考えてみよ。

使ってみたらエラーが出たので一応メモ。
「SCSSをコンパイルしようとしたらInvalid US-ASCII character って言われた – SCSS」

SCSSをコンパイルしようとしたらInvalid US-ASCII character って言われた – SCSS


このページにあるように、CSSを書き出してくれる時に、エンコード指定してない場合に出てしまう。CSSファイルの頭にはキャラセットをちゃんとしておこう。もうエラーは嫌だからね。

間違ってたらごめんクサい
作業を追いながら書いたので、追い切れているかわからないです。もしこの手順で出来なかったりしたらコメントください。修正しますー

スポンサーリンク