■各種パッケージライブラリのインスコ
まず設定に先立ち、必要なパッケージライブラリを豪勢にインスコしよう。
そのためにはrootになる。
# su - パスワード今回入れるライブラリは以下になる。
php-bcmath | 任意精度演算に関する精度の拡大。つまり符号なし32ビット演算がオーバーフローを起こし、2038年問題を引き起こすのを未然に防ぐためにこれを入れておく |
---|---|
php-devel | phpの開発者向けライブラリ。 |
php-gd | GDライブラリのphp版 |
php-imap | phpでIMAPをいじる場合に使用 |
php-ldap | phpでldapをいじる場合に使用 |
php-mbstring | 日本語圏なら必須。全角を正しく扱えるようになる(ただし完璧ではない) |
php-mcrypt | 暗号化のライブラリ。いろいろなOSSで使用されるので入れておく |
php-mysql | MySQLを使うなら必須 |
php-pdo | phpでDBをいじる際、一番処理が速いので入れておく |
php-pear | phpで作られた各種ライブラリへのアクセス用に入れておく |
php-pspell | phpで辞書を扱う際に使われる便利なライブラリ。使用頻度は低いがオモロいので入れておく |
php-snmp | phpでsnmpを使う場合に使用 |
php-soap | phpでsoapで通信する場合に使用 |
php-tidy | htmlスクレイピングライブラリ |
php-xml | xmlを簡単に扱えるようになるので入れておく |
php-xmlrpc | xmlを使ったサーバ間通信などで使うので入れておく |
mod_ssl | なんちゃってSSLで使うので入れておく |
mod_perl | PerlをCGIじゃなくApacheモジュールっぽく動かして高速化するので入れておく |
mod_dav_svn | Subversionをhttp経由でアクセスさせるのに必須 |
中にはそれほど必要ないパッケージもあるだろうが、VMPlayerじゃない実際の本番サーバに入っているかもしれないようなものは念のために入れておくことにする。というわけで、以下のようにしてインスコする。
# yum --enablerepo=wing install php-bcmath php-devel php-gd php-imap php-ldap php-mbstring php-mcrypt php-mysql php-pdo php-pear php-pspell php-snmp php-soap php-tidy php-xml php-xmlrpc # yum --enablerepo=wing install mod_ssl mod_perl mod_dav_svnこれで必要なライブラリはインスコできた。
もしエラーが出るようなら、rpmforgeのenabledを1にして再度実行してみよう。
■各種パッケージの設定
ところで前回インスコしたパッケージの設定は、ほぼデフォルト状態だ。何気にショボい。
まずはhttpdの設定をまともにしよう。
※念のためファイル名に日付をつけてコピーしている
# cd /etc/httpd/conf/ # cp httpd.conf httpd.conf.20100301 # vi httpd.confこのhttpd.confというのは知ってのとおり、httpdの設定ファイルだ。最低限以下の設定だけは済ませておく。
変更前 | 変更後 |
---|---|
ServerTokens Os | ServerTokens Prod |
#ServerName www.example.com:80 | ServerName centos.torhamzedd.com:80 |
Options Indexes FollowSymLinks | Options Includes ExecCGI FollowSymLinks |
AllowOverride None | AllowOverride All |
ServerSignature On | ServerSignature Off |
AddDefaultCharset UTF-8 | #AddDefaultCharset UTF-8 |
#AddHandler cgi-script .cgi | AddHandler cgi-script .cgi .pl |
#NameVirtualHost *:80 | NameVirtualHost *:80 |
LanguagePriority en ca・・・・ | LanguagePriority ja en・・・・ |
※Options設定とAllowOverride設定は、/var/www/htmlと/の2箇所で行うこと
※LanguagePriorityは、ja(日本語表示)を最優先するのでjaを先頭へ持ってくるという意味
バーチャルホストを有効にしたので、以下の場所に新規でバーチャルホスト用設定ファイルを作っておく。
# cd /etc/httpd/conf.d/ # vi virtualhost.conf中身は以下でOK。
<virtualhost *:80> ServerAdmin root@localhost ServerName centos.torhamzedd.com DocumentRoot /var/www/html </VirtualHost>ServerName は適宜、httpd.confと同じものを指定しておく。
これでhttpdの設定は完了だ。
そのほか自分が使いたい環境に合わせておく。
まだ再起動はしない。
次にphpの設定を行う。まずはUTF-8でスクリプトを動かすのを前提とし、その設定を行う。
# cd /etc/ # vi php.ini
変更前 | 変更後 |
---|---|
;mbstring.language = Japanese | mbstring.language = Japanese |
;mbstring.internal_encoding = EUC-JP | mbstring.internal_encoding = UTF-8 |
;mbstring.http_input = auto | mbstring.http_input = UTF-8 |
;mbstring.http_output = SJIS | mbstring.http_output = UTF-8 |
;mbstring.detect_order = auto | mbstring.detect_order = auto |
expose_php = On | expose_php = Off |
変更前が上記と違っても、すべて変更後と同じにしておけば問題ない。
※expose_phpはブラウザでレスポンスデータを見た場合、「X-Powered-By: PHP/5.3.0」のようにphpのバージョンがヘッダに含まれてしまうのを避けるため
次にMySQLの設定を行う。
# cd /etc/ # vi my.cnfこの中には[mysqld]という項目があるのだが、ここに文字エンコーディングの設定を追記する。old_passwords=1の下にdefault-character-set = utf8を追記。さらにその下にskip-character-set-client-handshakeを追記する。
今度は[mysql]という項目を追記し、中身に同じくdefault-character-set = utf8
を追記する。
最終的に以下のようになったはずだ。
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 default-character-set = utf8 skip-character-set-client-handshake # To allow mysqld to connect to a MySQL Cluster management daemon, uncomment # these lines and adjust the connectstring as needed. #ndbcluster #ndb-connectstring="nodeid=4;host=localhost:1186" [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [ndbd] # If you are running a MySQL Cluster storage daemon (ndbd) on this machine, # adjust its connection to the management daemon here. # Note: ndbd init script requires this to include nodeid! connect-string="nodeid=2;host=localhost:1186" [ndb_mgm] # connection string for MySQL Cluster management tool connect-string="host=localhost:1186" [mysql] default-character-set = utf8
これで基本的な設定は全部終り。後はサーバを再起動する。
# service httpd restart # service mysqld restart
■sambaでファイル共有する
次に、Windows側、つまりホストOS側からCentOS側、つまりゲストOSへ、フォルダを開くだけでファイルにアクセスできるようにする。sambaを使う。
sambaとは、CentOSなどのLinuxがWindows NTのふりをしてくれる便利なデーモンで、Windowsからフォルダを開くだけでLinuxサーバのファイルにアクセスすることが可能になる。
したがって、CentOSなどのLinuxでhttpdが見える場所、つまりApacheのDocumentRootにsamba経由でプロジェクトファイルを置いておけば、Windows側で編集後、即座にブラウザでCentOS側の内容を閲覧することが可能になる。今回の目的はこれだ。
というわけでsambaをインスコする。
# yum --enablerepo=wing install samba次に、sambaのユーザをつくなら無いといけない。
Windows XPなどのクライアントOSが、Windows Server 2008などのサーバOSにアクセスするとき、どっちのユーザも同じIDで同じパスワードなら、ログインという作業自体がいらなくなり、シームレスにアクセスすることが可能になる。それと同じことをやってみるわけだ。
つまり、上記に当てはめると、使っているWindows XPなどをクライアントと考えた場合、CentOS側にインスコしたsambaがWindowsサーバになる。なので、sambaのユーザとWindowsのユーザが一致していれば良い。
本来、もしあなたがお使いのWindowsに
- ID yakutatazu
- PS gokutsubushi
しかし実際にはそうもいかない。ユーザ名が同じでも、パスワードが違っていたりする。それに、WindowsマシンとCentOSなどのLinuxのユーザ名、パスワードが同じというのもセキュリティ的によろしくないから、たいてい違うパスワードが設定されているということもしばしばあるのではないだろうか。
今回は、CentOSのユーザとsambaユーザをバインドしてしまうので、パスワードが別でも問題ない。ユーザ名だけはWindowsとCentOSで同じにしておく。
※Windows側にあわせる必要が出てくると思うので、CentOS上に同じユーザがいなければ作っておくこと
- | Windowsユーザ | sambaユーザ | Linuxユーザ |
---|---|---|---|
ユーザ名 | ogaaaan | ogaaaan | ogaaaan |
パスワード | kamisama | kamisama | shiranugahotoke |
上記のように、たとえWindows側でログオンする際のパスワードとCentOS側でログインする際のパスワードが違っても、sambaでバインドしてしまえば問題ないわけだ。
※sambaユーザのパスワードがWindowsユーザのパスワードと違う場合、Windowsからsamba経由でCentOS内のフォルダにアクセスする際、パスワード入力が求められてしまう。
今回はogaaaanというユーザでWindowsからCentOS内を見れるようにする。
Windowsログオン時のパスワードはkamisamaとする。
# pdbedit -a ogaaaanこのコマンドを入力すると、ogaaaanという「Windowsサーバのユーザ」つまり「sambaユーザ」のパスワード入力を聞かれる。kamisamaを2回入力する。繰り返しになるが、ここで入力するのはCentOS側で作ったユーザのパスワードではなく、使っているWindowsのログオンパスワードを入力すること。
次に、Windowsからアクセスがあった場合、どこの場所を見せるのかを設定する。
# cd /etc/samba/ # cp smb.conf smb.conf.20100301 # vi smb.confこのファイルはなんだかごちゃごちゃとうっとおしい内容がたくさん書かれているので、いったん中身は全部削除してしまってよい。
そして最終的な書式は以下のようになる。
[global] unix charset = UTF-8 dos charset = CP932 display charset = UTF-8 workgroup = mshome hosts_allow = 192.168. 127. load printers = yes disable spools = no [ogaaaan] comment = ogaaaan's home path = /home/ogaaaan read only = no create mask = 0644 force create mode = 0600 security mask = 0555 force security mode = 0600上記内容を記述したら保存して終了。
名称部分はsambaユーザ名でつけておく。この場合[ogaaaan]だ。そのほか、workgroup、hosts_allowは適宜、自分の使っているネットワーク環境に合わせること。
hosts_allowの192.168.は、たとえばWindows側が192.168.1.20とか192.168.10.4などからアクセスできるように、共通部分の前2オクテット(つまり192.168.)だけ指定しておくという記述方法。同じように自分自身からのアクセスも可能にするために、127.とも指定しておく。
comment、pathなども適宜、使用状況に合わせて適宜編集すること。
次に、sambaをブラウザで管理できるswatをインスコする。
# yum --enablerepo=wing install samba-swat
このswatはxinetdというスーパーデーモン(デーモン郡を管理するデーモン)を使っているので、xinetd向けにsambaの設定ファイルを以下のように編集する。
# cd /etc/xinetd.d/ # vi swat
port | 901 |
---|---|
socket_type | stream |
wait | no |
only_from | 127.0.0.1 192.168.1.0/24 |
user | root |
server | /usr/sbin/swat |
log_on_failure | USERID |
disable | no |
編集が必要な箇所はonly_fromとdisableだ。only_fromのほうは、sambaの設定と同じく、自分の使っているネットワーク環境にあわせること。
次にこのswatを起動するのだが、xinetd経由で動く仕組みになっているので、最初にxinetdを起動しなけならない。
# service xinetd startそしてxinetdもCentOS起動時に自動起動するように設定しておく。
# chkconfig xinetd onこれでCentOS上のブラウザでlocalhost:901を見てみよう。BASIC認証ダイアログが表示されるので、CentOSのrootのID、パスワードを入力すること。
無事にswatが見れたら成功だ。
「STATUS」のページからsambaを起動する。具体的には、「smbd」と「nmbd」を起動すればよい。ボタンをクリックするだけなのですぐに終わるだろう。
※もちろんコンソールで # service smb start、# service nmb startとして起動しても良い
CentOS起動時に自動的にsambaを起動させる設定も行っておく。
# chkconfig smb on # chkconfig nmb on
■固定IP化
sambaの構築に伴い、CentOSのネットワーク設定を固定IPに変更しておく。
固定IPにしておくことで、ホストOSであるWindowsからゲストOSであるCentOSへ、毎回再設定なしでアクセスできるようになるからだ。
これはたとえば、ホストOSであるWindows上でeclipseや秀丸などの開発ツールを起動し、編集対象となるソースファイルはゲストOS側であるCentOSに入れておく、そしてそれらのソース置き場はゲストOSであるCentOSのドキュメントルートにしておけば、Windows側からもCentOS側からもどちらからでもブラウザで閲覧、確認ができるようになるからだ。これがVMPlayerを使う理由だ。
というわけで、さっそくCentOSのIPアドレスを固定化する。
CentOSのネットワーク設定が書かれているファイルを直接編集する。
# cd /etc/sysconfig/network-scripts # vi ifcfg-eth0このファイルに固定IPやゲートウェイなどを書いておく。
今回はこのCentOSを192.168.1.222としてみた。ゲートウェイ(ルータのIPアドレス)は仮に192.168.1.1としてある。
最終的にはこのような内容になる。
DEVICE=eth0 BOOTPROTO=static HWADDR=**:**:**:**:**:** ONBOOT=yes TYPE=Ethernet IPADDR=192.168.1.222 NETMASK=255.255.255.0 GATEWAY=192.168.1.1※HWADDRはMACアドレスなので、使っている環境によってまちまちだ。下手にいじらないで置こう。
※ここに書いてない項目は行ごと削除してよい
次に、VMPlayerをNAT接続からブリッジ接続に変更する。
VMPlayerのメニュー「VM」から「設定」を開き、「ハードウェア」タブの「ネットワーク」を「ブリッジ:物理ネットワークに直接接続」にしてOKする。
これらの設定を済ませ、ネットワークを再起動すれば、いつでもWindowsからsamba経由でアクセスできるようになる。というわけでネットワークの再起動を行う。
# service network restartもちろん先ほど述べたとおり、ホストOSであるWindows側からブラウザでアクセスすることも可能だ。
その際はWindowsのhostsファイルに
192.168.1.222 torhamzedd.com
などと記述しておけば、http://torhamzedd.com/がそのままブラウザで使えるURLとなる。
で、このままだとゲストOS側からインターネットに接続できない。その理由は、DNSサーバの設定がされてないからだ。今まではNAT接続だったので、ホストOS側のDNS設定をそのまま使っていたが、今回はブリッジなので、別途CentOS側のresolv.confにDNSの設定を追記しておかないといけない。
ついでにだが、MTAなどを導入した際に面倒がないように、DNS以外にもドメインの指定もしておくとする。searchの後に、ホスト名を指定すればOKだ。メールアドレスなどでドメイン不明の場合、localhost.localdomainのようになってしまうが、それがsearchで指定したドメインに変更されるようになる(もちろんこんなことがないようにMTA入れるならちゃんとMTA側で設定しておけ!だ)。
# cd /etc/ # vi resulv.conf記述する内容は、
search centos.torhamzedd.com nameserver 111.111.111.111 nameserver 222.222.222.222nameserverの部分は貴様のWindowsに設定されているDNSのプライマリ、セカンダリをそれぞれ記述すれ良い。もし貴様のWindowsがDHCPで動的にIP割り当てをされている残念な環境であるなら、nameserver部分にはルータのIPアドレスを1個入れておけば大抵OKだろう。
たとえばゲストOSであるCentOSにphpMyAdminを入れたとして、それをWindows側からhttp://phpmyadmin.torhamzedd.comとして閲覧可能にするには、ゲストOS側httpdのバーチャルホストの設定、ホストOS側のhostsファイルの設定が必要になる。少々わかりにくいかもしれないが、とにかくバーチャルホストを設定したら、Windowsのhosts、ゲストOS側CentOSの/etc/hostsにも同じ内容を書いておくと、混乱が少ない。具体的にはこうだ。※phpmyadmin、testというサブドメインをバーチャルホストとして設定する例最後に、Windows側のcentosのvmxファイルのショートカットをつくり、それをWindowsのスタートアップに入れておけば、Windows起動時にすぐに開発環境が揃うというわけだ。作業を終える場合、特にCentOSを終了させる必要はないので、すぐに始められる。すばらしい。
【ホストOS側(Windows)】
\c:\\windows\system32\drivers\etc\hosts
192.168.1.222 torhamzedd.com
192.168.1.222 phpmyadmin.torhamzedd.com
192.168.1.222 test.torhamzedd.com
・・・
【ゲストOS側(CentOS)】
/etc/hosts
127.0.0.1 centos.torhamzedd.com centos localhost.localdomein localhost torhamzedd.com phpmyadmin.torhamzedd.com phpmyadmin.localhost test.torhamzedd.com test.localhost
・・・
【ゲストOS側(CentOS)バーチャルホスト】
/etc/httpd/conf.d/phpmyadmin.conf <confファイルであればファイル名は任意
<VirtualHost *:80>
ServerAdmin root@localhost
ServerName phpmyadmin.torhamzedd.com
ServerAlias phpmyadmin.localhost
DocumentRoot /home/apache/phpmyadmin <この場所は任意
</VirtualHost>
<VirtualHost *:80>
ServerAdmin root@localhost
ServerName test.torhamzedd.com
ServerAlias test.localhost
DocumentRoot /home/apache/test <この場所は任意
</VirtualHost>
上記設定の後、ちゃんとphpmyadminとtestディレクトリが作られているのが前提でhttpdを再起動すれば、後はホストOSのWIndowsからでもゲストOSのCentOSからでも、正しくブラウザで中身を見ることができる。
これであなたはXAMPPという擬似Linuxから脱却するのに成功し、本物のLinuxで開発が出来るという、新しく明るい人生を歩み始めたことになる。ぜひXAMPPを使っているユーザにも教えてあげよう。
めでたしめでたし。
※補足
今回はGUIとしてGNOMEを入れてあるので、CentOS上でブラウザを使った検索などが可能だ。そのため、ブラウザにぜひ入れておいたほうが精神衛生上よろしいプラグインがある。あの悪名高きFlashプレイヤーだ。
たとえばFireFoxなどでFlashが存在するページを閲覧すると、プラグインのインスコ画面が表示されるが、実はこれ、Adobeの超悪質ないたずらとしか思えないクソまみれの汚物仕様なのである。
ここからはプラグインを絶対に正しくインスコすることができない。クソだ。正しいプラグインの場所をあえて教えないという、Adobeというクソ企業がそのまんまクソなのである。
というわけで、rootで以下のコマンドを入力して、己の手でインスコしようじゃないか。
# yum --enablerepo=rpmforge install flash-plugin
いじょ。
※補足
ブリッジ接続すると、ホストOSからゲストOSへsambaはつながるが、ゲストOS内で外部へ接続できなくなる!という輩が大量発生しているのか?
どうにもこうにもよくわからんが、いろいろなPCを使って、あえてその状況を作り出してみた。原因は以下のようなものになると思う。ありがたい解決法として子々孫々伝えるが良い。
【ホストOS側】セキュリティソフトのファイアウォールが遮断している
【ゲストOS側】/etc/sysconfig/network-scripts/ifcfg-eth0 の内容が間違えている
- 一度セキュリティソフトを停止させてゲストOSで外部へ接続してみる。接続できればセキュリティソフトが原因。セキュリティソフトのファイアウォールの設定で「ブリッジ接続を許可する」などの設定があれば、許可する設定にしておこう。瞬時に繋がるようになるはずだ。
【ゲストOS側】/etc/resolv.confの設定が間違えている
- IPアドレスの指定に注意。BOOTPROTOはstaticにする
- 当然IPADDRが実際に存在するIPアドレスと重複していてもダメだ
- とくにGATEWAYが間違えていると確実に外部へつながらない
【ゲストOS側】そもそもネットワークサービスが起動していない
- ホストOS側のDNSサーバと同じものを指定しなければいけない。
nameserver 111.222.333.444、など、ホストOS側のDNSと同じ者を書いておく。
【ホストOS側】チェックサムのオフロードが有効になっている
- rootになり、 service network start でネットワークサービスを実行。ゲストOS起動時に自動敵に実行させるには、同じくrootで chkconfig network on でOK
というわけで、上記解決策は“上から順番に”試してみると良い。
- マイコンピュータ右クリック>プロパティ>ハードウェアタブ内にある「デバイスマネージャ」を開く
- ネットワークアダプタ内にある、実際に使っているネットワークカードを右クリックしてプロパティ
- 詳細設定タブのプロパティ欄にある「Checksum Offload」や「チェックサム」などと書かれた項目を選択し、値を「Disable」もしくは「無効」などにする(Windowsの再起動が必要)
それでは良きVMplaeryライフを送られんことを切に願う。
もうおわり。
facebook
twitter
google+
fb share