質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.87%

CentOS7のApache2.4.6でVirtualHostのDocumentRootが効かない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,479

glow

score 6

 前提・実現したいこと

さくらVPSにて環境構築中です。
バーチャルホストを設定する際にドハマりしてしまいました。

/etc/httpd/conf.d/vhost.confでDocumentRootを設定したものの、効きません。
本来ならば、「/var/www/html/a」フォルダ内の「index.html」を表示したいのですが、実際は「/var/www/html/」を参照しているようで、「Testing 123..」画面が表示されてしまいます。

ご存知の方いらっしゃいましたらお力添え頂きたく存じます。

 環境

利用サーバー : さくらのVPS
OS : CentOS 7
Apache : 2.4.6

 該当のソースコード

/etc/httpd/conf/httpd.confの内容。
読込が重複するため、BameVirtualHostをコメントアウト。

IncludeOptional conf.d/*.conf
#NameVirtualHost *:80


/etc/httpd/conf.d/vhost.confで作成。
mod_sslにてSSL化後、httpd.confに記述していた設定を移動しています。

NameVirtualHost (ip address):80

<VirtualHost (ip address):80>
ServerName a.com
CustomLog logs/a-access.log common
ErrorLog  logs/a-error.log
AddDefaultCharset UTF-8
DocumentRoot /var/www/html/a
<Directory "/var/www/html/a">
    AllowOverride All
    Require all granted
</Directory>
# 移動した設定 start
RewriteEngine on
RewriteCond %{SERVER_NAME} =a.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
# 移動した設定 end
</VirtualHost>

<VirtualHost (ip address):80>
ServerName b.com
CustomLog logs/b-access.log common
ErrorLog  logs/b-error.log
AddDefaultCharset UTF-8
DocumentRoot /var/www/html/b
<Directory "/var/www/html/b">
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>
# 移動した設定 start
Include /etc/httpd/conf/httpd-le-ssl.conf
# 移動した設定 end

 試したこと

NAMEベースである為、
NameVirtualHost *:80 をNameVirtualHost (ip address):80へ変更し、
<VirtualHost *:80>を<VirtualHost (ip address):80>にした。

記述順序変更や末尾スラッシュ削除、細かな修正を何度も繰り返したものの、改善されず・・。
無効な設定にした場合はページ表示されなくなる為、「/etc/httpd/conf.d/vhost.conf」が反映されていること確実であると思われます。


# httpd -t -D DUMP_CONFIG 2>/dev/null | grep -n -B 1 '^# In'
1:# In file: /etc/httpd/conf/httpd.conf
--
80-EnableSendfile on
81:# In file: /etc/httpd/conf.d/autoindex.conf
--
154-IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
155:# In file: /etc/httpd/conf.d/phpMyAdmin.conf
--
204-</Directory>
205:# In file: /etc/httpd/conf.d/ssl.conf
--
252-</VirtualHost>
253:# In file: /etc/httpd/conf.d/userdir.conf
--
264-</Directory>
265:# In file: /etc/httpd/conf.d/vhost.conf
--
313-</VirtualHost>
314:# In file: /etc/httpd/conf/httpd-le-ssl.conf
--
326-  SSLCertificateKeyFile /etc/letsencrypt/live/3810.pro/privkey.pem
327:# In file: /etc/letsencrypt/options-ssl-apache.conf
--
341-  LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
342:# In file: /etc/httpd/conf/httpd-le-ssl.conf
--
345-</VirtualHost>
346:# In file: /etc/httpd/conf.d/welcome.conf

https://teratail.com/questions/138373
からヒントを得て、SSLの場合は設定を複数記述する必要性があることを理解しました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

その後、mod_ssl設定時に書き加えられていた、
「Include /etc/httpd/conf/httpd-le-ssl.conf」の中身を確認したところ、ここにSSLの記述設定が加えられており、DocumentRoot設定が「/var/www/html/」となっていました。

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin root@a.com
DocumentRoot /var/www/html
ServerName a.com
SSLCertificateFile /etc/letsencrypt/live/a.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/a.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/a.com/chain.pem
</VirtualHost>
</IfModule>

これを「DocumentRoot /var/www/html/a」と変更した結果、無事希望の動作をするに至りました。
お騒がせいたしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.87%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる