Archive for the ‘Linux’ Category

VMware上でゲストOSにLinuxを使うと限りなく時間がズレる場合がありますが、カーネルの再構築とかメンドくせって感じでしたが、CentOS5.1,CentOS4.7以上から新しいカーネルパラメータで対応できるようになった模様。

divider=10

デフォルトのclock rateは1000MHzなので、”divider=<option>”を10に設定して1/10の100Mhzにするようです。

RHEL and VMWare time skew problems
RHSA-2008:0665-13

調べてみたものの、今は常時うごいてるのはXen上でしか仮想マシン使ってないので未検証です(:-p

昔、4年ほどか前にDRBDでDISKの二重化をやろう思って、いろいろ試したところ、なんか運用上うまくいかなかったので(なんでだったかは忘れた(笑))、挫折したのですが、最近、ちょこちょこ記事もでてきてるので、イイ感じなんだろうか?、試してる暇がないのでできないけど、その時が来るまでメモ

DRBD+iSCSI夢の共演(前編)(@IT)
DRBD+iSCSI夢の共演(後編)(@IT)
ミラーリングツール「DRBD」によるデータ保護(@IT)

DRBD(サードウェア)

Wordpress は mod_rewrite でパーマリンクの設定がされますが、Apacheなら.htaccessとか、lighttpdにしたときのrewriteの設定。

/wp/.htaccessがこんな時


RewriteEngine On
RewriteBase /wp/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]

lighttpd.confはこんな感じ

url.rewrite = (
#	"^/?$" => "/wp/index.php",
	"^/wp/(wp-.+)$" => "$0",
	"^/wp/xmlrpc.php" => "$0",
	"^/wp/sitemap.xml" => "$0",
	"^/wp/(.+)/?$" => "/wp/index.php/$1"
)

実は、lighttpdを試してたのですが、lighttpdは設定がシンプルでいいのですが、Apacheの設定でいろいろやってると移行するのが面倒になってヤメました(^^;

昔のWordpress2.2ぐらいより前からアップグレードしてきた場合、MySQLのDB内のコードがUTF-8でも、ちゃんとUTF-8ではいってなくてphpMyAdminとかでも化けちゃうやつの解消。
また、wp-config.php内で

define('DB_CHARSET', 'utf8');

とデフォルトの状態でも化けないようにする。
要は、昔、「SET NAMES ‘utf8′ 」といれておかないといけなかったのだけどいれてなくてlatin1で挿入されているデータベースの変換方法です。MySQLはよくわからんのでもっといいやり方あるかも

データベースのDUMP

mysqldump -u DB_USER -p'DB_PASSWORD' DB_NAME --default-character-set=latin1 > mysql.dmp

DUMPしたバックアップファイルの上の10行目付近を書き換える

< /*!40101 SET NAMES latin1 */;
> /*!40101 SET NAMES utf8 */;

データベースのリストア

mysql -u DB_USER -p'DB_PASSWORD' --default-character-set=utf8 DB_NAME < mysql.dmp

というかこれの対処しないと、管理画面からエクスポートすると一部文字化けして使えんのでがんばって調べました(^^;

CentOS4,CentOS5で動いてるマシンを、CentOS5のXenハイパーバイザ内へP2Vマイグレーションしてみよう、ただし、XenのサーバがIntel-VT,AMD-Vがついてないので、完全仮想化でなく、準仮想化として引っ越した時のメモ。まとめるのが面倒になってきたので、必要かどうかわからないけど変更したほうがいいかもしれない箇所を列挙。

ゲストは、CentOS5かCentOS4.6以上、まず、移行する前準備
◆DomU用のKernelをインストール

CentOS5
  yum install kernel-xen
CentOS4.6
  yum install kernel-xenU

◆modprobe.confの修正

/etc/modprobe.conf
alias eth0 xennet
alias eth1 xennet
alias scsi_hostadapter xenblk

◆DomUカーネル用initrdの作成

例1
mkinitrd /boot/initrd-test.img 2.6.9-67.0.22.ELxenU --with xenblk --with xennet --preload xenblk --preload xennet
例2
mkinitrd /boot/initrd-test.img 2.6.18-92.1.6.el5xen --with xenblk --with xennet --preload xenblk --preload xennet

「2.6.9-67.0.22.ELxenU」とか「2.6.18-92.1.6.el5xen」は「/lib/modules/」内のKernelバージョン名

◆grub.confの設定

/etc/grub.conf
例1
title CentOS (2.6.9-67.0.22.ELxenU)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-67.0.22.ELxenU ro root=LABEL=/ console=xvc0
        initrd /boot/initrd-test.img
例2
title CentOS (2.6.18-92.1.10.el5xen)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.18-92.1.10.el5xen ro root=LABEL=/ console=xvc0
        initrd /boot/initrd-test.img

kernelのパラメータに「console=xvc0」をつける
initrdのファイル名を上で作ったinitrdのファイル名にする。

◆fstabの確認
rootとかがラベル運用になっていない時は、/dev/hda(/dev/sda)→/dev/xvdaにしておく(Xenの定義ファイル次第)

◆XenのDomUを作成
省略。

dd if=/dev/hda of=xenimage.img
とか、cp とか rsyncとか

◆DomU定義作成

/etc/xen/guestname
name = "guestname"
uuid = "9ade4b0d-23c7-c31f-b859-6fccf49de495"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
disk = [ "tap:aio:/home/xen/test.img,xvda,w" ]  ←DISKイメージ
vif = [ "mac=00:16:3e:xx:xx:xx,bridge=xenbr0" ] ←Network設定

◆起動

xm create guestname -c

コンソールでDomU用のカーネルを選択して起動

XenでDom0のインターフェースが複数ある際にそれぞれにブリッジを作る

/etc/xen/scripts/network-bridge.xen
chmod 755 /etc/xen/scripts/network-bridge.xen

#!/bin/sh
set -e

OP=$1
shift

script=/etc/xen/scripts/network-bridge

case ${OP} in
  start)
        $script start vifnum=0 bridge=xenbr0 netdev=eth0
        $script start vifnum=1 bridge=xenbr1 netdev=eth1
        $script start vifnum=2 bridge=xenbri netdev=dummy0
        ;;

  stop)
        $script stop vifnum=0 bridge=xenbr0 netdev=eth0
        $script stop vifnum=1 bridge=xenbr1 netdev=eth1
        $script stop vifnum=2 bridge=xenbri netdev=dummy0
        ;;

  status)
        $script status vifnum=0 bridge=xenbr0 netdev=eth0
        $script status vifnum=1 bridge=xenbr1 netdev=eth1
        $script status vifnum=2 bridge=xenbri netdev=dummy0
        ;;

  *)
        echo 'Unknown command: ' ${OP}
        echo 'Valid commands are: start, stop, status'
        exit 1
