先日、開発用WEBサーバ兼ファイルサーバーとして自宅で運用していた格安サーバー機が故障したことを報告した。
ファイルサーバーはバッファローのNAS(LinkStation LS220D0202C)で運用することにしたので、24時間稼働し続けるサーバー機はとりあえず必要なくなったのだが、このままでは開発用WEBサーバーが使えない。
開発用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をインストールする一連の流れは、以下の記事で解説しているので参照してほしい。
ただし、上記のインストールではデスクトップクライアント目的を前提とした解説になっている。
今回は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環境を構築したいと思う。
コメント