CentOS 7へApacheをインストールして最短でウェブサーバーを構築

以前のCentOS環境構築に関する記事でCentOSのインストールと基本的な設定までが完了しました。折角、作成した環境。利用しない手はありません。本記事では、以前の記事で構築したCentOSの環境を利用してウェブサーバーであるApacheのインストールと設定を行い最短で、テスト用のウェブページが表示できるところまでを紹介します。

参考 CentOS 7のインストールと基本的な設定を紹介した記事

CentOS
centos76-install-top3
CentOS 7.6をインストール Linuxのインストールは難しくありません

こんにちは、ITエンジニアの小村(@system_kom)です。 Windowsをインストールした経験のある人は多いと思いますが、Linuxをインストール経験がある人は少ないのではないでしょうか。 Linuxのインストールはサーバー構築の基 ...

CentOS
CentOS 7のインストール後におこなうLinuxの基本設定 13ポイント

CentOS 7(バージョン7.0~7.6)のインストール完了後に、設定する最低限のポイントを13点纏めてみました。(2019年6月に追加)本記事で紹介した手順は一例で、これ以外にもサーバーを構築するためには複数の手順が必要になります。まず ...

ウェブサーバーを導入する環境は、以前の記事で詳細に紹介していますが、基本的な前提条件は以下の通りになります。

Apacheを導入する環境のまとめ

  • OSのバージョンはCentOSで最新のバージョン7.6を利用しています
  • firewalld/telnetでファイアウォールを設定しています
  • サーバーにはグローバルIPアドレスが割り当てられています

この環境を前提に先へ進めて行きます。

CentOSの基本

CentOSの場合、バージョンは以下のコマンドで確認できます。
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

1. Apache用ユーザーの追加とパスワードの設定

まずApacheを動作させるためにユーザーを追加します。
デフォルトではApacheのインストール時に同名のユーザー"apache"が作成されますが、これは利用せずに新規でwwwというユーザーを追加します。apacheユーザーについてはコンテンツアップロード時の権限と、ユーザー名が分かってしまう可能性を考慮して本記事では利用しません。

メモ

wwwユーザーを作成していますが、ユーザー名は任意になりますのでwww以外でも問題ありません。

1-1. ユーザー作成

ユーザー追加はuseraddコマンドで行います。-sオプションを付けることでユーザーが利用できるシェルを指定しています。

本記事では一般ユーザーでの実行が可能なコマンドについてはプロンプトとして"$"、rootユーザーでの実行が必要なコマンドについては"#"を記載しています。

wwwユーザーはサーバーへログインすることがないので、シェルとして"/sbin/nologin"を指定します。成るべくシステムへログインできるユーザーを制限することがセキュリティの基本です。

 command
# useradd -s /sbin/nologin www

エラーが出力されなければ、ユーザーの作成は完了です。

1-2. パスワードの設定

続いて、作成したユーザーにpasswdコマンドでパスワードの設定を行います。

 command
# passwd www
ユーザー www のパスワードを変更。
新しいパスワード: パスワードを入力
新しいパスワードを再入力してください: パスワードを再入力
passwd: すべての認証トークンが正しく更新できました。

パスワードは任意になりますが、成るべく複雑なものを設定することをお勧めします。エラーの出力が無ければパスワードの設定は完了です。

1-3. 作成したユーザーの確認

作成したウェブサーバー用のユーザー"www"についての情報を確認します。
/etc/passwdファイルに作成したwwwユーザーの情報が追加されていることを確認します。確認は以下のコマンドで行います。

 command
$ cat /etc/passwd | grep www
www:x:1006:1006::/home/www:/sbin/nologin

続いてidコマンドでユーザーとグループが表示されることを確認します。

 command
$ id www
uid=1006(www) gid=1006(www) groups=1006(www)

wwwユーザーに関する情報が表示されればユーザーの確認は完了です。

2. httpdパッケージの確認

