CentOSを仮想化して開発用WEBサーバーを構築する

先日、開発用WEBサーバ兼ファイルサーバーとして自宅で運用していた格安サーバー機が故障したことを報告した。

パソコンの電源を入れて一瞬ぶいーんとファンが回るが、すぐに電源が落ちてしまうという異常の原因は、電源ユニットに問題があることが多い。PC電源ユニットが故障しているかどうかを簡単に確認するには、他の正常に起動しているPCで使用している電源を取り外して、問題が発生したPCにつないでみればよい。

ファイルサーバーはバッファローのNAS(LinkStation LS220D0202C)で運用することにしたので、24時間稼働し続けるサーバー機はとりあえず必要なくなったのだが、このままでは開発用WEBサーバーが使えない。

先日、自宅LANでファイルサーバーとして使用していたサーバー機が故障してしまったことを紹介した。この故障を機に、自宅のファイルサーバーをNAS(ネットワークハードディスク)で運用することを決断。バッファローのNASでRAID1搭載 2TBモデルの「LinkStation LS220D0202C」を購入し運用を始めてみたのでレビューしたい。

開発用WEBサーバーはウェブサイトを開発、テストする時だけ使えればいいので、そのためだけにわざわざサーバー機を修理するのも面倒だ。

そこで、Windows上にLinuxの仮想サーバーを構築し、その仮想サーバー上に開発用WEBサーバー機能を構築することにした。

VMware Workstation PlayerでCentOSを仮想化

Linuxの仮想化を行うために使用する仮想化ソフトウェアとしては「VMware Workstation Player」を利用する。

VMware Workstation Player
OSを仮想化するためのソフトウェア。
1 台のPC上で別のオペレーティングシステムを分離して実行することができる。
個人利用、非商用での利用の場合、無償で使用することが可能。

仮想サーバーとして構築するLinuxディストリビューションは、CentOSを使用し、Windows7上で動作させることにする。

CentOS
CentOSは、企業向けではデファクトスタンダードとなっている有料版Linux「Red Hat Enterprise Linux(RHEL)」のクローンOS。
RHELは有料だが、CentOSは無償で利用することができ、RHELと非常に高い互換性を有している。
利用率は、Ubuntu、Debianについで3番目に大きく、RHELのクローンだけに安定性が非常に高いという特徴を持つ。

VMware Workstation PlayerでCentOSをインストール

VMware Workstation PlayerでCentOSをインストールする一連の流れは、以下の記事で解説しているので参照してほしい。

CentOS 7(Linux)を使う必要があったのでVMware Workstation Playerで仮想マシンを構築してみた。この記事では、LinuxディストリビューションのCentOS 7をVMware Workstation Playerを使用してWindows上にインストールする方法を紹介する。

ただし、上記のインストールではデスクトップクライアント目的を前提とした解説になっている。

今回はWEBサーバー目的でCentOSをインストールするので、インストール中の設定を以下の通り変更してインストールを行う。

また、今回デスクトップ環境はインストールされないので、インストール完了後の初期セットアップやgnome-initial-setup等は表示されないので注意してほしい。

仮想マシン作成時の設定

ネットワークアダプタの設定を変更

固定IPで運用したいのでネットワークアダプタの設定を変更しておく。

VMware Workstation Playerにて新規仮想マシンの作成を行う最終画面で、「ハードウェアのカスタマイズ」をクリックする。

左の欄から「ネットワークアダプタ」を選択。

「ネットワーク接続」を「ブリッジ:物理ネットワークに直接接続」に変更し「閉じる」ボタンをクリックする。

CentOSインストール時の設定

ソフトウェアの選択

インストーラーのソフトウェアの選択画面で、ベース環境として「ベーシックwebサーバー」を選択する。

右側の「選択した環境のアドオン」では、個人的に使いそうなものを考えて以下のアドオンにチェックを入れた。

  • Java プラットフォーム
  • ネットワークファイルシステムクライアント
  • PHPサポート
  • Python
  • Webサーブレットエンジン
  • 開発ツール

ネットワークとホスト名

