Archive for the ‘システム管理’ Category

仮想環境の構築 ( VMware + CentOS 5.3 )

土曜日, 5 月 23rd, 2009

今週、Windows XP をクリーンインストールした際に、
仮想開発環境として利用している VMware Server も
新規に構築し直したので、メモを残しておきたいと思います。

- VMware Server をインストール
- CentOS 5.3 を最小構成でインストール
- ホスト名、ネットワーク等の設定を行う
- 不必要な OS boot 時起動サービスの回避
- 各種パッケージのインストール
- NTP のインストール
- cron の設定
- ユーザーの作成と Sudo 権限の付与
- SSH の設定
- Apache, Postfix, PHP, MySQL, Samba のインストール
- Apache の NameVirtualHost の設定

環境構築は結構好きなので、それ自体を目的によくやってましたが、
今回も新しいつまずきと、新しいテクニックを覚えられたので楽しかったです。

VMware Server をインストール ( 割愛 ~ )

CentOS 5.3 のディスクイメージをダウンロード
http://ftp.riken.jp/Linux/centos/5/isos/i386/CentOS-5.3-i386-bin-DVD.iso

VMware Server にマウントして CentOS を最小構成でインストール
参考 : http://labs.unoh.net/2006/11/vmwarecentos.html

初回起動時の setup 画面で、ホスト名、ネットワーク等の設定を行う。
→ しかし各種設定ファイルにちゃんと反映されず。。

ドメイン名の解決

# cat /etc/resolv.conf
nameserver 192.168.73.2
domain foo.jp

※ .73. の部分は環境によって変わります

ホスト名の決定

# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.73.10 vm.foo.jp vm

# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=vm.foo.jp

ネットワーク設定範囲の HWADDR をコメントアウト
ディスクイメージをコピーして使うときに問題になるかもしれないので。

# cat /etc/sysconfig/network-scripts/ifcfg-eth0

#HWADDR=00:0c:29:f0:a2:b9

不必要な OS boot 時起動サービスの回避。

# chkconfig –list | grep 3:on | wc -l
40

→ 40 サービス起動されている。

適当にサービス OFF.

# for SERVICE in acpid apmd atd bluetooth cpuspeed cups firstboot gpm haldaemon hidd ip6tables irqbalance isdn kudzu lvm2-monitor mcstrans mdmonitor microcode_ctl netfs nfslock pcscd portmap readahead_early restorecond rpcgssd rpcidmapd sendmail smartd xfs yum-updatesd; do /sbin/chkconfig ${SERVICE} off; done

# chkconfig –list | grep 3:on | wc -l
10

10 サービスに。

ここで一度再起動。

# restart
-bash: restart: command not found

な、なんだってー

# shutdown -r now

プラグイン関連。

最も近くのミラーサーバを設定してくれるプラグイン

# yum -y install yum-fastestmirror

Package yum-fastestmirror-1.1.16-13.el5.centos.noarch already installed and latest version
Nothing to do

なんとー。5.3 から組み込まれたんだ、これ。

プラグインが有効になっていることを確認。

# cat /etc/yum.conf | grep plugins
plugins=1

O.K.

# yum update

Transaction Summary
=============================
Install 1 Package(s)
Update 29 Package(s)
Remove 0 Package(s)

Total download size: 45 M
Is this ok [y/N]: y

IIJ さんちからのダウンロード。とっても早かった。

ここまでで、VM をシャットダウン。
実ファイルをコピーしておき、基本イメージとしてバックアップした。

=-=-=

次にサーバの時刻を調整してくれる ntp(d) をインストール

# yum -y install ntp

続いて、デーモン ( ntpd ) を起動する前に、最初に手動で時刻を調整する

# ntpdate ntp.nc.u-tokyo.ac.jp
22 May 17:38:20 ntpdate[1772]: step time server 130.69.251.23 offset 897.045643 sec

# date
2009年 5月 22日 金曜日 17:38:38 JST

ここで、分は合っているけれど、時が合っていない場合は、
最後に ” EST ” と表示されていないかチェック。
もしそうである場合は JST に変更する。

変更のツールは、設定ファイルを直接いじることもできみたいだけれど、
CUI 上でも設定画面を表示してくれる、system-config-date というツールがあるようなので、必要な場合にはインストール。

# yum list | grep system-config-date
system-config-date.noarch 1.8.12-3.el5.centos.2 base

# yum install system-config-date

しかし、上のコマンドを打ったら、
数十の依存パッケージを同時にインストールすることになると表示された。
利用する場合は十分注意してインストールを。

インストール後に、さっそく起動。

# system-config-date

” Asia/Tokyo ” を選択。
「System clock uses UTC」にはチェックはいれない。
これで日本標準の時刻になるはず。

