Conoha VPSにRstudio serverを置いてみます。
何故VPSに置いたか
今回はconohaの2CPU/RAM1GBプランのサーバーにRstudio serverを置いてみましたが、コンパイルが走るpackageのインストールなどではかなり時間が掛かってしまいます。今回は勉強会で公開する為に変な使われ方をしても平気なようにVPSを選択しましたが、重い計算を走らせるつもりならAWS EC2などで使うときだけゴツいインスタンスを立てるなどした方が良さそうです。VPSだとサーバーを削除しない限り課金は止まりませんので、普通の使い方だとVPSで立てるというやり方はイマイチかも知れません。
ちなみに2CPU/RAM1GBだと、以下のようにpackageをまとめてインストールしようとすると軽く1時間ぐらい待たされます。
本エントリではポート変更やrootログインの無効化などを行っていませんが、そのままだと総当たり攻撃を受けまくりますので対処してください。
https://qiita.com/studio_haneya/items/455b6a5acf8095c08f1a
試行環境
手元環境: Windows10+tera term
VPS環境: conoha VPS 2CPU/RAM1GB ubuntu18.04
VPSサービスを契約してサーバーを立ち上げる
まず、Conohaアカウントを作ってサーバーを立ち上げます。
https://www.conoha.jp/
2CPU 1GBのサーバーを作ってみました。Conohaはサーバーのスペックを増減するときも日割りで計算されるので適当に選んで足りなかったら後でいつでも変更できるのが良いですね。
ネームタグをクリックするとそのサーバーの詳細画面に入れます。
conohaのサーバーの設定方法やターミナルからのログイン方法は公式サイトに詳しいインストラクションがありますので、こちらも参考にしましょう。
https://support.conoha.jp/v/study-03/
ターミナルでログインしてsudoユーザーを作る
conohaのインストラクション通りtera termを使いたいと思います。最新バージョンをダウンロードしてインストールします。
https://ja.osdn.net/projects/ttssh2/releases/
インストール出来たらtera termを起動します。これからアクセスするVPSのグローバルIPとID、パスワードを入力すればVPSにアクセス出来ます。IPはconohaサイトのコントロールパネルに書いてありますので、これを使います。下の画像だとIPが111.11.11.111であるサーバーにアクセスしようとしています。
IDはroot、パスワード(パスフレーズ)はconohaでサーバーを立てるときに入力したものです。
続いて一般ユーザーアカウントを作ります。いまはroot権限でログインしていますが、rootは何でも出来て危険なので権限を制限した一般ユーザーから実行するようにしなきゃいけないそうです。ここではhogeというユーザーを作っていきたいと思います。実際にはhogeではなくなんかそれっぽいアカウント名を決めてくださいね。
adduser hoge
なお、間違って作成したアカウントhogeをadduserで作成したフォルダごと消去するには以下を実行します。
sudo userdel -r hoge
adduserで一般ユーザーが作れましたが追加したばかりのユーザーはsudoが実行できません。sudoが実行できないとRstudio serverをインストールできませんから、上記で作ったユーザーhogeに権限を付与します。sudoが実行できるかどうかは/etc/sudoersに書かれているので、このファイルの書き換える専用コマンドであるvisudoを実行します。
visudo
開いた/etc/sudoersには既に%adminグループと%sudoグループがあります。新たに追加しなくても%sudoグループにユーザーを追加してsudo権限を付与したいと思います。
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
hogeというユーザーを%sudoグループに追加します。
sudo usermod -aG sudo hoge
グループに追加できたか確認しておきます。最後に.27(sudo)とあるので追加できているようです。
# id hoge
uid=1000(hoge) gid=1004(hoge) groups=1004(hoge).27(sudo)
これでsudoが使えるようになった筈ですので、一旦ログアウトします。以下を実行するとtera termが閉じますので、再度tera termを実行して次は作成したアカウントhogeでログインします。
exit
Rstudio serverのインストール
ubuntuでRをインストールすると古いのが入っちゃいます。古いRだと大抵のパッケージが動かなくて地獄なので、最新のが入るようにaptのソースリストにダウンロード元のURLを指定しておきます。ダウンロード元URLはubuntuのバージョンによって違うので、使っているubuntuの開発コードを確認しましょう。
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
開発コードはbionicのようです。ubuntu16.04はtrustyなので同じubuntuでもバージョンが違うと開発コードも違うという事のようです。各開発コードごとのダウンロードURLは以下で公式情報が確認できます。
https://cran.r-project.org/bin/linux/ubuntu/README.html
2019年3月時点でのbionic用URLは「https://cran.rstudio.com/bin/linux/ubuntu bionic-cran35/」です。ソースリストである/etc/apt/sources.list/に上記を指定する行を追加します。
sudo vim /etc/apt/sources.list
deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
ダウンロード元の公開鍵を登録します
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
これで準備が整ったので、Rをインストールします。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install r-base-dev
RStudioServerをインストールします。公式サイトのインストール手順をそのままやってますがversionごとにURLが違うようなので、公式の最新コードを実行するようにしてください。
sudo apt-get install gdebi-core
wget https://download2.rstudio.org/rstudio-server-1.1.463-amd64.deb
sudo gdebi rstudio-server-1.1.463-amd64.deb
これでインストールを完了しましたのでアクセスしてみましょう。グローバルIPはVPSの管理画面から見られる筈です。例えばConohaならサーバー情報ページのネットワーク情報のところを開くとIPアドレスと書かれた右側に表示されています。
Rstudio serverのポートはデフォルトで8787ですので、もしIPが「111.11.11.111」である場合はブラウザのURL欄に「111.11.11.111:8787」と記入してアクセスするとRstudio serverのログイン画面が表示される筈です。
Rが上手く入らないとき
僕の環境では最新のRが上手く入りませんでした。その場合は最新バージョンをインストールするのではなく、アップデートすると上手くいくようです。
https://askubuntu.com/questions/1046289/unable-to-install-r-3-5-0-in-ubuntu-bionic-beaver-18-04
1. まず/etc/apt/sources.listから追加した行を消去します
2. 要らないのを消します
sudo apt-get autoremove
sudo apt-get update
sudo apt-get upgrade
3. 古いバージョンのRを入れます
sudo apt-get install r-base
4. /etc/apt/sources.listにダウンロード元のURLを追加します
deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
5. パッケージのupgradeを実行します
sudo apt-get update
sudo apt-get dist-upgrade
Rstudio用のポートを変更しておく
Rstudio serverの設定については以下が詳しいので見ておきましょう。
http://memorandum2015.sakura.ne.jp/docs/server/configuration.html
とりあえずポートだけ変更しておきます。まず、デフォルトでは存在しない設定ファイルである/etc/rstudio/rserver.confをtouchコマンドで作ってから、vimで書き換えます。このファイルはsudoじゃないと書き換えられません。
sudo touch /etc/rstudio/rserver.conf
sudo vim /etc/rstudio/rserver.conf
ポート指定の1行を追加して保存します。以下だと1111ポートに指定します。
www-port=1111
書いた内容に問題ないか確認しておきます。何も返事がなければ正常に書き換えが出来てます。
sudo rstudio-server test-config
問題ないようなら再起動します。
sudo reboot
パッケージのインストールに必要なライブラリのインストール
Rのパッケージをインストールする際に必要なライブラリをインストールしておきます。入ってなくてもRstudio自体は動きますが、install.packages()するときにエラーが出てしまいますので入れておいた方が良いと思います。
httr, RCurlに必要なlibcurl4-openssl-devをインストール
# sudo apt-get install libcurl4-openssl-dev
RMySQLに必要なlibdbd-mysql libmysqlclient-devをインストール
# sudo apt-get install libdbd-mysql libmysqlclient-dev
maptoolsに必要なlibgeos-devをインストール
# sudo apt-get install libgeos-dev
XMLに必要なlibxml2-devをインストール
# sudo apt-get install libxml2-dev
Rstudio server用ユーザーを追加する
linuxユーザーのIDとパスワードがそのままRstudio serverのユーザーIDとパスワードとして使われるようです。sudoersにする必要はありませんので、単にユーザーを作ります。
sudo adduser huga
ここで設定したIDとパスワードでRstudio serverにログインできるようになります。
グラフに日本語を表示できるようにする
Ubuntu18.04のXウィンドウ版は標準で日本語フォントが入っているようですが、コマンドラインにはインストールされないようで、RStudioServerのグラフに日本語を使おうとすると豆腐になっちゃいます。
インストールされてるフォントの一覧を確認します。
$ fc-list
/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:style=Bold
/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book
/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: DejaVu Sans:style=Book
/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf: DejaVu Sans:style=Bold
/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf: DejaVu Sans Mono:style=Bold
/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf: DejaVu Serif:style=Book
やはり日本語フォントがないようですのでインストールします。ubuntu18.04のXウィンドウ版で標準になっているgoogle notoフォントを使おうと思います。ちなみにnotoはno more tofuの略で、マルチバイト文字が表示できなくて豆腐になっちゃうのを防ごうという動機で作られたフォントなんだそうです。ありがたやですね。
sudo apt-get install fonts-noto-cjk
インストールできたか確認しておきます。
$ fc-list : family
Noto Sans Mono CJK TC,Noto Sans Mono CJK TC Bold
Noto Sans Mono CJK TC,Noto Sans Mono CJK TC Regular
Noto Sans Mono CJK SC,Noto Sans Mono CJK SC Regular
DejaVu Sans Mono
Noto Serif CJK JP
Noto Serif CJK KR
Noto Sans CJK SC,Noto Sans CJK SC Regular
Noto Serif CJK SC
Noto Serif CJK TC
Noto Sans CJK TC,Noto Sans CJK TC Regular
Noto Sans CJK KR,Noto Sans CJK KR Bold
Noto Sans CJK JP,Noto Sans CJK JP Bold
Noto Sans CJK SC,Noto Sans CJK SC Bold
DejaVu Sans
Noto Sans CJK TC,Noto Sans CJK TC Bold
Noto Sans Mono CJK SC,Noto Sans Mono CJK SC Bold
Noto Sans Mono CJK JP,Noto Sans Mono CJK JP Regular
Noto Sans CJK JP,Noto Sans CJK JP Regular
Noto Sans Mono CJK KR,Noto Sans Mono CJK KR Regular
DejaVu Serif
Noto Sans CJK KR,Noto Sans CJK KR Regular
Noto Sans Mono CJK KR,Noto Sans Mono CJK KR Bold
Noto Sans Mono CJK JP,Noto Sans Mono CJK JP Bold
無事インストールできたようなので、RStudioServerで確認してみます。
というわけでVPS上にRstudio serverが作れました。
やったね!