2009年6月30日火曜日

RedmineをPostgreSQLで

2010/07/20 CentOS5.5+PostgreSQL8.4.3+Redmine1.0RCをアップしました。
2010/07/20 PostgreSQL8.4.3インストールをアップしました。

PostgreSQLは既に構築されているものとします。
尚、ruby on Railsの構築およびRedmineのインストール等については、以前紹介したRedmine CentOSにインストールを参考にしてください。

環境:CentOS 5.3
   PostgreSQL 8.3.7
   Ruby 1.8.7
   Rubygems 1.3.4
   Rails 2.1.2
   Redmine 0.8.4

尚、PostgreSQL/Ruby/Rubygemsはソースからのインストールで/usr/local/src/で展開しています。

データベース:DB名 redmine
        DBユーザ redmine
        ユーザパスワード:redmine

●データベース
postgresql運用ユーザで作業します。(当環境ではpostgresというユーザ)
# su - postgres

Redmine用のデータベースユーザを新規作成します。
$ createuser -P redmine
 パスワードの設定
 Enter password for new role:パスワード入力(redmine)
 Enter it again:確認のためもう一回入力

 スーパーユーザにしますか?
 Shall the new role be a superuser? (y/n) n

 データベース作成を許可しますか?
 Shall the new role be allowed to create databases? (y/n) y

 新しいユーザの作成を許可しますか?
 Shall the new role be allowed to create more new roles? (y/n) n
 
空のデータベースを作成します。(UTF-8)
$ createdb redmine --owner redmine --encoding=UNICODE
PostgreSQL8.4以降の場合は以下のようにします。
$ createdb redmine --owner redmine --encoding=UNICODE --template=template0

●PostgreSQLアダプター
rootで作業をします。

pg_configへのpathを読み込む
# export PATH=$PATH:/usr/local/pgsql/bin (postgresqlのインストール先)
# gem install pg
Building native extensions. This could take a while...
Successfully installed pg-0.8.0
1 gem installed
Installing ri documentation for pg-0.8.0...
Installing RDoc documentation for pg-0.8.0...

pg (0.8.0)が存在するかチェックします。
# gem list

●接続設定
# vi /home/redmine/config/database.yml
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "redmine"

●スキーマの作成
# cd /home/redmine/
# rake --trace db:migrate RAILS_ENV="production"
(in /home/redmine)
rake aborted!
libiconv.so.2: cannot open shared object file: No such file or directory - /usr/local/lib/ruby/1.8/i686-linux/iconv.so
/home/redmine/Rakefile:10
(See full trace by running task with --trace)
何やら怒られてしまった。libiconv.so.2が存在しない?
--trace オプションを付けるとエラーが発生したときわかりやすいのでお勧め

rubyのソースからインストール

# cd /usr/local/src/ruby-1.8.7-p160/ext/iconv/ (rubyの展開ソース)
# ruby extconf.rb
checking for iconv() in iconv.h... no
checking for iconv() in -liconv... yes
checking for const of iconv() 2nd argument... no
creating Makefile
# make
# make install

もう一度
# cd /home/redmine/
# rake --trace db:migrate RAILS_ENV="production"
(in /home/redmine)
rake aborted!
no such file to load -- openssl

またダメだ。今度はssl?
# yum install openssl-devel (必要なので事前に入れておく)
# cd /usr/local/src/ruby-1.8.7-p160/ext/openssl/
# ruby extconf.rb


=== Checking done. ===


creating extconf.h
creating Makefile
Done.


# make
# make install

再度実行(今度はどうだ!)
# cd /home/redmine/
# rake --trace db:migrate RAILS_ENV="production"
今度は大丈夫なようです。これでテーブル等が作成されました。

●デフォルトデータ
# rake redmine:load_default_data RAILS_ENV="production"
Select language: bg, ca, cs, da, de, en, es, fi, fr, he, hu, it, ja, ko, lt, nl, no, pl, pt, pt-br, ro, ru, sk, sr, sv, th, tr, uk, vn, zh, zh-tw [en]
ではjaを入力する。
 
データが作成されました。

以下省略

