さくらのVPS
で、sinatraを動くようにするまでの個人的なメモ。

sinatra以外にも、perlなCGIやphpも動く環境を作る。

 

初期設定

下記を元に初期設定など。

CentOS5初期設定 – CentOSで自宅サーバー構築

ちなみに、

  • yum-updatesdは始めから止まってた
  • yum-fastestmirrorは始めから入ってた
  • yum-cronのインストールは止めておいた
  • SELinuxは始めから無効になってる

 

【2012年3月28日追記】

CeotOS6の標準なのか、
さくらのVPSの標準なのかは分からないけど、
logwatchが初期状態では入っていないようなので、
logwatchを別途入れる。

# yum -y install logwatch

 

ホスト名の変更

デフォルトのままでもいいんだけど、
今自分が何のサーバーを触っているのかを知りたいので。

vi /etc/sysconfig/network
HOSTNAME=localhost.localdomain  # 適当に変更

再起動で反映。

 

SSHの設定変更

sshd_configを編集する。

ちなみに、ssh_configっていうファイルもあるので、間違えないように。
僕はこれで小一時間はまった。。。

# vi /etc/ssh/sshd_config
Port ***22    # 適当に変更
PermitRootLogin no    # rootでのログインを禁止
PermitEmptyPasswords no    # パスワードなしでのログインを禁止

# /etc/rc.d/init.d/sshd reload
Reloading sshd:                                            [  OK  ]

 

日本語設定

下記を参考に。

UTF-8日本語設定(CentOS・putty・Emacs) – qnzm.log(クニジマログ)

# vi .bash_profile
# 下記2行を追加
export LANG=ja_JP.UTF-8
export LANG
# source .bash_profile

 

chrootユーザー作成スクリプト

下記の「chrootユーザー作成スクリプト作成」を参考に。

SSHサーバー構築(OpenSSH) – CentOSで自宅サーバー構築

さくらのVPSはx64環境なので、
そのままだとエラーになるので、
スクリプトの一部を修正

# 修正前:
cp /lib/libnss_compat.so.2 lib/
cp /lib/libnsl.so.1 lib/
cp /lib/libnss_files.so.2 lib/
cp /lib/ld-linux.so.2 ./lib/
cp /lib/libc.so.6 lib/
cp /lib/libm.so.6 lib/
cp /lib/libpthread.so.0 lib/
cp /lib/librt.so.1 lib/
cp /lib/libthread_db.so.1 lib/

# 修正後:
cp /lib64/libnss_compat.so.2 lib64/
cp /lib64/libnsl.so.1 lib64/
cp /lib64/libnss_files.so.2 lib64/
cp /lib64/ld-linux-x86-64.so.2 lib64/
cp /lib64/libc.so.6 lib64/
cp /lib64/libm.so.6 lib64/
cp /lib64/libpthread.so.0 lib64/
cp /lib64/librt.so.1 lib64/
cp /lib64/libthread_db.so.1 lib64/

№891 x86_64でOpenSSH+Chroot できません – Web Patio – CentOSで自宅サーバー構築

 

ファイアウォール構築

下記を参考に。

ファイアウォール構築(iptables) – CentOSで自宅サーバー構築

 

NTPサーバー構築

NTPサーバーは始めから動いてて、
「server ntp1.sakura.ad.jp」が設定されていた。

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp1.sakura.ad. .GPS.            1 u   20   64  377    0.559    0.010   1.412
 LOCAL(0)        .LOCL.          10 l   59   64  377    0.000    0.000   0.001

 

Apacheの設定

下記を参考に。

Webサーバー構築(Apache) – CentOSで自宅サーバー構築
ユーザーディレクトリ作成(/~ユーザー名/) – CentOSで自宅サーバー構築
バーチャルホスト設定 – CentOSで自宅サーバー構築
Webサーバー間通信内容圧縮(mod_deflate) – CentOSで自宅サーバー構築

ただ現時点だとPHPのバージョンが5.1.6なので、
5.2.xをyumでインストールしたい場合は下記参照。

#10 PHPのインストール・設定::VMWare×CentOS5 Windowsでカンタン開発環境 – 肉とご飯と甘いもの @ sotarok

GPGキーのインポート。

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

yumリポジトリの追加。
(ファイルの新規作成)

# vi /etc/yum.repos.d/utterramblings.repo
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

そしてアップデート。

# yum --enablerepo=utterramblings update php

phpのバージョン確認。

# php -v
PHP 5.2.16 (cli) (built: Dec 17 2010 14:09:03) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

 

あとついでに、後でpassengerをインストールときに必要になるので、
関連するライブラリをインストールしておく。

# yum -y install httpd-devel zlib-devel curl-devel openssh-devel

 

FTPサーバーの構築

下記を参考に。

FTPサーバー構築(vsftpd) – CentOSで自宅サーバー構築

 

サーバー監視

下記サービスで、外部からサーバーを監視する。

サーバー監視【無料】

 

rubyとRubyGemsとsinatraのインストール