最後に、再起動時に自動的に ntpd が起動するようにしておく。

# chkconfig ntpd on

ただ、VM は、かなりの速度で時刻が遅れていくので、
ntpd を利用せずに、crond などで定期的に ntpdate を叩く
という手段も有用ではないかと思う。

というわけで、むちゃくちゃながら
ntpdate を cron で 2 分毎に叩くことにした。

# crontab -e
MAILTO=”
*/2 * * * * /usr/sbin/ntpdate ntp.tut.ac.jp > /dev/null 2>&1

# /etc/init.d/ntpd stop
ntpd を停止中: [失敗]

# chkconfig –list ntpd
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

ユーザーの作成

# useradd yosketch
# passwd yosketch

sudo 権限の付与

# visudo

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
yosketch ALL=(ALL) ALL

ssh での root アクセス禁止

# vi /etc/ssh/sshd_config

#PermitRootLogin yes
PermitRootLogin no

# /etc/init.d/sshd reload
sshd を再読み込み中: [ OK ]

Apache のインストール

# yum install httpd httpd-devel
# chkconfig httpd on
# /etc/init.d/httpd start
httpd を起動中: [ OK ]

パッケージ依存関係のため、一緒にいろいろなパッケージがインストールされた。

Postfix インストール

# yum -y install system-switch-mail postfix

# system-switch-mail
–> postfix を選択

# /etc/init.d/sendmail status
sendmail は停止しています

# /etc/init.d/postfix status
master (pid 2380) を実行中…

# chkconfig postfix on
# chkconfig sendmail off

PHP 関連のインストール

# yum install flex zlib-devel libjpeg-devel libpng-devel freetype-devel

# yum install php
Running Transaction
Installing : php-common [1/4]
Installing : gmp [2/4]
Installing : php-cli [3/4]
Installing : php [4/4]

# yum install php-mbstring
Running Transaction
Installing : php-mbstring [1/1]

# yum install php-{dba,gd,imap,mbstring,mcrypt,mhash,mysql,odbc,pdo, \
pear,pgsql,readline,soap,tidy,xml,xmlrpc}
※ 実際は 1 行

Transaction Summary
===========================
Install 23 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

# yum install php-pear-{Auth-SASL,DB,Date,File,HTTP-Request,Log,MDB2,MDB2-Driver-mysql,Mail,Mail-Mime,Net-SMTP,Net-Sieve,Net-Socket,Net-URL}

Transaction Summary
===========================
Install 14 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

# cp -pr /etc/php.ini /etc/php.ini.org
# vi /etc/php.ini
magic_quotes_gpc=off
default_charset=”UTF-8″
mbstring.language = “Japanese”
mbstring.internal_encoding = “UTF-8″
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.substitute_character = none
mbstring.func_overload = 0

# vi /etc/httpd/conf/httpd.conf
AddType application/x-httpd-php .php
# /etc/init.d/httpd restart

# pear upgrade –force PEAR
# pear channel-update pear.php.net
Update of Channel “pear.php.net” succeeded

MySQL のインストール

# yum install mysql mysql-server mysql-devel

Transaction Summary
===========================
Install 9 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Complete!

# /etc/init.d/mysqld start
MySQL データベースを初期化中: Installing MySQL system tables

# chkconfig –list mysqld
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig mysqld on

# mysqladmin -u root password ‘*********’

# mysql -p
Enter password:

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘yosketch’@'localhost’ IDENTIFIED BY ‘*********’;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Apache の運用設定

C:\WINDOWS\system32\drivers\etc\hosts を編集。

127.0.0.1 localhost
192.168.73.10 www.hoge.com

以下を /etc/httpd/conf/httpd.conf に追記

<VirtualHost *:80>
ServerName www.hoge.com
DocumentRoot /var/www/domains/www.hoge.com/html
DirectoryIndex index.php index.html
</VirtualHost>

その前の

NameVirtualHost *:80

のコメントアウトをはずしておく。

# /etc/init.d/httpd configtest
Syntax OK

と言われたら、

# /etc/init.d/httpd restart

# vi /var/www/domains/www.hoge.com/html/info.php
<?php phpinfo(); ?>

ブラウザを新規に立ち上げ、www.hoge.com/info.php にアクセス。
PHP 情報が表示されたらバンザーイ。

# rm /var/www/domains/www.hoge.com/html/info.php

Samba のインストール

# yum -y install samba samba-swat

–> 依存性の関係で xinetd も同時にインストールされる。

# chkconfig –list xinetd
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

# chkconfig –list smb
smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig smb on

# vi /etc/xinetd.d/swat
[変更]