ネットワークとホスト名の設定で、固定IPの設定を行う。

「IPv4のセッティング」タブをクリックし、以下の手順で設定する。

①方式を手動に変更。

②追加ボタンをクリック

③IPアドレス情報を入力

④DNSサーバーアドレスを設定

設定が終わったら「保存」をクリックする。

なおホスト名は「centos-web」と設定した。

インストールの完了

CentOSのインストールが完了後、再起動を行って以下のログイン画面が表示されたら成功だ。

今から各種設定を行っていくので、rootユーザーでログインしておこう。

CentOSインストール後の基本設定

WEBサーバーを構築する前に、CentOSインストール直後に行っておいた方がいい設定をやっておく。

なお設定はvimを使用して行うことにする。

SELinuxの無効化

SELinuxは個人用途のサーバーには必要ないので無効化しておく。

以下のコマンドを入力してSELinuxの設定ファイルを開く。

# vim /etc/selinux/config
SELINUX=enforcing

の箇所を

SELINUX=disabled

に変更して保存し、CentOSを再起動させる。

パッケージのアップデート

以下のコマンドを入力しパッケージを最新状態にする。

# yum update

不要サービスの自動実行を停止

不必要な自動起動サービスを停止させておく。

各サービスを停止させるには、以下のsystemctlコマンド行を実行する。

### 監査メッセージをログファイルに出力
# systemctl disable auditd.service

### mDNSを通して名前解決を提供
# systemctl disable avahi-daemon.service

### HDDの障害予測サービス
# systemctl disable smartd.service

### 自動バグ報告ツール
# systemctl disable abrt-ccpp.service
# systemctl disable abrt-oops.service
# systemctl disable abrtd.service

### 外部ストレージアレイ管理
# systemctl disable libstoragemgmt.service

サーバーの時刻同期設定

Chronyを使ってサーバーの時刻の同期を行わせる。

最初に一度時刻を同期しておく

# ntpdate ntp.nict.jp

Chronyの設定は、/etc/chrony.confファイルで行う。

設定を行う前に設定ファイルをバックアップしておく。

# cp /etc/chrony.conf /etc/chrony.conf.org

次にvimでchrony.confを開く。

# vim /etc/chrony.conf
初めの方にある以下の記述をすべてコメントアウトしておく。
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
そして以下のように「server ntp.nict.jp iburst」を追記する。
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

server ntp.nict.jp iburst

編集が終わったらファイルを保存する。

次に「chronyd」を再起動させて設定を反映させれば完了。

# systemctl restart chronyd

同期の動作テスト

下記コマンドを入力し、同期がうまくいっているか確認する。

# chronyc sources

以下のように、同期先のサーバー名に*マークがついていれば正常に同期ができている。

SSHDの設定

SSHDの設定を変更してセキュリティを強化しておく。

SSHDの設定は、「/etc/ssh/sshd_config」ファイルで行う。

設定を行う前に設定ファイルをバックアップしておく。

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org

次にvimで設定ファイルを開く

# vim /etc/ssh/sshd_config
rootユーザーのログインを禁止する

38行目にある

#PermitRootLogin yes

から以下のように先頭の#を削除しyesをnoに変更する。

PermitRootLogin no

パスワードなしでのログインを禁止

64行目にある

#PermitEmptyPasswords no

から以下のように先頭の#を削除する。

PermitEmptyPasswords no

以上の編集が終わったらファイルを保存しsshdを再起動させる。

# systemctl restart sshd

ファイアウォール機能の無効化

開発用のローカルでしか使用しないサーバーなので、ファイアーウォールは必要ない。

そのためファイアウォール機能は無効化させておく。

まず、以下のコマンドでファイアウォール機能を停止させる。

# systemctl stop firewalld

そして以下のコマンドでファイアウォールの自動機能を停止させる。

# systemctl disable firewalld.service

Apache(httpd)の初期動作確認

ベース環境をベーシックwebサーバーとしてCentOSをインストールしたのでApache(Webサーバーソフト)はすでにインストールされている。

なので、以下のコマンドを入力してApacheを起動させよう。

# systemctl start httpd