Apacheは通常、httpdという名前でパッケージ化されています。CentOSでは前の記事でも紹介していますが、yumというコマンドでパッケージの導入を行います。ここではhttpdパッケージの詳細について確認の方法を記載します。

2-1. パッケージの確認

先ずはCentOSに含まれるhttpdと名前の付くパッケージのリストを確認します。
パッケージリストの確認は、yumコマンドにオプションのlistを付けて実行します。
そのまま実行すると、全てのパッケージリストが表示されますので、抽出用コマンドのgrepでhttpd文字列が含まれるものだけを抜き出します。

 command
$ yum list | grep httpd
httpd.x86_64 2.4.6-67.el7.centos.6 updates
httpd-devel.x86_64 2.4.6-67.el7.centos.6 updates
httpd-manual.noarch 2.4.6-67.el7.centos.6 updates
httpd-tools.x86_64 2.4.6-67.el7.centos.6 updates
keycloak-httpd-client-install.noarch 0.6-1.el7 base
libmicrohttpd.i686 0.9.33-2.el7 base
libmicrohttpd.x86_64 0.9.33-2.el7 base
libmicrohttpd-devel.i686 0.9.33-2.el7 base
libmicrohttpd-devel.x86_64 0.9.33-2.el7 base
libmicrohttpd-doc.noarch 0.9.33-2.el7 base
python2-keycloak-httpd-client-install.noarch

上記の出力結果からわかるように、httpdの名前の付くパッケージは複数あります。
この中でウェブサーバーの導入に関連するパッケージと機能は

  • httpd.x86_64 2.4.6-67.el7.centos.6 httpdウェブサーバー本体
  • httpd-devel.x86_64 2.4.6-67.el7.centos.6 httpd開発ツール、モジュールなど
  • httpd-manual.noarch 2.4.6-67.el7.centos.6 httpdのマニュアル
  • httpd-tools.x86_64 2.4.6-67.el7.centos.6 httpdに関連するツール群

になります。この4パッケージをインストールします。

3. httpdパッケージのインストール

項目2. で紹介したhttpdに関連するパッケージを、実際にインストールしていきます。

3-1. yumコマンドによるhttpdのインストール

httpdパッケージはyumコマンドにinstallオプションを付けることでインストールすることができます。項目2-1. で4パッケージが確認できましたので、全てのパッケージを以下のコマンドでインストールします。

 command
# yum -y install httpd httpd-tools httpd-devel httpd-manual

上記ではyumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。

パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。コマンドを実行すると、以下のようにインストールが開始されます。

 log
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.yz.yamagata-u.ac.jp
* extras: ftp.yz.yamagata-u.ac.jp
* updates: ftp.yz.yamagata-u.ac.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ httpd.x86_64 0:2.4.6-67.el7.CentOS.6 を インストールインストール中:
httpd x86_64 2.4.6-67.el7.centos.6 updates 2.7 M
httpd-devel x86_64 2.4.6-67.el7.centos.6 updates 194 k
httpd-manual noarch 2.4.6-67.el7.centos.6 updates 1.3 M
httpd-tools x86_64 2.4.6-67.el7.centos.6 updates 88 kmailcap noarch 2.1.41-2.el7 base 31 k
openldap-devel x86_64 2.4.44-5.el7 base 801 kトランザクションの要約
インストール 4 パッケージ (+8 個の依存関係のパッケージ)総ダウンロード容量: 5.9 M
インストール容量: 22 Mインストール:
httpd.x86_64 0:2.4.6-67.el7.centos.6 httpd-devel.x86_64 0:2.4.6-67.el7.centos.6
httpd-manual.noarch 0:2.4.6-67.el7. centos.6 httpd-tools.x86_64 0:2.4.6-67.el7.centos.6依存性関連をインストールしました:
apr-devel.x86_64 0:1.4.8-3.el7_4.1 apr-util-devel.x86_64 0:1.5.2-6.el7
cyrus-sasl.x86_64 0:2.1.26-21.el7cyrus-sasl-devel.x86_64 0:2.1.26-21.el7
expat-devel.x86_64 0:2.1.0-10.el7_3 libdb-devel.x86_64 0:5.3.21-21.el7_4
mailcap.noarch 0:2.1.41-2.el7 openldap-devel.x86_64 0:2.4.44-5.el7

