【バーチャルホスト】サブドメイン・DNSの設定覚書 設定(サーバ)編 いざ!版

how to

これの続き

サーバの設定

では、いよいよ設定です。

まず設定するファイルは一個だけです。

/etc/httpd/conf/ の中の

httpd.confってファイル

これです。FTPでダウンロードしちゃいましょう。

ただOSによっては、ある場所が違ったりします。

/usr/local/apache2/conf/httpd.conf

だったりまあいろいろ。

見つからない時はsshで検索しましょう。

[c]
find / -name httpd.conf
[/c]

あっ、ひとついい忘れてましたが、ここに書いてある文字をコピペしてsshに書きたい時普通の

ctrl+v とか使えません。

紹介したTera Termでは、コピーしたいものをctrl+cで普通にコピーしてTera Termの画面上で右クリックです。

コマンドなのに右クリックとか笑えるでしょ。

で、ダウンロードしたhttpd.confサクラエディターで開きます。

で「NameVirtualHost」位で検索してみてください。まあまあ下の方にあります。

[c]
# NameVirtualHost *:80
[/c]

頭についてる「#」ですが、これはコメントアウトです。コンピューターは読み飛ばします。

他のファイルもそうですが設定をコメントアウトしておいて、これを使いたければコメントを外しない。って感じのやつ多いです。

コメントアウトを消しちゃいましょ。

[c]
NameVirtualHost *:80
[/c]

これでこの行が有効になったってな具合です。

これを有効にすることでバーチャルホストをこのサーバではやりますよって宣言です。

最初の状態はやるかどうか分からないので、コメントアウトしてあってやりたいひとだけ「#」を外してねって事です。

で、次はいよいよexample.comと入力されていた場合はAを表示。blog.example.comと入力されていた場合はBを表示するという設定です。

これが本丸ですね。

まず、バーチャルホストを使う前はexample.comだけを表示していました。

なのでexample.comはどこを表示しろなんてのは敢えて設定していない場合がほとんどです。

てか、恐らく設定をいじっていなければ var/www/html の中の内容がexample.comにアクセスすると公開されていたと思います。

ただ、バーチャルホストを使うわけなので、こちらも設定しなくちゃダメです。

で、httpd.confのさらにしたのほうにこんなんがあります。

[c]
 
#<virtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</virtualHost>
 
[/c]

ピンときましたね。

設定をコメントアウトしておいて、これを使いたければコメントを外しない。って感じのやつですずばり。

中にdummyって文字も並んでるのでこれを自分のやつに書き換えれば良いんだなってのがわかりますね。

ただ、今回はある程度どの環境にも適応出来るように、環境によっては余分な記述もあるかもしれませんが、そのコメントアウト郡はそのままでこちらをhttpd.confの一番下に追記しちゃってください。

[c]
<virtualHost *:80>
# それぞれドメイン入力
ServerName example.com
ServerAlias example.com

# ホームページを設置する場所指定
DocumentRoot /var/www/html

# CGIが動くようにする設定
ScriptAlias /cgi-bin/ /var/www/html
<directory /var/www/html>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</directory>
</virtualHost>
[/c]

まずは、example.comの方を設定しました。

いままで通り var/www/html にホームページを入れておく設定です。

さらにこれと同じ記載をblog.example.comでもやります。

その時ホームページを入れておく場所を分かりやすくしたいので、

var/www/ の中に「blog」ってフォルダを作っちゃいましょ。

ftpで普通に「ファルダ作成」で作れます。

作り終わったら、さっき書いたhttpd.confの下にさらに追記しちゃいましょ。

[c]
<virtualHost *:80>
# それぞれドメイン入力
ServerName blog.example.com
ServerAlias blog.example.com

# ホームページを設置する場所指定
DocumentRoot /var/www/blog

# CGIが動くようにする設定
ScriptAlias /cgi-bin/ /var/www/blog
<directory /var/www/blog>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</directory>
</virtualHost>
[/c]

以上で設定は完了です。

書き換えたhttpd.confを保存してftpでアップロードしてやってください。

って、ここで多分アップロードできないですよね?

前に説明したパーミッションの問題です。

sshで一旦、

[c]
chmod 777 /etc/httpd/conf/httpd.conf
[/c]

httpd.confをアップロードしたら、

[c]
chmod 644 /etc/httpd/conf/httpd.conf
[/c]

に戻しましょ!

これで設定は完了ですが、まだ反映されません。

ウェブ関係の部分を再起動したら反映します。

再起動は、

[c]
etc/rc.d/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
[/c]

これで設定完了です。

チェックしてみてください。

example.comにアクセスすると、 /var/www/html の中身が見える
blog.example.comにアクセスすると、 /var/www/blog の中身が見える

となれば大成功です。

よければお試しあれ。

※できない。間違ってる。ばかじゃない。ってことがあればコメントかTwitterかはてブなどで。

【追記】

バーチャルホストの設定のところで

[c]
<virtualHost *:80>
# それぞれドメイン入力
ServerName example.com
ServerAlias example.com

# ホームページを設置する場所指定
DocumentRoot /var/www/html

# CGIが動くようにする設定
ScriptAlias /cgi-bin/ /var/www/html
<directory /var/www/html>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</directory>
</virtualHost>
[/c]

[c]
AllowOverride None
[/c]

これはhtaccessを使用しないように制限しているやつなので、使い人は

[c]
AllowOverride All
[/c]

にしておいてね。

コメント

タイトルとURLをコピーしました