さくらのVPS構築ログ。まずやること。やったこと。

作業ログをまとめていたので書いてみます。
この環境の主たる狙いはMySQL5.1.44をinnoDbとSpider2.22で使いたいということと、ruby1.9.2をrvmで作るというもの。

はっきり言ってすべてネットから拾ってきた情報です笑
なので「なにここでこれやんの?」とか順番おかしかったりするところも多々あると思います笑 許して!

では、だらだらと書きます。

なお当たり前ですが#で始まるところはrootで、$で始まるところはユーザでやってくださいね。かしこ。


日本語環境に。

# vi /etc/sysconfig/i18n
---LANG="C"
+++LANG="ja_JP.UTF-8"

yumパッケージを最新に。

# yum update

管理者パスワードを変更

# passwd
Changing password for user root.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

ユーザ追加。ユーザパスワード設定。ユーザをこれから設定するsudoerグループに帰属させる。

# useradd tatamix00
# su tatamix00
# passwd tatamix00
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
# usermod -G wheel tatamix00

sudoer定義。あとsudoの専用ログを作る設定に。

# visudo
--- # %wheel        ALL=(ALL)       ALL
+++ %wheel        ALL=(ALL)       ALL
+++ Defaults syslog=local1

sudoログをローテートさせるの。そしてsyslogを再起動。

# vi /etc/syslog.conf
--- *.info;mail.none;authpriv.none;cron.none                /var/log/messages
+++ *.info;mail.none;authpriv.none;cron.none;local1.none    /var/log/messages
--- local7.*                                                /var/log/boot.log
+++ local1.*                                                /var/log/sudo.log
+++ local7.*                                                /var/log/boot.log

# /etc/init.d/syslog restart

作ったユーザの公開鍵登録。公開鍵だから見られても良いよね・・・笑
鍵は各々つくってくださいね。

# cd /home/tatamix00
# mkdir .ssh
# chmod 700 .ssh/
# chown tatamix00:tatamix00 .ssh
# vi ./ssh/authorized_keys
+++ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3ei9IsyDCavAtJQiSsPqOLWjzkSrJHcC3XwxKzRFpHNiovQKANMZrhHdCa2m81BzRC/2cSGq5ro5QzQaZI+0wg9QZ9Fn071Nimnh6O4qK4PVoGP7dlKSGmRqyh9filMbz9II1syVLmAyjn1B5t1INN+h3MGjPbku2C7OiMP7o0YO70LDmoSLz8LI5O3OixX53BAsJLWSCgnQQ0CUZ8l7oS2O1DNhwmVEm4mFmOzufTNuCvXAsYNLZAGyDHwQyoLhCad1HIPh2QvqrSwP5tskkhAjcZpDkwK462k6lLktHYlbd6vLJQA2RbpdHTrdfhX7dFKmf3DXejoq+QyhpEN27Q== tatamix00@matsuo-ryo-no-MacBook-Pro.local

# chmod 600 ./ssh/authorized_keys
# chown tatamix00:tatamix00

定番の設定です。sshの。sshポートを変更。パスワード使用禁止。鍵認証有効化。rootでのログイン禁止とか。
そしてsshd再起動。

#vi /etc/ssh/sshd_config
--- Port 22 
+++ Port 10022
--- #PermitEmptyPasswords no
+++ PermitEmptyPasswords no
--- PasswordAuthentication yes
+++ PasswordAuthentication no
--- #RSAAuthentication yes
+++ RSAAuthentication yes
--- #RhostsRSAAuthentication no
+++ RhostsRSAAuthentication no
--- #PubkeyAuthentication yes
+++ PubkeyAuthentication yes
--- #AuthorizedKeysFile      .ssh/authorized_keys
+++ AuthorizedKeysFile      .ssh/authorized_keys
--- #UsePAM no
--- UsePAM yes
+++ UsePAM no
+++ #UsePAM yes
--- #PermitRootLogin no
+++ PermitRootLogin no

# /etc/init.d/sshd restart

rootユーザしかパスの通ってないコマンドとかあるので、新設したユーザにも同等のパスを通しておく。

# su tatamix00
$ vi ~/.bash_profile
vi /etc/sysconfig/iptables
+++ PATH=$PATH:/sbin
+++ PATH=$PATH:/usr/sbin
+++ PATH=$PATH:/usr/local/sbin

iptable定義。必要最低限のポートだけ開いている状態にする。ssh,http,ftp,mysqlだけ開くようにする。
そしてiptableを再起動。