これでhttpdに関連する4パッケージのインストールが完了しました。

3-2. httpdインストール後の確認

httpdがインストールされたことを確認します。インストールされているパッケージはyumコマンドで確認できます。以下のようにyumを実行することで、httpdパッケージがインストールされていることを確認します。

 command
$ yum list installed | grep httpd

出力結果として、以下の4パッケージが表示されることを確認します。

 log
httpd.x86_64 2.4.6-67.el7.centos.6 @updates
httpd-devel.x86_64 2.4.6-67.el7.centos.6 @updates
httpd-manual.noarch 2.4.6-67.el7.centos.6 @updates
httpd-tools.x86_64 2.4.6-67.el7.centos.6 @updates

続いてhttpdがインストールされた場所を確認します。インストールされた場所(パス)を確認するためにはwhichコマンドを利用します。
以下のように実行することでインストールパスを確認できます。

 command
$ which httpd
/usr/sbin/httpd

実行結果として上記のようにhttpdのパスである「/usr/sbin/httpd」が表示されることを確認します。
これでhttpdのインストールが正常に終了したことが確認できました。

3-3. httpd起動の確認

ここまででhttpdのインストールと確認が完了しましたので、続いてインストールしたhttpdが起動することを確認します。CentOSでは7系からsystemctlコマンドでサービスの起動・停止を行います。httpdは以下のように実行することで起動できます。

 command
# systemctl start httpd

エラーが出力されなければ、正常にhttpdは起動しています。
systemctlコマンドにstatusオプションを付けて実行することで、起動したサービスの状態について、詳細な情報を取得することができます。
以下が実行例です。

 command
# systemctl status httpd
 httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2018-04-03 10:55:49 JST; 10s ago
Docs: man:httpd(8)
man:Apachectl(8)
Process: 1656 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 1660 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
tq1660 /usr/sbin/httpd -DFOREGROUND
tq1662 /usr/sbin/httpd -DFOREGROUND
tq1663 /usr/sbin/httpd -DFOREGROUND
tq1664 /usr/sbin/httpd -DFOREGROUND
tq1665 /usr/sbin/httpd -DFOREGROUND
mq1666 /usr/sbin/httpd -DFOREGROUND

上記では分かり難いかもしれませんが、丸()の部分が正常な起動状態の場合、緑色で表示されます。

また、稼働しているプロセスを表示するpsコマンドでもhttpdが起動していることを確認できます。
以下のように実行します。

 command
$ ps -aux | grep httpd
root 1736 0.0 0.4 221960 4896 ? Ss 11:00 0:02 /usr/sbin/httpd -DFOREGROUND
Apache 1739 0.0 0.3 221960 3588 ? S 11:00 0:00 /usr/sbin/httpd -DFOREGROUND
Apache 1740 0.0 0.3 221960 3432 ? S 11:00 0:00 /usr/sbin/httpd -DFOREGROUND
Apache 1741 0.0 0.2 221960 2924 ? S 11:00 0:00 /usr/sbin/httpd -DFOREGROUND
Apache 1742 0.0 0.2 221960 2924 ? S 11:00 0:00 /usr/sbin/httpd -DFOREGROUND
Apache 1755 0.0 0.2 221960 2924 ? S 11:00 0:00 /usr/sbin/httpd -DFOREGROUND

以上の結果から、httpdが正常に起動することが確認できました。

3-4. httpd自動起動の設定

サーバーの再起動や停止の復旧時に、httpdが自動的に起動するように設定します。サービスの自動起動を設定するにもsystemctlコマンドを利用します。自動起動は以下のようにsystemctlコマンドを実行します。

 command
# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/syst

エラーが出力されなければ、自動起動は設定が完了しています。
続いて自動起動が設定されたことを確認します。こちらもsystemctlコマンドから確認できます。

 command
$ systemctl is-enabled httpd
enabled

実行結果として "enabled"と表示されれば自動起動の設定は完了です。

4. firewallの許可設定

本記事は、ウェブサーバーの導入環境として、以下の記事中、項目6.で記載したfirewall設定を行っていることを前提としています。

CentOS
CentOS 7のインストール後におこなうLinuxの基本設定 13ポイント

CentOS 7(バージョン7.0~7.6)のインストール完了後に、設定する最低限のポイントを13点纏めてみました。(2019年6月に追加)本記事で紹介した手順は一例で、これ以外にもサーバーを構築するためには複数の手順が必要になります。まず ...

このfirewall設定の場合、httpの接続ポートである80番をオープンしていないため、ブラウザでアクセスしてもテスト用のページを表示できません。その為、iptables/firewalldコマンドを利用してのルールを追加し、80番ポートへアクセスできるようにする必要があります。

firewalldを利用している場合は、本記事の項目4-2. を参照して設定変更を行って下さい。

4-1. iptablesコマンドによる80番ポートのオープン

iptablesコマンドでウェブサーバーの待ち受けポートである80番に外部から接続できるように設定を追加します。コマンドは以下のように実行します。

 command
# iptables -I INPUT 7 -p tcp --dport 80 -j ACCEPT

INPUTの7という数字は7行目に追加するという意味になります。
iptablesコマンドを実行後に設定が追加されていることを確認します。確認は以下のように実行します。

 command
# iptables L -n --line-number

以下が実行結果の例になります。

 log
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
4 ACCEPT tcp -- 118.8.21.167 0.0.0.0/0 tcp dpt:20
5 ACCEPT tcp -- 111.8.21.167 0.0.0.0/0 tcp dpt:21
6 ACCEPT tcp -- 111.8.21.167 0.0.0.0/0 tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80Chain FORWARD (policy DROP)
num target prot opt source destinationChain OUTPUT (policy ACCEPT)
num target prot opt source destination

Chain INPUTの7行目に設定を行った80番ポートが追加されていることが確認できます。設定を確認後、保存を行います。保存は

 command
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]

で行います。上記のように「OK」が表示されれば正常に設定は保存されています。これでfirewallの設定は完了です。

4-2. firewall-cmdコマンドによる80番ポートのオープン

CentOS 7のfirewalldを利用している場合は、以下のように設定を行います。
firewall-cmdコマンドでウェブサーバーの待ち受けポートである80番に外部から接続できるように設定を追加します。コマンドは以下のように実行します。

 command
# firewall-cmd --add-service=http --permanent
success

このコマンドはデフォルトのゾーンであるpublicにhttpのサービスを追加します。publicゾーンはインターフェイスに対して割り当てられていますので、この場合はどのIPアドレスからもhttpへ接続可能になります。
続いて、設定を反映するために再読み込みを実行します。

 command
# firewall-cmd --reload
success

成功するとsuccessと表示されます。設定の確認は以下のコマンドで行います。

 command
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client http
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

表示された結果の「services」項目に「http」が追加されていれば、設定の確認は完了です。

5. ウェルカムページの表示確認

ここまでの手順でhttpdパッケージに用意されたデフォルトのウェブページを表示することが出来ます。ご自分の環境で利用されているウェブブラウザから、テスト用のページが表示できることを確認します。もしhttpdをインストールしたサーバーのIPアドレスが111.8.21.167の場合

http://111.8.21.167

をブラウザへ入力すると、以下のようなテスト用のウェルカムページが表示されます。

centos-httpd-inst-5

これでテスト用のウェルカムページが表示されることまで、確認が出来ました。
続いてhttpdの設定を行います。

6. httpdの設定

