follow us in feedly

VPS

さくらVPSにRails 3.2の開発環境を構築する

さくらVPSに Rails 3.2 の開発環境を構築しました。
Ruby のバージョン管理に rbenv を利用して構築します。
ちょこちょことエラーがでて、思ったより時間がかかりました。
Ruby のバージョンは 1.9.3 です。

rbenv をインストールする

Ruby のバージョン管理ツールとして rbenv をインストールします。
下記を参考に複数のユーザアカウントで利用できるように設定します。
shared install of rbenv

まずは、rbenv 用にグループを作成してユーザを所属させます。

# groupadd (グループ名)
# usermod -G (グループ名) (ユーザ名)

rbenv と ruby-build をインストールします。

# cd /usr/local
# git clone git://github.com/sstephenson/rbenv.git rbenv
# chgrp -R (グループ名) rbenv
# chmod -R g+rwxXs rbenv
# mkdir /usr/local/rbenv/plugins
# cd /usr/local/rbenv/plugins
# git clone git://github.com/sstephenson/ruby-build.git
# chgrp -R (グループ名) ruby-build
# chmod -R g+rwxs ruby-build

インストールが完了したら、環境変数を設定します。
各ユーザごとに ~/.profile や ~/.bash_profile あたりに下記を追加します。
他にも設定方法があるようですが自分用なのでこれで。

export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

Ruby をインストールする

rbenv を使って Ruby をインストールします。

$ rbenv install ← Ruby のバージョン一覧が出る
$ rbenv install 1.9.3-p194
$ rbenv rehash
$ rbenv global 1.9.3-p194

設定したユーザで Ruby のバージョンが確認できれば大丈夫です。

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

Rails をインストールする

gem を使って Rails をインストールします。
gem コマンドを実行するときに下記のエラーが出るので、まずは zlib-devel をインストールします。インストール済みなら問題ないです。

ERROR:  Loading command: install (LoadError)
    cannot load such file -- zlib
ERROR:  While executing gem ... (NameError)
    uninitialized constant Gem::Commands::InstallCommand

さらに、下記のエラーも発生するので openssl-devel もインストールします。
これも、インストール済みなら問題ないです。

/root/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- openssl (LoadError)

zlib-devel と openssl-devel をインストールします。

$ sudo yum install zlib-devel
$ sudo yum install openssl-devel

Rails をインストールします。
インストール時に “file ‘lib’ not found” とエラーが出るので下記のオプションを付けるか、先に rdoc をインストールすれば解決です。

$ gem install rails --no-ri --no-rdoc

Rails アプリを作成する

Rails アプリの作成をします。
ここでも、mysql-devel がないとエラーが出るのでインストールをします。

$ sudo yum install mysql-devel

Rails アプリを作成して、アプリのディレクトリに移動します。
MySQL を使うのでオプションをつけて作成します。

$ rails new rails_app -d mysql
$ cd rails_app

Bundler で gem をインストールします。
–path オプションでインストール先を指定できます。パスの指定は初回だけで大丈夫です。

$ bundle install --path vendor/bundle

Rails コンソールの起動などをしようとすると下記の Javascript のランタイムエラーが出ます。

Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.

エラーが出た場合は、Gemfile に下記を追加して execjs と therubyracer をインストールします。

gem 'execjs'
gem 'therubyracer'

bundle コマンドを実行してインストールします。

$ bundle install

これで、Rails の開発環境が構築できました。

さくらVPSにnginx + WordPressの環境を構築する(2) – iptablesなどの設定

さくらVPSで行った設定の続きです。
下記を参考にして、iptablesの設定や不要な機能を停止します。
CentOSをサーバーとして活用するための基本的な設定 – さくらインターネット創業日記

iptablesを設定する

/etc/sysconfig/iptablesに下記を設定します。
/etc/sysconfig/iptablesがない場合は新規に作成します。

*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, FTP1, FTP2, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-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 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -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

不要なデーモンを停止する

