PR

【CentOS】Apacheで検証用Web(HTTP)サーバを構築する方法【LPIC-2・LinuC-2対策】

Linux
スポンサーリンク

今回はCentOSでApacheを用いて検証用のWebサーバを構築する方法をご紹介します。

今回ご紹介するのはローカルの検証用の設定となりますので、
商用の環境や検証用でも外部に公開する用の設定でないことにご注意ください。

構築環境
OS:CentOS Linux release 8.0.1905 (Core)
Apache:Apache/2.4.37 (centos)
ユーザ:root権限
目的:ネットワーク機器の検証用などで検証用のWebサーバを構築する

※UbuntuなどのDebian系ディストリビューションをお使いの場合は、
 使用するコマンドが異なります。
 本記事では紹介していませんのでご了承ください。

ネットワークエンジニアにもWebサーバは必要

Webサーバと聞くとインフラエンジニアの中でも、
サーバエンジニアよりの知識かと思いますが、
現在はネットワークエンジニアでもだんだんと必要性が増してきている知識だと思います。

通常のルータの場合はPingさえあれば疎通確認などの検証することが可能です。
ネットワークエンジニアでもファイアウォールやSD-WANルータの案件を担当すると、
セッションやプロトコルを識別する関係で、Pingだけでは事足りず、
HTTPやDNSなどの様々なプロトコルで通信・疎通確認を行う必要があるかと思います。

簡易的な検証であればインターネットへの接続性があれば、
適当なWebサイトを閲覧することで代替可能ですが、
細かい検証やセキュリティの検証をしようとなると、
検証用のWebサーバが欲しいタイミングがあるかと思います。
そんなときに手っ取り早く検証用のWebサーバを用意する方法をご紹介していきます。

Apacheとは

Apache(アパッチ)はLinuxで最もポピュラーなWeb(HTTP)サーバソフトウェアです。

Apacheのシェア率は30%程度なので、いつも見ているサイトにも、
Apacheが使用されているかもしれません。
数値は下記サイトより引用。

『シェアが高い=情報量』が多いということです。
Apacheに関する書籍やこのサイト以外にも、
インストールや構築に関して紹介しているサイトがありますので、
この構築はどのようにするのか悩んだり、
エラーが発生してもググればなんとかなることが多いということです。

ApacheはLinux試験のLPIC、LinuCの202試験でも出題範囲となっています。
本記事だけではLPICやLinuCの主題範囲全てをカバーできていませんが、
検証環境を構築する分には十分に活用できるかと思います。

WebサーバソフトウェアにはApacheの他にも、
個人的になんと読めばわからないIT単語ランキング1位のNginx(エンジンエックス)があり、
Windows環境ではIIS(そのままアイアイエスと読みます)もあります。

Linuxの用意

今回はCentOS8を使用して構築を行います。
Linuxの構築環境についてはVirtual Box、VM Ware Player、ESXi、AWSなど、
お好きな環境で構築をお願いします。
Linuxのインストール方法については本記事では省略させていただきます。

Apacheインストールの前に

Apacheインストールの前に検証環境ですので、2つのおまじないをしておきます。

  1. SELinuxの停止
  2. firewalldの停止

SELinuxの停止

今回行う設定、確認程度ではSELinuxが有効の状態でも影響はないかと思いますが、
余計なところで引っかかりたくないので、念の為の停止しておきます。

vi /etc/selinux/config

“SELINUX=disabled”に変更します。

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

その後再起動を行います。
再起動後に晴れてSELinuxが無効となります。

reboot

SELinuxに関しては、こちらの記事でもう少し詳しく解説を行っています。

firewalldの停止

systemctl stop firewalld

デフォルトの状態ですとfirewalldが有効になっていますので、
HTTP(80)でアクセスすることができません。
部分的にHTTPのアクセスを許可することもできますが、
検証の場合は余計なところで引っかかりたくないので完全に停止しておきます。
再起動後をすると有効の状態に戻りますので、
再起動後は再度コマンドを実行してみてください。

これらのおまじないをしておくことで、
LinuxやApacheに関連するところ以外でのトラブルが起きづらくなります。
繰り返しにはなりますが、あくまでローカルの検証用の設定となります。

Apacheインストール方法

Apacheをインストールするためにインターネット環境へのアクセスが必要となります。

Apacheは以下のコマンドでインストールすることができます。

yum -y install httpd
[root@localhost ~]# yum -y install httpd
Last metadata expiration check: 0:54:37 ago on Sat 03 Jul 2021 08:13:31 PM EDT.
Dependencies resolved.
================================================================================
 Package           Arch   Version                               Repository
                                                                           Size
================================================================================
Installing:
 httpd             x86_64 2.4.37-39.module_el8.4.0+778+c970deab AppStream 1.4 M
Installing dependencies:
 apr               x86_64 1.6.3-11.el8                          AppStream 125 k
 apr-util          x86_64 1.6.1-6.el8                           AppStream 105 k
 httpd-filesystem  noarch 2.4.37-39.module_el8.4.0+778+c970deab AppStream  38 k
 httpd-tools       x86_64 2.4.37-39.module_el8.4.0+778+c970deab AppStream 106 k
 mod_http2         x86_64 1.15.7-3.module_el8.4.0+778+c970deab  AppStream 154 k
 centos-logos-httpd
                   noarch 85.8-1.el8                            BaseOS     75 k

・・・<省略>・・・

  httpd-filesystem-2.4.37-39.module_el8.4.0+778+c970deab.noarch
  httpd-tools-2.4.37-39.module_el8.4.0+778+c970deab.x86_64
  mod_http2-1.15.7-3.module_el8.4.0+778+c970deab.x86_64
  centos-logos-httpd-85.8-1.el8.noarch

Complete!

『Complete!』と表示されればインストールが完了しています。

Apacheの起動

インストールしただけの状態ではApacheはまだ起動していませんので、
起動は以下のコマンドで行います。

再起動後なども特に設定をしていない場合は、
Apacheは停止していますので起動が必要となります。

systemctl start httpd

コマンドの実行が正常に成功しても特にメッセージはありません。
逆に正常でない場合にエラーメッセージが表示されます。

[root@localhost ~]#
[root@localhost ~]# systemctl start httpd
[root@localhost ~]#

起動したら別の端末、もしくは自分自身のブラウザなどからアクセスしてみましょう。

http://X.X.X.X(IP Address)

以下のような画面が表示されればApacheが正しく起動してアクセスも行えています。
アクセスできない場合は上記で紹介した、
『firewalld』を停止し忘れていないか確認してみてください。

Apacheの設定

Apacheのメインの設定ファイルは、『/etc/httpd/conf/http.conf』です。
このファイルを『vi』などを用いて編集し、設定変更を行います。
LPIC・LinuCを勉強している方であれば、設定ファイルのパスに関しては出題されますので、
ぜひ覚えて欲しいものとなります。

ファイルは長いので、『cat』ではなく『less』などで確認するとよいかと思います。
一見するとファイル内に多く記載がありますので設定量が多く感じるかもしれませんが、
『#』で始まる部分に関してはコメントなので実際の設定部分はあまり多くありません。

[root@localhost ~]# cat /etc/httpd/conf/httpd.conf
#
# This is the main Apache HTTP server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
# for a discussion of each configuration directive.
#
# See the httpd.conf(5) man page for more information on this configuration,
# and httpd.service(8) on using and configuring the httpd service.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.

設定を変更した場合はApacheの再起動が必要となります。
Linuxの場合は設定ファイルを編集した場合、変更は即時反映されずに、
機器の再起動もしくはサービスの再起動が必要となります。

Apacheの再起動は以下のコマンドで実行します。

systemctl restart httpd

Apacheの設定変更

検証で用いる場合、よく変更するApacheの設定を2つご紹介します。

  1. Listen
  2. DocumentRoot

Listen

待ち受けるポート(リッスンポート)を設定します。
デフォルトでは『80』が設定されています。

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

リッスンポートを変更する場合は、『Listen␣81』のように記載します。
『␣』は半角空白を表しています。
複数インターフェース(IPアドレス)がある場合などで、
IPアドレスも指定したい場合は『12.34.56.78:81』のように、
IPアドレス:ポート番号のように半角コロン区切りで記載をします。

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 81

