今回はウェブサーバーの設定をします。CentOS7にインストールされているのはApache2.4 がインストールされていると思います。バーチャルホストのDocumentRootはWindowsとの共有フォルダーを使用します。
※ここでの設定は、ローカルの開発環境を前提としています。外部に公開されるサーバーの場合、別途セキュリティー面で必要な追加設定が必要です。
ウェブサーバーのバージョンを確認します。 [root@localhost ~]# httpd -v Server version: Apache/2.4.6 (CentOS) Apacheの2.4.6 インストールされています。 Server built: Oct 19 2017 20:39:16 OS起動時にウェブサーバーが起動するようにします。 [root@localhost ~]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:httpd(8) man:apachectl(8) 起動が disabled になっていますので、設定を変更します。 [root@localhost ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. 起動時設定を確認します。 [root@localhost ~]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: inactive (dead) Docs: man:httpd(8) man:apachectl(8) 設定が変更されました。では、起動してみます。 [root@localhost ~]# systemctl start httpd
httpdのユーザーを調べます。 [root@localhost ~]# ps axu root 4752 0.0 0.1 409716 17996 ? Ss 15:54 0:00 /usr/sbin/httpd -DFOREGROUND apache 4753 0.0 0.0 270376 4276 ? S 15:54 0:00 /usr/sbin/httpd -DFOREGROUND apache 4754 0.0 0.1 411936 10496 ? S 15:54 0:00 /usr/sbin/httpd -DFOREGROUND ~省略~ ユーザーとプロセスが表示されます。httpd は「root」がセッションリーダーで、「apache」ユーザーのプロセスが待ち状態となっています。 続いて、共有フォルダー(ここでは以前に作成いたWebWork)のアクセス権を確認します。 [root@localhost ~]# ll /media 合計 8 drwxrwx--- 1 root vboxsf 8192 1月 12 08:06 sf_WebWork フォルダーの所有者が「root」グループが「vboxsf」となっています。 httpd のユーザー「apache」を「vboxsf」グループに所属させます。 [root@localhost ~]# gpasswd -a apache vboxsf ユーザ apache をグループ vboxsf に追加 httpd を再起動します。 [root@localhost ~]# systemctl restart httpd
バーチャルホストは、example.localhost example2.localhost のように、それぞれ別のサイトを構築する為の Apache の仕組みです。ここでは、「example.localhost」として設定を進めます。
事前に設定した共有フォルダ(ここではWebWork)の中にディレクトリーを作ります。
WebWork
|-example.localhost <=サイトのフォルダー
|-httpdocs <=サイトのデータを格納するフォルダー
|-logs <=サーバーのログを格納するフォルダー
何でもよいのでHTMLページを1ページ作り、index.html としてhttpdocs に保存します。
<!DOCTYPE html> <html lang="ja"> <head> <body> <h1>Test Page</h1> </body> </html>
次に、バーチャルホスト設定を行っていきます。CentOSにログインしてください。
バーチャルホスト設定ファイル用のディレクトリーを作成します。 [root@localhost ~]# mkdir /etc/httpd/vhosts.d 「/etc/httpd/conf/httpd.conf」を編集します。 [root@localhost ~]# vi /etc/httpd/conf/httpd.conf 347行目あたりにある、EnableMMAP、EnableSendfile を変更します。 # Defaults if commented: EnableMMAP On, EnableSendfile Off#EnableMMAP on<=コメントを外し設定をoffにします。 EnableMMAP offEnableSendfile on<=設定をoff にします。 EnableSendfile off ファイルの最後に次の一行を追加します。 Include vhosts.d/*.conf 設定を保存して閉じます。
「EnableSendfile off」「EnableMMAP off」は、VirtualBox でファイルを共有した場合に、ファイルの更新がキャッシュにより反映されない、画像が表示されない、クラッシュする等を回避する為の設定です。
次に、「exsample.localhost」の設定に移ります。以下の内容で「/etc/httpd/vhosts.d/example.localhost.conf」として保存してください。
◆example.localhost.conf の内容 <VirtualHost *:80> ServerName example.localhost DocumentRoot /media/sf_WebWork/example.localhost/httpdocs <=自分の設定に合わせて書き換えてください。 ServerAdmin foo@exsample.localhost <=自分のメールアドレスで構いません CustomLog /media/sf_WebWork/example.localhost/logs/access_log common ErrorLog /media/sf_WebWork/example.localhost/logs/error_log <Directory "/media/sf_WebWork/example.localhost/httpdocs"> Require all granted AllowOverride AuthConfig FileInfo Options FollowSymlinks Includes </Directory> </VirtualHost>
サーバーを再起動します。
設定を確認します。 [root@localhost ~]# apachectl -t Syntax OK エラーがある場合は、内容が表示されますので、修正してください。 共有フォルダーにhttpd の起動ユーザーである「apache」を追加します。この作業をしないと、ページのアクセス権が無いというエラーが出ます。 [root@localhost ~]" gpasswd -a apache vboxsf サーバーを再起動します。 [root@localhost ~]# systemctl restart httpd
このままでは、複数のバーチャルホストへの接続ができませんので、windows の「hosts」ファイルを編集します。
場所は、「C:¥Windows¥System32¥drivers¥etc¥hosts」です。
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
~省略~
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
::1 localhost
127.0.0.1 localhost
127.0.0.1 example.localhost <=追加します。
これで、ブラウザに「example.localhost」と入力することでサイトの閲覧ができます。同様にして必要なサイトの設定を追加してください。