Ruby on Railsの構築はこちらを参照ください。(DBはMySQLですが)


 

2009年6月15日月曜日

FortiGate 初期化(工場出荷状態)

FortiGateを工場出荷状態に戻すためにはWeb画面から行うことができますが、
CUIでは次のコマンドで初期化できます。
# exe factoryreset
工場出荷状態になりますが続けますか?と聞かれますので"y"を押して実行します。
再起動が終了すれば初期化は完了です。
 
ちなみにHDD搭載のLogDiskは以下のコマンドで初期化できます。
# exe formatlogdick
 

FortiOS TFTP経由による初期化

ファームウェア(FortiOS)をTFTPからセットして初期化する。
FortiGate-50BにV3.00-b0741(MR7 Patch 5)を適用させました。

流れとしてはFortiGate起動>フォーマット>TFTPからファームウェアを読み込む、というようになります。
 
準備として以下のものを用意します。
・シリアルポート(D-sub9)を装備するWindowsPC
・シリアル接続ケーブル(fortigate付属品)
・適用するファームウェア
・TFTP
・スイッチングHUB
 
●TFTP
お勧めはTFTPD32です。以下よりダウンロードします。
http://tftpd32.jounin.net/tftpd32.htmlにアクセスしてDownloadを指定します。


 
最新版のZIPファイルを指定します。

 
解凍してできたフォルダをCドライブの直下に移動します。(C:\tftpd32.333)
そのフォルダ内にFortiGateのファームウェアFGT_50B-v300-build0741-FORTINET.outを配置させます。※リネームして名前を短くした方が後々便利かも。(C:\tftpd32.333\FGT_50B-v300)
 
●セッティング
FortiGateの電源はOFFにしておきます。
PCとFortiGateをシリアルケーブルで接続してさらにPCとFortiGateを用意したHUBにLANケーブルで接続します。PCに適当なIP(ここでは192.168.1.100/255.255.255.0)を固定で振ります。
※デフォルトゲートウェイ、DNSは設定する必要はありません。

 
●TFTPの起動
C:\tftpd32.333\tftpd32.exeをダブルクリックして起動します。
 
●ターミナルソフト
Windows付属のハイパーターミナルを使います。
スタート>すべてのプログラム>アクセサリ>通信>ハイパーターミナル
起動時以下のメッセージが表示されますが、「いいえ」を選択しておきます。

 
市外局番を入力します。(適当な数値でも構いません)
ただし以前に起動したことのある場合は省略されることがあります。

 
そのままOKを押します。

 
適当に名前欄に名称を入力します。

 
接続方法に接続したCOM番号を指定します。(通常はCOM1でしょう)

 
接続プロパティを以下のように設定します。
ビット/秒:9600
データビット:8
パリティ:なし
ストップビット:1
フロー制御:なし

 
FortiGateの電源を入れると起動内容が表示され"Press any key to display configuration menu・・・"で一時止まりますので素早くPC側で任意のキーを入力します。キー入力のタイミングが遅いとそのまま起動されてしまうので注意してください。その場合は再度電源を入れ直してください。

 
"Enter G,F,I,Q, or H"と表示され選択待ち状態になりますので"F"を押します。

 
次に"y"を押します。

 
再度"G,F,I,Q, or H"と表示され選択待ち状態になりますので今度は"G"を押します。

 
各アドレスやファームウェアのファイル名を入力します。
"Enter TFTP server adrress"に192.168.1.100(WindowsPCのIP)
"Enter Local adrress"に192.168.1.99(FortiGateのInternal IPとして適当に指定)
"Enter firmware image file name"にFGT_50B-v300-build0741-FORTINET.out
※Please connect TFTP server to Ethernet port "3".と出ているときはFortiGateのローカルポートを"3"にLANケーブルを接続してください。
※TFTPが起動していないと失敗しますので必ず起動しているか確認してください。

 
しばらくするとTFTPからファームウェアが転送されセーブするかどうかメッセージが表示されますので"D"を押します。

 
しばらくしてログインプロンプトが表示されたら初期化は完了です。
コンソール接続されているのでついでに簡単な初期設定をしておきましょう。
 