esac

/etc/xen/xend-config.sxp

###(network-script network-bridge)
(network-script network-bridge.xen)

xenbr0 は eth0,xenbr1 は eth1, xenbriはDomU同士のLANとして定義、あとはDomUの定義ファイル内でそれぞれのブリッジ名を使用すればOK

vif = [ "mac=00:16:3e:xx:xx:xx,bridge=xenbr0", "mac=00:16:3e:yy:yy:yy,bridge=xenbr1" ]

ついでに uuid の生成メモ

uuidgen

第3回 Xenによる仮想環境のネットワーク構築(IT Pro)
19.16. ネットワークブリッジエラー(Redhat)

yumでのRPMパッケージの再インストール方法、yumは再インストールの機能がないようなので、

rpm -e --force パッケージ名
yum install パッケージ名

でもいいですが、別の方法。
yumdownloaderをインストールして、rpmパッケージをダウンロード後、rpm -Uhvでアップデートインストールを行う。

yum install yum-utils
yumdownloader パッケージ名
rpm -Uvh --force パッケージ.rpm

ちなみにDebian系の場合

aptitude --reinstall install パッケージ名

CentOS5.2のLiveCDが出たみたいなのでUSBメモリにいれてbootしてみる。

Fedoraにlivecd-toolsってのあるのでそれを使えば簡単にできそうです。。。がFedoraをいちいちインストールするのも面倒なので、CentOSに無理やりやっちゃいましょう。

http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/9/Everything/i386/os/Packages/あたりのFedoraのリポジトリからlivecd-tools-017-1.fc9.i386.rpm みたいなのをダウンロードします。
rpmでインストールしようとすると依存関係で面倒なことになるので、rpmファイルを解凍しちゃって、「usr/bin/livecd-iso-to-disk」ってのがシェルスクリプトであるはずなので、このファイルだけCentOSにもっていきます。

sh ./livecd-iso-to-disk ./CentOS-5.2-i386-LiveCD.iso /dev/sda1

USBメモリはFAT32でフォーマットして、/dev/sda1で認識しています。
checkisomd5が無いってエラーがでますが無視します。

CentOSダウンロードはこのへんから

PostgreyとかAmavisとかをいれてメールサーバを動かしてると、LogWatchのPostfixの項目に「**Unmatched Entries**」が山ほどでてきて無駄に資源を使ってエコでないのでメモ
1通あたり10Mもあるのが何通も毎日送られてきた。。見てなかったけど(笑)

