独り言


ウェブサーバー(Apache)にバーチャルホストを設定する

ページトップへ


今回はウェブサーバーの設定をします。CentOS7にインストールされているのはApache2.4 がインストールされていると思います。バーチャルホストのDocumentRootはWindowsとの共有フォルダーを使用します。
※ここでの設定は、ローカルの開発環境を前提としています。外部に公開されるサーバーの場合、別途セキュリティー面で必要な追加設定が必要です。


  1. ウェブサーバーがインストールされているか確認し、起動する。

    ◆ CentOS へログインして作業をします。
    ウェブサーバーのバージョンを確認します。
    [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
    
  2. 共有フォルダーのアクセス権を設定し、ブラウザでアクセスする。

    引き続きCentOSへログインして作業です。
    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
    
    
    ◆ ウェブブラウザを開き、アドレス欄に「127.0.0.1」と入力します。
    • 左のような Apache のテスト画面が表示されれば、ウェブサーバーは無事立ち上がりました。「http403」エラーが表示されアクセス権が無い旨のメッセージが出た場合は、上記設定がされているか再度確認をしてください。
      引き続き、バーチャルホスト(開発しているサイト)の設定を行います。

  3. バーチャルホストを設定する

    バーチャルホストは、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 off
    EnableSendfile 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
    
    • 再起動完了後、ウェブブラウザで「127.0.0.1」にアクセスして下さい。先ほど作ったhtml 「Test Page」が表示されれば、設定は完了です。

    このままでは、複数のバーチャルホストへの接続ができませんので、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」と入力することでサイトの閲覧ができます。同様にして必要なサイトの設定を追加してください。

wordprass