さくらのVPS
で、sinatraを動くようにするまでの個人的なメモ。
sinatra以外にも、perlなCGIやphpも動く環境を作る。
初期設定
下記を元に初期設定など。
ちなみに、
- 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の動作テスト
下記を参考に。
# 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
サーバーを再起動して、設定を反映。
ちなみに、不要なコンソールは、
始めからコメントアウトされてた。
これで、一通り準備完了。