端くれプログラマの備忘録 ホスティング [ホスティング] Apacheバーチャルホストの設定 (CentOS 7.1)

[ホスティング] Apacheバーチャルホストの設定 (CentOS 7.1)

Apacheのインストール

$ sudo yum -y install httpd

ブート時の自動起動設定

$ sudo systemctl enable httpd.service

バーチャルホストごとのパブリックディレクトリを作成

$ sudo mkdir -p /var/www/foo.com/public_html
$ sudo mkdir -p /var/www/foo.com/logs
$ sudo mkdir -p /var/www/bar.com/public_html
$ sudo mkdir -p /var/www/bar.com/logs
$ sudo chown -R $USER:$USER /var/www/foo.com
$ sudo chown -R $USER:$USER /var/www/bar.com
$ sudo chmod -R 755 /var/www

バーチャルホストごとの設定ファイル格納ディレクトリを作成

$ sudo mkdir /etc/httpd/sites-available  ←全バーチャルホストの設定を格納
$ sudo mkdir /etc/httpd/sites-enabled    ←公開バーチャルホストの設定を格納
$ sudo vi /etc/httpd/conf/httpd.conf
IncludeOptional sites-enabled/*.conf    ←末尾に追加

バーチャルホストごとの設定ファイルを作成

$ sudo vi /etc/httpd/sites-available/foo.com.conf
<VirtualHost *:80>
  ServerName www.foo.com
  ServerAlias foo.com
  DocumentRoot /var/www/foo.com/public_html
  ErrorLog /var/www/foo.com/logs/error_log
  CustomLog /var/www/foo.com/logs/access_log combined
</VirtualHost>

↓以下はhttpd.confからコピペして変更
#
# Relax access to content within /var/www/foo.com.
#
<Directory "/var/www/foo.com">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

# Further relax access to the default document root:
<Directory "/var/www/foo.com/public_html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    #AllowOverride None ← .htaccessを使いたいので変更
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

$ sudo vi /etc/httpd/sites-available/bar.com.conf
....

バーチャルホストを公開してApacheを起動

$ sudo ln -s /etc/httpd/sites-available/bar.com.conf /etc/httpd/sites-enabled/bar.com.conf
$ sudo ln -s /etc/httpd/sites-available/foo.com.conf /etc/httpd/sites-enabled/foo.com.conf
$ sudo apachectl restart

ログローテートの設定変更

デフォルトだと標準インストールのログしかローテートされないので、バーチャルホストのログもローテートされるように設定を追加しておく。

$ sudo vi /etc/logrotate.d/httpd
/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}
/var/www/foo.com/logs/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}
/var/www/bar.com/logs/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

参考サイト

Apache ウェブサーバーで .htaccess を利用するには | XpressOne Knowledge Base 「サポート技術情報」
http://kb.xpressone.net/2566

【apache】httpd.confの文法チェックを行う
http://www.kishiro.com/apache/config_syntax_check.html

Apacheのログを日毎にしてみる – yk5656 diary
http://d.hatena.ne.jp/yk5656/20140523/1402455511