サーバとか」カテゴリーアーカイブ

LinuxにUSB外付けフロッピードライブを接続してFDをフォーマット

ちょっとハマった。

PowerEdge R200 の筐体で、RAIDのドライバをインストールしようとしたのだが、

そもそもFDDがついていなかったので、外付けFDDを接続した。

で、普通にマウント出来ると思ったのだが・・・

以下手順にてフォーマットしてマウントしました。

# view /var/log/messages
(snip)
May  7 17:54:44 HOST_NAME kernel: ohci_hcd 0000:00:0f.2: wakeup
May  7 17:54:44 HOST_NAME kernel: usb 1-3: new full speed USB device using ohci_hcd and address 3
May  7 17:54:44 HOST_NAME kernel: usb 1-3: configuration #1 chosen from 1 choice
May  7 17:54:44 HOST_NAME kernel: scsi2 : SCSI emulation for USB Mass Storage devices
May  7 17:54:49 HOST_NAME kernel:   Vendor: NEC       Model: USB UF000x        Rev: 2.00
May  7 17:54:49 HOST_NAME kernel:   Type:   Direct-Access                      ANSI SCSI revision: 00
May  7 17:54:50 HOST_NAME kernel: SCSI device sdb: 2880 512-byte hdwr sectors (1 MB)
May  7 17:54:50 HOST_NAME kernel: sdb: Write Protect is off
May  7 17:54:50 HOST_NAME kernel: sdb: assuming drive cache: write through
May  7 17:54:51 HOST_NAME kernel: SCSI device sdb: 2880 512-byte hdwr sectors (1 MB)
May  7 17:54:51 HOST_NAME kernel: sdb: Write Protect is off
May  7 17:54:51 HOST_NAME kernel: sdb: assuming drive cache: write through
May  7 17:54:51 HOST_NAME kernel:  sdb: unknown partition table
May  7 17:54:51 HOST_NAME kernel: sd 2:0:0:0: Attached scsi removable disk sdb
May  7 17:54:51 HOST_NAME kernel: sd 2:0:0:0: Attached scsi generic sg3 type 0
May  7 18:11:51 HOST_NAME kernel: usb 1-3: USB disconnect, address 3
※上記により、USB接続FDDは/dev/sdbのデバイスと言う事が判明
# mkdir /mnt/fdd
※マウントポイントを作成
# mkfs.ext2 /dev/sdb
※フォーマット
# mount /dev/sdb /mnt/fdd
※マウント

フォーマットせずにマウントしようとしたら、ファイルシステムが不明とか言われたので、

フォーマットしてからマウント。

でわ。

CentOS4.6+MySQL 4.0.26 その2

昨年末より色々と調べていた、MySQL 4.0.26 の設置にようやく成功した。

# rpm -ivh ./MySQL-server-4.0.26-0.i386.rpm
Preparing...                ########################################### [100%]
1:MySQL-server           ########################################### [100%]
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
Fatal error: Can't change to run as user 'mysql'.  Please check that the user exists!
091130  7:05:11 Aborting
091130  7:05:11 /usr/sbin/mysqld: Shutdown Complete
Installation of grant tables failed!
Examine the logs in /var/lib/mysql for more information.
You can also try to start the mysqld daemon with:
/usr/sbin/mysqld --skip-grant &
You can use the command line tool
/usr/bin/mysql to connect to the mysql
database and look at the grant tables:
shell> /usr/bin/mysql -u root mysql
mysql> show tables
Try 'mysqld --help' if you have problems with paths. Using --log
gives you a log in /var/lib/mysql that may be helpful.
The latest information about MySQL is available on the web at
http://www.mysql.com
Please consult the MySQL manual section: 'Problems running mysql_install_db',
and the manual section that describes problems on your OS.
Another information source is the MySQL email archive.
Please check all of the above before mailing us!
And if you do mail us, you MUST use the /usr/bin/mysqlbug script!

