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

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

ただいまの
回答率

88.80%

【Apache(MacOS)】Apacheのバーチャルホストの設定方法がわからない

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 2,680

nnahito

score 1858

 前提

当方、Apacheについてはコピペレベルでの操作しか行ったことがありません。
故に知識はまだまだ乏しいです。

 質問概要

MacOSのApacheで自宅サーバを運営したいのですが、その中に2つのサイトを運営したいと考えています。

現在は、NoIPのサービスを利用していますが、
例えば
http://aaaaa.xxxx/ を Aのサイトフォルダ へ
http://bbbbb.xxxx/ を Bのサイトフォルダ へ
と振り分けることは可能なのでしょうか? 

 質問

MacOSX(El Capitan)のApacheでサーバを立てています。(外部公開目的です)
そこで、複数のサイトを運営したいと考えているのですが、
以前「【Apache】MaxOSのApacheで複数のサイトを外部公開する方法」で質問させていただいたところ、
VirtualHost」というものを設定すればできるとご回答頂きました。

しかしながら、このVirtualHostの設定方法がわからないため質問させていただきます。


まず、サーバとして使用しているMacの中身ですが、
当時設定方法がわからなかったため、
ユーザフォルダの中のサイトフォルダ(~/Sites/)をApacheのルートフォルダに設定しています。
(これは、NoIPのURIにアクセスすると「It Works!」のフォルダにしか移動できなかったためです。)


次に、現在どこまで設定を行ったかについてですが、頂いた情報から以下のページを見つけ、そこを参考に設定を行ってみました。
MacのApacheでヴァーチャルホストを使ってテスト環境の構築

1)まず、サンプル通り~/work/というフォルダを造りそこを2つ目のサイト用のフォルダとします。

2)次に、httpd.confの以下の行の「#」を外しました。
Include /private/etc/apache2/extra/httpd-vhosts.conf

3)/private/etc/apache2/extra/httpd-vhosts.confに以下のデータを追加しました。
※「ServerName」はこれでいいのでしょうか?
※「ServerNameはネット上に存在しないアドレスにするよう注意してください」と書いてありましたが…適当でいいのでしょうか…?

<virtualhost *:80>
DocumentRoot "/Users/ユーザ名/Sites/"
ServerName local.hogehoge1
ErrorLog "/private/var/log/apache2/local.howtohp.com-error_log"
CustomLog "/private/var/log/apache2/local.howtohp.com-access_log" common
</virtualhost>

<virtualhost *:80>
DocumentRoot "/Users/ユーザ名/works/"
ServerName local.hogehoge2
ErrorLog "/private/var/log/apache2/local.howtohp.com-error_log"
CustomLog "/private/var/log/apache2/local.howtohp.com-access_log" common
</virtualhost>

4)/etc/hostsに以下のデータを追加しました。

127.0.0.1 local.hogehoge1
127.0.0.1 local.hogehoge2

5)エラーチェックの後、再起動


この後、NoIPのアドレスを割り当てたいのですが、どのようにして割り当てればよいのでしょうか。
ご存じの方がいらっしゃいましたら、ご教授の程よろしくお願い致します。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 3

checkベストアンサー

+3

Apache httpd バージョン 2.2 であれば、httpd.conf で NameVirtualHost *:80 と設定する必要があります。

ローカルでの確認は /etc/hosts に

127.0.0.1    ServerNameその1  ServerNameその2


と記述して、ブラウザからアクセスしてみてください。
あるいは、curl コマンドが利用できるのであれば、

curl -H "Host: ServerNameその1" http://127.0.0.1/
curl -H "Host: ServerNameその2" http://127.0.0.1/