admin/パスワードなしでログインをします。
 
●インターナルのIPアドレス
※初期状態はNATモードになっています。
FGT9999999999 # config system interface
FGT9999999999 (interface) # edit internal
FGT9999999999 (internal) # set ip 192.168.1.254/24 ※環境に合わせて設定
FGT9999999999 (internal) # set allowaccess https ping ※必要に応じてhttpなど追記していく
FGT9999999999 (internal) # end
FGT9999999999 #
 
●Web管理画面の表示言語
ついでにタイムゾーン、ホスト名を同時に設定します。
FGT9999999999 # config system global
FGT9999999999 (global) # set language japanese
FGT9999999999 (global) # set timezone 60
FGT9999999999 (global) # set hostname FGT50B
FGT9999999999 (global) # end
FGT9999999999 #
 

わかりにくいところがありましたらコメントを残しておいていただけると助かります。

 

2009年6月11日木曜日

CentOSでvim

コンソール上でRedmineのソースを見る機会があった。
どうせならsyntax colorで表示されたほうが見やすいのでvimを入れた。

# yum install vim-enhanced
===============================================================
Package Arch Version Repository Size
===============================================================
Installing:
vim-enhanced i386 1:6.3.046-1.el4_7.5z update 959 k
Installing for dependencies:
vim-common i386 1:6.3.046-1.el4_7.5z update 3.4 M

Transaction Summary
===============================================================

# vim ファイル指定
これでsyntax colorで表示される。

でもviで開くとsyntax colorにはならない。特にviとvimを使い分ける必要はないのでviコマンドでもvimとして開かれるようにする。
# vi /etc/bashrc
alias vi='vim' ← 最終行にでも追記

ついでに行番号を表示させるようにする。
# vi /etc/vimrc
set number ← set rulerの下にでも追記
  

2009年6月9日火曜日

サーバールーム 温度センサー

常時エアコンの稼動しているサーバールームですが、誰かが入室しないと温度の状態がわかりずらい。しかも温度上昇等の異常時対応が遅れるなど不安が多くあります。また休日の状態も気になります。従って温度センサーを取り付けることにしました。ですが、なるべくお金を掛けずにできないかと模索した。ただ温度計を設置しただけではあまり意味がないので最低限、異常時にメール報告を自動で行ってくれるような製品を探しました。
するとDigi International というところからWatchportというUSBデバイスで温度監視をするものを見つけました。値段も3万前後で専用のソフトも付属している。しかも指定温度を超えたら警告メールを送信してくれる。私が考えていた最低限の機能を装備したものだったので即発注しました。

で、到着した品物がこれです


Windows server 2003 r2にドライバをインストールしてから専用ソフト(Watchport Manager)をインストール。英語版ソフトですが、そんなに難しいものではありませんでした。
温度範囲を設定してアラートの種類を選択、そしてメール設定するだけで使えます。 
また、メールはCCが扱えるので複数の人に送信できるのも嬉しいです。
更に、モデムを使えば電話への通達も可能なようです。
 



接続デバイス情報



アラート設定 



メール設定

2009年6月5日金曜日

FortiGate-80C

最新機種FortiGate-80Cが発売されました。
ROBO(リモートオフィス/ブランチオフィス)ネットワーク向けですが、最新のFrotiOS 4.0が搭載されていて、しかもプロセッサにFortiASICが採用されています。
 
●ハードウェア
・FortiASIC CPによるUTMアクセラレーション
・10/100/1000 WANポート×2
・10/100 DMZポート×1
・10/100 スイッチポート×8
・コンソールポート×1
・USBポート×2
・ExpressCard3Gスロット×1

●スループット
・ファイアーウォール:350Mbps
・IPSecVPN:80Mbps
・アンチウイルス:50Mbps
・IPS:100Mbps
 
なかなかのスペックですね。
エントリーモデル(50-100シリーズ)の中で最も性能がよいことになります。
おおよその販売価格は1年ライセンス(フルバンドル版)で¥200,000~¥250,000ぐらいでしょう。
※ハードウェア保証(センドバック)含む
 