とりあえず、以下コマンドにて、ちゃんとmysqlという名称のDBが設置されているかどうか、確認した。

# mysql -u root mysql

すると、

-bash: mysql: command not found

との事。

mysql のクライアントを入れ忘れていたので、他のも含めてインストール。

# rpm -ivh MySQL-client-4.0.26-0.i386.rpm
# rpm -ivh MySQL-devel-4.0.26-0.i386.rpm
# rpm -ivh MySQL-Max-4.0.26-0.i386.rpm

でもって、再度「mysql -u root mysql」を実行も、mysql自体が動いていないから見れないわけで・・・

/etc/my.cnf を作って、mysqlのログを吐くように指定などなど。

# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

でもって、「/etc/rc.d/init.d/mysql start」を実行も、動かない。

ログを参照したところ、以下が出力されていましたわ。

100309 03:18:51  mysqld started
100309  3:18:51  InnoDB: Started
100309  3:18:51 Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
100309  3:18:51 Aborting
100309  3:18:51  InnoDB: Starting shutdown...
100309  3:18:53  InnoDB: Shutdown completed
100309  3:18:53 /usr/sbin/mysqld-max: Shutdown Complete
100309 03:18:53  mysqld ended

あれ?

そもそも、「mysql.host」が無いって、ダメじゃね?

って事で、色々とまた調査開始。

そう言えば、postgreSQLは「initdb」とかあったな、とか思って、実はMySQLでも必要じゃね?と。

ありました。

「mysql_install_db」が。

つか、最初のエラーメッセージのところにも、ちゃんと書いてあったね。。。

「’Problems running mysql_install_db’」

って。。。

早速実行。

/usr/bin/mysql_install_db
# mysql_install_db
Neither host 'localhost.localdomain' nor 'localhost' could not be looked up with
/usr/bin/resolveip
Please configure the 'hostname' command to return a correct hostname.
If you want to solve this at a later stage, restart this script with
the --force option

おう?

ホスト名を設定しろって事かね?

とりあえず、ホスト名を設定。

hostname www.example.com

再度実行。

/usr/bin/mysql_install_db
# mysql_install_db
Neither host 'www.example.com' nor 'localhost' could not be looked up with
/usr/bin/resolveip
Please configure the 'hostname' command to return a correct hostname.
If you want to solve this at a later stage, restart this script with
the --force option

あれ?

また調査開始。

「–no-defaults」オプションを付けると出来るってエントリがあったので、やってみたけど、結果変わらず。

エラーメッセージを良く読んだところ、「–force」を付けろとの事。

やってみた。

# /usr/bin/mysql_install_db --force
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
100309  3:29:05 /usr/sbin/mysqld: Shutdown Complete
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h www.example.com password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd / ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com

ふむ、どうやら出来たっぽい。

では、起動してみようって事で「/etc/rc.d/init.d/mysql start」を実行。

しかし、起動せず。

エラーログ参照。

100309 03:29:46  mysqld started
100309  3:29:46  InnoDB: Started
100309  3:29:46 /usr/sbin/mysqld-max: Can't find file: './mysql/host.frm' (errno: 13)
100309  3:29:46 Fatal error: Can't open privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
100309  3:29:46 Aborting
100309  3:29:46  InnoDB: Starting shutdown...
100309  3:29:48  InnoDB: Shutdown completed
100309  3:29:48 /usr/sbin/mysqld-max: Shutdown Complete
100309 03:29:48  mysqld ended

エラーログ変わった。

「host.frm」が無い?

あぁ~・・・

多分、パーミッションの問題っぽい。

って事で、パーミッションの設定を実施。

# cd /var/lib/mysql
# chown -R mysql:mysql ./mysql

んでもって、起動スクリプトを実施。

ログを参照。

100309 03:31:04  mysqld started
100309  3:31:04  InnoDB: Started
/usr/sbin/mysqld-max: ready for connections.
Version: '4.0.26-Max'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Official MySQL RPM