chkconfigコマンドを実行して、不要なデーモンを停止します。
いくつか「ファイルやディレクトリがない」ようなことを言われますが、
どれがないのかメモしていないので参考サイトのままです。

# chkconfig auditd off
# chkconfig autofs off
# chkconfig avahi-daemon off
# chkconfig bluetooth off
# chkconfig cups off
# chkconfig firstboot off
# chkconfig gpm off
# chkconfig haldaemon off
# chkconfig hidd off
# chkconfig isdn off
# chkconfig kudzu off
# chkconfig lvm2-monitor off
# chkconfig mcstrans off
# chkconfig mdmonitor off
# chkconfig messagebus off
# chkconfig netfs off
# chkconfig nfslock off
# chkconfig pcscd off
# chkconfig portmap off
# chkconfig rawdevices off
# chkconfig restorecond off
# chkconfig rpcgssd off
# chkconfig rpcidmapd off
# chkconfig smartd off
# chkconfig xfs off
# chkconfig yum-updatesd off

不要なコンソールを無効にする

/etc/inittabを下記のようにコメントアウトします。
これは、すでに無効になっていました。

#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

SELinuxを無効にする

/etc/sysconfig/selinuxのSELINUX=enforceを下記に変更します。
これも、すでに無効になっていました。

SELINUX=disabled

サーバを再起動すれば、設定が反映されます。

以上で、さくらVPSの基本的な設定は完了です。

さくらVPSにnginx + WordPressの環境を構築する(1) – SSHの設定

このブログを作るためにさくらVPS で行った設定のまとめです。
さくらVPSにnginxとFastCGI、PHP、MySQL、WordPressを設定して構築しました。

長いので少しずつまとめていきます。
まずは、サーバへのSSH接続に関する設定から行います。

主に下記のサイトを参考にさせていただきました。
CentOSをサーバーとして活用するための基本的な設定 – さくらインターネット創業日記
さくらVPS+CentOS:SSHの設定 | Suinasia

サーバに接続する

MacのターミナルからさくらVPSにSSHで接続して作業します。
Windowsであればこちらが参考になると思います。
IP アドレスでも接続できます。

$ ssh example.com

ユーザを作成する

まずは、一般ユーザを作成します。

# useradd hoge
# passwd hoge
Changing password for user hoge.
New UNIX password:[パスワードを入力]
Retype new UNIX password:[パスワードを再入力]
passwd: all authentication tokens updated successfully.

SSHのポート番号を変更する

/etc/ssh/sshd_configの下記を変更します。
#Port 22の行を、Port 10022などに編集します。

#Port 22
Port 10022

/etc/ssh/sshd_config保存して、sshdを再起動します。

# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]

公開鍵認証でSSH接続できるように設定する

自分のPCで鍵を生成します。Macならターミナルでssh-keygenを実行すればできます。
実行すると ~/.ssh/ 以下に id_rsa と id_rsa.pub ができます。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):[パスワードを入力]
Enter same passphrase again:[パスワードを再入力]
Your identification has been saved in /Users/hoge/.ssh/id_rsa.
Your public key has been saved in /Users/hoge/.ssh/id_rsa.pub.

生成されたid_rsa.pubをさくらVPSに転送します。

$ scp -P 10022 ~/.ssh/id_rsa.pub hoge@example.com:~/

サーバにログインして、設定を行います。

$ ssh -p 10022 hoge@example.com

設定するアカウント(ここでは hoge)のホームディレクトリで行います。

$ mkdir .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

/etc/ssh/sshd_configの設定を変更します。
下記の箇所を探して、編集します。
rootでログインできないようにしたり、公開鍵認証でログインするように設定します。

PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no

/etc/ssh/sshd_configを保存して、sshdを再起動します。

# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]

~/.ssh/configの設定

Macの場合は下記を設定すると、”$ ssh sakura”でサーバにログインできます。

Host sakura
HostName xxx.xxx.xxx.xxx
User hoge
Port 10022
IdentityFile ~/.ssh/id_rsa

以上でさくらVPSのSSHの設定は終了です。