FortiGate-110C 購入

現在使用中のForiGate-200(AV/ISPモデル)のライセンスがまもなく期限を迎えます。次年度更新のサポート期間も延長になりましたが、このモデルのライセンスを更新するより実は110Cを購入した方が(しかもフルバンドル版)トータル的に見てコスト減になることがわかりました。なので買い換えることにしました。
 


本日品物が到着しました!



FortiOS 4.0を導入するか現在検討中。


※もう一台所有しているFortiGate-60(AV/ISPモデル)も同時に買い換えることにしました。(こちらは50Bへ)

2009年6月2日火曜日

CentOS 5.3 インストール その2

その1からの続き

インストール後に必須またはやっておいた方がよいと思われる設定です。

基本的にインストール後はWindows用ターミナルエミュレータを使いますが
TeraTerm、Puttyなどがあります。私はもっぱらPoderosaを愛用しています。
接続先ごとにタブ式になっており画面を並べて比較したり非常に便利です。

とりあえず接続して設定していきましょう。
rootでログインします。※SSH経由にてのrootログインは後ほどできないよう制御します。
●GPGKEYのインポート
# rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5;

●GPGKEYの確認
インポートされているかチェックします。
# rpm -qai gpg-pubkey*
※何も表示されないときはインポートされていません。再度インポートを実行します。

●yum-updatesdの削除
yumによる自動アップデート機能ですがシステムに常駐していて一定間隔で動作する。
常駐しているためメモリー消費の無駄(メモリーリークするという噂も)なので削除します。
定期的なアップデートは従来のCron型yum-cronをこの次にインストールします。
# yum remove yum-updatesd

●yum-cronおよび関連パッケージのインストール
# yum install yum-cron yum-downloadonly
# wget http://mirror.centos.org/centos/5.2/os/i386/CentOS/yum-cron-0.6-1.el5.centos.noarch.rpm
# rpm -ivh yum-cron-0.6-1.el5.centos.noarch.rpm

yum-cronサービスを起動させます。
# /etc/init.d/yum-cron start

OS起動時にサービスが有効になるようにします。
# chkconfig yum-cron on

起動設定を確認します。
# chkconfig --list yum-cron
※以下のようになっているか要確認(2,3,4,5がon)
yum-cron 0:off 1:off 2:on 3:on 4:on 5:on 6:off

●開発ツール群のインストール
# yum groupinstall "Development Tools";

●システム全体のアップデート
# yum update

●NTPの導入
内部時計を外部タイムサーバ(内部でもOK)と定期的に同期を取るようにする。
# yum install ntp

時刻を即同期させます。
# ntpdate タイムサーバアドレス(例 ntp.jst.mfeed.ad.jp)

ハードウェアクロックも合わせます。
# hwclock --systohc

Cron実行用同期スクリプトを作成します。
# vi ntpdate
テキストの中身
#!/bin/bash
/usr/sbin/ntpdate ntp.jst.mfeed.ad.jp > /dev/null;hwclock --systohc > /dev/null

作成したスクリプトに実行権限を与えます。
# chmod +x ntpdate

1日1回実行されるようcron.dailyに配置します。
# mv ./ntpdate /etc/cron.daily/

●ユーザの追加
作成時に自動的にユーザディレクトリ直下にpublic_htmlディレクトリが作成されるようにします。
# mkdir /etc/skel/public_html

ユーザ追加
# useradd hoge

ユーザパスワードの設定
# passwd hoge
※パスワードを2回入力します

●SSH設定
セキュリティとしてはカギ認証やChroot化などありますが、最低限として以下の設定をします。
・ログイン認証時間は20秒
・rootログインの禁止
・パスワードの設定されていないユーザのログインを禁止
・指定ユーザのみ接続許可

設定ファイルを開きます。
# vi /etc/ssh/sshd_config

以下を最終行にでも追記します。
LoginGraceTime 20
PermitRootLogin no
PermitEmptyPasswords no
AllowUsers hoge

設定を適用します。
# /etc/init.d/sshd restart

