2010年7月21日水曜日

CentOS+Redmine+PostgreSQL

Redmine 1.0.0 release candidateがリリースされたのでインストールしてみました。
また、RORがApache上で稼働できるようPassengerをインストールしています。
※Apacheではバーチャルホストを利用して公開

●構成
CentOS 5.5
Apache 2.2.15 + Passenger(mod_rails)
PostgreSQL 8.4.3
Ruby 1.8.7-p299
RubyGems 1.3.7
Rails 2.3.5
Redmine Checked out revision 3858.

※私は、Apache, PostgreSQLをソースからインストールしていますがRPMでの構成でもいけると思います。(試していないので保障はできません)

●準備
OSのインストールは省略します。

開発ツール群やその他ライブラリが必要
# yum -y groupinstall "Development Tools"
# yum -y install openssl-devel readline-devel zlib-devel

※RPMでhttpd・postgresqlをインストールした方は、以下も必要かと・・・
# yum -y install httpd-devel postgresql-devel

●Rubyのインストール
# cd /usr/local/src/
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.gz
# tar xzvf ruby-1.8.7-p299.tar.gz
# cd ruby-1.8.7-p299
# ./configure --prefix=/usr/local
# make
# make install
# ruby -v
1.8.7

●RubyGemsのインストール
# cd ../
# pwd
/usr/local/src
# wget http://rubyforge.org/frs/download.php/55066/rubygems-1.3.1.tgz
# tar xzvf rubygems-1.3.1.tgz
# cd rubygems-1.3.1
# ruby setup.rb
# gem -v
1.3.1

※以下db:migrateの時にわかるのですがRubyGems1.3.2以上が必要です。
私は、gem update --systemで最新版にしてしまいました。
# gem update --system
# gem -v
1.3.7

●Railsのインストール
# gem install rails -v=2.3.5
# gem install rake -v=0.8.3
# export PATH=$PATH:/usr/local/pgsql/bin/ ← PostgreSQL
# gem install postgres-pr
# gem install pg -- --with-pgsql-dir=/usr/local/pgsql

●Redmine
# mkdir /home/redmine
# cd /home/redmine
# svn checkout http://redmine.rubyforge.org/svn/trunk/ ./
# cp ./config/database.yml.example ./config/database.yml
# vi ./config/database.yml
事前に空データベースと運用ユーザを作成しておく(こちらを参照ください)

production:
 adapter: postgresql
 database: redmine
 host: localhost
 username: redmine
 password: "redmine"
 encoding: utf8
 schema_search_path: public

セッションストアの作成
# rake generate_session_store
※/home/redmine/config/initializers/session_store.rbが作成されます

# rake db:migrate RAILS_ENV=production
(in /home/redmine)
** Invoke db:migrate (first_time)

** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
== Setup: migrating ==========================================================
-- create_table("attachments", {:force=>true})
-> 0.0519s
-- create_table("auth_sources", {:force=>true})
-> 0.0609s
-- create_table("custom_fields", {:force=>true})
-> 0.0806s
-- create_table("custom_fields_projects", {:force=>true, :id=>false})
-> 0.0020s




デフォルトデータ
# 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 ← 入力

●Passenger(mod_rails)のインストール
# gem install passenger
# export APXS2=/usr/local/apache/bin/apxs
# export PATH=/usr/local/apache/bin:$PATH
# passenger-install-apache2-module

ビルドに成功すると、Passengerを組み込むためのhttpd.confの設定が表示されるのでコピーしておく。
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/local/bin/ruby

次にvirtualhostの設定のサンプルが表示されるのでコピーしておく。

<VirtualHost *:80>
 ServerName www.yourhost.com
 DocumentRoot /somewhere/public
 <Directory "/home/somewhere/pubic">
  AllowOverride all
  Options -MultiViews
 </Directory>


</VirtualHost>


●Apacheの変更
# vi /usr/local/apache/conf/httpd.conf

末尾にでも追記する
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/local/bin/ruby

バーチャルホスト
# vi /usr/local/apache/conf/extra/httpd-vhosts.conf


<VirtualHost *:80>
 ServerName redmine.example.com
 DocumentRoot /home/redmine/public
 <Directory "/home/redmine/public">
  AllowOverride All
  Options -MultiViews
  Order allow,deny
  Allow from all
 </Directory>