プロセスを参照。

# ps auxwww | grep mysql
root      2531  0.0  0.1   2412  1076 pts/0    S    03:31   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/www.example.com.pid
mysql     2562  0.0  1.5 120272 15792 pts/0    Sl   03:31   0:00 /usr/sbin/mysqld-max --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/www.example.com.pid --skip-locking --socket=/var/lib/mysql/mysql.sock

動いた!!!!

長い闘いは終わった・・・

あとは、Webのミドルウェアとの繋ぎ込みだな。

でわ。

CentOS5.3でのsymfony動作環境構築手順備忘録

掲題の通り。

OS:CentOS 5.3

まずは、PHPのバージョン確認。

# php -v
PHP 5.1.6 (cli) (built: May 24 2008 14:07:53)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

PHPをバージョンアップしましょう。

PHP 5.3.1 にします。

その為には、remi のリポジトリを使います。

その下準備。

# cd /usr/local/src
# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
# rpm -Uvh remi-release-5.rpm epel-release-5-3.noarch.rpm

これで、remiのリポジトリ用のファイルが作成されるはずです。

# cd /etc/yum.repos.d/
# vi remi.repo
[remi]
priority=1  → 追加
# vi epel.repo
[epel]
priority=1  → 追加
enabled=0  → 設定

では、PHPをバージョンアップしましょう。

# yum -y --enablerepo=remi,epel update php php-mbstring php-mysql mysql*

バージョンアップ確認。

# php -v
PHP 5.3.1 (cli) (built: Nov 20 2009 17:51:14)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

次に、PEARにsymfonyのチャンネルを登録して、symfonyをインストール。

# pear channel-discover pear.symfony-project.com
# pear install symfony/symfony

あ、ちなみに、PEAR のバージョンが 1.4 以上が動作要件っぽいです。

途中でphp-xmlのエラーが出たら、これで回避。

# yum install --enablerepo=remi php-xml

リポジトリを指定しないと、デフォルトのリポジトリを見に行って、PHP 5.1.6 じゃないと・・・って言われるので。

足りないライブラリはガシガシ入れていきましょう。

symfonyの確認。

# symfony -v

でわ。

OpenPNE3系で画像アップロード出来ない現象の回避方法

先日、OpenPNEで構築されているサイトのサーバ移行があり、作業を実施したところ、画像のアップロードが出来ない状態となりました。

諸々の情報は以下。

・OpenPNE 3.0.2

・Apache 2.2.3

・PHP 5.3.1

・MySQL 5.1.41

プロフィール編集画面で画像をアップロードしようとしたところ、

ファイル形式が間違っています (image/jpeg; charset=binary)

の表示が。

画面の注記には、

300KB以内のGIF・JPEG・PNGにしてください

と書いてありますが、JPEGファイルだし、10K程度だし。

・画像サイズとファイルタイプの再確認

・GDライブラリがインストールされている事を確認

・MySQLの設定確認

 → max_allowed_packetやら・・・

・php.iniの設定確認

 → upload_max_filesizeやら、file_uploadsやら、upload_tmp_dirやら、memory_limitやら・・・

・mysql のログ

・apache のログ

・PHP のログ

などなどなどなど・・・

全て問題なし。

でもって、まだまだ調査継続。

結果、PHPのバージョンとsymfonyのバージョンの絡みがダメだったようで。

参考:http://trac.symfony-project.org/changeset/20296

symfony 1.2.7 で動かしていたのですが、PHP 5.3系では、うまく動かない部分があるようで。

上記URLに記載されている通りに修正して、対応。

障害解消。

ちなみに、現在の段階で最新の symfony 1.2.9 では起こらない問題のようです。

でわ。

PHPでのファイルアップロードについて

久々に。

phpMyAdminやPHPを利用したサイトなどでファイルアップロードをする際、