変更を行ったらブラウザでアクセスしてみましょう。
と、いきたいところですが、変更したらやることがありましたね。
Apacheの再起動をしないと変更した設定内容が反映されませんでした。

systemctl restart httpd

再起動が完了したらブラウザでアクセスしてみましょう。
ブラウザでアクセスする際にもデフォルトで80が使用されますので、
変更している場合は『http://192.168.1.1:81』
のように半角コロンと変更したポート番号を指定します。

検証でリッスンポートの変更目的として、
ポートフォワーディングなどの検証の際に変更することが多いです。

DocumentRoot

コンテンツのトップのディレクトリを指します。
デフォルトでは”/var/www/html”となっています。

検証の場合はこの設定を変更するというより、
このフォルダ配下にHTMLのファイルを作成したり格納していきます。

まずは以下のディレクトリへ移動します。

cd /var/www/html

今回は『index.html』というファイルを作成します。

vi index.html

ファイルの中身は以下の最小限のHTMLを記載します。

<html>
<head><title>nww blog</title></head>
<body>
<p>nww blog</p>
</body>
</html>

再度同じページにアクセスしてみましょう。
Apacheの設定ファイルを編集したわけではないので、Apacheの再起動は不要です。


先程作成したHTMLファイルの内容が表示されました。

ファイル名がindex.htmlの場合はファイル名を入力する必要がありません。
入力しても同じページが表示されるだけなので入力しても問題ありません。

ファイル名がindex.html以外の場合はそのファイル名を入力する必要があります。
『sample.html』というHTMLファイルを作成してみます。

<html>
<head><title>nww blog sample</title></head>
<body>
<p>nww blog sample</p>
</body>
</html>

アクセスする際は、
『http://x.x.x.x/sample.html』のようにURLを入力する必要があります。


先程作成した『sample.html』の内容が表示されました。

検証で確認する目的としては、
このURLはアクセスを許可・拒否するや、
URLに特定文字が含まれている場合は許可・拒否するというような、
静的なURLフィルタリングを確認する際に用いることが多いかと思います。

Tips:設定変更をする際に気を付けること

商用環境の場合は設定変更をする際に気を付けるポイントが2点あります。
2点のうちどちらか、どちらもしなくていい場合がありますが、
お作法的に強いられる場合がありますので覚えておいてください。

検証環境であれば、気にせずグッチャグチャにして良いと思いますが。。

  1. 設定変更用の設定ファイルを作成する
  2. デフォルト値はコメントアウトして残す

1つ目は新規で設定変更用のファイルを作成し、
デフォルトの設定ファイルは名前変更を行い、保存しておくという場合があります。
デフォルトの設定ファイルを『httpd.conf.default』のように名前変更し、
設定変更を盛り込んだファイルを『httpd.conf』という名称で作成する場合があります。

もしくは、
Apacheの設定は『#』を使うことでコメントアウトすることができます。
コメントとして読み込まれるので設定には影響を及ぼさないということです。
設定変更をする際ですが、以下のようにデフォルト値を残して変更する場合もあります。

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
#Listen 80
Listen 81

まとめ

  • ネットワークエンジニアも検証用にWebサーバが必要
  • Apacheがオススメ(シェアが高い、LPIC・LinuCの勉強にもなる)
  • 『yum -y install httpd』でApacheをインストール
  • 『systemctl start httpd』でApacheを起動
  • 設定ファイルは『/etc/httpd/conf/http.conf』
  • 設定変更したら『systemctl restart httpd』でサービスの再起動が必要

ApacheでWebサーバを検証用の構築できるようになると、検証の幅が広がると思います。
Linuxなので無料で構築できる、勉強できるのも嬉しいポイントです。
低スペックのPCでも動作しますし、あまりに低スペックすぎるのであれば、
AWSなどのクラウド上に構築するのも手かと思います。

YouTube解説動画

鋭意作成中につき少々お待ち下さい。

Linux
スポンサーリンク
シェアする
NWWをフォローする
NWWブログ
タイトルとURLをコピーしました