【CentOS6】Webサーバー セットアップ on VMware Fusion (1)

ローカル（自分のPC内）でのLAMP環境構築のための、CentOS6 Webサーバーのセットアップ手順を解説します。
凄く長い記事です（苦笑）。
作業もけっこう時間がかかると思います。

**注意!!**
あくまで外部からアクセスできないローカル用として解説しますので、セキュリティ的に重要な点をいくつか省いたり、使い勝手を優先してます。絶対に同じ手順で公開サーバーを構築しないください。セキュリティ的に深刻な問題が生じることがあります。

#CentOS DVDイメージのダウンロード
1. [CentOS公式サイト](https://www.centos.org)へアクセス
2. 「Get CentOS Now」をクリック
3. ページ下部「Order Versions」の「then click here」をクリック
4. 「CentOS Linux Version」が「6」の行で、「x86_64」をクリック（※32bit版の場合は「i386」をクリック）
5. 「Actual Country」の下のリンクのいずれかをクリック（ftp.iij.ad.jp がおすすめ）
6. 「CentOS-6.x-x86_64-bin-DVD1.iso」をクリックしてダウンロード（※LiveCD、LiveDVDと間違えないように注意！）
7. 「CentOS-6.x-x86_64-bin-DVD2.iso」をクリックしてダウンロード


#VMware Fusion
Mac用のVMware Fusionバージョン6での操作です。バージョンによって少し異なってくると思います。
またWindowsのVMware Player、VMware Workstation、あるいはVirtualBoxなどの他の仮想環境でも基本的には同様です。

##仮想マシンの作成
1. 「ファイル」メニューから「新規…」
2. **「続ける」をクリックしてはダメ！**（英語版でインストールされてしまったり、いろいろ問題が生じる場合があります）
3. 「詳細なオプション」をクリック
4. 「カスタム仮想マシンを作成」を選択し、「続ける」をクリック
5. *オペレーティングシステムの選択*: 左のボックスで「Linux」を選択し、右のボックスで「CentOS（64ビット）」を選択する（※32bit版の場合は「CentOS」を選択する）
6. 「続ける」をクリック
7. *仮想ディスクを選択*: 「新しい仮想ディスクを作成」をチェックし、「続ける」をクリック
8. *完了*: 「設定のカスタマイズ」をクリック
9. 保存ダイアログが開くので、作成する仮想マシンの名前を入力して「保存」をクリック
10. 仮想マシンの画面が開き、「<仮想マシンの名前>の設定」というコントロールパネルが開く
11. 「CD/DVD(IDE)」をクリック
12. 「CD/DVDドライブを有効にする」を「オン」にする
13. プルダウンメニューから「ディスクまたはディスクイメージを選択…」を選択
14. ファイル選択ダイアログが開くので、ダウンロードしたCentOS DVDイメージの1枚目（CentOS-6.x-x86_64-bin-DVD1.iso）を選択して「開く」
15. 「<仮想マシンの名前>の設定」コントロールパネルを閉じる

##IPアドレス範囲の確認
この手順ではWebサーバーとしてCentOSをインストールしますので、固定IPアドレスを割り当てる必要があります。VMware FusionではIPアドレスの範囲がランダムに決められています（VMware Fusionのインストール時に自動的に決まる）ので、そのIPアドレス範囲を事前に確認しておきましょう。

1. 「アプリケーション」→「ユーティリティ」の「ターミナル」を起動する
2. 次のコマンドを実行する `ifconfig` （※Windowsでは コマンドプロンプト で `ipconfig` コマンドを使って同様の内容を確認できます）
3. 表示された内容から「vmnet8」という名前を探し、その項目の「inet xxx.xxx.xxx.1」の部分を確認する。

「inet」に続く xxx.xxx.xxx.1 の「 **xxx.xxx.xxx.** 」 の部分が、仮想マシンで使用されるIPアドレスの範囲を表します。この部分を控えておきましょう。次の「CentOS 6のインストール」の途中で使用します。

###IPアドレス設定に関する各パラメータ
- サーバーのIPアドレス: xxx.xxx.xxx.3 〜 254 のいずれか
- ネットマスク: 24 または 255.255.255.0
- ゲートウェイ: xxx.xxx.xxx.2
- DNSサーバー: xxx.xxx.xxx.2

####例）
※vmnet8 の inet が 172.16.15.1 の場合
- サーバーのIPアドレス: 172.16.15.3 〜 254
- ネットマスク: 24 または 255.255.255.0
- ゲートウェイ: 172.16.15.2
- DNSサーバー: 172.16.15.2

#CentOS 6 のインストール

1. 仮想マシンを起動する
2. 仮想マシンの画面をクリックし、カーソル（ポインタ）を仮想マシン側に入れる
3. *Welcome to CentOS 6.x!*: 上下矢印キーで「Install or upgrade an existing system」を選び「Return」
3. *Disc Found*: Tabキーで「Skip」を選択し「Return」
4. *CentOS 6*: 「Next」をクリック
5. *What language 〜*: 「Japanese（日本語）」を選択して「Next」
6. *このシステム用の適切なキーボードを選択します*: 「日本語」を選択して「次」
7. *どちらのタイプのストレージデバイスにインストールしますか？*: 「基本ストレージデバイス」をチェックして「次」
8. *ストレージデバイスの警告*: 「はい。含まれていません。〜」をクリック
9. *このコンピュータのホスト名を指定〜*: インストールするコンピュータの名前を「ホスト名.ドメイン名」のように設定します。ホスト名、ドメイン名いずれも決まっていない場合は、デフォルトの「localhost.localdomain」のままでも構いません。
10. **注意！** ホスト名を入力したら **「ネットワークの設定」**をクリック（まだ「次」をクリックしてはダメ！）
11. *ネットワーク接続*: 「有線」→「System eth0」を選択し「編集」をクリック
12. *System eth0の編集*: 「自動接続する」にチェック
13. 「IPv4のセッティング」をクリック
14. 「方式」で「手動」を選択
15. 「アドレス」の欄の右の「追加」をクリック
16. 「アドレス」に、"IPアドレスの確認"で控えた **xxx.xxx.xxx.** を入力し、続けて **3〜254** のいずれかの数字を入力する。（すなわち、xxx.xxx.xxx.3〜254 と入力する。 **これがこのサーバーのIPアドレス**になります）
17. Tabキーを押すと、隣の「ネットマスク」の欄にカーソルが入ので、「24」と入力する
18. さらにTabキーを押すと、隣の「ゲートウェイ」の欄に移り、 **xxx.xxx.xxx.** に続けて **2** と入力する（すなわち、ゲートウェイは xxx.xxx.xxx.2 です）
19. 「DNSサーバー」の欄に、ゲートウェイと同じアドレス **xxx.xxx.xxx.2** を入力する
20. **注意！** アドレス、ネットマスク、ゲートウェイ、DNSサーバー の値をよく確認してください。誤りがあると後で（初心者には）ちょっと面倒なことになります
21. 各入力値を確認したら「適用」をクリック、続けて「ネットワーク接続」を「閉じる」
22. 「次」をクリック
23. *使用するタイムゾーンの中で〜*: 「選択した都市」で「アジア/東京」を選択
24. 「システムクロックでUTCを使用」のチェックをはずす
25. 「次」をクリック
26. *rootユーザーはシステムの管理用に〜*: rootパスワードを設定します。 **絶対に**忘れないようにしましょう。今回はローカル用としてのインストールですので、単純、簡単なパスワードでも問題ありません。
27. rootパスワードを入力したら「次」をクリック
28. ※脆弱なパスワードを設定しようとすると「パスワードが弱すぎます」という警告がでます。構わずせっていしたいならば「とにかく使用する」をクリック
29. *どのタイプのインストールをしますか？*: 「全ての領域を使用する」をチェックし「次」
30. *ストレージ構成をディスクに書き込み中*: 「変更をディスクに書き込む」をクリック
31. *CentOSのデフォルトインストールは最小限インストールです〜*: インストールする内容の構成を選びます。今回は「Web Server」をチェック
32. 「今すぐカスタマイズ」をチェックして「次」
33. 追加するパッケージを選択します。以下を **追加** で選択してください。

	- データベース
		- MySQLデータベースサーバー
	- 開発
		- その他の開発
		- 開発ツール

35.「次」をクリック

以上でインストールが始まります。
インストールが完了すると、「再起動」ボタンが出ますので、クリックして再起動しましょう。

#インストール後のセットアップ
ここからはCentOSのインストールを終えた後のセットアップ手順です。
再起動したらrootユーザーでログインしてください。

##基本設定
###ユーザーの追加
巷でよく、日常的にrootユーザーでログインして作業しているのを見かけます。
これは **非常に悪い癖** です。
インストール後はまず一般ユーザーを追加して、以後、一般ユーザーでログインするようにしましょう。
root権限が必要な場合は **sudo**コマンドを使って作業しましょう。

ここではユーザー「webmaster」を追加します。

```sh:ユーザー追加、パスワード設定コマンド
useradd webmaster
passwd webmaster

New password: <パスワードを入力>
Retype new password: <もう一度パスワードを入力>
```

脆弱なパスワードを入力すると「BAD PASSWORD」という警告がでますが、気にしなくて大丈夫です。

###sudoコマンド
次に、webmasterユーザーがsudoコマンドを使えるようにし、また他のユーザーがsudoコマンドを使用するのを制限します。
具体的には、webmasterユーザーを wheelグループに追加し、wheelグループのユーザーだけが sudoコマンドを使用できるようにします。

```sh:ユーザーをwheelグループに追加
usermod -G wheel webmaster
```

```sh:sudoの設定
visudo
```

visudoコマンドは、viエディタを使ってsudoの設定を行うコマンドです。
したがってviエディタが使えることが前提になります。

※viエディタの使い方は各自調べて学んでください。サーバーの構築・管理には必須スキルです。

visudo の画面が表示されたら、以下の行を探してください。
※似た内容の行がもう一つありますのでよく確認してください。

```text:
# %wheel        ALL=(ALL)    ALL
```

この行の先頭の「# 」を消して、visudo を保存＆終了してください。

```text:
%wheel        ALL=(ALL)    ALL
```

###suコマンドの無効化
suコマンドは便利ですが、rootパスワードの入力を必要とする点でセキュリティ的にあまり好ましいコマンドではありません。
そこでsuコマンドを無効化します。

viエディタで /etc/pam.d/su というファイルを開き、編集します。

```sh:suコマンドの無効化
vi /etc/pam.d/su

#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth           include         system-auth
↑この行をコメントアウトする
.
.
.
```

/etc/pam.d/su の 「auth include system-auth」の行頭に「#」を入れてコメントアウトしてください。

```sh:suコマンドを無効化した状態
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
#auth           include         system-auth
.
.
.
```

変更したらviを保存＆終了してください。

###sshdの設定
SSHサーバーの設定を行います。
ポイントは「rootユーザーでログインできないようにする」です。

本来は公開鍵認証の設定も行うべきですが、ローカル用のサーバーということでここでは割愛します。

SSHサーバーの設定は /etc/ssh/sshd_config というファイルを編集して行います。

```sh:SSHサーバーの設定
vi /etc/ssh/sshd_config

.
.
#PermigRootLogin yes
←ここに設定を追加
.
.
.
```

実際のところ、追加する場所はファイルの末尾でも構わないのですが、わかりやすくするために上記の位置に追加します。
以下の内容を追加してください。

```text
PermitRootLogin no
```

追加したら保存＆終了しましょう。
続けて、SSHサーバー（sshd）を再起動します。

```sh:sshdの再起動
service sshd restart
```

###ネットワーク設定の確認
インストール時のネットワーク設定が正しくできているかを確認します。
正しくできていない場合のリカバリーは少々手間がかかるのでここでは割愛します。

まず、外部のサーバーへの疎通を確認してみましょう。

```sh:Googleへping
ping www.google.com
```

問題が無ければ、Mac側からこのサーバーへ疎通しているかどうかを確認します。
Macのターミナル（Windowsではコマンドプロンプト）でpingを打ってみましょう。

```sh:Macからping
ping サーバーのIPアドレス
```

ここで指定する「サーバーのIPアドレス」は、CentOSのインストール時に設定したIPアドレスです。

いずれも問題がなければOKです。
一旦ログアウトしましょう。

```sh:ログアウト
exit
```


##基本設定その2
###/etc/hostsの設定
Mac（ホストマシン）からサーバー（ゲストマシン）にアクセスする際、ホスト名が利用できると便利です。
そこで、Mac側の /etc/hosts ファイルを編集して、サーバーのIPアドレスにホスト名を割り当てます。

```text:/etc/hostsの編集
vi /etc/hosts

  サーバーIPアドレス    ホスト名
```

###SSHでログイン

以降はSSHでサーバーにアクセスして作業します。（その方がいろいろ便利で扱いやすいですので）

Macでは「ターミナル」アプリで次のコマンドによりSSHアクセスできます。

```sh:SSHでアクセス
ssh webmaseter@ホスト名
```

※WindowsではTeraTermやPoderosaなどのターミナルソフトを使用してください。


###ファイアウォールの無効化
今回はあくまでローカル用のサーバーを構築しますので、ファイアウォールは無用です。
したがってファイアウォールを無効化します。

※公開サーバーを構築する場合は、ファイアウォールを適切に設定しなければなりません。

```sh:ファイアウォールの無効化
service iptables stop
service ip6tables stop
sudo chkconfig iptables off
sudo chkconfig ip6tables off
```

###SELinuxの無効化
SELinuxもローカル環境には無用ですので無効化します。
SELinuxの設定は /etc/selinux/config というファイルを編集して行います。

※公開サーバーを構築する場合は、SELinuxを適切に設定することが望ましいです。

```sh:SELinuxの無効化
sudo setenforce 0
sudo vi /etc/selinux/config

.
.
SELINUX=enforcing    ←この行を変更する
.
.
.
```

上記の行を「SELINUX=disabled」に変更し、保存＆終了してください

```text
.
.
SELINUX=disabled    ←この行を変更する
.
.
.
```

###システム全体のアップデート
CentOSのインストールDVDがリリースされた後にアップデートされたソフトウェアを更新します。
かなり時間がかかる場合があります。

```sh:システムのアップデート
sudo yum -y update
```

###再起動
システム全体のアップデートが完了したら、一旦再起動します。

```sh:再起動
sudo shutdown -r now
```


以上でCentOS 6のインストール、セットアップは完了です。
続いてWebサーバー、MySQLデータベースなどの設定を行います。

続きは [【CentOS6】Webサーバー セットアップ on VMware Fusion (2)]() へ。