鉄馬の工具箱

te2uma(てつうま)のブログです。調べ物のメモなどを共有します。

このエントリーをはてなブックマークに追加

VirtualBoxでWindowsにCent OS 6.4の開発環境を構築する

VPSなどを借りてWebアプリケーションをCentOS上で走らせる場合、ローカル環境にも本番環境に近いCentOS環境を構築できると便利です。そこで、仮想化ツールの「VirtualBox」を使って、WindowsにCentOSの仮想化環境を構築する手順を紹介します。

最終的には、開発環境のサーバーをバックグラウンドで実行し(IPアドレスは192.168.56.101)て、rootではない管理ユーザー(ユーザー名:admin)としてSSHクライアントで接続し、利用する形にもっていきす。

IPアドレスやユーザー名は必要に応じて適宜読み替えてください。

なお、Webアプリの開発環境を想定しているので、セキュリティなどはあまり考慮していませんし、必要最低限のものしか入れていません。

  • さくらのVPSにあわせて、CentOS 6.4(Final)をインストール
  • 検証OSはWindows Vista/32bit、Windows 7 SP1/32bit

「VirtualBox」のインストール

VirtualBoxのダウンロードページ で、VirtualBox 4.2.16 for Windows hostsの「x86/amd64」から「VirtualBox-4.2.16-86992-Win.exe」をダウンロードし、実行します。バージョン番号は適宜読み替えてください。

設定はすべてデフォルトのものを選択した、という前提で進めます。

ホストキーの設定

Happy Hacking Keyboard(HHK)など、右Ctrlキーがないキーボードを使っている場合は、VirtualBoxのウィンドウから抜け出せなくなる可能性があるため、あらかじめホストキーを変更しておく必要があります。

[ファイル]-[環境設定]の「入力」で、ホストキーの右のボックスをクリックし、ホストキーに設定したキーを押下してください。

注意

仮想マシンのウィンドウを操作中にマウスカーソルが消えた場合は、入力がキャプチャーされているので、あわてずにホストキー(デフォルトは右のCtrlキー)を押すこと。

CentOSのインストールディスクの入手

ISOディスクイメージを日本の ミラーサイト から入手します。例えば、JAISTのFTPサーバーにある32ビット版のネットインストーラーは以下です。

仮想マシンの作成

Virtual Boxを起動し、[新規]ボタンを押して手順を進めます。

名前を入力し(「CentOS」など)、タイプに「Linux」、バージョンに「Red Hat」を選択してください。

ネットワークの設定

作成した仮想マシンを選択した状態で、上部の「設定」ボタンをクリックします。

「ネットワーク」で、アダプタ1に「NAT」、アダプタ2に「ホストオンリーアダプタ」を指定します。アダプタ2は、「ネットワークアダプタを有効化」をオンにすると選択できるようになります。

CentOSのインストール

VirtualBoxマネージャーで作成した仮想マシンを起動し、「起動ハードディスクを選択」ウィンドウで、フォルダの形をしたボタンから先ほどダウンロードしたネットインストーラーを指定し、起動します。

以降、次の手順に従ってインストールを進めてください(触れていない部分があればデフォルト値)。

操作説明

  • Tabキーや矢印キーでカーソルを移動し、Enterキーで項目を選択できる
  • 項目一覧では、頭文字のキーを押すことで、カーソルをジャンプできる
  • このUIではテキストのコピペはできないので直打ちする
  1. 「Install or upgrade an existing system」を選択
  2. Disc Found: 「Skip」
  3. Choose a Language: 「English」
  4. Keyboard Type: 「jp106」
  5. Installation Method: 「URL」
  6. Networking Device: 「eth0」を選択。
  7. Configure TCP/IP: (デフォルト)
  8. URL Setup: 「ftp://ftp.jaist.ac.jp/pub/Linux/CentOS/6.4/os/i386/」(※上述の例の場合/適宜読み替え)
  9. Retrieving: (ディスクイメージのダウンロードに時間がかかるので、しばし待つ)
  10. CentOS: 「OK」
  11. Warning: 「Re-initialize all」
  12. Time Zone Selection: 「Asia/Tokyo」
  13. Root Password: (任意のパスワード、confirmにも同じものを)
  14. Partitioning Type: 「Replace existing Linux system」
  15. Writing storage configuration to disk: 「Write changes to disk」
  16. Package Installation: (しばし待つ)

Completeにきたら、いったんストップ。

上部のメニューから「デバイス」-「CD/DVDデバイス」-「CentOS-6.4-i386-netinstall.iso」を選択して、ネットインストーラーをアンマウントし(取り外し)、「Reboot」を選択します。

補足

rootのパスワードを指定する際に、単語が含まれているなど、安全性の低いパスワードを指定すると「Wead Passwork」というダイアログが表示される。「Cancel」で入力し直すか、「Use Anyway」でそのまま手順を進めること。

