輝く僕らの学費

外の空気が大好き、そこそこ忙しい理系の男子大学生のぶちおです。

Linux

自宅サーバのApacheで仮想ホストをつくってhostsでホスト名を設定

投稿日:2017年12月27日 更新日:

自宅のテストサーバのApacheで、仮想ホストをつくって複数のWebアプリを同時に動かしたい。アクセス元となるPCでhostsを設定して、アクセスの際のホスト名ごとに各Webアプリが動くようにする。

一応、僕の環境

CentOS7、Apache2.4.x、LAN内にサーバと開発PCがそれぞれある。

名前ベースのバーチャルホスト

そのホストへのリクエストをホスト名(サーバ名)ごとに、違うドキュメントルートを設定できたりする。

できること

app1/index.phpでアクセス、/www/app1/index.phpを返す。

app2/index.phpでアクセス、/www/app2/index.phpを返す。

192.168.0.2/index.phpでアクセス、/www/app2/index.phpを返す。

こんなかんじでホスト名で分岐することができる。

やりかた

簡単にWebminを使ってみる

サーバ>Apache Webサーバを開き、「仮想ホストの作成」タブで簡単に作成できる。

webminのApache設定画面

app1/index.phpでアクセス、/www/app1/index.phpを返す。これを例として設定する。

ドキュメントルートにファイルを置くところのパス、サーバ名に使いたいホスト名app1を記述。

作成するを押して、前の画面でApacheの再起動をする。サーバ側は基本的なことはこれだけ。

クライアント側でhostsを設定

Windowsであればhostsファイルの場所は「C:\Windows\System32\drivers\etc\hosts」

場所が場所なので、管理者権限をつけてメモ帳などを起動して編集します。

コメントで例が書いてあるのでコピペして、接続先IPアドレス、ホスト名の順で記述。たぶんTab区切り。あと#が先頭に付いているのはコメントなので無視されます。

「192.168.0.2 app1

するとここで記述したホスト名にアクセスすると、その接続先IPアドレスに接続されるようになる。

この時点でブラウザでアクセスして接続できるか確認しておく

実はhostsで設定しても使えないホスト名がある。「*.dev」とか。

接続が拒否されるかんじのエラーでなければ大丈夫。

違うホスト名でアクセスしても同じ内容しか返さないときは、htttpd.confを編集する。

よく使うApacheの設定ファイルhttod.conf。場所は環境に寄りますが、参考程度に僕のは/etc/httpd/conf/httpd.confです。

webminであれば、サーバ>Apache Webサーバを開き、「グローバル設定」タブ内の、「設定ファイルの編集」の項目でブラウザから編集できる。

ファイルの一番最後の方にWebminがさっき生成してくれた設定が記述されている。名前ベースのバーチャルホストとして動かすための記述も必要になる。

NameVirtualHostって項目がそれ。これは設定ファイル内に1度記述されていればよいので、最初だけ書く必要がある。

NameVirtualHost *:80 //これを自分で追記する
<VirtualHost *>
DocumentRoot&nbsp;/www/app1
ServerName app1
<Directory "/www/app1">
allow from all
Options None
Require all granted
</Directory>
</VirtualHost>

いくつかのホスト名で同じ仮想ホストに接続する

app1でもgoodappでも192.168.0.2でも同じ内容を表示させることもできる。
これはhttod.confでやった。ServerNameのところらへんに追記すると見やすい。

ServerName app1
ServerAlias goodapp 192.168.0.2 //これを追記

スペース区切りで複数記述できる。

おわり

こんな感じで仮想ホストを作成できる。さらに仮想ホストを追加していく場合でも、同じように作業すればいいだけです。

-Linux

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

CentOS7にComposerを導入する

やっぱりまたComposerが必要なライブラリに出くわしてしまったので、パッケージ管理システムとやらComposerをCentOS7のサーバにインストールしていきます。 つい先週ぐらいに必要なのか…で …

no image

シェルスプリクトを書くときにやってしまったミス

シェルスプリクトを実行して、if文がうまく動きなかったときに、解決した方法とチェックすべきポイントを書き残しておく。

no image

Linuxで時刻の同期をする

モバイルノートにUbuntu系のLinux mintを入れて使っているが、バッテリー切らせたまま放置して時刻が狂ってしまうことがしばしばある。 さくっと自動で同期するコマンドを覚えておこう。