OACISを利用するには
の両方を行う必要があります。
OACISをインストールするには、
の2種類があります。
Windowsの方は(1.1)を選択してください。Unix系OS(Linux,Mac)の場合にはどちらの方法によっても環境構築ができます。 初めての方はセットアップが容易な仮想環境を推奨します。仮想環境の場合、次ページのチュートリアルがすぐに始められます。 より本格的に運用したい場合は(1.2)の方法に移行するのがよいでしょう。
ここではそれぞれのセットアップ方法を解説します。
Dockerというツールを使ってOACISがインストールされた仮想環境を手軽に導入することができます。 Linuxだけでなく、Windows、MacOSにも導入することができます。 手順の概要は以下の通りです。
インストール手順はoacis_dockerのREADMEを参照してください。 oacis_dockerはOACISのDockerイメージを作成するプロジェクトです。 ここで作成されているイメージには、次ページのチュートリアルのStep1までが実行済みの状態で保存されています。
Rubyのインストールにはrbenvまたはrvmを使って環境を整えるのがよいです。
Mac OS Xの場合、homebrew (http://brew.sh/) を使ってrbenvとMongoDBをインストールするのが手軽です。 Linuxの場合、yumやaptコマンドを使ってインストールできます。
ここではhomebrewを用いてセットアップしていきます。
rbenv install 2.7.5 && rbenv global 2.7.5
rbenv rehash
ruby --version
を実行して、ruby 2.7.5....
と出力されれば成功
brew services start mongodb-community
)すれば、以後ログイン時にmongodが自動的に起動するようになる gem install bundler
gem update bundler
rbenv rehash
which bundle
を実行しコマンドへのパスが表示されればインストールに成功している
brew install redis
brew services start redis
ここではUbuntu 14.04を例に取り、apt-getを用いてセットアップしていきます。
sudo apt-get update
sudo apt-get install -y git build-essential wget libssl-dev libreadline-dev zlib1g-dev
rbenv install 2.7.5 && rbenv global 2.7.5
rbenv rehash
ruby --version
を実行して、ruby 2.7.5....
と出力されれば成功
gem install bundler
gem update bundler
rbenv rehash
which bundle
を実行しコマンドへのパスが表示されればインストールに成功している
sudo apt-get install redis
service redis-server start
まず手元にOACISのソースコード一式をgit cloneします。(gitがない場合はダウンロードします。)
git clone --recursive -b master https://github.com/crest-cassia/oacis.git
クローンしたディレクトリに移動し、以下のコマンドを実行するとRubyのバージョン、bundlerのインストール、MongoDBのバージョン、MongoDBのデーモンが起動していることを確認する事ができます。
./bin/check_oacis_env
次にRailsおよび関連gemのインストールを行います。ダウンロードしたディレクトリ内に移動し、
bundle install
を実行します。
成功すればこの時点でRailsを起動できます。試しに以下のコマンドで起動します。
bundle exec rails s
localhost:3000 にアクセスし、ページが適切に表示されればインストールは成功しています。 端末で Ctrl-C を押し、Railsを停止します。 もし失敗した場合は、MongoDBが正しく起動しているか、gemは正しくインストールされたか、などを確認してください。
Railsおよびworkerの起動は以下のコマンドを実行します。
bundle exec rake daemon:start
localhost:3000 にアクセスできればRailsの起動が成功しています。 またWorkerプロセスが起動しているかどうかは localhost:3000/runs にアクセスすれば確認できます。 Workerが起動していない場合にはエラーメッセージが表示されます。
これらのプロセスの再起動、および停止は以下のコマンドで実行できます。
bundle exec rake daemon:restart
bundle exec rake daemon:stop
チュートリアル実行用の仮想環境を利用する場合はこのステップは不要です。仮想環境をジョブ実行用のリモートホストとしても利用します。
ジョブ実行用のホストは以下の手順でセットアップします。以後、OACISを実行しているホストを「OACISホスト」、ジョブを実行するホストを「計算ホスト」と呼ぶことにします。
ssh-keygen -t rsa
を実行し、SSH認証用の鍵を作成する。
~/.ssh/id_rsa
, ~/.ssh/id_rsa.pub
に作成されます。ssh-copy-id
コマンドを使うと便利です。~/.ssh/config
ファイルを以下の形式で作成する。
Host my_host
HostName 127.0.0.1
Port 22
User my_user
IdentityFile ~/.ssh/id_rsa
Host
には好きな名前を指定可能HostName
にリモートホストのアドレスを指定User
にはログインユーザ名を指定IdentityFile
には生成した秘密鍵を指定~/.ssh/config
を参照する仕組みになりました。ssh my_host
でパスワードを使わずにログインできたら成功です。
ssh-add ~/.ssh/id_rsa
を実行します。この際パスフレーズの入力を要求されますが、以降はパスフレーズの入力を省略できます。eval `ssh-agent`
(SSH agentを起動する)ssh-add ~/.ssh/id_rsa
(秘密鍵のパスを指定する。このときにパスフレーズの入力を要求されますが、以降はパスフレーズの入力を省略できます。ssh remotehost 'bash -l -c xstat'
を実行します。エラーメッセージが出ずに、リモートホストのステータスが表示されれば完了です。
$ irb
> require 'net/ssh'
> ssh = Net::SSH.start("remotehost", "oacis", verbose:Logger::DEBUG)
OACISをインターネットに公開しないでください。 OACISは計算ホストとして登録したサーバー内で任意のコマンドを実行できるので、悪意のあるユーザーからアクセスされるとセキュリティホールになります。 各個人のマシン上で起動し、他の人からのアクセスを受け付けないようにして置く必要があります。
OACIS 2.11.0から、デフォルトで127.0.0.1
のアドレスにバインドされる様になりました。他のマシンからはOACISにアクセスできません。
MongoDBもデフォルトでは127.0.0.1
にバインドされるので、デフォルトで使っている限りさらに対策を行う必要はありません。
バージョン2.10以前のOACISを利用している場合は、ファイアウォールの設定を行い3000番ポートへのアクセスを制限してください。
Docker環境を使用している場合は、公開されたポートをローカルホストにバインドすることが望ましいです。こうすることにより他のホストからアクセスできなくなります。
docker run
コマンドを実行する際に、-p
オプションで127.0.0.1
にバインドするようにしてください。
docker run -p 127.0.0.1:3000:3000 -dt oacis/oacis
外部からのアクセスを制限するとOACISの利便性が失われると心配かもしれませんが、このように設定しても外部からSSHのポートフォワーディングを利用することでOACISを使うことができます。 OACISを server.example.com で起動している場合、以下のコマンドを実行すると localhost:3000 でOACISにアクセスできるようになります。 (”server.example.com”をOACISが起動しているサーバーに置き換えて実行してください。)
ssh -N -f -L 3000:localhost:3000 server.example.com
“oacis”ディレクトリで以下のコマンドを実行してください。
bundle exec rake daemon:stop # tentatively stop OACIS
git pull origin master # get the latest source code of OACIS
git pull origin master --tags
git submodule update --init --recursive
gem update bundler # update bundler gem
bundle install # install dependency
bundle exec rake daemon:start # restart OACIS
OACIS v3ではMongoDBをv3.6以降に、Rubyを2.5.1以降にアップデート、および新規にredisをインストールする必要があります。
MongoDBをアップデートする際には2.6 -> 3.0 -> 3.2 -> 3.4といった段階的アップデートをしないとデータの互換性が維持されません。 ここでは一度に最新版に更新するため「OACISのデータのバックアップ」-> 「MongoDBを最新版に更新」-> 「OACISのデータのレストア」という手順で行うことを推奨します。 詳細は公式ドキュメントを参照してください。
mongodump --db oacis_development #データをエクスポート
実行後、dump/oacis_development
に結果が出力されていることを確認
mongorestore --db oacis_development dump/oacis_development #データベースをインポート
V3ではHostの設定項目から、”Hostname”, “User”, “Port”, “IdentityFile”がなくなりました。代わりに”~/.ssh/config”ファイルにこれらの情報を記述してください。
bundle install # install dependent libraries
bundle exec rake daemon:start # restart OACIS
OACISのユーザーメーリングリストに登録することをお勧めします。新規リリースについての情報がメールで通知されます。 oacis-users mailing list