構成管理/課題管理サーバ構築メモ
2009/10/31追記:「ENV['RAILS_ENV']」のコメント行を有効行にする旨の記述が分かりにくかったので修正。
以下の条件で構成管理/課題管理サーバを構築する手順を文書化して欲しいという要件があったのでザクザクと作業してワシワシとメモしてみた。
- 諸事情により構築中のサーバ機(マシンA)は直接WWWに接続できない(ただし同じセグメント内にWWWに接続できるマシンあり)。
- マシンAにはDVDドライブなし。
- 構築中、マシンAはDHCPでIPアドレスを割り当てられる。
- インストールするソフトウェアは以下のもの。
あくまでもやりかたのサンプルとして書いたものなのでパーティションやらインストールパッケージやら詳細な設定やらは要件にあわせて調整する必要あり。いろいろ適当なので注意。
あと、RedmineとSubversionの連携の手順は記していないし、ソフトウェアのバージョンは実施時のもの。
当初はCentOSもRubyGemsもLAN内にミラーリポジトリを作って対応しようかと思っていたが、途中で面倒になったので同じセグメント内にあるWWW接続可能なWindowsマシン(マシンB)をプロキシサーバとして使うことにした。
※とあるブログにPassengerの設定でRails側の.htaccessをいじったりdispatch.cgi.exampleをdispatch.cgiにする情報があったが、それだとPassengerではなくCGIやらFastCGIやらで動くことになるのでおかしい。Passengerがちゃんと効いてればそれらの設定は不要なはず。
プロキシサーバの構築
マシンBにて実施。
Delegateのインストール
CentOSインストール時に使うプロキシの設定
- 以下のような内容のバッチファイルを作成し、起動する。
- ※インストール時はプロキシ設定できないので明示的にスルーさせる。
C:\delegate\bin\dg9_9_4.exe -P8080 DGROOT="C:\delegate" VARDIR="c:\delegate\var" CACHEDIR="c:\delegate\cache" PERMIT="*:*:*" MOUNT="/* http://ftp.riken.jp/*" ADMIN=user@example.com
構成管理/課題管理サーバの構築
マシンAにて実施。
CentOSのインストール(ネットワークインストール)
※DVDドライブが付いていたり、CD-Rを6枚焼く覚悟があったりする場合は非ネットワークインストールでOK。
- 以下のイメージをCD-Rに焼く。
- 対象マシンにLANケーブルを接続する。
- CD-Rを対象マシンにセットして起動する。
- 「boot:」と表示されたらEnter。
- 「Choose a Language」と表示されたら「English」を選択してOKボタンを押す(「Japanese」にした方が後々楽かも)。
- 「Keyboard Type」と表示されたら「jp106」を選択してOKボタンを押す。
- 「Installation Method」と表示されたら「HTTP」を選択してOKボタンを押す。
- 「Configure TCP/IP」と表示されたら以下の設定にしてOKボタンを押す。
[*] Enable IPv4 support (*) Dynamic IP configuration (DHCP) [ ] Enable IPv6 support
- 「Sending request for IP information for eth0...」などと表示されるのでしばらく待つ。
- 「HTTP Setup」と表示されたら以下の設定にしてOKボタンを押す。
Web site name: 【マシンBのIPアドレス】:8080 CentOS directory: Linux/centos/5/os/i386
- 素敵な画面が表示されるのでNextボタンを押す。
- パーティションの具合を聞かれるので以下の設定にしてNextボタンを押す。
- ※以下に明示したもの以外はチェックをつけない。
[Remove all partitions on selected drives and create default layout.] [*] Review and modify partitioning layout
- 本当に選択したドライブのパーティションを消してよいか聞かれるのでYesボタンを押す。
- パーティションのデフォルト設定が表示されるのでNextボタンを押す。
- ブートローダについて聞かれるので以下の設定にしてNextボタンを押す。
- ※以下に明示したもの以外はチェックをつけない。
[*] The GRUB boot loader will be installed on /dev/hda. [*] CentOS /dev/VolGroup00/LogVol00
- ネットワークデバイスについて聞かれるので以下の設定にしてNextボタンを押す。
- ※以下に明示したもの以外はチェックをつけない。
[*] eth0 DHCP Disabled ※固定IPの場合は変更すること [*] automatically via DHCP ※固定IPの場合は変更すること
- 地域を聞かれるので以下の設定にしてNextボタンを押す。
- ※以下に明示したもの以外はチェックをつけない。
[Asia/Tokyo] [*] System clock uses UTC
- rootパスワードを聞かれるので以下の設定にしてNextボタンを押す。
Root Password: 【rootパスワード】 Confirm: 【rootパスワード】
- パッケージを聞かれるので以下の設定にしてNextボタンを押す。
- ※以下に明示したもの以外はチェックをつけない。
[*] Desktop - Gnome [*] Customize later
- インストールするよという画面が表示されるのでNextボタンを押す。
- インストールが終わるのを待つ。ネットワークの状態によってはたまにエラーが出るがRetryボタンを押すとうまくいく場合が多い。
- 再起動を促されるのでCD-Rを取り出してRebootボタンを押す。
- 再起動後「Welcome」と表示されるのでForwardボタンを押す。
- Firewallの設定が表示されるので以下の設定にしてForwardボタンを押す。
- ※以下に明示したもの以外はチェックをつけない。
[Disabled]
- 警告が出るが構わずYesボタンを押す。
- SELinuxの設定が表示されるので以下の設定にしてForwardボタンを押す。
- ※以下に明示したもの以外はチェックをつけない。
[Disabled]
- 警告が出るが構わずYesボタンを押す。
- 時刻の設定が表示されるので適当に設定してForwardボタンを押す(本来はNTPの設定をすべきだが一旦スルーした)。
- ユーザアカウントの作成を促されるので以下の設定にしてForwardボタンを押す。
Username: 【一般ユーザ】 Full Name: 【一般ユーザフルネーム】 Password: 【一般ユーザパスワード】 Confirm Password: 【一般ユーザパスワード】
rootによるリモート接続拒否の設定
- コンソールで以下のコマンドを実行する。
# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.orig # vi /etc/ssh/sshd_config
-
- ※「PermitRootLogin no」を追記する(yesが有効になってたら上書きする)。
# service sshd restart
yum用のプロキシ設定
- コンソールで以下のコマンドを実行する。
# export http_proxy=http://【マシンBのIPアドレス】:8081/
- 面倒なので自動アップデートをOFFにしておく。
# service yum-updatesd stop # chkconfig yum-updatesd off
Ruby/Apache/Subversion/Rails/MySQL/Passenger達のインストール
- コンソールで以下のコマンドを実行する。
# yum install ruby ruby-devel rdoc # mkdir /tmp/work # cd /tmp/work # wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz # tar xvzf rubygems-1.3.1.tgz # cd rubygems-1.3.1 # ruby setup.rb # gem install rails # yum install gcc-c++ httpd httpd-devel apr-devel openssl-devel # yum install subversion mod_dav_svn # yum install mysql-server # gem install passenger # passenger-install-apache2-module
-
- ※以下のように表示される(環境によって異なる場合がある)。
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5 PassengerRuby /usr/bin/ruby
- 上記コマンドの最後で表示された文字列を以下のテキストに記載する。
# vi /etc/httpd/conf.d/passenger.conf
Redmineの設定
- MySQLの設定を行う。
# mv /etc/my.cnf /etc/my.cnf.orig # cp -p /usr/share/mysql/my-medium.cnf /etc/my.cnf # vi /etc/my.cnf
-
- ※「[mysqld]」の末尾に「default-character-set = utf8」を追加。
- ※「[mysql]」の末尾に「default-character-set = utf8」を追加。
- MySQLを起動し、設定も常時起動にする。
# /etc/rc.d/init.d/mysqld start # chkconfig mysqld on
-
- ※「chkconfig --list mysqld」で確認できる。
- MySQLのrootにパスワードを設定し、匿名ユーザを削除する。
# mysql -u root set password for root@localhost=password('【MySQLのrootのパスワード】'); set password for root@localhost.localdomain=password('【MySQLのrootのパスワード】'); set password for root@127.0.0.1=password('【MySQLのrootのパスワード】'); delete from mysql.user where user=''; quit
# mysql -u root -p
-
- ※パスワード入力
create database redmine; grant all on redmine.* to redmine@localhost identified by '【MySQLのredmineのパスワード】' with grant option; quit
- redmineをインストールする。
# useradd -s /sbin/nologin redmine # passwd redmine
-
- ※【OSのユーザredmineのパスワード】を設定
# chmod 755 /home/redmine # cd /tmp/work # wget http://rubyforge.org/frs/download.php/63583/redmine-0.8.5.tar.gz # tar xvzf redmine-0.8.5.tar.gz # mv /tmp/work/redmine-0.8.5 /home/redmine/redmine # chown apache:apache -R /home/redmine/redmine ※本来はpublicやlogなどに限定した方がよい # cd /home/redmine/redmine/config # cp -p database.yml.example database.yml # vi database.yml
-
- ※「production」の部分を以下のように設定。
production: adapter: mysql database: redmine host: localhost username: redmine password: 【MySQLのredmineのパスワード】 encoding: utf8 socket: /var/lib/mysql/mysql.sock
# cd /home/redmine/redmine # rake db:migrate RAILS_ENV="production" # rake load_default_data RAILS_ENV="production"
-
- ※使用言語を聞かれるので「ja」と入力。
- ※今回は一旦メールサーバ不使用のまま(「config/email.yml」が存在しない状態のまま)としておく。
# cp -p /home/redmine/redmine/config/environment.rb /home/redmine/redmine/config/environment.rb.orig # vi /home/redmine/redmine/config/environment.rb
-
- ※「ENV['RAILS_ENV']」のコメント行を有効行にする。
ENV['RAILS_ENV'] ||= 'production'
- 暫定的にホスト名を設定する。
# cp -p /etc/sysconfig/network /etc/sysconfig/network.orig # vi /etc/sysconfig/network
-
- ※「HOSTNAME」を「【マシンAのホスト名】」に設定する。
# cp -p /etc/hosts /etc/hosts.orig # vi /etc/hosts
-
- ※「127.0.0.1」の最初に「【マシンAのホスト名】」を追加する。
# /etc/init.d/network restart
# cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig # vi /etc/httpd/conf/httpd.conf
-
- ※「ServerName 【マシンAのホスト名】」を追加する。
- ※末尾に以下を追加する。
PassengerPoolIdleTime 600 NameVirtualHost *:80ServerName 【マシンAのホスト名】 RailsBaseURI /redmine
# ln -s /home/redmine/redmine/public /var/www/html/redmine
- Apacheを起動し、設定も常時起動にする。
# /etc/rc.d/init.d/httpd start # chkconfig httpd on
-
- ※「chkconfig --list httpd」で確認できる。
Redmine動作確認
Subversionの設定
- リポジトリを作成する。
# useradd -s /sbin/nologin subversion # passwd subversion
-
- ※【OSのユーザsubversionのパスワード】を設定
# chmod 755 /home/subversion # cd /home/subversion # mkdir repository # svnadmin create /home/subversion/repository/svntest # chown -R apache:apache /home/subversion/repository/svntest # cp -p /etc/httpd/conf.d/subversion.conf /etc/httpd/conf.d/subversion.conf.orig # vi /etc/httpd/conf.d/subversion.conf
-
- ※以下の内容で作成。
DAV svn SVNParentPath /home/subversion/repository SVNListParentPath On Satisfy Any Require valid-user AuthType Basic AuthName "Authorization Realm" AuthUserFile /home/subversion/svnpassword AuthzSVNAccessFile /home/subversion/svnacl
- アクセス権限を設定する。
# vi /home/subversion/svnacl
-
- ※以下の内容で作成(はてな記法の関係で下記の「*」で始まる行の先頭に半角スペースを入れているが、実際は無いので注意)。
[groups] manager = admin cpa = cpauser01,cpauser02 cpb = cpbuser01,cpbuser02 [svntest:/] * = rw [cparepo:/] @manager = rw @cpa = rw * = r [cpbrepo:/] @manager = rw @cpb = rw * = r
- ユーザを作成する。
# htpasswd -cm /home/subversion/svnpassword admin
-
- ※【Subversionのユーザadminのパスワード】を設定
- Apacheを再起動する。
# /etc/rc.d/init.d/httpd restart
Subversion動作確認
- クライアントのhostsに対象マシンのIPアドレスを指定して「【マシンAのホスト名】」という名前をつける。
- クライアントにTortoiseSVNを導入する。
- TortoiseSVNのリポジトリブラウザで「http://【マシンAのホスト名】/svn/svntest/」を開き、admin/passwordでログインしてフォルダ作成が出来ればOK。