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

PHP での開発用に NetBeans をインストールしてみる。

火曜日, 4 月 21st, 2009

えー!
Oracle が Sun を買収だって!!

こんにちは。

今回は PHP 用開発ツールとして、
買収記念に Sun の ( 語弊 ) NetBeans をインストールしたいと思います。

対抗としてよく取り上げられる Eclipse 関連ツールでは「PHPEclipse」も「PDT」も「Aptana」も重く感じられ、プロ時代 (?) にはずっと「サクラエディタ」を愛用していました。

「Eclipse よりかなり軽い」という感想を見てちょっと気になったのと、最近いじることになった PHP の中規模システムの命名規約が Java ライクで長いため、独自関数への入力補完機能の必要性を感じ、NetBeans をインストールしてみたくなりました。

サクラエディタ程の軽さはもちろん期待していませんが、さてさてどうなることやら。

それで、さっそくトップページ見たのですが、
どうしてどうして、サポート言語リストに PHP の名が無い!!(笑うところ?)

本家にはあるのに。
日本語による解説サイトもあるのになー。

日本語サイト : http://ja.netbeans.org/
netbeans_ex1

本家サイト : http://www.netbeans.org/
netbeans_ex2

日本語版 PHP 解説ページ
http://www.netbeans.org/features/php/index_ja.html

さてさて、本体インストールの前に、
PC で Java が動くことが前提になっています。

Eclipse のときを思い出すと、
JDK は大きすぎていれたくないんだよね、と思っていたら、なんと

NetBeans 6.5 の C/C++, Ruby, PHP は JRE だけで動きますよ!
http://blogs.sun.com/katakai/entry/netbeans_6_5_c_c

とのことだそうで、意気揚々と JRE をインストール!

Java SE Runtime Environment (JRE) 6 Update 13 ( いま現在 )
http://java.sun.com/javase/ja/6/download.html

それで、D:\ の先頭にインストールしたら 85 MB.
やっぱりそれでもこのくらいの容量は取られるのですね。

netbeans01

さて続きましてはいよいよ本体。

今回は「NetBeans IDE 6.7 マイルストーン 3 (M3)」をインストールします。
http://ja.netbeans.org/downloads/67/

お試しなので、最新不安定版で OK. という軽い気持ちです。

とは言っても PHP エディタのバグ数はまだまだハンパねぇ感じなので、
実際のバージョン選択にはご注意ください。
http://quality.netbeans.org/dashboard/nb67/index.html

ここで「マルチリンガル版開発ビルド >>」のリンクをクリックすると、
当然 M3 ではなく Nightly Build 版の DL ページに飛ぶのでさらにご注意をば。

色々迷子になりつつ、
「NetBeans 6.7 M3 PHP Windows インストーラ/日本語 (ja)」の DL 完了です。

ダウンロードしたファイルを実行して、インストールです。

画像をクリックすると拡大表示します。以下同様

画像をクリックすると拡大表示します。以下同様

netbeans03

JRE のパスは、自動検出してくれました。
netbeans04

netbeans05

netbeans06

netbeans07

デスクトップに起動用ショートカットが自動作成されます。
netbeans08

初回起動中。。Eclipse ばりに重い。。Java だからね。。。

IDE 起動画面

IDE 起動画面

起動直後の画面は、なんだか Eclipse みたいです。
netbeans10

関数・クラス名入力補完機能を試したいので、
ライブラリを「PHP インクルードパス」に追加します。

今回は symfony をダウンロードしてきて、追加選択してみました。
netbeans11

そしてクラス名を書く場面で Ctrl + Space キーを叩くと …
netbeans12

わーい、やった。できました。

ただ、最初にライブラリを追加したときのフルスキャンが重く、
30 秒以上固まり焦りました。

補完機能は軽いと思います。
リモートデバッグとかですよね、気になる点は。

これから少しいじって、確認していきたいと思います。

なお、利用 PC は Let’s Note CF-Y2 (!!) で、
CPU / RAM は、Pentium M 1.2 GHz / 768 MB でした。

NetBeans + PHP の情報は公式ブログがあるようです。
http://blogs.sun.com/netbeansphp/

それではまた。