Hatena::ブログ(Diary)

yummy-yummy このページをアンテナに追加 RSSフィード

2010-07-10

富士通のPRIMERGYサーバーでCentOSが起動できない

富士通PRIMERGY RX100 S6にCentOSインストールしようとしたのですが、

CDブートからのインストールまでは進むのですが、それからが進まない。。。

OSインストール後に、サーバーリブートすると、

「Operating System not found」

というメッセージが表示され、あたかもOSインストールが無かったことにw

そんな場合は次のとおりにやれば解決。

BIOS設定マニュアル

http://manuals.ts.fujitsu.com/file/8786/d2679-b11-bios-en.pdf

今回の設定上の要点としては page:23 の

[SATA RAID Enable] を [Disabled] に設定すれば Non-RAID 対応となり、BIOS起動時にRAIDコンフィギュレーション画面は表示されない。

[SATA AHCI Enable] を [Disabled] に設定すれば SATAドライバは必要ない。IDEモードで動作できる。

ということで、BIOSの画面にて

[SATA RAID Disabled]
[STA AHCI Disabled]

としてCentOSインストールすればOK。


参考サイト

http://okwave.jp/qa/q5413734.html:CentOSが起動できない OK Wave]

2010-05-11

Apacheのエラー:Could not reliably determine the server’s fully qualified domain name〜とメッセージが出たときの対応

Apacheを起動(再起動)した際に、

httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

というエラーが出る場合がある。

これは、「ServerNameに127.0.0.1を使用した、FQDN(完全に適切なドメイン名)が確定できませんでした。」という意味だそうで、Apache自体は動くのだが、エラーをそのままにしておくのは気持ちが悪いし、あとあと問題を引き起こす可能性が高い。

このエラーは、「/etc/sysconfig/network」、 「/etc/hosts」 にlocalhost以外に自分で設定したホスト名が、Apacheの設定ファイルに定義されていないために発生する。

/etc/sysconfig/network例
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=hoge.altqua.com
/etc/hosts例
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               hoge.altqua.com localhost.localdomain localhost

と書いた場合、/etc/httpd/conf/httpd.conf のServerNameの設定にも次のように書いておく。

/etc/httpd/conf/httpd.conf
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work.  See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
#ServerName www.example.com:80
ServerName hoge.altqua.com:80

ソースからインストールしたApacheにモジュールを後から追加する方法

ソースからインストールしたApacheモジュール再起動無しで追加する方法です。

mod_soの確認

Apacheコンパイル時にDSO(mod_so)が組み込まれていないと、この方法では追加できないので、DSOが組み込まれているか以下のコマンドを実行し手確認します。

# /usr/local/apache2/bin/httpd -l

一覧に「mod_so.c」がある事を確認してください。

無い場合は組み込まれていないので、Apacheの再コンパイルが必要です。

インストールモジュールの追加)

>||

# cd /usr/local/src/httpd-2.2.15/src/modules/

||<

上記ディレクトリ内にApache標準モジュールのソースが保存されています。

rewrite module は httpd-2.2.15/modules/mappers にありましたので、その中に移動します。

>||

# cd /usr/local/src/httpd-2.2.15/src/modules/mappers

||<

# /usr/local/apache/bin/apxs -c mod_rewrite.c

インストールします。

# /usr/local/apache2/bin/apxs -ian rewrite mod_rewrite.la
設定

httpd.conf には自動で追加されるのですが、追加されて以内場合は手動で設定を追加します。

LoadModule rewrite_module modules/mod_rewrite.so
モジュールのリロード
# /usr/local/apache2/bin/apachectl graceful

とし、設定をリロードさせれば「mod_rewrite」が有効となります。

参考サイト

http://blog.enjoitech.jp/article/131

2010-04-22

Linuxにてグラフィカルモード起動からテキストモードへ起動の切り替え

Linuxのグラフィカルモードとテキストモードを切り替えるには

とりあえず「Text」←→「グラフィカル」を切り替える

ウインドウ→テキストの切り替え
Ctrl+Alt+F1
||< 
(F2, F3, F4, F5, F6もテキストモードで、それぞれ別々のプロセスで動かせる)

***テキスト→ウインドウの切り替え
>||
Alt + F7 

(F2-F12のどれかでウインドウに戻れる)



起動時点での設定を変更するには

inittabを編集

「id:5:initdefault:」の箇所を「id:3:initdefault:」に修正。

「3」がテキストモード、「5」がグラフィックモードです。

#vi /etc/inittab

(中略)
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault: 

ちなみに、各数値の意味です。

0  	システムの休止
1 	シングルユーザーモード
2 	未使用(ユーザー定義可能)
3 	フルマルチユーザーモード(テキストモード画面)
4 	未使用(ユーザー定義可能)
5 	X11(Xベースのグラフィカルモード画面)
6 	再起動
ランレベルの確認

「runlevel」コマンドを入力し、現在のランレベルを確認。