</VirtualHost>


Apache運用ユーザがredmineディレクトリの読み書きができるようにパーミッションを設定する。
# cd /home/redmine
# mkdir tmp public/plugin_assets
mkdir: cannot create directory `tmp': File exists ← 既に存在している(無視)
mkdir: cannot create directory `public/plugin_assets': File exists ← 既に存在している(無視)
# chown -R daemon:daemon files log tmp public/plugin_assets config/environment.rb
# chmod -R 755 files log tmp public/plugin_assets
 
Apacheの再起動
# vi /usr/local/apache/bin/apachectl restart
 

http://redmine.example.comにアクセスしてみましょう。
初回はadmin/adminです。
 
参考サイト(本家)
 

2010年7月20日火曜日

PostgreSQL ソースからインストール

●構成
CentOS 5.5
PostgreSQL 8.4.3

●運用ユーザ
今さらですがpostgresqlはrootでは運用できませんので、専用ユーザを作成します。
ここでは専用ユーザをpostgresとします。
# adduser postgres
# passwd postgres ※ログオンしなければパスワードを設定する必要はありません。

●作業ディレクトリ
# mkdir /usr/local/src/postgresql
# chown postgres:postgres /usr/local/src/postgresql

●インストール先ディレクトリ
# mkdir /usr/local/pgsql
# chown postgres:postgres /usr/local/pgsql

●インストール
# cd /usr/local/src/postgresql
# wget ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v8.4.3/postgresql-8.4.3.tar.gz
# chown postgres:postgres ./postgresql-8.4.3.tar.gz
# chmod 755 postgresql-8.4.3.tar.gz
# yum -y install readline readline-devel zlib-devel

【readlineについて】
psqlコマンドによるコマンドの記憶やコマンド履歴の参照を使わない場合readlineとreadline-develは不要です。ただしconfigureで--without-readlineオプションを指定します。

【zlibについて】
pg_dumpおよびpg_restore内の圧縮アーカイブサポートを無効化にしたい場合zlib-devel(zlib含む)は不要です。ただしconfigureで--without-zlibオプションを指定します。

(ここからはpostgresユーザで作業します)
# su - postgres
$ cd /usr/local/src/postgresql
$ tar zxvf postgresql-8.4.3.tar.gz
$ cd ./postgresql-8.4.3
$ ./configure
(デフォルトのインストールディレクトリは/usr/local/pgsqlとなります)
$ gmake
 All of PostgreSQL successfully made. Ready to install.
$ gmake check
All 120 tests passed.
$ gmake install
PostgreSQL installation complete.

環境変数の設定
$ cd /home/postgres
$ vi .bashrc

最後に追記
PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB

再読み込み→pathチェック
$ source .bashrc
$ printenv

●初期化
デフォルト文字コードはEUC_JPですが、DB作成時に指定すればUTF8も大丈夫です。
ロケールは設定しません(日本語ソートがおかしくなるので必須です)。
$ initdb --encoding=EUC_JP --no-locale

●アクセス権限等の設定
$ vi /usr/local/pgsql/data/postgresql.conf
ローカルホスト以外からのアクセスを許可(私は別途WindowsPCからエディタを接続するため)
#listen_addresses = 'localhost' → listen_addresses = '*'
※IPv4のみに強制にしたい場合はlisten_addresses = '0.0.0.0'

ログはsyslog
#log_destination = 'stderr' → log_destination = 'syslog'

$ vi /usr/local/pgsql/data/pg_hba.conf
host all all 192.168.0.0/24 md5の1行を追記(アクセス可能なネットワーク)

●syslog設定
(ここからはrootで作業します)
$ exit
# vi /etc/syslog.conf
※ちなみにCentOS6では、/etc/rsyslog.confです。
以下を最終行に追記する
local0.* /var/log/postgresql.log

#/etc/init.d/xinetd restart
※ちなみにCentOS6では、/etc/init.d/rsyslog restartでよいかも。

ログローテーション設定
# vi /etc/logrotate.d/postgresql
/var/log/postgresql.log {
rotate 12
weekly
missingok
sharedscripts
postrotate
/usr/bin/killall -HUP syslogd (CentOS6ではrsyslogd)
endscript
}

●起動
(ここからはpostgresで作業します)
# su - postgres
$ pg_ctl -w start