※rootのログオン状態はそのままにしておき許可したユーザでログインできるかチェックします。Poderosa等のエミュレーターの新規接続画面を表示して実際にログインしてみる。

●root宛てメールを任意のアドレスへ転送
# cd /etc/
# vi ./aliases
以下を最終行に追記する
root: hogehoge@example.com(自分の環境に合わせて)

●yum
# yum clean all

最後に再起動をして完了です。

必要に応じてSU制限をします。(一般ユーザログイン後のsuコマンド使用許可)
基本的にwheelグループ所属のユーザのみsuコマンドが使える。
# vi /etc/pam.d/su

#auth required pam_wheel.so use_ui
↓この行のコメントをはずす
auth required pam_wheel.so use_ui

# vi /etc/login.defs
以下を適当な場所に追記する
SU_WHEEL_ONLY yes

許可ユーザをwheelグループに所属させます。
# usermod -G wheel hoge

以上で完了です。

2009年6月1日月曜日

CentOS 5.3 インストール その1

 
CentOS 5.3にてサーバー用途(主にWebアプリ用)に限定した構成で構築をします。
マシンはチョイ古い32Bitマシンを使用しネットワーク経由+テキストモードでインストールします。
 
 ・CPU:Intel(R) Pentium(R) 4 2.40GHz
 ・メモリ:1GB(DDR 512MB×2)
 ・HDD:HITACH ATA 250GB
 
●ネットワークインストール用メディアの用意
http://ftp2.riken.jp/Linux/centos/5/os/i386/images/boot.iso
上記よりISOファイルをダウンロードしてCD-Rメディアに書き込みます。
※ISOファイルはイメージファイルですのでそのまま書き込んででもダメです。
 よくわからない方は「"ISO" "書き込み"」で検索してお調べください。
 
●インストール開始
ネットワークインストールですので事前にIPアドレスやDNSアドレスを準備しておきましょう。
DHCPでも可能ですがサーバー用途なので、ここでIPを固定しちゃいましょう。
※LANケーブルを差し込むのを忘れずに・・・
 
先ほど作成したbootメディアをセットして再起動するとインストールメニューが表示されます。
※CDドライブが先にbootするようBIOSで設定しておく・・・
テキストモードでインストールしますのでboot:のあとにtext installと入力しEnterを押します。
※入力しないでそのままにしておくと勝手にGUIインストールが始まりますので注意してください。


 
●インストール中の表示言語の選択
 Englishを選択します。

 
●キーボード種類の選択
 日本語キーボードならjp106を選択します。

 
●パッケージのインストール方法
 HTTPを選択します。※FTP経由だと何故かパッケージのダウンロードでエラーになってしまう

 
●ネットワーク構成
 IPv4を使用して固定で割り振ります。
 「Enable IPv4 support」+「Manual configuration」

 
●ネットワーク設定
 環境に適した設定をします。

 
●ダウンロード先の指定
 理研(理化学研究所)さんを利用させていただきます。
Web site name:ftp.riken.jp(ftp2.riken.jpでもよし)
CentOS directory:/Linux/centos/5/os/i386

 
●ようこそ! CentOS

 
●ディスク設定
 ※ディスクデータが消えてしまうがよいかという警告画面が出た場合は「yes」で続行する。
「Remove all partitions on selected drives and create default layout」を選択する。
すべてのパーティションを削除して新しくパーティションを作成する。

 
●確認
 「すべてのパーティションを削除して新しくパーティションを作成する」を選択されたが
実行してもいいですか?当然「yes」で続行します。

 
●パーティションのレイアウト
 手動で設定したい場合は「Yes」自動設定の場合は「No」を選択します。※ここでは「No」

 
●ネットワーク設定
 インターフェースを見直すようであれば「yes」で再設定します。※ここでは「No」

 
●その他ネットワークの設定
 セカンダリDNSを指定する場合は指定する。なければそのまま「OK」

 
●ホスト名の設定
 決まっていなければとりあえずlocalhostとでも入れておきましょう。
 後で変更することも可能なので、なんでもOKです。

 
