さくらの VPS を借りて RStudio のサーバー版を動かす


今回、さくらの VPS を借りて RStudio のサーバー版を動かしたので、その顛末を記します。さくらの VPS のサーバーは標準で CentOS 6.4 でした。

1.サーバー導入から公開鍵認証方式での ssh 接続まで

主な流れ

  1. サーバーを申し込む
    • 一番安いコースで初回は 2 ヶ月分で 3000 円弱。V プリカ使用可能
  2. 送られてきた仮登録メールに載った ip アドレスと root パスワードをメモ
  3. VPS コンソール に先ほどの組み合わせでログイン (参考画像 1 参照)
  4. コンソールからサーバーを起動させる (参考画像 2 参照)
  5. ssh でログイン
  6. ユーザー作成
  7. yum をアップデート
  8. sudo の設定をする

(参考画像 1)

(参考画像 2)

リモートコンソールを利用して以下の操作を行う。
なお、今回利用する vi は i で編集可能な状態となり、 ESC でコマンドが使える状態になる。コマンドモードで :w をすると上書き、:q で編集終了となる。

ユーザー作成

useradd ユーザー名 -G wheel # wheel グループで sudo 権限の管理をする
passwd ユーザー名 # パスワード設定

yum をアップデート

sudo yum update

sudo の設定をする

sudo vi /etc/pam.d/su

下の方法は一般ユーザーでも su できなくなるので use_uid オプションではなく、root_only オプションを使う方法がある。
http://www.pistolfly.jp/weblog/2008/06/suroot.html

/etc/pam.d/su
---
以下をアンコメント
---
# auth required pam_wheel.so use_uid
↓
auth required pam_wheel.so use_uid
sudo vi /etc/login.defs
/etc/login.defs
---
最終行に以下を追加
---
SU_WHEEL_ONLY yes
sudo visudo
visudo
---
以下をアンコメント
---
# %wheel ALL=(ALL) ALL
↓
%wheel ALL=(ALL) ALL

root でのログインを禁止する & Port 変更

sudo vi /etc/ssh/sshd_config
sshd_config
---
以下をアンコメントし no に
---
# PermitRootLogin yes
↓
PermitRootLogin no
---
同上
---
# PasswordAuthentication yes
↓
PasswordAuthentication no
---
Port を変更する
---
Port ${49152 - 65535 の間の任意の整数}

ホームディレクトリ直下に .ssh ディレクトリを作成

su - 作成したユーザー名
mkdir ~/.ssh
chmod 700 ~/.ssh

ここまで行ったら一旦リモートコンソールから離れます。

公開鍵、秘密鍵の作成 (Windows)

Windows では putty と WinSCP を利用する方法を採用する。
公開鍵は puttygen を利用して作る方法 を参考に作成する。
WinSCP で作成した公開鍵を /home/ユーザー名/.ssh/authorized_keys に移動しておく。

公開鍵、秘密鍵の作成 (Mac)

Mac では標準のターミナルから接続する方法を採用する。

mkdir ~/.ssh # ホームディレクトリ直下に .ssh ディレクトリを作成する
cd ~/.ssh
ssh-keygen -t rsa
scp 公開鍵のファイルまでのパス [email protected]:/home/作成したユーザー名/.ssh/authorized_keys

公開鍵、秘密鍵の名称について

一般的に id_rsa.pub.${ドメイン名} id_rsa.${ドメイン名} のフォーマットで命名されるらしい。たとえば google.com であれば、id_rsa.pub.google.com id_rsa.google.com といったセットとなる。

sshd のリスタートなど

再びリモートコンソールに戻ります。

vi ~/.ssh/authorized_keys # 先ほど生成した公開鍵をはりつける
sudo chown ユーザー名:ユーザー名 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
sudo /etc/init.d/sshd restart # 先ほど編集した sshd_config がやっと反映

これでリモートコンソールからの操作は終了です。

ssh での接続 (Windows)

putty で秘密鍵を利用して接続します。

ssh での接続 (Mac)

簡単に接続するため、まず config を作成する。

vi ~/.ssh/config
config
Host    任意の名前
        HostName    IPアドレス
        Port    ポート
        User    作成したユーザー名
        IdentifyFile    秘密鍵へのパス

作成した config を使って ssh 接続します。

ssh 設定した名前

ここまでの参考サイト
さくらVPS 1GB に CentOS6.4 を入れて、 環境構築1 - ssh など - Qiita
さくらVPS/Cent OS 6.4 初期状態から鍵認証SSHでの接続まで[Railsサーバへの道] - 酒と泪とRubyとRailsと

2. 各種セットアップ

主な流れ

  1. iptables (ファイアウォール) 設定
  2. MeCab インストール
  3. R インストール
  4. R Studio インストール

iptables 設定

まず iptables6 を無効化

sudo vi /etc/modprobe.d/disable-ipv6.conf
disable-ipv6.conf
---
以下を追加
---
options ipv6 disable=1

reboot 後も起動しないように設定

sudo /etc/init.d/ip6tables stop
sudo chkconfig ip6tables off

確認

chkconfig --list | grep ip6tables

すべて off になっていれば OK
次に postfix の設定

sudo vi /etc/postfix/main.cf
main.cf
---
inet_protocols を all から ipv4 へ変更
なお、``IPv4`` と大文字を使って書くとエラーとなるので注意
---
inet_protocols = all
↓
inet_protocols = ipv4

iptables の設定

sudo vi /etc/sysconfig/iptables
iptables
---
基本的に以下をコピペで貼り付けるが、
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 自分の ssh ポート -j ACCEPT
を一行追加する
---
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP, HTTPS, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 433 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306  -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

空白行に半角スペースがあるなどするとエラーが発生するので注意。

iptables 再起動

sudo /etc/init.d/iptables restart
chkconfig iptables on
chkconfig --list | grep '3:on' # iptables があれば OK

ここまでの参考サイト

さくらのVPSへのiptablesの設定 - 9ensanのLifeHack

Mecab のインストール

https://mecab.googlecode.com/ を見る

sudo yum install glibc glibc.i686 gcc* # gcc のインストール
mkdir ~/tmp
cd ~/tmp
wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar zxvf mecab-0.996.tar.gz
cd mecab-0.996
./configure
make
sudo make install

mecab 辞書のインストール

cd ~/tmp
wget http://downloads.sourceforge.net/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
sudo make install
mecab # テスト
sudo vi /etc/ld.so.conf
---
最終行に以下を追加
---
/usr/local/lib
sudo ldconfig # 共有ライブラリを認識させる

R 関係のインストール

R のインストール

sudo yum install R

R Studio のインストール準備 (最新版は 0.98)

sudo yum install openssl098e compat-libgfortran-41
cd ~/tmp
wget http://download2.rstudio.org/rstudio-server-0.97.551-x86_64.rpm
sudo yum install --nogpgcheck rstudio-server-0.97.551-x86_64.rpm
sudo rstudio-server verify-installation # install check
sudo rstudio-server start # RStudio Server 起動
sudo chkconfig rstudio-server on # chkconfig に登録

iptables 関係

sudo vi /etc/sysconfig/iptables
iptables
---
以下を追加
---
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8787 -j ACCEPT
sudo /etc/init.d/iptables restart

これで http://xxx.xxx.xxx.xxx:8787 (xxx.xxx.xxx.xxx は IP アドレス) にアクセスすることで、
ネット環境さえあればいつでも RStudio が利用可能に。

また、R で MeCab を利用するには RStudio で以下を実行すれば良い。

install.packages ("RMeCab", repos = "http://rmecab.jp/R")