CentOS7のhttpdでドメインの設定
更新日 : 2019年12月11日
ドメインの取得やDNSレコードの設定が完了し、CentOS7のサーバーの準備(LAMP環境の構築など)ができていれば、WEBサーバーであるhttpd
でドメインの設定をするといよいよ世にあるWEBページを運営できるようになります。
DNSレコードだけでも実は動く
LAMP環境の構築の後、DNSレコードの設定を適切に行っていれば、ドメインとサーバーのIPアドレスの紐付けはできているため、http://DNSレコードに登録したドメイン
でアクセスするとサーバーのテストページにアクセスが可能です。
以下の画像はDNSレコードでbecrazy.work
のドメインをLAMP環境を構築したサーバーのIP青ドレスに紐付けたあとのWEBページです。
今回は公開したいページを適切に公開し、セキュリティ的にも問題がないようにWEBサーバー(httpd
)の設定を行っていきます。
事前準備
事前準備としてhttpd
がインストールされているかどうかの確認と、設定ファイルのバックアップファイル作成を行います。サーバーにログインした状態で作業を進めましょう。
httpdがインストールされているか確認
今回はサーバーにhttpd
がインストール済みである前提で話を進めます。httpd
がインストールされているかどうか確認したい場合にはhttpd -v
コマンドで確認ができます。また、そのときにhttpd
のバージョンが2.4
であることを確認してください。
バックアップファイルの作成
httpd
がインストールされている場合には、今回はhttpd
の設定ファイルを書き換える必要があるため、設定ファイルのバックアップを事前に作成しておきましょう。
# バックアップファイルを事前に作成
$sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bk
# バックアップファイルが作成されたかどうか確認
$ls /etc/httpd/conf
sudo
を利用しているため、パスワードの入力を求められた場合には入力してください。
httpdの設定変更
いよいよWEBサーバー(httpd
)の設定変更を行っていきます。まずは先程バックアップファイルを作成したhttpd.conf
ファイルの編集を行います。
httpd.confの設定変更
# httpdのディレクトリへ移動
$cd /etc/httpd
# 設定ファイルの編集
$sudo vi conf/httpd.conf
viエディタを起動したら早速ファイルを編集していきます。
### 旧
DocumentRoot "/var/www/html"
### 新(コメントアウト)
#DocumentRoot "/var/www/html"
### 旧
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
### 新(コメントアウト)
#<Directory "/var/www">
# AllowOverride None
# # Allow open access:
# Require all granted
#</Directory>
### 旧
<Directory "/var/www/html">
#
# 色々英語で書いてある...
Options Indexes FollowSymLinks
#
# 色々英語で書いてある...
AllowOverride None
#
# 色々英語で書いてある...
Require all granted
</Directory>
### 新(コメントアウト)
#<Directory "/var/www/html">
#
# 色々英語で書いてある...
# Options Indexes FollowSymLinks
#
# 色々英語で書いてある...
# AllowOverride None
#
# 色々英語で書いてある...
# Require all granted
#</Directory>
### 旧
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
### 新(コメントアウト)
#<Directory "/var/www/cgi-bin">
# AllowOverride None
# Options None
# Require all granted
#</Directory>
### 旧
がもともと書いてある内容です。### 新(コメントアウト)
以下の内容に書き換えてください。不要な部分をすべてコメントアウトしています。編集が終わったらviエディタで保存・終了を行ってください。
さらに、編集したhttpd.conf
の内容にミスがないかどうかを確認するために以下のコマンドで確認します。
# 設定ファイルにミスがないか確認
$apachectl configtest
Syntax OK
Syntax OK
と表示されれば設定は問題なしということになります。
もしこれ以外の表示が出てしまったら、再起動できなくなってしまうため、バックアップファイルから復元してください。
変更した設定について説明します。
DocumentRoot
ドキュメントルートの設定です。既存の設定をコメントアウトで削除しています。<Directory "/var/www">〜</Directory>
/var/www
ディレクトリ内部専用の設定項目が羅列されています。今回は不要なのでコメントアウトで削除しています。<Directory />〜</Directory>
という別の設定でサーバーのファイルシステム全体のHTTPアクセスを拒否している状態になります。<Directory "/var/www/html">〜</Directory>
上記と同様です。/var/www/html
ディレクトリ内部の設定項目をすべてコメントアウトしています。<Directory "/var/www/cgi-bin">〜</Directory>
上記と同様です。
ここまで設定が完了していれば、現状はサーバー全体が非公開状態になる設定になります。(httpd
が用意しているテストページ以外)
テストページの表示設定の削除
現在の設定だとテストページだけが表示される設定になっているので、テストページも表示しないように設定しましょう。
現在/etc/httpd
のディレクトリにいる状態かと思います。以下のコマンドでテストページを表示しない設定にします。
# welcome.confというファイル名をwelcome.conf.bkというファイル名に変更
$sudo mv conf.d/welcome.conf conf.d/welcome.conf.bk
httpd
のテストページは/etc/httpd/conf.d/welcome.conf
というファイルで設定されています。そのファイル名を変更しました。
なぜこの作業を行ったのかと言うと、先程編集したhttpd.conf
の最後の行にあるIncludeOptional conf.d/*.conf
という設定に関係があります。これは/etc/httpd/conf.d/
ディレクトリに存在する*.conf
(*
はどんな名前でも良いという意味)を設定ファイルとして読み込む設定です。そのためwelcome.conf
というファイル名をwelcome.conf.bk
というファイル名に変更することで読み込まない設定になります。
ドメインに対してアクセスさせたいページの設定
最後にようやく本題である、ドメインでアクセスさせたときに表示したいページの設定を行います。
自分の構築したいWEBページの設定は、httpd.conf
にサービスの設定を書くと管理がしづらいため、先程利用した/etc/httpd/conf.d
ディレクトリを利用するのが理想的です。このディレクトリに設定ファイルを作成して自分のWEBサービスを提供できるように設定していきます。
# 設定ファイルを新規作成して編集
$sudo vi conf.d/becrazy.work.conf
このように、取得したドメイン名をファイル名とし、.conf
ファイルにしてあげれば管理がしやすいです。.conf
ファイルでさえあれば設定は読み込まれるため自分のわかりやすいファイル名で作成してください。
viエディタが起動したら以下の内容へ編集しましょう。
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName becrazy.work(DNSレコードで設定したドメイン)
CustomLog logs/becrazy.work.access.log combined
ErrorLog logs/becrazy.work.error.log
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
内容を以下で解説します。
<VirtualHost *:80> 〜 </VirtualHost>
仮想ホストの設定です。ドメインやIPアドレスごとに、一つのサーバーで複数のWEBサービスを提供するための設定です。今回はWEBサービスを1つだけ設定しますが、追加しやすいようにVirtualHostで設定しています。*:80
はポート80番の自身のIPアドレスすべてで受け付けるリクエストという意味です。DocumentRoot
ドキュメントルートですVirtualHost
の設定内部でのみ有効なドキュメントルートになります。仮想ホストごとに別のドキュメントルートを設定できます。ServerName
DNSレコードで設定したドメインを設定するサーバー名設定です。この設定のおかげで、同一IPアドレスでも複数のドメインでWEBサービスを分ける設定が可能です。上記の設定であればhttp://becrazy.work/〜
というドメインでのアクセスをすべてこの仮想ホストで捌くことになります。もちろん自身のドメインの設定に書き換えて利用してください。CustomLog
・ErrorLog
通常のアクセスログとエラーが起きた際のエラーログの設定です。ログの出力ファイル名を指定します。通常/etc/httpd/
からの相対パスで記述するので注意しましょう。お好きなファイル名を記載して構いません。(筆者はいつもドメイン名に合わせてファイル名を決めます。)<Directory "/var/www/html">
この仮想ホスト内で利用するディレクトリ専用の設定です。Options FollowSymLinks
このディレクトリ内のオプション設定です。設定の詳細は今回は省きます。ドキュメントはこちらを参照してください。AllowOverride All
Directory設定で利用する設定項目の1つで、設定項目の別ファイル(.htaccess
)での上書きを許可する設定です。PHPなどで.htaccess
ファイルを利用する場合にはAll
にします。不要な場合にはNone
で書き換えます。Require all granted
このディレクトリ内のアクセス許可設定です。今回であれば/var/www/html
ディレクトリ内部のアクセスをすべて許可します。
設定項目が多くて大変ですが、一つ一つがセキュリティや動作に関わるのでゆっくりで良いので理解していきましょう。
今回の設定で一番おもしろいのがVirtualHost
とServerName
です。仮想ホスト設定により、1つのサーバーで複数のWEBサーバーを構築可能です。後はDNSレコードの設定とServerName
の設定を合わせてあげれば自動的にレスポンスを振り分けます。
この設定方法を「同一IPアドレスによる、名前ベースのVirtualHost設定」と言います。
ここまで編集が終了し、エディタにて保存終了したら、以下のコマンドで設定ファイルの設定に間違いがないか確認しましょう。
# 先程のシンタックスチェックをもう一度行う
$apachectl configtest
Syntax OK
確認が大丈夫そうであれば以下のコマンドでhttpd
を再起動します。
# 再起動コマンド。問題なければ何も出力されない
$sudo systemctl restart httpd
これで再起動が問題なければ、設定は完了です。
ブラウザで確認
最後にテスト用のファイルを作成してブラウザでアクセス確認を行いましょう。
# 先程仮想ホストとして設定したドキュメントルートへ移動
$cd /var/www/html
# index.htmlファイルを作成
$sudo vi index.html
viエディタで適当なHTMLを書いて保存終了してください。
最後に設定したDNSレコード及び先程の設定に従ってブラウザでアクセスしましょう。筆者の場合であればhttp://becrazy.work
にアクセスすることでindex.html
の内容が表示されます。
httpd
のデフォルトの設定ではindex.html
が省略可能になっています。
そのためhttp://設定したドメイン/index.html
でも同一のページが表示されます。
タグ
-
前の記事
CentOS7でLAMP環境の構築
-
次の記事
Linuxのディレクトリ別容量の確認