2011年6月16日木曜日

rails自体の開発環境を作る4(完結)

■概要

さくらvpsを再インストールし下記を目標に再構築した際の記録を残しておきます。

・サーバとして一般的に行う設定がなされている事
・最低限のサーバセキュリティを維持している事
・rails自体の開発出来る事
・node.js、coffeescriptが動く事

■パッケージ管理・導入(centos5.5 x86_64版 さくらvps)

●パッケージ最新化
# yum -y update

●当面必要そうなパッケージをインストール
# yum -y install vim-enhanced nmap curl

●webサーバ/DB系をインストール
# yum -y install httpd httpd-devel
# yum -y install sqlite sqlite-devel
# yum -y install mysql mysql-server mysql-devel
# yum -y install postgresql84 postgresql84-contrib postgresql84-devel postgresql84-libs postgresql84-server

●rpmforgeの設定を行う
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# rpm -i rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# rm rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# vim /etc/yum.repos.d/rpmforge.repo
(8行目)
enabled = 1 から enabled = 0 に変更(デフォルトで動かないようにする)

●gitインストール
# yum -y install git --enablerepo=rpmforge

●memcachedインストール
# yum -y install libevent libevent-devel
(素直に依存パッケージが解決しないので手動でインストールする)
# wget http://packages.sw.be/perl-Net-SSLeay/perl-Net-SSLeay-1.36-1.el5.rfx.x86_64.rpm
# wget http://packages.sw.be/perl-Net-SSLeay/perl-Net-SSLeay-1.36-1.el5.rfx.i386.rpm
# wget http://packages.sw.be/perl-IO-Socket-SSL/perl-IO-Socket-SSL-1.34-1.el5.rfx.noarch.rpm
# rpm -Uvh perl-Net-SSLeay-1.36-1.el5.rfx.x86_64.rpm
# rpm -Uvh perl-Net-SSLeay-1.36-1.el5.rfx.i386.rpm
# rpm -Uvh perl-IO-Socket-SSL-1.34-1.el5.rfx.noarch.rpm
# rm *.rpm
# yum -y install memcached memcached-devel --enablerepo=rpmforge

参考 http://nakoruru.jp/?p=439

●その他開発用パッケージのインストール
# yum -y install openssl-devel curl-devel readline-devel zlib-devel
# yum -y install java
# yum -y install libxml2 libxml2-devel libxslt-devel
# yum -y install libyaml-devel libffi-devel --enablerepo=rpmforge

●sqlite3が古いので自分でインストール
# wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz
# tar zxvf sqlite-autoconf-3070603.tar.gz
# cd sqlite-autoconf-3070603
# ./configure
# make
# make install

※yumでインストールした物と競合しているはず。
ただyumでの依存関係があるので、あえて競合してインストールしてみた。

■設定

●日本語化
# vim /etc/sysconfig/i18n
(1行目)
LANG="C" から LANG="ja_JP.UTF-8" に変更

●不要デーモンの停止設定
# 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 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

参考 http://tanaka.sakura.ad.jp/archives/001065.html

●firewall設定
# system-config-securitylevel-tui
(firewallをenabledにし、22/80/443/3000/10022(後述)/8080(後述)を開けた)

●作業用ユーザ作成
# useradd kennyj
# passwd kennyj

●sudo設定
# /usr/sbin/visudo
(一番下に追記)
kennyj  ALL=(ALL)       ALL

●ssh設定
# vim /etc/ssh/sshd_config
(13行目)
#Port 22 => Port 10022 (22番は非常に攻撃されやすいので)
(39行目)
#PermitRootLogin yes => PermitRootLogin no
(59行目)
#PermitEmptyPasswords no => PermitEmptyPasswords no

# /etc/init.d/sshd restart

●firewall再設定
# vim /etc/sysconfig/iptables
(22番ポートを閉じる)

●時間同期設定(ntp)
(さくらVPSでは最初から設定されていました)
# yum -y install ntp
# vim /etc/ntp.conf
# ntpdate ntp.nict.jp (とりあえず一旦近づけておく)
# /etc/init.d/ntpd start
# chkconfig ntpd on

参考 http://centossrv.com/ntp.shtml

●postgresql準備
# service postgresql initdb

●mysql準備
# vim /etc/my.cnf
(文字列エンコーディングをUTF-8に設定)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
default-character-set = utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set = utf8

[mysql]
default-character-set = utf8

●必要に応じてサービス起動設定
# chkconfig httpd on
# chkconfig mysqld on
# chkconfig postgresql on
# chkconfig memcached on

●一旦再起動
# reboot

※これ以降はkennyjユーザで作業しています。

■javascript関係

●node.js/npm/coffeeスクリプトのインストール
$ wget http://nodejs.org/dist/node-v0.4.8.tar.gz
$ tar zxvf node-v0.4.8.tar.gz
$ cd node-v0.4.8
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl http://npmjs.org/install.sh > npm.sh
$ chmod a+x npm.sh
$ sudo PATH=/usr/local/bin:$PATH ./npm.sh
$ sudo PATH=/usr/local/bin:$PATH npm install -g coffee-script
$ rm npm.sh

■ruby関係

●rvmのインストール
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
$ source ~/.bash_profile
$ rvm pkg install iconv
$ rvm install 1.9.2 --with-iconv-dir=$rvm_path/usr
$ rvm install ree   --with-iconv-dir=$rvm_path/usr
$ rvm install 1.8.7 --with-iconv-dir=$rvm_path/usr
$ rvm install jruby
$ rvm use --default 1.9.2

●railsインストール
$ rvm 1.8.7,1.9.2,ree,jruby gem install rails --no-rdoc --no-ri

※jruby1.6.1では落ちたので注意
  arel2.0.10がNG。jruby1.6.2では直っています
  http://jira.codehaus.org/browse/JRUBY-5581
  https://github.com/jruby/jruby/commit/dd1d9382a72af181e9d3998f2680154ebf1e651c

●sassのインストール
$ rvm 1.8.7,1.9.2,ree,jruby gem install sass --no-rdoc --no-ri

■rails自体の開発環境

●mysqlの設定
$ sudo /etc/init.d/mysqld start
$ mysql -u root
mysql> GRANT ALL PRIVILEGES ON activerecord_unittest.*  to 'rails'@'localhost';
mysql> GRANT ALL PRIVILEGES ON activerecord_unittest2.* to 'rails'@'localhost';

●postgresqlの設定
$ sudo /etc/init.d/postgresql start
$ sudo -u postgres createuser --superuser $USER

●gitの設定
$ git config --global user.name "kennyj"          # 名前
$ git config --global user.email kennyj@gmail.com # メールアドレス

●railsの取得とテスト
$ git clone git://github.com/rails/rails.git
$ cd rails
$ bundle install
$ cd activerecord
$ rake mysql:build_databases
$ rake postgresql:build_databases
$ cd ..
$ rake test

●railsを修正しパッチを作成する
$ git checkout -b xxxxx # ブランチ名
(ソース修正)
$ git commit -a -m "コミットメッセージ"
$ git checkout master
$ git pull
$ git checkout xxxxx
$ git rebase master
$ git commit -a
$ git format-patch master --stdout > xxxxx.diff
$ cat xxxxx.diff

■更新記録

2011/06/23 ntpについて追記
サービス起動設定について追記

2011/08/02 rvm package -> rvm pkgに変更

0 件のコメント:

コメントを投稿