[前] only_from = 127.0.0.1
[後] only_from = 127.0.0.1 192.168.73.0/24

[前] disable = yes
[後] disable = no

※ 192.168.73.0 は、その環境により変動。

# /etc/init.d/xinetd start
xinetd を起動中: [ OK ]

# pdbedit -a root
password:
Retype password:

# /etc/init.d/smb start
SMB サービスを起動中: [ OK ]
NMB サービスを起動中: [ OK ]

→ ブラウザから http://IP_ADDRESS:901/ にアクセス。root の認証。

SHARES をクリック
表示モードの変更: 「詳細表示」
ファイル共有の作成 : vm
path : /
valid users : root
admin users : root
read only : No
create mask : 0644
–>「変更を反映」

[ Windows 側 ]
マイネットワーク > ネットワークプレースの追加
接続先 : \\IP_ADDRESS\vm
認証を求められるので root とパスを入力。

ネットワーク名を設定して、通常のフォルダのように表示されれば OK !

下のように認証で引っかかる場合は ( 下のログは /var/log/messages のもの )

[日時] [ホスト名] vm xinetd[3136]: START: swat pid=3158 from=192.168.73.1
[日時] [ホスト名] vm swat[3157]: [日時, 0] printing/print_cups.c:cups_connect(69)
[日時] [ホスト名] vm xinetd[3136]: START: swat pid=3159 from=192.168.73.1
[日時] [ホスト名] vm swat[3157]: Unable to connect to CUPS server localhost:631 - Connection refused

/etc/samba/smb.conf 内で接続先の設定値が available = No となっていないかチェック。
これを Yes にして、サービスを restart したらうまくいく。( はず )

おしまい。

以上は LAN ( PC 内 VM ) 用設定なので、
root でどフリー設定になっていますが、外部からアクセスできるようなサーバの場合には危険ですので、慎重に設定値を決めましょう。

Samba のインストール on CentOS 5.3

水曜日, 5 月 13th, 2009

こんにちは。
なんやかんやで Win + Samba + Linux が便利だと思う今日この頃、いかがお過ごしでしょうか。

CentOS の version 5.3 がリリースされたとのことで、
今日こそアップデートするぞと力んだところ、
# yum update
で完了してしまい、脱力しました。笑

ということで、今日は久々に Samba のインストールをしました。
メモがあれば簡単なのですが、最初はなかなか手間取りました。
一部コマンドが変更になったので、メモを載せたいと思います。

===

※ ハイフン x 2 本が、「-」と表示されていますのでご注意を
  これは WordPress 側の文字列処理のためです…

# yum -y install samba samba-swat
–> 依存性の関係で xinetd も同時にインストールされる。

# chkconfig –list xinetd
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

# chkconfig –list smb
smb             0:off   1:off   2:off   3:off   4:off   5:off   6:off
–> 自動起動しないみたい。

# chkconfig –level 35 smb on
–> 自動起動させるよう設定する。

# vi /etc/xinetd.d/swat
[変更]

[前] only_from    = 127.0.0.1
[後] only_from    = 127.0.0.1 192.168.239.0/24

[前] disable      = yes
[後] disable      = no

※ 192.168.239.0 は、その環境により変動。
今回は VMware Server を利用しています。

# /etc/init.d/xinetd start
xinetd を起動中:                                           [  OK  ]

# pdbedit -a root
password:
Retype password:

pdbedit コマンドについては、こちらの記事をご参照のこと。

# mkdir /virtual
–> Samba でアクセスするディレクトリを作成。

# /etc/init.d/smb start
SMB サービスを起動中:                                      [  OK  ]
NMB サービスを起動中:                                      [  OK  ]

—> ブラウザから http://IP_ADDRESS:901/ にアクセス。root の認証。

SHARES をクリック
表示モードの変更: 「詳細表示」
ファイル共有の作成 : virtual
path : /virtual
valid users : root
admin users : root
read only : No
create mask : 0644
–>「変更を反映」

[ Windows 側 ]
マイネットワーク > ネットワークプレースの追加
接続先 : \\IP_ADDRESS\virtual
認証を求められるので root とパスを入力。

ネットワーク名を設定して、通常のフォルダのように表示されれば OK !

おしまい。

以上は LAN ( PC 内 VM ) 用設定なので、
root でどフリー設定になっていますが、外部からアクセスできるようなサーバの場合には危険ですので、慎重に設定値を決めましょう。

WordPress 2.7.1 へのアップデートで勝手にずっこけまくる。

月曜日, 4 月 20th, 2009

こんにちは。
突然ですが、このブログは WordPress を利用しています。

昨日のエントリを書くにあたって、
管理画面に新バージョンがリリースされたと表示されていたので、
アップデートしてみようとしました。