●データベースユーザの追加
---------------------------------------------------
因みにPostgreSQL9.2ではロールの割り当て方法が変わった

DB作成許可のユーザを作成
$ createuser username -d -P

-d:DB作成許可
-P:パスワード設定

詳しいオプションは、createuser --help
---------------------------------------------------

$ createuser -P username

Enter password for new role:パスワード入力(username)
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

●データベースの作成
$ createdb DB名 --owner=username --encoding=UNICODE --template=template0
$ psql -l

●停止
$ pg_ctl -w stop

●自動起動
(ここからはrootで作業します)
$ exit
# cd /etc/rc.d/init.d/
# cp -p /usr/local/src/postgresql/postgresql-8.4.3/contrib/start-scripts/linux postgresql
# chown root.root postgresql
# chmod 755 postgresql
# chkconfig --level 2345 postgresql on

これでサーバ起動時PostgreSQLも起動します。

rootによる起動・停止方法
# /etc/init.d/postgresql start
# /etc/init.d/postgresql stop

●PL/pgsqlのインストール(開発言語なので開発をしない方は不要)
 # su - postgres
 $ pg_ctl -w start (/usr/local/pgsql/bin/pg_ctl)
  postmaster started
 $ createlang plpgsql template1

 9.0からPL/pgsqlはデフォルトでインストールされています。
 

2010年7月13日火曜日

デフォルトencodeと違う文字コードでDB作成

CentOS5.4にPostgreSQL8.4を構築する機会があり、initdbでencodingをEUC_JPにして構築していた。Redmineを同データベースで運用するため今まで通りデータベース作成コマンドを実行したらエラーが出た。いつもなら大丈夫なのに・・・8.4から仕様が変わったみたい。

$ createdb redmine --owner redmine --encoding=UNICODE
createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (EUC_JP)
HINT:  Use the same encoding as in the template database, or use template0 as template.

UTF8はテンプレートと互換性がない
ヒント:同じ文字コードにするかテンプレートとしてテンプレート0を使用してください。

と表示された。initdbと異なる値でcreatedbするときは個別にオプション指定しないとダメみたいです。なので以下のようにクリアなテンプレート0データベースを使い解決。
$ createdb redmine --owner redmine --encoding=UNICODE --template=template0

また8.4からデータベースごとにロケールも持てるようになったようです。
こちらに詳しく解説がされています。

※リンク先の「Let's Postgres」ですが非常に優しく書かれていてわかりやすいと思います。今年で開設3年目ということなのでこれから期待できそうですね。

2010年7月9日金曜日

Windows 7 BCDEdit コマンドラインツール

Windows Vista 以降のOSで利用できるBoot環境を操作するコマンド

XPまではboot.iniがありましたがVista以降は存在しません。すべての情報はバイナリデータベースとなり直接操作できなくなりました。それを補うToolがBCDEditです。


----------

BCDEDIT - ブート構成データ ストア エディター

Bcdedit.exe コマンド ライン ツールは、ブート構成データ ストアを修正します。ブート構成データ ストアにはブート構成パラメーターが含まれ、オペレーティングシステムのブート方法を制御します。これらのパラメーターは、以前は Boot.iniファイル (BIOS ベースのオペレーティング システム内) か、不揮発性 RAM エントリ (拡張ファームウェア インターフェイスベースのオペレーティング シスシステム内)にありました。Bcdedit.exe を使用して、ブート構成データ ストアのエントリを追加、削除、編集、および付加することができます。

詳細なコマンドとオプション情報については、「bcdedit.exe /? / <コマンド>を入力してください。たとえば、/createstore コマンドについて詳細情報を表示するには以下のように入力します。
※コマンドプロンプトは管理者権限で実行する必要があります。

     bcdedit.exe /? /createstore

ヘルプ ファイルのトピック順の一覧を参照するには、"bcdedit /? TOPICS" を実行します。

ストアの操作のコマンド
======================
/createstore  新しい空のブート構成データ ストアを作成します。
/export     システム ストアの内容をファイルにエクスポートします。
               このファイルは、システム ストアの状態を復元するために後から使用することができます。
/import         /export コマンドで作成されたバックアップ ファイルを使用して、
                  システム ストアの状態を復元します。