【2011年4月2日 追記】
ruby 1.8.7 を入れると、hpricotの問題は解決します。
ruby をソースから RPM パッケージを作ってインストールする方法は、
下記参照。

どうのこうの » さくらのVPSにソースな ruby から RPM パッケージを作ってインストールするメモ

 

まずは ruby と関連ライブラリを yum でインストール。

# yum -y install ruby ruby-devel rdoc
# ruby -v
ruby 1.8.5 (2006-08-25) [x86_64-linux]

最新のrubygems(1.3.7)はruby 1.8.6以上じゃないとダメらしいので、
rubygems 1.3.5を入れる。
(rubygems 1.3.6以上からruby 1.8.6以上が必要らしい。)

# wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
# tar xzf rubygems-1.3.5.tgz
# cd rubygems-1.3.5
# ruby setup.rb
# gem -v
1.3.5
# cd
# rm -rf rubygems-1.3.5*

あとは、sinatraと必要なライブラリをインストール。

# gem install sinatra
# gem install hpricot --version 0.7
# gem install haml

hpricotは0.8.2がうまくインストールできないので、
0.7をインストールする。

Hpricot をインストールしようとしてエラー – snbhsmt_log

 

memcachedとmemcache-clientのインストール

yumの標準リポジトリではmemcachedが見つからないので、
下記を参考にRPMforgeリポジトリを導入。

RPMforgeリポジトリ導入(RPMforge) – CentOSで自宅サーバー構築
№1849 RPMforgeリポジトリ導入エラー インポート不可 – Web Patio – CentOSで自宅サーバー構築

# yum -y install yum-priorities
# vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
priority=1 #追加

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
priority=1 #追加

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
priority=1 #追加

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
priority=1 #追加

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# rpm -ivh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

libeventってのが必要らしいので、
インストール。

# yum -y install libevent libevent-devel

memcachedをインストール。

# yum -y install memcached

とすると、いろいろと依存関係があるらしく、
インストールされない。
–skip-brokenオプションを試してみろってことだったので、
試してみる。

# yum -y --skip-broken install memcached
# rpm -q memcached
memcached-1.4.5-1.el5.rf

無事インストールできた。
他にもいろいろインストールされたけど、
まぁいいや。

そして、下記でmemcachedの設定変更。

# vi /etc/sysconfig/memcached

そして、memcachedを起動。

# /etc/rc.d/init.d/memcached start
Starting Distributed memory caching (memcached):           [  OK  ]
# chkconfig memcached on
# chkconfig --list memcached
memcached      	0:off	1:off	2:on	3:on	4:on	5:on	6:off

rubyからmemcachedを扱いたいので、
memcache-clientをインストール。

# gem install memcache-client

 

passengerのインストールとsinatraの動作テスト

下記を参考に。

Sinatraで鼻歌まじりのWeb開発

# gem install passenger
# passenger-install-apache2-module

httpd-develとapr-develをインストールしろと言われたので、
インストールする。

# yum -y install httpd-devel

上記でapr-develもインストールされた。

もう一回、passengerのインストール。

# passenger-install-apache2-module

httpd.confに3行追加しろと言われるので、
追加する。

# vi /etc/httpd/conf/httpd.conf
# 下記3行を追加
LoadModule passenger_module /usr/lib64/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib64/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/bin/ruby

sinatraを動かすDocumentRootをpublicに修正。

#  vi /etc/httpd/conf.d/virtualhost.conf
#DocumentRoot /home/user/public_html
DocumentRoot /home/user/public_html/public

httpdをリロード。

# /etc/rc.d/init.d/httpd reload

あとは、FTPで接続して、
public_htmlの下にpublicディレクトリ(空)とtmpディレクトリ(空)を作成。
public_htmlの下にconfig.ruとhello.rbを配置。

こんな感じ。

public_html/
+ config.ru
+ hello.rb
+ public/
+ tmp/

# config.ru
require 'hello'
Run Sinatra::Applocation

# hello.rb
require 'rubygems'
require 'sinatra'
get '/' do
    'Hello, world.'
end

で、動かんし。

いろいろ検索したら、
rack 1.2.1で動かない事例を発見。

Just installed sproutcore and getting error running sc-init – SproutCore | Google グループ

上記を参考に、
rack 1.2.1をアンインストールして、
rack 1.2.0を入れ直す。

# gem uninstall rack
# gem install rack --version '1.2.0'

で、ようやく動いた。

 

不要なデーモンとコンソールの停止

下記を参考に。

CentOSをサーバーとして活用するための基本的な設定 (さくらインターネット創業日記)

まずは不要なデーモンの停止。

# vi daemons_stop.sh
chkconfig acpid 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 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 rpcgssd off
chkconfig rpcidmapd off
chkconfig xfs off

# sh daemons_stop.sh
# rm -f daemons_stop.sh

サーバーを再起動して、設定を反映。

ちなみに、不要なコンソールは、
始めからコメントアウトされてた。

 

これで、一通り準備完了。