LAN内のPCからWEBブラウザでサーバーのIPアドレスにアクセスしてみて、以下のウェルカムページが表示されれば、ひとまずWEBサーバーの構築は成功だ。

Apacheの自動起動設定

サーバーを再起動した時に自動でApacheが起動するように設定をしておく。

# systemctl enable httpd

Apacheの詳細設定

Apacheの必要な設定を行う。

httpd.confの編集

Apacheの設定は「/etc/httpd/conf/httpd.conf」を編集して行う。

まずは設定ファイルのバックアップ。

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
バックアップしたらvimで設定ファイルを開く
# vim /etc/httpd/conf/httpd.conf

サーバー管理者のメールアドレス変更

86行目の管理者メールアドレスの設定

ServerAdmin root@localhost

を任意のメールアドレスに変更する。

ServerAdmin 任意のメールアドレス

サーバー名の変更

95行目のサーバー名の設定で

#ServerName www.example.com:80

#を削除しCentOSのホスト名に変更する。

ServerName centos-web:80

CGI,SSIの許可

CGI、SSIを許可するため、144行目

Options Indexes FollowSymLinks

を以下に変更する。

Options Includes ExecCGI FollowSymLinks

.htaccessの許可

.htaccessが利用できるように、151行目

AllowOverride None

を以下に変更する。

AllowOverride All

DefaultCharsetの無効化

文字化け対策として317行目

AddDefaultCharset UTF-8

を以下の通りコメントアウトする。

#AddDefaultCharset UTF-8

ファイルの保存

全ての設定が完了したら、保存してVimを終了させる。

autoindex.confの編集

ディレクトリのファイル一覧を表示させないうように、/etc/httpd/conf.d/autoindex.confを編集する。

まずはバックアップ

# cp /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/autoindex.conf.org

Vimでautoindex.confを開く。

# vim /etc/httpd/conf.d/autoindex.conf
23行目の以下の箇所で、Optionsで始まる行を
<Directory "/usr/share/httpd/icons">
Options Indexes MultiViews FollowSymlinks
AllowOverride None
Require all granted
</Directory>

以下の通り変更する。

<Directory "/usr/share/httpd/icons">
Options MultiViews
AllowOverride None
Require all granted
</Directory>

変更したら保存して終了する。

Apacheの再起動

全ての編集が終わったら、以下のコマンドを入力してApacheを再起動させよう。

# systemctl restart httpd

テストページの作成と確認

ドキュメントルートにテスト用HTMLファイルを作成して正常に表示されるかチェックしてみる。

下記コマンドでドキュメントルートに移動。

# cd /var/www/html

Vimでindex.htmlファイルを作成

# vim index.html

以下の内容でファイルを作成し保存、終了する。

<html>
<head>
<title>test</title>
</head>
<body>
<h1>Test</h1>
<p>This is test page.</p>
</body>
</html>

WEBブラウザでWEBサーバーのIPにアクセスして、以下のように表示されたら成功だ。

Apacheを安全に使うための設定

Apacheをより安全かつ管理しやすくするため以下の設定を行っておく。

/var/wwwの所有権の変更

/var/www以下の所有権をapacheに変更する。

# chown -R apache:apache /var/www

/var/wwwにSGIDパーミッション設定

今後、/var/www以下に作られたファイル群の所有グループを全てapacheにするためSGIDパーミッションを設定しておく。

# chmod -R 2770 /var/www

apacheグループにユーザーを追加

ユーザーアカウントでウェブコンテンツを編集できるようにアパッチグループに使用するユーザーを追加する。

# gpasswd -a ユーザー名 apache

まとめ

この記事では、VMware Workstation Playerを使用してWindows上にCentOSのWebサーバーを構築する方法を紹介した。

これで、とりあえずHTMLのみの普通のウェブサイトは表示できるようになった。

しかし、まだMySQLデータベースのインストールやPHPの設定を行っていないのでWordPress等を使用することができない。

次回は今回構築したサーバー上でMySQLやPHPを使用できるようにLAMP環境を構築したいと思う。

レクタングル広告(大)広告