/sysstore       システム ストア デバイスを設定します (EFI システムにのみ有効
                  です。設定内容は再起動後は維持されません。システムストア
                  デバイスが明確に指定されていない場合にのみ使用されます)。

ストア内のエントリの操作のコマンド
==================================
/copy           ストアにエントリのコピーを作成します。
/create         ストアに新しいエントリを作成します。
/delete         ストアからエントリを削除します。
/mirror         ストアにエントリのミラーを作成します。

これらのコマンドで使用する ID の情報については bcdedit /? ID を実行してください。

エントリ オプションの操作のコマンド
===================================
/deletevalue    ストアからエントリ オプションを削除します。
/set            ストアにエントリ オプションの値を設定します。

これらのコマンドで使用するデータの種類の一覧については bcdedit /? TYPES を実行 してください。
有効なデータ形式の一覧については bcdedit /? FORMATS を実行してください。

出力を制御するコマンド
======================
/enum           ストアのエントリを一覧表示します。
/v              既知の識別子名を使用するのではなく、エントリ識別子を完全な
                形式で表示するコマンド ライン オプションです。
                ACTIVE な種類のエントリ識別子の完全な形式を表示するコマンド
                として /v を使用します。

"bcdedit" の実行は "bcdedit /enum ACTIVE" の実行と同じです。

ブート マネージャーを制御するコマンド
===================================
/bootsequence   ブート マネージャーの 1 回限りのブート シーケンスを設定します。
/default          ブート マネージャーが使用する既定のエントリを設定します。
/displayorder    ブート マネージャーがマルチブート メニューを表示する順序を設定します。
/timeout          ブート マネージャーのタイムアウト値を設定します。
/toolsdisplayorder  ブート マネージャーがツール メニューを表示する順序を設定
                   します。

ブート アプリケーションの緊急管理サービスを制御するコマンド
===========================================================
/bootems        ブート アプリケーションの緊急管理サービスを有効または無効にします。
/ems             オペレーティング システム エントリの緊急管理サービスを有効または無効にします。
/emssettings    グローバルな緊急管理サービスのパラメーターを設定します。

デバッグを制御するコマンド
==========================
/bootdebug      ブート アプリケーションのブート デバッグを有効ままたは無効にします。
/dbgsettings    グローバル デバッガー パラメーターを設定します。
/debug          オペレーティング システム エントリのカーネル デバッグを有効または無効にします。
/hypervisorsettings  ハイパーバイザー パラメーターを設定します。

----------

これを使用することにより仮想化されたVHD形式のディスクから起動したりすることもできます。

2010年7月5日月曜日

FortiGateライセンス確認

FortiGateでは購入時、FortiGate S/N(シリアルNO)をFortiNet社に登録します(ユーザー登録)。
これは購入者自身が行う場合と販売店などが行う場合があります。購入者自身で登録する場合が問題ないと思われるが、ごく稀に販売店が登録を忘れていたりします。

この登録がされていないと、アンチウイルスなどの定義ファイル更新ができません。これでは何の意味もありません。

Web画面で簡単にチェックできますので、確認しておきましょう。ここではFortiGate110C V3.0系(Fortigate-110C 3.00-b5418)を例にご説明しますがV4.0系も同様です。

ログイン後、システム>メンテナンス>FortiGuardと辿ります。


・サポート契約が有効になっており期限は大丈夫か?
・契約のFortiGuardサービスが有効になっており期限は大丈夫か?
 また、更新日に問題はないか?




・定期更新にチェックが入っているか?(手動で行う方は必須ではありませんが通常はONにします)

 

2010年7月2日金曜日

BitNami::Redmine 0.9.5対応版

WindowsPCに簡単構築できるオールインワンタイプのRedmine、BitNami::RedmineがRedmine0.9.5に対応しています。
 
構築済VMware Virtual MachinesのUbuntuが10.04 版になっています。
 
構成
- Redmine 0.9.5
- Apache 2.2.14
- ImageMagick 6.5.8
- MySQL 5.1.30
- Subversion 1.6.6
- Ruby 1.8.7-p249
- Rails 2.3.5
- RubyGems 1.3.6

============= CHANGELOG =============
Version: 0.9.5-0 2010-06-30

* Update Remdine to 0.9.5

BITNAMIへはこちらからどうぞ。
  

Google検索