◆CentOS5のLogWatchの場合
デフォルトの定義(これは変更しない)

/usr/share/logwatch/default.conf/

オーバーライドするユーザ定義(こっちに追加する)

/etc/logwatch/

◆CentOS4のLogWatchの場合(ファイルを直接編集)

/etc/log.d/

例>CentOS5の場合でPostgreyのログを無視するようにしてみる。
postfixの定義をコピー

cd /etc/logwatch/conf/services
cp /usr/share/logwatch/default.conf/services/postfix.conf  ./

/etc/logwatch/conf/services/postfix.conf に以下を追記

*Remove = "NOQUEUE: reject: RCPT from "
*Remove = "^[A-Z0-9]*: reject: RCPT from "

2chで見つけた情報
WordPress 2.6 から投稿された内容の履歴が残るようになりました。更新して間違ってしまった時に戻れるのは便利ですが、コンテンツを更新するとpost_idがどんどん増えていくので気持ち悪い人もいるはずです。。ということでリビジョン管理を停止する方法です。

wp-config.php 内の wp-settings.phpを読み込む前に

//リビジョン管理停止
define ('WP_POST_REVISIONS', false);

を挿入します。

<参考URL>
WordPress2.6のリビジョン管理を無効にする方法(YATA BLOG)
Revision Management(WordPress Codex)

2.6がリリースされました。早速アップグレードしてみましたが、変なファイルが残るのも嫌だったので、DBはそのままでフォルダを差し替えしたらうまくいかず。

wp-config.php内の「DB_CHARSET」が設定されていると綺麗に文字化けしますorz

//define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