php.ini

の設定を確認する必要があります。

設定を確認する部分は以下3つ。

・upload_max_filesize

・memory_limit

・post_max_size

■ upload_max_filesize

実際にアップロードするファイルの容量制限の設定です。

この値より大きなファイルサイズのファイルはアップロード出来ません。

■ memory_limit

PHPで使用するメモリの設定です。

upload_max_filesize より、大きな値を設定する必要があります。

■ post_max_size

POST出来る最大サイズの設定です。

upload_max_filesize より、大きな値を設定する必要があります。

もし、PHPでのファイルアップロードでエラーが発生したら、上記設定の確認をしてみてください。

上記設定を変更してもダメな場合、

/etc/httpd/conf.d/php.conf

の設定変更が必要な場合があります。

※Red Hat Enterprise Linux の場合

<Files *.php>

SetOutputFilter PHP

SetInputFilter PHP

LimitRequestBody 524288

</Files>

LimitRequestBody の値を変更すればOKです。

でわ。

CentOS4.6+MySQL 4.0.26

参った。

RPMでインストール自体は出来るのだが・・・

# rpm -ivh ./MySQL-server-4.0.26-0.i386.rpm
Preparing...                ########################################### [100%]
1:MySQL-server           ########################################### [100%]
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
Fatal error: Can't change to run as user 'mysql'.  Please check that the user exists!
091130  7:05:11 Aborting
091130  7:05:11 /usr/sbin/mysqld: Shutdown Complete
Installation of grant tables failed!
Examine the logs in /var/lib/mysql for more information.
You can also try to start the mysqld daemon with:
/usr/sbin/mysqld --skip-grant &
You can use the command line tool
/usr/bin/mysql to connect to the mysql
database and look at the grant tables:
shell> /usr/bin/mysql -u root mysql
mysql> show tables
Try 'mysqld --help' if you have problems with paths. Using --log
gives you a log in /var/lib/mysql that may be helpful.
The latest information about MySQL is available on the web at
http://www.mysql.com
Please consult the MySQL manual section: 'Problems running mysql_install_db',
and the manual section that describes problems on your OS.
Another information source is the MySQL email archive.
Please check all of the above before mailing us!
And if you do mail us, you MUST use the /usr/bin/mysqlbug script!

途中でエラーが出て、MySQLが起動出来ない・・・

4.1系ならインストールも起動も出来るのだが、4.0系→4.1系でデータ型やら、ちょっと変わった部分があるので、そのままデータを移行出来ないのです。

色々調べてみたのだが、回避方法が見つからない。。。orz

4.0系の最新バージョンを入れようとしたのだが、もう、4.0系が公開されていないので、入れようもないのです。

色々やってみるか。。

でわ。

USBメモリ+UniformServer+Starbug1でポータブルBTS環境を構築

さて、気軽に使えるBTSシステムである、Starbug1をUSBメモリに入れ、持ち運べるようにしてみました。

ミドルウェア環境は、UniformServerを使います。

※WAMPです

以下、簡単な流れです。

1) USBメモリを準備、端末に接続

  → 今回はFドライブとしました

2) UniformServerをダウンロード

  → http://www.uniformserver.com/

3) UniformServerをインストール

  → インストール先はUSBメモリを指定

   → F:\UniServer へインストールされる

4) Starbug1をダウンロード

  → http://starbug1.sourceforge.jp/

5) ダウンロードしたStarbug1をドキュメントルートに展開する

  → F:\UniServer\www\starbug1

6) httpd.conf を修正する

  → F:\UniServer\usr\local\apache2\conf\httpd.conf

   → ExecCGIを追記して、CGIを動作させる

7) UniformServerを起動する

  → Start_Server.bat を実行

8) ブラウザにてアクセス

  → http://localhost/starbug1/index.cgi

これでポータブルBTS環境の構築は完了。