項目5. の手順までで、httpdパッケージの導入までが完了しました。このままでの運用でも問題ありませんが、本記事では運用するにあたって最低限、必要になる設定を行います。設定の前提は以下の通りです。

Apache httpd設定の前提条件

  • 動作ユーザーとグループはwwwに変更
  • バーチャルドメインは利用せず、ドキュメントルート以下にコンテンツを配置
  • ドキュメントルートは”/home/www/html”に変更
  • cgi用フォルダは”/home/www/cgi-bin”に変更

この条件に合わせて設定を行っていきます。

6-1. httpd.confの変更

httpdの設定は/etc/httpd/conf以下にあるhttpd.confで行います。
httpd.confの編集前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

 command
# cd /etc/httpd/conf
# cp -p httpd.conf httpd.conf.org

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

 command
# vi httpd.conf

6-1-1. 動作ユーザー・グループの変更

66~67行目にあるUserとGroupの設定を変更します。動作ユーザーの設定になります。

 code
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User Apache
Group Apache

赤字部分のUserGroupパラメータを「Apache」から「www」に変更します。
変更後は以下のようになります。

 code
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User www
Group www

6-1-2. サーバー管理者のメールアドレス変更

86行目にあるServerAdminの設定を変更します。エラーページに表示されます。

 code
#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin root@localhost

上記の"ServerAdmin root@localhost"の"root@localhost"を任意のメールアドレスに変更します。
本記事では

ServerAdmin webmaster@testdom.com

に変更しています。変更後の設定部分は以下のようになります。

 code
#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin webmaster@testdom.com

6-1-3. サーバーのホスト名変更

95行目にあるServerNameを変更します。ServerNameパラメータはサーバーを認識するために利用されます。

 code
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80

上記の「#ServerName www.example.com:80」からコメントを外して「www.example.com」の部分を、公開用のホスト名に変更します。

FQDNはドメイン名にホスト部分を追加したものになります。(例:www.rem-system.com)

ここでは以下のパラメータを設定しました。

ServerName www.testdom.com:80

変更後の設定ファイルは以下のようになります。

 code
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName www.testdom.com:80

6-1-4. ドキュメントルートの変更

119行目にあるDocumentRootを変更します。コンテンツの配置場所を指定します。

 code
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

上記のDocumentRootパラメータ「/var/www/html」を 「/home/www/html」に変更します。変更後は以下のようになります。

 code
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/home/www/html"

6-1-5. ディレクトリの変更 1

124行目にあるDirectoryを変更します。ディレクトリの設定に関する内容です。
ドキュメントルートに合わせて変更します。

 code
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted

上記の <Directory "/var/www"> を <Directory "/home/www"> へ変更します。

 code
<Directory "/home/www">
AllowOverride None
# Allow open access:
Require all granted

6-1-6. ディレクトリの変更 2

131行目にある

 code
<Directory "/var/www/html">

を変更したディレクトリに合わせて変更します。ディレクトリは「/home/www/html」になりますので、以下のようになります。

 code
<Directory "/home/www/html">

併せて、Optionsを変更します。デフォルトでは

 code
Options Indexes FollowSymLinks

となっているオプション設定から"Indexes"を削除して

 code
Options FollowSymLinks

に変更します。

6-1-7. スクリプトエイリアスの変更

247行目にあるスクリプトエイリアスの設定を変更します。CGIを配置する場所を指定します。CGIを利用しない場合には必須ではありませんが、ここでは利用する前提で設定を行います。

CGIとはCommon Gateway Interfaceの略でWebサーバーでPerlなどのプログラムを実行するために使用します。

 code
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the target directory are treated as applications and
# run by the server when requested rather than as documents sent to the
# client. The same rules about trailing "/" apply to ScriptAlias
# directives as to Alias.
#
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

上記の設定パラメータにあるScriptaAliasのパスを

 code
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

変更したディレクトリパラメータに合わせて設定します。以下のように設定パラメータを変更します。

 code
ScriptAlias /cgi-bin/ "/home/www/cgi-bin/"

