質問: 名前ベースの仮想ホストにサブドメインを作成するにはどうすればよいですか? 私は名前ベースのホスティングをしていて、それをmy.address.comと呼びましょう。私の友人は「プレーン」アドレスaddress.comを持ち、ssh経由でアクセスできる仮想マシンをくれました。彼はまた、ポートでいくらか魔法をかけました、そして今、apacheをインストールした後、私は/var/wwwを通してmy.address.comにアクセスできました。それで、問題は、どうすればtest.my.address.comのようなサブドメインを作成できるのでしょうか。 apacheのlistenディレクティブ には魔法があるはずですが、理解できません。また、apacheを使用してローカルで利用可能なサイトを作成する方法も知っていますが、同じではありません。
回答: サブドメインを作成できるようにするには、いくつかのことを確認する必要があります。dns他のユーザーがtest.my.address.comに到達できるようにするには、まずその名前を仮想マシンのipアドレスに解決できる必要があります。どうすればできますか?友人がすでに行っている可能性が最も高いことは、address.comゾーンに aレコード を作成することでした。これは、myがvmのipアドレスを指すようにします。ここまでは順調ですね。しかし、test.myはどうですか?まだエントリがない可能性があります。友達は、ゾーンに*.myを追加することもできます(同じipアドレスをポイントすることもできます)。次に、something.my.address.comへのすべてのリクエストがvmに送信されます。すごい!apache仮想ホストvmに到達すると、apacheはリクエストの処理方法を知る必要があります。ここで、apache httpサーバーの virtual hosts 機能を使用します。私は通常debianで実行するので、/etc/apache2/sites-availableの設定例でこれを説明します。 test.my.address.comというファイルを用意して、情報を入力してみましょう。<virtualhost *:80> servername test.my.address.com serveradmin webmaster@my.address.com documentroot /var/www/test.my.address.com/ <directory /> options followsymlinks allowoverride none </directory> <directory /var/www/test.my.address.com/> options indexes followsymlinks multiviews allowoverride all order allow,deny allow from all </directory> errorlog ${apache_log_dir}/test.my.address.com.error.log # possible values include: debug, info, notice, warn, error, crit, # alert, emerg. loglevel warn customlog ${apache_log_dir}/test.my.address.com.access.log combined </virtualhost> このファイル内のキー設定は servernameディレクティブ です。これは、このserverをどの名前で使用できるようにするかをapacheに伝えます。追加の名前は serveraliasディレクティブ で指定できます。debianも使用している場合は、ファイルを作成した後でsudo a2ensite test.my.address.comとsudo invoke-rc.d apache2 restartを忘れないでください。