#runlevel

N 3

2009-05-09

PLESKを使ったレンタルサーバでmod_rewriteが効かない

JavaWebアプリケーションで個人情報入力フォームなんかがあるページの場合は、大抵HTTPSプロトコルにmod_rewriteを使ってリダイレクトさせているのだが、PLESKという管理ツール付きで申し込んだレンタルサーバ(マイティサーバー)でリライトが効かないという現象でかなりハマってしまった。

通常だったらhttpd.confに

<IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteLog  /var/log/httpd/rewrite_log
      RewriteLogLevel 3
      RewriteCond %{SERVER_PORT} !^443$
      RewriteRule ^/hoge/(.*)?$ https://%{HTTP_HOST}/hoge/$1 [L,R]
</IfModule>

って書いてたらもうばっちりHTTPSプロトコルへ飛ばしてくれて、ログもこれでもか!!ってくらい吐かれるんだが、今回は全くそんな挙動は見せてくれなかった。

んで、試行錯誤しつつ色々やって色々調べてみたらどうやらPLESKを使ってドメイン管理している場合は以下のパターン名パスに対象ドメインの設定ファイルやドキュメントルートが設定されるらしい。

/home/httpd/vhosts/<ドメイン名>/

じゃあ、リライトの設定はどこに書けばいいのかっていうと

/home/httpd/vhosts/<ドメイン名>/conf/httpd.include

に書けばよいらしいのです。

/home/httpd/vhosts/<ドメイン名>/conf/httpd.includeの内容
<VirtualHost 99.99.99.99:80> 
        ServerName   hoge.jp:80
        ServerAlias  www.hoge.jp
        UseCanonicalName Off
        DocumentRoot /home/httpd/vhosts/hoge.jp/httpdocs
        CustomLog  /home/httpd/vhosts/hoge.jp/statistics/logs/access_log plesklog
        ErrorLog  /home/httpd/vhosts/hoge.jp/statistics/logs/error_log
<IfModule mod_userdir.c>
        UserDir /home/httpd/vhosts/hoge.jp/web_users
</IfModule>
        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>
        <Directory /home/httpd/vhosts/hoge.jp/httpdocs>
        <IfModule sapi_apache2.c>
                php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine off
        </IfModule>
                Options -Includes -ExecCGI
        </Directory>
        <Directory /home/httpd/vhosts/hoge.jp/web_users>
        <IfModule sapi_apache2.c>
                php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine off
        </IfModule>
        </Directory>

#↓以下リライト記述を追記↓
<IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteLog  /var/log/httpd/rewrite_log
      RewriteLogLevel 0
      RewriteCond %{SERVER_PORT} !^443$
      RewriteRule ^/hoge/(.*)?$ https://%{HTTP_HOST}/hoge/$1 [L,R]
</IfModule>
</VirtualHost>

設定ファイルを保存したらApache再起動後にばっちりHTTPSにリライトされるようになりました〜

2009-01-28

postgreSQLのレプリケーションツールslony-IでWindowsサーバーとLinuxサーバーを連携

WindowsServerとLinuxサーバ間でpostgreSQLのレプリケーションを取る必要があったので、レプリケーションができるツールについていろいろ調べてみた。

PGCluster(マルチマスタ)
pgpool(マルチマスタ)
PostgresForest(マルチマスタ)
Slony-l(マスタスレーブ)

上記のレプリケーションソフトウェアのなかで、Windowsでも使えるのはSlony-lだけだった。

というわけで、以下はSlony-lのインストール&設定のやりかたです。

インストール(Windows)

http://www.slony.info/downloads/1.2/win32/slony-I-1.2.12R-pg82.zipよりインストーラーをダウンロード

インストーラーを実行したら完了です。

インストール(Linux)

wget http://www.slony.info/downloads/1.2/source/slony1-1.2.14.tar.bz2

tar jxv slony1-1.2.14.tar.bz2

cd slony1-1.2.14

PGMAIN=/usr/local/pgsql/8.2 \
./configure \
    --prefix=$PGMAIN \
    --bindir=$PGMAIN/bin \
    --datadir=$PGMAIN/share \
    --libdir=$PGMAIN/lib \
    --with-pgconfigdir=$PGMAIN/bin \
    --with-pgbindir=$PGMAIN/bin \
    --with-pgincludedir=$PGMAIN/include \
    --with-pglibdir=$PGMAIN/lib \
    --with-pgsharedir=$PGMAIN/share
make all; make install

インストール中に以下のようなエラーが出た場合、

Missing yacc parser.y parser.c
make[2]: *** [parser.c] エラー 1
make[2]: ディレクトリ `/usr/local/src/slony1-1.2.15/src/slony_logshipper' から出ます
make[1]: *** [all] エラー 2
make[1]: ディレクトリ `/usr/local/src/slony1-1.2.15/src' から出ます
make: *** [all] エラー 2