●タイムゾーンの設定
 Asia/Tokyoを指定する。
 ※時刻がずれることがあるので、System clock uses UTCはOFFにした方がよいかも

 
●rootパスワードの設定
 ※忘れないように・・・忘れるとログインできません。

 
●パッケージの選択
 デフォルトで指定されている「Desktop - Gnome」はチェックを外して
「Customize software selection」にチェックを入れます。

 カスタマイズ画面では「Base」以外はすべてチェックを外します。

 
●インストール開始
 インストールログは/root/install.logにできますので再起動後必要に応じて参照。

 
 ハードディスクがフォーマットされパッケージがインストールされます。
 
●インストール完了
 再起動させます。

 
●初期セットアップ
 初回起動時に表示されます。ログイン後setupと入力することで起動させることもできます。

 
●Firewall configuration
 Security LevelおよびSELinuxは無効にします。
 構築中の妨げになることがあるのですべての構築が完了してから設定したほうがよいと思います。
 そもそも不要なポートを閉じることより不要なサービスを稼動させないようにするのがよい。
 社内用などで外部公開しないのであればすべてOFFのままでもよいのでは・・・。



 
●System services
 不要なサービスは起動させないようにします。


 お好みに応じてサービスをOFFにしていきQuitで終了します。

ちなみに私は以下の項目をOFFにしています。
NetworkManager:
acpid:ON/OFF監視などの電源管理
anacron:Cronで代用できるため
apmd:電源管理(省電力)
atd:指定した時間にコマンドを実行(Cronを使うので不要)
auditd:監査機能(SELinuxを使う場合は必要)
autofs:ファイルシステムの自動マウント/アンマウント(リムーバブルディスクなどの自動認識)
avahi-daemon:ローカルネットワークサービスの発見
avahi-dnsconfd:ローカルネットワークサービスの発見
bluetooth:Bluetooth無線通信
conman:
cpuspeed:
cups:印刷機能
dnsmasg:
dund:Bluetoothダイアルアップ機能
firstboot:初期設定(インストール直後の設定が済めば不要)
gpm:マウス(サーバー用途にマウスは要りません)
haldaemon:ハードウェア情報をリアルタイムに収集(運用が始まれば不要)
hidd:Bluetooth関連
ibmasm:
ip6tables:IPv6管理
irda:赤外線機能
kudzu:ハードウェア検出ツール
mcstrans:SELinuxは利用していないので不要
mdmonitor:ソフトウェアRAID管理
mdmpd:Multipathデバイス監視(RAID関連)
messagebus:メッセージ送信(D-BUSを使わなければ不要)
netfs:NFS,SMB,NCPのマウント
nfs:NFS関連
nfslock:NFS関連
oddjobd:D-BUS関連
pand:Bluetooth関連
pcscd:スマートカード(ICカード)関連
portmap:NFS等の関連
readahead_early:前もってファイルをページキャッシュに読み込む?
readahead_later:前もってファイルをページキャッシュに読み込む?
restorecond:新しいファイルを作成したときにSELinuxからのラベルづけ
rpcgssd:NFS関連
rpcidmapd:NFS関連
rpcsvcgssd:NFS関連
wpa_supplicant:無線LAN暗号WPA認証クライアント
xfs:Xフォント
yum-updated:常駐型パッケージ自動更新
 
検討サービス
lvm2-monitor:論理ボリューム(LVM2)障害監視(LVMを利用していないなら無効化)
cpuspeed:マシン負荷に応じてCPUの周波数を自動変更する
     (周波数が変更できないようなCPUの場合は無効化)

irqbalance:マルチコア用で処理の分散化
     ※cat /proc/interruptsで複数のCPUが表示されなければOFFにしておく

smartd:HDDの障害予測サービス(HDDがSMARTに対応している必要がある)
     ※起動時にsmartdがエラーになるようなら非対応なのでOFFにする

microcode_ctl:Intel IA32 プロセッサのマイクロコードユーティリティ
     ※よくわかりませんのでとりあえずそのままONで稼動させます
 
OSはこれで完了ですが、その他初期設定するものがあります。
これについては後日にします。
 

Google検索