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



