このエラーの原因はflexとbisonがインストールされていない場合に起こるようなので、flexとbisonをインストール

$ yum -y install flex bison

flexとbisonをインストールしたら、再びSlony-lインストールコマンドを実行します。

設定(Windows)

以下のスクリプトを作成

setup_cluster.txt

#レプリケーションシステムが使用する名前空間の定義
cluster name = test1;
#クラスタのそれぞれのノードにノード1が接続するための定義
node 1 admin conninfo = 'dbname=node1 host=localhost user=postgres';
node 2 admin conninfo = 'dbname=node2 host=localhost user=postgres';
#最初のノードを初期化します。idは1を指定(最初は1でないといけない)
#この処理でこのレプケーションシステム特有のスキーマ_$CLUSTERNAME(_slony_test1)を作成
init cluster ( id = 1, comment = 'node 1' );
table add key ( node id = 1, fully qualified name = 'public.history' ); 
create set ( id = 1, origin = 1, comment = 'all pgbench tables' );
#Slony-Iはテーブルをセットに編成します。
#以下のコマンドで全ての1つのtable1を含む1つのセットが作成されます。
set add table ( set id = 1, origin = 1, id = 1, fully qualified name = 'public.accounts', comment = 'table accounts' );
set add table ( set id = 1, origin = 1, id = 2, fully qualified name = 'public.branches', comment = 'table branches' );
set add table ( set id = 1, origin = 1, id = 3, fully qualified name = 'public.tellers', comment = 'table tellers' );
set add table ( set id = 1, origin = 1, id = 4, fully qualified name = 'public.history', key = serial, comment = 'table history' ); 
#2番目のノード(スレーブ)を作成し、2つのノードがどのように接続し、また、
#どのように事象を監視するかを指示します。
store node ( id = 2, comment = 'node 2' );
store path ( server = 1, client = 2, conninfo = 'dbname=node1 host=localhost user=postgres');
store path ( server = 2, client = 1, conninfo = 'dbname=node2 host=localhost user=postgres');
store listen ( origin = 1, provider = 1, receiver = 2 );
store listen ( origin = 2, provider = 2, receiver = 1 );

ファイル作成後、slonikコマンドを実行

slonik setup_cluster.txt

sloneデーモンの起動

slon test1 "dbname=node1 user=postgres"&

設定(Linux)

sloneデーモンの起動

$ slon test1 "dbname=node2 user=postgres"&

以上で設定は完了

実行

マスタとなるWindowサーバに以下のスクリプトファイルを作成します。

sl_start.txt

cluster name = test1; 
node 1 admin conninfo = 'dbname=node1 host=localhost user=postgres';
node 2 admin conninfo = 'dbname=node2 host=localhost user=postgres'; 
subscribe set ( id = 1,provider = 1,receiver = 2,forward = no);

slonikコマンドを実行し、同期開始

slonik sl_start.txt 

以上でレプリケーション設定が完了〜

差分チェック(Linux)

レプリケーションが完全に行われているかどうかのチェックは以下のスクリプトを

作成してチェックします。

compare.sh

#!/bin/sh

CLUSTER=test1
DBNAME1=node1
DBNAME2=node2
HOST1=192.168.0.98
HOST2=192.168.0.99
SLONY_USER=postgres
PGBENCH_USER=postgres

echo -n "**** comparing sample1 ... "
echo -n "**** dump for node1 ... "
psql -U $PGBENCH_USER -h $HOST1 $DBNAME1 >dump.tmp.1.$$ <<_EOF_
  select 'accounts:'::text,aid,bid,abalance,filler
    from accounts order by aid;
  select 'branches:'::text,bid,bbalance,filler
    from branches order by bid;
  select 'tellers:'::text,tid,bid,tbalance,filler
    from tellers order by tid;
  select 'history:'::text,tid,bid,aid,delta,mtime,filler,
    "_Slony-I_${CLUSTER}_rowID"
    from history order by "_Slony-I_${CLUSTER}_rowID";
_EOF_

echo -n "**** dump for node2 ... "
psql -U $PGBENCH_USER -h $HOST2 $DBNAME2 >dump.tmp.2.$$ <<_EOF_
  select 'accounts:'::text,aid,bid,abalance,filler
    from accounts order by aid;
  select 'branches:'::text,bid,bbalance,filler
    from branches order by bid;
  select 'tellers:'::text,tid,bid,tbalance,filler
    from tellers order by tid;
  select 'history:'::text,tid,bid,aid,delta,mtime,filler,
    "_Slony-I_${CLUSTER}_rowID"
    from history order by "_Slony-I_${CLUSTER}_rowID";
_EOF_

if diff dump.tmp.1.$$ dump.tmp.2.$$ >test_1.diff ; then
  echo "success - databases are equal."
  rm dump.tmp.?.$$
  rm test_1.diff
else
  echo "FAILED - see test_1.diff for database differences"
fi