Archive for the ‘MySQL’ 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 でどフリー設定になっていますが、外部からアクセスできるようなサーバの場合には危険ですので、慎重に設定値を決めましょう。