6-1-8. CGI用ディレクトリの変更

255行目にある <Directory "/var/www/cgi-bin">を変更します。CGIディレクトリの権限設定です。

 code
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted

上記のディレクトリパラメータを、設定したディレクトリに合わせて変更します。

 code
<Directory "/var/www/cgi-bin">

以下のよう変更します。

 code
<Directory "/home/www/cgi-bin">

ここまでの8点で設定ファイルの変更は完了です。変更したファイルを確認して間違いがなければ保存してください。
本記事では最短でテスト用ページが表示できることを目標にしています。実際の運用にあたってはもう少しセキュリティを強化するための設定を行うことをお勧めします。
参考 Apache httpdのお勧めセキュリティ設定は以下の記事で紹介しています。

Open Source
httpd-10point-setting-sam
攻撃を受ける前に見直すApacheの基本的なセキュリティ10のポイント

こんにちは、ITエンジニアのKomuraです。 ウェブサーバーにApache HTTPDを採用している環境、まだまだ多いですよね。このApache HTTPDですが、インストールはRPM等のパッケージからコマンド一発で完了しますので、導入の ...

併せて参考にして下さい。

6-2. httpd.confの確認とドキュメントルート用フォルダの作成

項目6-1.で設定ファイルの変更を完了しました。変更したファイルに間違いが無いかを確認します。設定ファイルの確認はhttpdに -tオプションを付けることで可能です。以下のように実行します。

 command
# httpd -t

このコマンドを実行すると、現状のサーバーでは以下のようなエラーが出力されます。

 log
AH00526: Syntax error on line 124 of /etc/httpd/conf/httpd.conf:
DocumentRoot '/home/www/html' is not a directory, or is not readable

これは”/home/www/html”ディレクトリが無いことが原因です。設定ファイルに記載されているドキュメントルートを「/home/www/html」に変更したので、ディレクトリの作成が必要になります。以下の手順で「/home/www」以下に「html」「cgi-bin」ディレクトリを作成します。
まずディレクトリの作成を行います。

 command
# cd /home/www
# mkdir html
# mkdir cgi-bin

続いて作成したwwwとcgi-binディレクトリにアクセス権を設定します。

 command
# chown www:www html
# chown www:www cgi-bin

ディレクトリの作成とアクセス権設定後、再度、httpd.confのファイルを確認するコマンドを実行します。

 command
# httpd -t
Syntax OK

今度は「Syntax OK」と表示され、設定ファイルの正常性が確認できました。これで設定ファイルの確認は完了です。

6-3. 不要な設定ファイルの移動

httpdはインストール時に、運用には不要な設定ファイルが自動的に作成されています。
/etc/httpd/conf.d/以下に含まれる autoindex.confとwelcome.confはセキュリティに問題があるためリネーム(ファイル名の変更)か削除することをオススメします。ここでは上記の二つのファイルについて、リネームを実行して、設定ファイルを無効化します。
ディレクトリの移動を行います。

 command
# cd /etc/httpd/conf.d
# ls
README autoindex.conf manual.conf userdir.conf welcome.conf

mvコマンドでファイル名のリネームを行います。

 command
# mv autoindex.conf autoindex.conf.org
# mv welcome.conf welcome.conf.org

不要なconfファイルの名前の変更が、これで完了しました。

6-4. 設定ファイル、変更の反映

設定ファイルの変更が完了しましたので、変更した設定を反映するためにhttpdを再起動します。systemctlコマンドを以下のように実行します。

 command
# systemctl restart httpd

再起動後にhttpdのステータスを確認します。

 command
# systemctl status httpd
 httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2018-04-03 10:55:49 JST; 10s ago
