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-25

MySQLでダンプ&リストアをコマンドで実行

Dump & Restore

MySQLでダンプファイルを作成するには、下記のコマンドを打てばOK。

# mysqldump -u root -pmypass target_database > hoge_dump_yyyyMMdd.sql

逆にリストアする時は mysql コマンドを使って、次のようにコマンドを打てば簡単にリストアできます。

# mysql -u root -pmypass target_database < hoge_dump_yyyyMMdd.sql

エラーケースの対応

Can't create table './masters/hoge.frm' 

上記のようなエラーがリストアの最中に流れてしまう場合、InnoDB形式で外部参照キーを定義しているテーブルがあり、ダンプファイルをそのまま流すとテーブル作成に失敗します。

テーブル作成順序はちゃんと守ろうってことですね。

それでも、テーブルを復元せんといかん場合は、リストア時に外部参照キーのチェックを外すことで実現できます。

ダンプファイルの先頭行に以下の記述を追加します。

SET FOREIGN_KEY_CHECKS=0;

この1行を追加することで、リストア可能です。

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-05-08

mavenでwarファイルへのパッケージ&Tomcatサーバーへリモートアクセスデプロイ

Maven2ではプロファイルでCargo - Maven2 pluginを使うことによって、デプロイしてその後にサーバーへリモートデプロイすることができます。

これによって、テストサーバー等へのデプロイの手間やミスも減り効率がすごくよくなりますので、プロジェクト初期には設定しておきたいところ。

pom.xmlへの記述
<profiles>
  <!-- コマンドプロンプトから次のコマンドを実行したときのプロファイル "mvn package -P test-release" -->
  <profile>
    <id>test-release</id>
    <activation>
      <!-- デフォルトプロファイル: true -->
      <activeByDefault>false</activeByDefault>
    </activation>
    <properties>
      <maven.test.skip>false</maven.test.skip>
    </properties>
    <build>
      <finalName>ExampleApp</finalName>
      <resources>
        <resource>
          <filtering>true</filtering>
          <directory>src/test-release/resources</directory>
        </resource>
        <resource>
          <filtering>false</filtering>
          <directory>src/main/resources</directory>
        </resource>
      </resources>
      <plugins>  
            <plugin>  
              <groupId>org.codehaus.cargo</groupId>  
              <artifactId>cargo-maven2-plugin</artifactId>  
              <configuration>  
                <configuration>  
                  <properties>  
             <cargo.tomcat.manager.url>http://192.168.0.138:8080/manager</cargo.tomcat.manager.url>
            <cargo.remote.username>admin</cargo.remote.username>
            <cargo.remote.password>admin</cargo.remote.password>
                  </properties>  
                  <type>runtime</type>  
                </configuration>  
                <container>  
                  <containerId>tomcat6x</containerId>  
                  <type>remote</type>  
                </container>  
                <deployer>  
                  <deployables>  
                    <deployable>  
                      <groupId>example.com</groupId>  
                      <artifactId>example</artifactId>  
                      <type>war</type>  
                      <properties>  
                        <context>ExampleApp</context>  
                      </properties>  
                    </deployable>  
                  </deployables>  
                </deployer>  
              </configuration>  
              <executions>  
                <!-- すでにアプリケーションが存在する場合はエラーになるのでundeployする -->  
                <execution>  
                  <id>test-undeploy</id>  
                  <phase>package</phase>  
                  <goals>  
                    <goal>undeploy</goal>  
                  </goals>  
                </execution>  
                <execution>  
                  <id>test-deploy</id>  
                  <phase>package</phase>  
                  <goals>  
                    <goal>deploy</goal>  
                  </goals>  
                </execution>  
              </executions>  
            </plugin>  
          </plugins>  
    </build>
  </profile>
<profiles>
実行

実際に実行するには、次のコマンドをコマンドプロンプトから実行します。

mvn package -P test-release

2010-05-04

J2EEアプリでIPアドレスを取得する方法

通常J2EEアプリにてアクセス元のIPアドレスを取得するにはHttpServletRequest#getRemoteAddrで取得できるのだが、環境によっては「0:0:0:0:0:0:0:1」のような IPv6 形式になってしまいます。

これはIPV6が優先して表示されているからだそうで、IPv4 を優先させるには、システムプロパティjava.net.preferIPv4Stack=true を設定する必要があります。

Linuxサーバーで動かしている場合

環境変数に以下を追加

export JAVA_OPTS='-Djava.net.preferIPv4Stack=true'
Eclipseの場合

1.メニューから「Run」-「Run Configurations...」をクリックします。

2.「Run Configurations」ダイアログから、対象となる「Apache Tomcat」の起動設定をクリックします。

3.「Arguments」タブを選択し、「VM arguments」の末尾に-Djava.net.preferIPv4Stack=true を追加します。

4.「Apply」ボタンをクリックします。


http://www.failuresoft.com/report/java_ee/servlet_remoteaddr_ipv4