CentOSの初期設定

仮想マシンが再起動したら、rootでログインします。

localhost login: root
Password: (さっき設定したやつ/※入力文字は画面に表示されない)

ホストオンリーアダプターを有効にします。

vi /etc/sysconfig/network-scripts/ifcfg-eth1
ONBOOT=no
↓
ONBOOT=yes


BOOTPROTO=dhcp
↓
BOOTPROTO=static


(※以下を末尾に追加)
IPADDR=192.168.56.101
NETMASK=255.255.255.0
/etc/init.d/network restart

この段階で、ようやくputtyなどのSSHクライアントを使って外部から入れるようになる。 ここの例でのIPアドレスは192.168.56.101。

以降、バックグラウンドで仮想マシンを起動し、SSHクライアントで接続して使うので、ひとまず

shutdown -h now

と入力するなどして仮想マシンを落とし、VirtualBoxマネージャーも閉じる。

VirtualBoxのバックグラウンド実行

VirtualBoxのバージョンに合った「 VBoxHeadlessTray 」をダウンロードしてインストールする。 この記事の例では「VBoxHeadlessTray42Setup.exe」。

スタートメニューからインストールした「VBoxHeadlessTray」を実行し、対象の仮想マシンを選択して「OK」ボタンをクリックする。

補足

「Power on machine」で、VBoxHeadlessTrayの立ち上げと同時に仮想マシンも起動するかどうかを選択できる。オフにすると、仮想マシンの立ち上げが保留されるので、スタートアップにVBoxHeadlessTrayを登録しているけれどもリソースの関係で必要な時だけ仮想マシンを立ち上げたい、といった場合に便利。

SSHクライアントでのログイン

バックグラウンドで仮想マシンを起動した状態で、puttyなどのSSHクライアントからログインする (コピペが使えるようになる)。

ホスト名(IPアドレス)は「192.168.56.101」、ユーザー名は「root」を指定。

なお、当然のことながら仮想マシンの起動中はログインできない。状況はVirtualBoxマネージャーを立ち上げると、プレビューで確認できる。

その他の環境構築

管理ユーザーの追加

ここでは「admin」という名前の管理ユーザーを追加する前提で話を進めます。

useradd admin
passwd admin

管理者グループのみがrootになれるようにする

usermod -G wheel admin
vi /etc/pam.d/su
#auth       required        pam_wheel.so use_uid
↓(行頭の#を削除)
auth        required        pam_wheel.so use_uid

sudoを使えるようにする

visudo
## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL
↓(行頭の#を削除)
## Allows people in group wheel to run all commands
%wheel        ALL=(ALL)       ALL

新しく作った管理ユーザー(ここではadmin)でログインし直して、

su -

でrootになれること(入力するパスワードはrootのもの)、 を確認。

exit

で元のユーザーに戻れる。

sudo

も実行できるか確認しておく(こっちで入力するパスワードは自分のもの。ここではadminのもの)。

CentOSの更新

sudo yum -y update

iptablesの設定(ファイアウォール)

設定を間違えるとsshでアクセスできなくなることがあるので注意!

sudo iptables -L

vi iptables-init.sh
#!/bin/sh

iptables -F
iptables -X

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
#iptables -A INPUT -s 192.168.0.0/16 -j DROP

# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -A INPUT -p tcp --dport 9418 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo sh iptables-init.sh
rm iptables-init.sh

sudo iptables -L
sudo iptables-save | sudo tee -a /etc/sysconfig/iptables
sudo service iptables restart

SELinuxを無効にする

無効にしておかないと、mod_wsgiの設定まわりなどではまったりする。

sudo vi /etc/selinux/config
SELINUX=enforcing
↓
SELINUX=disabled

サーバーを再起動する

sudo reboot

Apache 2のインストール&設定

sudo yum -y install httpd

sudo service httpd start
sudo chkconfig | grep httpd
sudo chkconfig httpd on
sudo chkconfig | grep httpd

3: のところがonになればOK。

仮想サーバーとのファイル共有

WinSCP 」を使うと、ssh経由でファイルをやりとりできます。

puttyのようにホスト名に「192.168.56.101」を指定し、ユーザー名とパスワードを入力します。

ドキュメントルートの権限変更

デフォルトのドキュメントルートは「/var/www/html」。

root所有になっているので、管理者アカウントで読み書きできるように所有者を変更します。

sudo chown -R admin:admin /var/www

例えば、適当なindex.htmlを書いて、WinSCPを使って /var/www/html にコピーし、 ブラウザで http://192.168.56.101/ にアクセスすると確認できる (文字コードがUTF-8になっていないと文字化けすることアリ)。

このエントリーをはてなブックマークに追加