オープンソース図書館システム「Next−L Enju Leaf」を,さくらのVPS1Gにインストールしてみた。
ある必要性から,オープンソース図書館システムである「Next-L」を,さくらインターネットがサービスを提供している「さくらのVPS」にインストールしてみたので,作業ログを載せておきたいと思います。後に続く方の参考メモとしていただければ幸いです。(なお,以下の記述は2015年2月7日時点での記述ですので,環境が変わった場合は適宜読み替えて頂ければと思います)
なお技術者向けと言うよりは,私の知り合いで興味がある方を対象にしているので,多少記述が冗長だったり,わざとかみ砕いている所があります。その点どうぞご容赦下さい。
1.はじめに
オープンソース図書館システム「Next-L」とは,Rubyというプログラム言語を使って,動く図書館システムです。現在の所,何もカスタマイズしない段階でもISBNによる資料のインポートや,貸出,返却,予約,資料検索など,基本的な業務システムが構築できます*1。
FrontPage - Project Next-L
システムのデモは下記のURLから見られるようになっています。
えんじゅ図書館 - Next-L Enju Leaf
2.利用するサービスについて
EnjuのデモサイトはCloudCore VPS CV01を使っているとの記述がありまして,当初はこれを使ってみようと考えていました。
next-l/enju_leaf · GitHub
CloudCore VPS|KDDIウェブコミュニケーションズ
でもお試しで使うにしてはちょっと高いなあという気がしていたのと,どうせなら別のVPSを使って動作確認をしてしまった方が良いと考えたので,今回はさくらのVPS(以降「さくらVPS」と記述)で試してみることにしました*2。
プランとしては,CloudCore VPS CV01と同等なのは,2Gのプランなのですが,それだと価格があまり変わらないのと,今回は本格的に動作させるというよりもデモ画面+少数のサンプル資料だけ登録できれば良いという理由から1Gのプランにしました。*3初期費用は少々かかりますが,サーバーを一から構築できるので,メールアドレスとかが作り放題になりますし,メーリングリストとかも構築し放題です。
さくらVPSの登録については,さくらインターネットの公式マニュアルの記述に任せることとしますが,SSD(30GB)とHDD(100GB)の選択では,HDDを選んでおいた方が良いと思います。SSDがアクセス速度が速くメリットも大きいのですが,万が一足らなかった場合,サーバーの契約し直しになったりするので,私はHDDを選択しています。
以降の操作については,次のことができる or Googleで検索しながら,自分で何とかできる方が取り組むことをお勧めします。
- SSHによるコマンドライン操作ができる。
- su sudo mv cp chmodなどのコマンドが何をやっているか分かる。
- viとかnanoとかのエディタが操作できる。
- (しつこいですが)必要に応じてGoogle検索することをいとわない。
- エラーメッセージを無視しないで,きちんと読み込んだり,キーフレーズをヒントにGoogle検索できる。*4。
- 他の方の設定メモをコピペした際に冒頭に$が入っているのを忘れてコピペして,動作しないと慌てない*5。
注意:インストール時期やソースコードの変化により,記事の内容通りに上手くいかなくなる場合が生じることがあります。たとえ,下記の記事通り上手くいかなくても「自己責任」でお願いします。インストール方法や動作についてお問い合わせをいただいても,対応できないの方が多いことをご了承下さい。むしろ,上手くいかなかったことや,自己解決できたTipsをBlogとかに書いて頂けると,みんなが幸せになれるのでお勧めです。
3.OSインストール,初期設定
おそらく,さくらVPSの標準OSでもインストールが可能だと思いますが,私が慣れていると言う理由から,カスタムOSインストールから,Ubuntu 14.04 amd64をインストールします。この辺の記述は公式でマニュアルが出ているので,そちらをご参照下さい。ネットマスクの所が間違えやすいので注意。
カスタムOSインストールガイド - Ubuntu 12.04/14.04|さくらインターネット公式サポートサイト
すぐにインストールに入りたいところですが,トラブル防止のため,まずはパッケージのアップデートをしておきます。
$ sudo apt-get update $ sudo apt-get upgrade
なおインストールされるのは,サーバー版なので,SSHログインをすると,以下のエラーが出ます。
-bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)
無視しても問題ないのですが,慌てず騒がず,下記のURLを参考に日本語localeを設定してしまいます。
Ubuntuに日本語localeを設定する | dreamedge.net
$ sudo apt-get install language-pack-ja
あと,Linuxサーバーを外部公開していることになりますので,不必要なポートなどを閉じておくとか,必要な措置は各自で講じておいて下さい。
iptablesの設定方法|さくらインターネット公式サポートサイト
Linux初体験という方は,いぬれおさんのポストにあるぐらいの最低限しておいたほうが良いかと思います。(ついでに何をやっているかも理解しながら進めると良い感じです)
さくらVPSにUbuntu LTS 14.04をインストールした話(1) - いぬれおがんばれお
4.Next-L Enju Leafのインストール
基本的には,Next-Lのインストールマニュアル「Ubuntu」の欄を参考にしながら作業を進めていきます。データベースはSQLite3,PostgreSQL,MySQLの3つが選択できますが,データベース系の設定で悩みたくないorとりあえず動かしたい方はSQLite3が無難だと思います。
Install · next-l/enju_leaf Wiki · GitHub
なお,さくらVPSの初期状態だと,足らないファイルがあるので,下記のコマンドで追加しておきましょう。
$ sudo apt-get install ruby-dev zlib1g-dev
上記マニュアルの「Enju Leaf本体のインストール」まで来るとRailsのインストールを行う必要が出てきます。インストールマニュアルの記述通りだと下記のエラーが出て,パーミッションが足らないと怒られます。
Fetching: i18n-0.7.0.gem (100%) ERROR: While executing gem ... (Errno::EACCES) Permission denied - /var/lib/gems
マニュアル通りに行かないのは,気持ち悪いのですが*6,ひとまず
$ sudo gem install rails -v 4.1.9 --no-ri --no-rdoc
と入力して,root権限でインストールするようにします。あとドキュメント類がいらないのであれば,--no-ri --no-rdocをしておくとさらに素早くインストールできます。
マニュアル通りに進める際の注意点としては,
cd your_enju
以降は,your_enjuフォルダにいることが前提となったコマンド入力となっていますので,どうぞご注意下さい。例えば,ログアウトしてからやり直す時などは,your_enjuに移ってから続きを行うことを忘れずに。
foremanで起動させた後は,Webブラウザで,マニュアルではlocalhostと書かれている箇所を,さくらVPSのIPアドレスか,標準ホスト名(たぶんvs.sakura.ne.jpで終わるはず)に読み替えた上で,アクセスしてあげるとえんじゅ図書館という名前でデモ画面が出てきます。
テストで使うならこのままでも良いですが,ちょっとでも業務で使う予定のある方や継続して使いたい方は,安全のためにこの段階で管理者パスワードとかを変更しておきましょう。
あと,私の環境だとターミナル操作で固まって,コマンドが送信できなくなるケースがあるのですが,その場合は改めてSSHでログインし直して,ps -Aとかsudo kill -9でmemcachedやredis-server,ruby1.9.1のプロセスと終わらしておくと,次回のEnju起動時にトラブルが起こらなくて良い感じです。
5.nginxによるURL変更
ただ,このままだと:3000をURLの後ろにつけないとアクセスできないままになってしまうので,ちょっとカッコ悪い感じです。そこで,nginxというWebサーバーソフトをつかって,:3000をつけなくてもアクセスできるようにしてあげます。参考にしたのは下記のWebサイトです。
nginxでDebian(wheezy)にプロキシサーバ立てる【nginx】【Debian】 - DRYな備忘録
なお上記Webサイトで使われているOSはDebianなので,インストール方法は以下のものに読み替えつつ,設定を進めてみて下さい。
$ sudo apt-get install nginx
具体的にはHTTPの{}中にServerという設定を追加してあげます。
server { listen 80; server_name さくらの標準ホスト名 ; location / { proxy_pass http://127.0.0.1:3000; } }
これで,標準ホスト名だけでアクセスできる準備が整いました。ためしにEnjuを起動させ,:3000をつけなくても起動できるかを試してみましょう*7。
6.nohupによる連続動作
Enjuのインストールマニュアル通り,foreman startで起動している場合,SSHのセッションが切れると同時にEnjuにアクセスできなくなります(終了してしまいます)。そこで,バックグラウンドで実行させ続けるための工夫が必要になります。最初は下記のようにやっていましたが,SSH接続を切ると同時に終了処理が入ってしまう模様でした。
$ foreman start &
そこで,下記のWebサイトを参考にnohupコマンドを使って連続動作させる方法を試しました。具体的にはyour_enjuのディレクトリに移った上で,下記のコマンドを実行してあげます。
$ nohup foreman start > out.log 2> err.log < /dev/null &
注意点としては,Enjuの起動を知らせるメッセージが画面に出力されなくなるので,起動しているかどうかが掴みにくくなります。上手く起動しない場合は,foreman startで起動するかを確認したり,よけいなプロセスが起動し続けていないか,など問題の切り分けをしてあげながら,場合によってはサーバーの再起動を試みましょう。
これで,SSHの接続を切っても起動し続けることができるようになりました。
7.おわりに
以上がインストールの報告です。サンプルで動かす限りはメモリ1GBでも,ストレスがかからない感じで利用することができています。連続稼働もこの記事を書く前に2週間ほど動かしっぱなしでしたが,さくらのVPSの障害で一回再起動がかかったときに,もう一度起動し直すことが生じたのみで,あとは全く問題なく使えていました。
所要時間ですが,OSインストールとEnjuインストール完了まで2時間半,negixとnohupの作業を含めると3時間ぐらいかかっています。初めての場合だと,これに加えて2時間程度見積もっておいた方が良いかもしれません。でも,実際に動いているところを見ると,かなり感動するので,まとまった時間が取れる方は,ぜひやってみて下さい。
*1:資料のバーコード印刷とか,帳簿とかの印刷機能はまだ実装されていないとのことですが,必要だと思ったらプログラムのソースコードは公開されているので,プログラミングして修正できる余地がありますし,何より本体の開発にも貢献できるという特徴があります。
*2:この事例の前に,別サービスを使ってみたのですが,パフォーマンスの観点,特にインストール時のレスポンスの問題から,さくらのVPSを選択した次第です。別サービスについては,私の操作がおかしかったかもしれないので,ひとまず内緒と言うことで。
*3:あとでデータベースの接続に使うSolrの画面を見たら,特にアクセスが無い状態でもメモリを800MB使っていたので,本格的に使用する場合は2Gが良いと思います。
*4:1ヶ月時期がずれただけで必要な操作が変わったり,必要なコマンドが増えたり減ったりします
*5:私はよくやらかしますが…
*6:たぶんRVMを入れておけば,sudoいらないのかなと思いますが,とりあえず最短ルートを目指すので,この辺は適宜修正しながら進めます。