MySQLのなんかの問題みたいですが、調べてる暇がないので次の機会に。。。。。(^^;
新規インストールなら問題ないのですが、昔からアップグレードしてきてるとなんかこうなるような感じっぽいです。

というかいままで適当に上書きしてきたので気がつかなかったのですが、

define('AUTH_KEY', '');
define('SECURE_AUTH_KEY', '');
define('LOGGED_IN_KEY', '');

とかも2.5からwp-config.php設定しないといけない項目だったみたい(^^;

WordPress 日本語ローカルサイト

昔の記事、OpenVZ(CentOS5)でOpenVZにCentOS5をいれて、udevがはいると「/dev」がおかしくなってログインできなくなる件ですが、CentOS5.2が出たので調子こいてアップデートしたらまた同じ現象になったので(initscriptsがアップデートされたため)、ちゃんと調べたのでメモ。

症状はSSH等でログインできないのと、OpenVZのホストからVEにログインする方法もできなくなります。端末でログインできないだけなので、Webサーバ等の他のサービスは動作しています。

こんな感じでログインできません。

# vzctl enter 100
enter into VE 100 failed
Unable to open pty: No such file or directory

対処方法

/etc/udev/makedev.d/50-udev.nodes

tty0
ptmx

を追加

アップデートしてしまってログインできなくなってしまった場合は、VEを停止した状態で、

/vz/private/100/etc/udev/makedev.d/50-udev.nodes

のファイルを変更してVEを起動すればなおるはずです。

5.2リリースされました。基本的にはマイナーチェンジなのですが、Debian系と違って、RHEL系はいきなし仕様変更、機能アップする場合があるので、要注意ですが、今回はどうでしょうか。

NFSのバグが直ってるっぽいので検証してみよう。

[CentOS-announce] Release for CentOS-5.2 i386 and x86_64
CentOS 5.2 リリースノート(centos.org wiki)
RHEL 5.2 リリースノート(本家)

Lightbox って、一般的な名称?(よくわかんないけど)、要はJavaScript系のモーダルウィンドウっぽい仕組み、最近は、写真とかのギャラリーっぽいのでよく使われてる。

いろいろあるけどよさそうだったのをメモ
Lightview
Lightbox2

ファイルマネージャーといえばWindows3.1についてたアレを思い出しますが(^^;、Web上のAjaxをつかったやつを調査したのでメモ。元はRelayを見つけてはじまったのだけど、Relayはいい感じなのですが、PHP+MySQL+Perlなのでインストールが面倒だなーと思ってたら、AjaXplorerがなかなかイイ感じです。PHPのみなのでアップロードして、ちょっと設定すればOKです。画面もシンプルなので使いやすそうなのですが、、、問題となりそうなのは、日本語でないことと、漢字のファイル名が通りません。日本語対応はロケールのファイルをちょっと訳せばなんとかなりそう(250コぐらい)。日本語ファイル名はutf8_decode,utf8_encodeの関数を取り除けばイケる模様。

AjaXplorer
Relay
PHP Navigator
axlope (アクスロープ)
PHPfileNavigator

参考(Ajaxplorerの日本語化)
Ajaxplorer

X Window System をインストールしてないCUI環境だけど、X の必要なアプリがでてきたのでVNCでつないでみるメモ、まぁOracleです。

◆最低必要なパッケージ

xterm
vnc-server
xorg-x11-xauth
xorg-x11-twm

◆設定ファイル

/etc/sysconfig/vncservers
VNCSERVERS="1:root"

1 はDISPLAY番号 0以外 0はコンソール画面なので、この場合は x0vncserver を使う。
root はユーザ名(任意)

◆VNCへログオンするパスワード設定

vncpasswd
~/.vnc/passwd にパスワードが設定されます。
備考>短すぎるパスワードはvncpasswdで弾かれます。

◆接続

VNC Viewerで 192.168.1.1:1
または、ブラウザで http://192.168.1.1:5801/

レベル3の対策本が出たみたいなのでメモ。レベル3はLinuxというかLDAPの試験っぽいのですが、LDAPはあまり使ったことがないので、要勉強です。

徹底攻略LPI問題集 Level3 [301/302]対応 (ITプロ/ITエンジニアのための徹底攻略)

編集:ソキウス・ジャパン
価格:\3,360
LPI認定試験LPICレベル3《301/302》〈最短合格〉テキスト&問題集

著:アイダックLinuxチーム
価格:\3,885

SambaでActiveDirectoryへ参加できない場合の対処のメモ

考えら得る原因
・ADのサーバと、Sambaのサーバの時刻が同期していない
・FQDN名が参照できない

2番目の場合で下のようにエラーがでる場合、/etc/hostsにFQDN名を書いてあげれば参加できます。

[root@rhel4 ~]# kinit administrator@DOMAIN.LOCAL
Password for administrator@DOMAIN.LOCAL:

失敗した場合
[root@rhel4 ~]# net ads join -U administrator
administrator's password:
Using short domain name -- DOMAIN
Failed to set servicePrincipalNames. Please ensure that
the DNS domain of this server matches the AD domain,
Or rejoin with using Domain Admin credentials.
Deleted account for 'RHEL4' in realm 'DOMAIN.LOCAL'
Failed to join domain: Type or value exists

参加できた場合
[root@rhel4 ~]# net ads join -U administrator
administrator's password:
Using short domain name -- DOMAIN
Joined 'RHEL4' to realm 'DOMAIN.LOCAL'
ダメ
127.0.0.1  rhel4 localhost.localdomain   localhost
OK
127.0.0.1  rhel4.domain.local rhel4 localhost.localdomain localhost

BUFFALOより、iSCSI対応HDDということで、TeraStationが出ましたが、ちょうどいい案件があったので、購入してCentOS5と繋いでみた、んで、試したところ1000BASE-TのLANでだいたいカタログ値の65MB/sぐらいでてるみたいでした。

◆Linux(CentOS5)側はiSCSIイニシエータをインストール

yum install iscsi-initiator-utils

◆サービスの開始

service iscsi start
chkconfig iscsi on

◆登録済みのノードを見る

iscsiadm -m node

◆ターゲット名を調べる

iscsiadm -m discovery -t sendtargets -p 192.168.1.1

◆ログイン

iscsiadm -m node -T iqn.2004-08.jp.buffalo:TS-RIGLXXX-XXXXXXXXXXXXXXXX:vol1 -p 192.168.1.1 --login

◆情報確認

iscsiadm -m node -T iqn.2004-08.jp.buffalo:TS-RIGLXXX-XXXXXXXXXXXXXXXX:vol1 -p 192.168.1.1

◆パーティション作成、初期化とか

fdisk /dev/sdb
mkfs.ext3 /dev/sdb1 などなど

◆自動マウント(fstab)

/dev/sdb1 /mnt/iscsi ext3 _netdev 0 0

「_netdev」オプションをつけるとネットワーク起動後マウントされる。

TeraStation IS RAID HDD ラックマウント対応 2TB

メーカー:バッファロー
参考価格:¥178,500
価格:¥154,060
TeraStation IS RAID機能搭載 HDD 2TB

メーカー:バッファロー
参考価格:¥168,000
価格:¥160,924

X-Windowの0番の画面をVNCで接続してみるのにx0vncserverを使ってみる。普段はX-Windowは使わないのだけど、ちょっと必要があったのでやってみた

VNCのパスワードファイル作成

vncpasswd [パスワードファイル]

パスワードファイルを指定しないと「~/.vnc/passwd」とかにできる。

サービスの起動

# x0vncserver -PasswordFile=/root/.vnc/passwd -rfbport=5900 &

-rfbportは待ちうけポートの指定、デフォルト5900