古くからあるシステムの動作環境をローカル(Mac)に作ろうと思って、VirtualBoxでいろいろやったので、今後のためにメモ。(今後さらにCentOS6の開発環境を作るということはあるのだろうか・・・。ありそうだけど。)
VirtualBoxとVagrantをインストール
Homebrewは入っているものとして、下記のとおりインストール。
brew install virtualbox
brew install vagrant
Vagrant Boxを使おう
CentOS6を一からインストールするのはかったるいので、Vagrant Boxを使用します。
mkdir centos6
cd centos6
vagrant init generic/centos6
vagrant up
CentOS6のVagrant Boxは、generic/centos6
が素性が良さそうで、こまめにアップデートもされているので採用決定。
これだけで、CentOS6の導入完了。
IPアドレスの固定と同期フォルダの設定
Vagrangfile
に少し設定を追加します。デフォルトの状態ではコメントアウトされている部分を有効にして、少し書き加えるのが良いでしょう。
まずIPアドレスを固定で設定します。Mac側からゲストOSであるCentOS6にアクセスできるようになります。
config.vm.network "private_network", ip: "192.168.33.xx"
同期フォルダの設定は下記のとおり。
同期元"."
と、同期先"/vagrant"
だけで良いのですが、ファイルオーナー等を指定したい場合はowner
とgroup
を指定します。
config.vm.synced_folder ".", "/vagrant", owner: "abc", group: "abc"
後は、vagrant halt
して、再度vagrant up
でOK。
selinuxとiptables
CentOS7以降やUbuntuに慣れると、この辺の操作を忘れがちになりますね。以前は、CentOS6のことしか知らなかったのに・・・。
まず、selinuxが有効だとセキュリティ的には良いけど、なかなか面倒なことになりがち。あくまで開発環境なので、/etc/sysconfig/selinux
を下記のように編集して、selinuxは無効にしてしまいます。
SELINUX=disabled
次はファイアウォールのiptables。デフォルトではSSHのポートだけ空いているので、/etc/sysconfig/iptables
を編集して、HTTPのポートも開けておきましょう。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
この1行をSSH(22)の行の下あたりに書けば良いかと。
ApacheとPHP
yum install httpd php
いちおう、これで問題なし。PHPのモジュールが必要な場合は、適宜導入します。(後でphpMyAdminのインストールをすれば、MySQL接続等に必要なモジュールは一気に導入されます。)
MySQL
yum install mysql mysql-server mysql-devel
こんな感じでMySQLはインストールできるのですが、導入されるのはかなり古い5.1系。せめて5.6系を使おうとすると、下記のようにします。
sudo yum remove mysql*
sudo yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
#sudo yum-config-manager --disable mysql56-community
#sudo yum-config-manager --enable mysql55-community
sudo yum install mysql mysql-devel mysql-server
これでMySQL5.1が削除され(デフォルトのMySQLがインストール済みの場合)、MySQL5.6がインストールされます。
(ちなみに、コメントアウトしている部分を実行すると、MySQL5.5になります。)
このようにMySQLのバージョンを上げた場合は、MySQL自体のuserテーブルの構造が変わっていたりするので、データのアップグレードを行います。
mysql_upgrade -u root -p
phpMyAdmin
yum install phpmyadmin
デフォルトではローカルホストからしか接続出来ないようになっているので、/etc/httpd/conf.d/phpMyAdmin.conf
を編集して、内部ネットワークからのアクセスだけ許容します。
CentOS6のデフォルトではApache2.2系のため、下記の場所にAllow from 192.168.
の行を追加します。
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
Allow from 192.168.
</IfModule>
インストールと設定ファイルの更新が終わった後で、Apacheを再読み込みします。
service httpd reload