でも確認できると思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/28 17:54

    ご回答有り難うございます。

    NameVirtualHost *:80
    をhttpd.confに記載し、

    $ apachectl -t

    を叩くと、
    NameVirtualHost has no effect and will be removed in the next release
    と出ました。

    調べてみると、どうやら私のApacheが2.4.16で、
    2.4からこの記述が要らなくなったのですね……
    http://qiita.com/pugiemonn/items/d65ff04b3b609f5bbf4c#_reference-7c6c9d79f0522f56cdf7

    ではなぜ、なおさら動かないのだ……

    キャンセル

  • 2016/04/28 17:57

    すいません、一つわかりました。
    ヴァーチャルホストは動いているようです。
    アクセスしたら別々のページが表示されました。

    しかし、片方は、「403 Forbidden」が返って来ますね…

    キャンセル

  • 2016/04/28 18:59

    すいません解決しました!

    Virtualhost側に、
    <Directory /Users/ユーザID/FileServer/>
    Require all granted
    </Directory>
    が必要だったみたいです!
    ありがとうございました!!

    ついでにまとめておきました!
    http://qiita.com/nnahito/items/728c9e0b670bbcf689ed

    キャンセル

+3

今回の場合、サーバーを外部に公開されるとのことなので、ServerNameはNoIP?で取得されているドメインを割り当ててください。
「ServerNameはネット上に存在しないアドレスにするよう注意してください」と書かれていた理由はおそらく通常のローカル環境で存在するアドレスを指定してHostに登録するとアクセスできなくなるからだと思います。
今回の場合は、公開されるもののようなので指定すればOKです。

NoIPを使ってないのでNoIP側での設定はわからないです。基本的には今まで使っていたような形で指定すれば良いかと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/02/17 03:14

    ご回答有り難うございます。

    >ServerNameはNoIP?で取得されているドメインを割り当ててください
    なるほど!
    早速設定してみましたが、ううん、よく分かりません……
    ローカルからのIPは同一かつポートが一緒なので確認ができませんね……
    この場合はどのように確認すればいいのでしょうか?

    キャンセル

  • 2016/02/17 07:27

    自宅のインターネット回線を使わずに Webページを見たら確認できるので、スマートフォンで、無線LANをオフにして、表示してみるのがいちばん簡単でしょうね。

    キャンセル

  • 2016/02/17 13:11

    >CHERRY 様
    ご回答有り難うございます。
    いつもはそうしているのですが、今ですときちんとつながっているかの確認ができず、また、更新のたびにWi-fiを切って確認…というのは面倒なのでお聞きしております。

    なお、現在はスマフォからも片方のアドレスしかつながりません…
    うまくVirtualHostが動作していないみたいです…
    原因など何か思いつかれますでしょうか?

    キャンセル

0

例えば

 http://aaaaa.xxxx/ のバーチャルホスト設定

<VirtualHost aaaaa.xxxx:80>
  ServerAdmin aaaaa.xxxxの管理者のメルアド
  ErrorLog "aaaaa.xxxxのエラーログのパス"
  CustomLog "aaaaa.xxxxのアクセスログのパス" common
  DocumentRoot aaaaa.xxxxxのドキュメントルート
  ServerName aaaaa.xxxx
  <Directory "aaaaa.xxxxのドキュメントルート">
    AddDefaultCharset utf-8
    AllowOverride All
    Options +Includes +FollowSymLinks +ExecCGI
    Options -MultiViews
    Require all granted
  </Directory>
</VirtualHost>

 http://bbbbb.xxxx/ のバーチャルホスト設定

<VirtualHost bbbbb.xxxx:80>
  ServerAdmin bbbbb.xxxxの管理者のメルアド
  ErrorLog "bbbbb.xxxxのエラーログのパス"
  CustomLog "bbbbb.xxxxのアクセスログのパス" common
  DocumentRoot bbbbb.xxxxxのドキュメントルート
  ServerName bbbbb.xxxx
  <Directory "bbbbb.xxxxのドキュメントルート">
    AddDefaultCharset utf-8
    AllowOverride All
    Options +Includes +FollowSymLinks +ExecCGI
    Options -MultiViews
    Require all granted
  </Directory>
</VirtualHost>

のようにしてみたらどうですか?
1.virtualhost の * をやめて個別に指定する
2.各ドキュメントルートのディレクトリについて<Directory>で明示的に設定する

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

同じタグがついた質問を見る