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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

3回答

4014閲覧

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

nnahito

総合スコア2004

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2016/02/14 16:42

前提

当方、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のアドレスを割り当てたいのですが、どのようにして割り当てればよいのでしょうか。
ご存じの方がいらっしゃいましたら、ご教授の程よろしくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

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/03/18 16:32

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnahito

2016/04/24 04:56

ご返信遅くなってしまい、申し訳ありません。 >Apache httpd バージョン 2.2 であれば、httpd.conf で NameVirtualHost *:80 と設定する必要があります。 とのことですが、この「NameVirtualHost *:80」はhttpd.confの何処に記述するのでしょうか?
TaichiYanagiya

2016/04/24 08:02

NameVirtualHost の設定は、httpd.conf のトップレベルであればどこでもいいです。 標準でコメントアウトされていませんでしょうか。 まずは、ローカル環境で 2つのサイトを参照できることを確認してから、公開するといいと思います。
nnahito

2016/04/28 08: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 ではなぜ、なおさら動かないのだ……
nnahito

2016/04/28 08:57

すいません、一つわかりました。 ヴァーチャルホストは動いているようです。 アクセスしたら別々のページが表示されました。 しかし、片方は、「403 Forbidden」が返って来ますね…
nnahito

2016/04/28 09:59

すいません解決しました! Virtualhost側に、 <Directory /Users/ユーザID/FileServer/> Require all granted </Directory> が必要だったみたいです! ありがとうございました!! ついでにまとめておきました! http://qiita.com/nnahito/items/728c9e0b670bbcf689ed
guest

0

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

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

投稿2016/02/14 16:52

fagai

総合スコア2158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnahito

2016/02/16 18:14

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

2016/02/16 22:27

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

2016/02/17 04:11

>CHERRY 様 ご回答有り難うございます。 いつもはそうしているのですが、今ですときちんとつながっているかの確認ができず、また、更新のたびにWi-fiを切って確認…というのは面倒なのでお聞きしております。 なお、現在はスマフォからも片方のアドレスしかつながりません… うまくVirtualHostが動作していないみたいです… 原因など何か思いつかれますでしょうか?
guest

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>で明示的に設定する

投稿2016/03/18 02:10

HiroshiWatanabe

総合スコア2160

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問