Docs: man:httpd(8)
man:Apachectl(8)
Process: 1656 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 1660 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
tq1660 /usr/sbin/httpd -DFOREGROUND
tq1662 /usr/sbin/httpd -DFOREGROUND
tq1663 /usr/sbin/httpd -DFOREGROUND
tq1664 /usr/sbin/httpd -DFOREGROUND
tq1665 /usr/sbin/httpd -DFOREGROUND
mq1666 /usr/sbin/httpd -DFOREGROUND4月 03 10:55:49 www systemd[1]: Starting The Apache HTTP Server...
4月 03 10:55:49 www systemd[1]: Started The Apache HTTP Server

正常に起動していることが上記から確認できます。
ここまでで、httpdについて最低限の設定が完了しました。

7. テスト用ページの作成と確認

ここまででApache httpdの基本的な導入と外部からアクセスするためのファイアウォール設定が完了しました。
しかし、このままではブラウザでウェブページを開いても、以下のエラーで表示されません。

centos-httpd-inst-7

これはwelcome.confというデフォルトページを表示するための設定ファイルをリネームしたことが理由です。代わりに動作確認用としてテストページを表示させるための簡単なHTMLファイルを作成します。

7-1. ドキュメントルートへの移動

テスト用のページはドキュメントルートに配置します。ドキュメントルートは項目6-1-4. で”/home/www/html”に変更しました。
ここへcdコマンドで移動します。

 command
# cd /home/www/html

7-2. テスト用のページの作成

続いてHTMLファイルを作成します。viコマンドでindex.htmlという名前のファイルを開きます。

 command
# vi index.html

記載する内容は任意ですが、ここではテストページということで以下の内容にしました。

 code
test page

任意の内容を記載した後にファイルを保存します。
作成したindex.htmlファイルのアクセス権を「www」ユーザーとグループに変更します。

 command
# chown www:www index.html

これでテストページ用のHTMLファイル作成は完了です。ブラウザで再度、テストページの表示を確認します。

http://111.8.21.167

で以下のように作成したテスト用ページが表示できればApache httpdの導入と動作確認は完了です。

centos-httpd-inst-7-2

8. まとめ

ここまで7項目に渡ってCentOSへ最短でウェブサーバーを設定する手順を紹介しました。
実際に導入を行ってみると、どのようにウェブサーバーが稼働するか、運用管理をどのように行ったら良いかが理解できます。
本手順は最短でウェブサイトを公開するというところにポイントを置いていますので、SSL化やバーチャルホストの設定は含まれていません。出来れば最低限の設定としてSSL化は行っておくことをお勧めます。SSLは記事

Open Source
centos-apache-ssl-sam
CentOS 7とApacheをインストールした環境にLet's EncryptでHTTPSを設定

こんにちは、レムシステム株式会社 ITインフラ担当の小村(@system_kom)です。 2018年7月からGoogleのウェブブラウザ「Chrome」の仕様変更により、HTTPS化されていないウェブサイトには「保護されていません」と表示さ ...

で設定方法を紹介しています。次に参照する記事としてはこの記事をお勧めします。
また、ここ最近ではApache単体ではあまり利用することはなく、PHPやJavaなどのアプリケーションサーバーと連携して動作するようなものが殆どです。Apacheとphpで動作する代表的なアプリケーションであるWordPressなどもその中に含まれます。phpについては記事

Open Source
centos-httpd-php73-top
CentOS 7にPHP 7.3をインストールしてApache HTTP Serverと連携させる方法

こんにちは、ITエンジニアの小村(@system_kom)です。 以前のブログ記事でCentOS上にSSL対応したApache httpdの環境を作成してPHP7.2をインストールする手順を紹介しました。 2018年5月当時に書かれた、前回 ...

で詳しく紹介しています。是非、ApacheだけでなくPHPも導入してアプリケーションサーバーとしての環境を作成してみて下さい。PHPのプログラム言語を学ぶPHP入門環境にも適しています。本記事と併せて参考にしてみて下さい。

  • この記事を書いた人
rem-profile-photo

レムシステム

レムシステムはPC・サーバー・ネットワークでの業務効率化を主な業務としている会社です。全国に対応しています。

-Apache, CentOS
-