$ sudo vi /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, FTP1, FTP2
+++ -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 20    -j ACCEPT
+++ -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT
+++ # mysql
+++ -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

$ sudo /etc/rc.d/init.d/iptables restart

ntpで時間を同期するようにする。でも限られたマシンリソースがもったいないので、一日一回(4:44)だけ同期するようにする。

$ sudo /etc/init.d/ntpd stop
$ sudo chkconfig ntpd off
$ su -
# cd ~
# mkdir script
# cd script
# touch ntpdate.sh
# vi ntpdate.sh
+++ #!/bin/sh
+++ 
+++ # UNIXの時間をサーバーに合わせる。
+++ # -s 結果は /var/log/messagesへ出力。
+++ # ntp serverは さくらを優先的に使用し
+++ # セカンダリとしてhttp://www.jst.mfeed.ad.jp/network.htmlを使用。
+++ 
+++ /usr/sbin/ntpdate -s ntp1.sakura.ad.jp \
+++ ntp1.jst.mfeed.ad.jp \
+++ ntp2.jst.mfeed.ad.jp \
+++ ntp3.jst.mfeed.ad.jp 
+++ 
+++ # マザーボードの時間を UNIX TIMEに合わせる。
+++ /sbin/clock --systohc

# chmod 755 ntpdate.sh 

# crontab -e
+++ 44 4 * * * /root/script/ntpdate.sh

不必要なサービスを起動しないように変更

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


mysql5.1.44とSpider2.22をコンパイルするところからインストールまで。
結構長いです。

# cd
# yum install -y ncurses-devel readline-devel
# wget http://storehouse.sakura.ne.jp/RPMS/x86_64/m4-1.4.12-2.x86_64.rpm
# wget http://storehouse.sakura.ne.jp/RPMS/noarch/autoconf-2.63-2.noarch.rpm
# rpm -Uhv *.rpm
# rm *.rpm
# wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.44.tar.gz
# wget http://launchpad.net/spiderformysql/spider-2.x/2.22-for-5.1.44/+download/spider-src-2.22-for-5.1.44.tgz
# tar xf mysql-5.1.44.tar.gz
# tar xf spider-src-2.22-for-5.1.44.tgz
# rm *gz
# mv ./spider ./mysql-5.1.44/storage/
# cd ./mysql-5.1.44
# patch -p2 < ../mysql-5.1.44.spider.diff
# autoconf
# automake
# ./configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--libexecdir=/usr/local/mysql/bin \
--enable-thread-safe-client \
--enable-local-infile \
--with-pic \
--with-fast-mutexes \
--with-client-ldflags=-static \
--with-mysqld-ldflags=-static \
--with-zlib-dir=bundled \
--with-big-tables \
--with-ssl \
--with-readline \
--without-embedded-server \
--with-plugins=partition,innobase,innodb_plugin,myisam,csv \
--with-extra-charsets=complex
# make
# make install
# cp ./support-files/mysql.server /etc/init.d/mysql
# chmod +x /etc/init.d/mysql
# chkconfig --add mysql
# cd ..
# mv ./mysql-5.1.44.spider.diff ./mysql-5.1.44/
# mv ./mysql-5.1.44.slave-trx-retry.diff ./mysql-5.1.44/
# mv ./mysql-5.1.44 /usr/local/src/
# cd /usr/local/mysql
# ./bin/mysql_install_db
# adduser mysql
# chown -R mysql:mysql /usr/local/mysql
# cp ./share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf 
+++ default-character-set=utf8
+++ skip-character-set-client-handshake
# /etc/init.d/mysql start
# cd
# export PATH=$PATH:/usr/local/mysql/bin
# mysql
mysql> source install_spider.sql
mysql> show engines;
mysql> \q
# /sbin/chkconfig mysql on
# rm install_spider.sql
# su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm'
# yum install git
# bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
# ~/.rvm/src/rvm/scripts/rvm
# sudo yum install openssl-devel readline-devel zlib-devel
# rvm install 1.9.2
# rvm use 1.9.2 --default
$ sudo gem install rails -v 2.3.9
$ sudo gem install google-appengine
$ mkdir ~/hoge/
$ cd ~/hoge/
$ curl -O http://appengine-jruby.googlecode.com/hg/demos/rails2/rails239_appengine.rb
$ ruby rails239_appengine.rb
$ vi ./WEB-INF/app.yaml 
--- application: 
+++ application: hogehoge

※hogehogeはhogehoge.appspot.comのhogehogeです。

これで環境構築完了。

あとはサーバデプロイが

$ ./script/publish.sh

インスタンス起動が

$ ./script/server

です。