USBメモリさえあれば、会社でも家でも同じBTSが使えます。

自分用のタスク管理に良いかもですね。

でわ。

CentOS4.6+Java 1.4.2.01

ちょっと、古い環境を構築せねばならない事となり。

CentOS4.6 に Java1.4.2.01 を入れようとしたのですが・・・

Sunのサイトより、Linux版のパッケージをダウンロード。

j2sdk-1_4_2_01-linux-i586-rpm.bin

んでもって、RPMを作るべく、実行するのだが・・・

# chown 755 ./j2sdk-1_4_2_01-linux-i586-rpm.bin
# ./j2sdk-1_4_2_01-linux-i586-rpm.bin
Sun Microsystems, Inc.
Binary Code License Agreement
for the
JAVATM 2 SOFTWARE DEVELOPMENT KIT (J2SDK), STANDARD EDITION, VERSION 1.4.2_X
(snip)
For inquiries please contact: Sun Microsystems, Inc., 4150 Network Circle,
Santa Clara, California 95054, U.S.A.
(LFI#130039/Form ID#011801)
Do you agree to the above license terms? [yes or no]
yes
Unpacking...
tail: cannot open `+473' for reading: No such file or directory
Checksumming...
1
The download file appears to be corrupted.  Please refer
to the Troubleshooting section of the Installation
Instructions on the download page for more information.

あれ・・・?

RPMが作れない。

色々調べたところ、カーネルのバージョンが新しすぎる事が原因でした。

なので、検証機で置いてあった、CentOS4.2にてRPMを作成。

# ./j2sdk-1_4_2_01-linux-i586-rpm.bin
Sun Microsystems, Inc.
Binary Code License Agreement
for the
JAVATM 2 SOFTWARE DEVELOPMENT KIT (J2SDK), STANDARD EDITION, VERSION 1.4.2_X
(snip)
For inquiries please contact: Sun Microsystems, Inc., 4150 Network Circle,
Santa Clara, California 95054, U.S.A.
(LFI#130039/Form ID#011801)
Do you agree to the above license terms? [yes or no]
yes
Unpacking...
Checksumming...
00Extracting...
UnZipSFX 5.40 of 28 November 1998, by Info-ZIP (Zip-Bugs@lists.wku.edu).
inflating: j2sdk-1_4_2_01-linux-i586.rpm
Done.

おk。

CentOS4.6 の環境にRPMをFTP転送して、インストール完了。

ちょっとハマったw

解決出来て良かった。

でわ。

java.sql.SQLException: Communication link failure: java.io.IOException

このエラーが取れない。

Oct 28, 2009 9:32:42 AM org.apache.jk.server.JkCoyoteHandler action
INFO: RESET
java.sql.SQLException: Communication link failure: java.io.IOException
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1604)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:886)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:945)
at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:917)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1841)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1775)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1220)
(snip)

発生するトリガーも不明。

Tomcat動かして、2,3日すると発生する模様。

う~ん・・・

頑張って調べよう。

でわ。

Apache起動障害(Unclean shutdown of previous Apache run?)

さて、久々にとある案件のサーバを触ったところ、Apacheが起動しなくなりました。

pidファイルは作成されるが、Apacheのプロセスが起動しない。

エラーログを見たところ、以下エラーが出てました。

[warn] pid file /usr/local/apache/logs/httpd.pid overwritten — Unclean shutdown of previous Apache run?

pidファイルを削除して再度Apacheを起動させてもダメ。

pidファイルのパーミッションを変えてもダメ。

サーバ自体の再起動をやってもダメ。

色々とサーバの中を探っていたところ、PHPのログがかなり肥大化してました。

※500MBくらい

php.iniの中のこの設定のログ

; Log errors to specified file.

error_log = /var/log/php_err.log

もしやと思い、php_err.log を削除してApacheを再起動すると・・・

成功!!

いやぁ・・・

結構ハマったなぁ。。。

でわ。