WordPress 2.7.1 が利用可能です!

バージョン 2.7 からは「自動アップデート機能」が利用できるのですが、
利用しているサーバが FTP を許可していないため利用できません。
( FTPS は利用できるそうです。FTPS ≠ SFTP )

自動インストール機能

以下はそのだめだめ試行錯誤記録です。(最終的にへとへとゴールイン)
よい子は真似しないでくださいね。

1. WordPress の管理画面から ZIP ファイルを Windows のデスクトップにダウンロード ( 最新版のダウンロードがリンクではなく、Form Button だったため )

2. PuTTY で ssh ログインして、一瞬 root でログイン可能にする。( うわあ … )

$ sudo vi /etc/ssh/sshd_config

PermitRootLogin yes
#PermitRootLogin no

$ sudo vi /etc/ssh/sshd_config
$ sudo /etc/init.d/sshd reload

3. WinSCP3 で root としてログイン、
WordPress が存在する 1 つ上のディレクトリに、最新版の ZIP ファイルを置く

4. 用が済んだので、ssh の設定を元に戻して root ログインを不可能にする。

$ sudo vi /etc/ssh/sshd_config

#PermitRootLogin yes
PermitRootLogin no

$ sudo vi /etc/ssh/sshd_config
$ sudo /etc/init.d/sshd reload

5. ZIP ファイルのディレクトリに移動し、解凍します。

$ su -
# cd /PATH/TO/SOMEWHERE ( ZIP ファイルのあるディレクトリ )
# unzip wordpress-2.7.1-ja.zip

6. wordpress というディレクトリができるので、
既存の設定ファイルをコピーして新しい設定ファイルを作成する
なお、ここでは既存の WordPress 用ディレクトリ名を ” html ” であるとする。

# cp html/wp-config.php wordpress/wp-config.php

7. 既存のディレクトリ名を適当に変更し、
新しいディレクトリ名を既存のディレクトリ名に変更する。( すりかえる )
必要であれば、所有権の変更も行う。

# mv html html_old
# mv wordpress html
# chown -R yosketch:apache html/

それで、http://blog.yosketch.jp/ を表示させたら、
画面が真っ白! 頭も真っ白!!白銀の世界へようこそ!

DB のほうはバックアップとってないし、もしかしてプギャー??

その一方で、WordPress の裏っかわ、管理画面は問題なし。

そこで、テストエントリを書いて見る。投稿処理は問題ないように見える。

「投稿を表示する」のリンクを押したところ、404 Not Found … orz
しかし、これは!と思ってチェックしたら、
最新版 WordPress のディレクトリには .htaccess がない!

8. htaccess ファイルをコピー ( 本当は $ cp -p で所有権そのままにコピーできます )

# cp html_old/.htaccess html/.htaccess
# chown apache:apache html_old/.htaccess html/.htaccess

これでうまく行っただろうと思ったら、
今度はテストエントリページまで驚きの白さに。あわわわ。

html/index.php に

error_reporting(E_ALL ^ E_NOTICE);

を仕込んだけど、再度読みこみをしても無言。。
HTML ソースもなんか典型的な真っ白のページ作成コードで、
Apache の log を tailf して眺めていても、error_log には何も吐かれない。

裏 ( 管理 ) 画面は OK で、表画面が NG なのはなぜだ。

そっか、テーマスキンとか画像がないからだ!!( ピキーン )

9. ということで。テーマフォルダをコピー

# cp -pr html_old/wp-content/themes/* html/wp-content/themes/
cp: overwrite `html/wp-content/themes/classic/style.css’? y
… ( 略 ) …

10. プラグインも忘れてた。

# cp -pr html_old/wp-content/plugins/* html/wp-content/plugins/

11. あと過去にアップロードした画像ファイルの移動も忘れてた。笑

# mkdir html/wp-content/uploads
# cp -pr html_old/wp-content/uploads/* html/wp-content/uploads/
# chown -R yosketch:apache html/wp-content/uploads/
# chmod 777 -R html/wp-content/uploads/

# ll html/wp-content/uploads/2009/01/
feed-icon-legacy_blue.gif  image-150×21.gif  …

これでどうだ!!

やった。
画像も OK.
コメントも OK.
プラグインも動いているみたい。

あー、面倒かった。。

ちなみに今回のバージョン 2.7.1 では
こんなにたくさんの不具合が修正されているようです。

いつもお世話になっております。

そもそも自前サーバなので、
FTP サーバくらい立てれば「自動アップデート」で話は済んでいたのに。
まま、痛い目見れて良かったです。

FTP は Jail 環境で作らねば、と思っていたので、
近々 vsftpd で構築したいと思います。

いやー巨大システムこわい (?)