CentOS 7 への Apacheインストール。最短でウェブサーバーを構築してテストページを表示する。

2018/11/20 Apache, CentOS, Linux, サーバー構築

centos-httpd-inst
以前のCentOSに関する記事「CentOS 7 インストール Linuxを始めるにはインストールからがお勧め」「CentOS7の基本設定 Linuxのインストール後に設定する9つのポイント」でインストールと基本的な設定までが完了しました。折角、作成した環境。利用しない手はありません。
本記事では、以前の記事で構築したCentOSの環境を利用してウェブサーバーを最短で構築、テスト用のウェブページが表示できるところまでを紹介します。

スポンサーリンク

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

  • OSのバージョンはCentOSで最新のバージョン7.4を利用しています。
  • CentOS 7系であれば、どのバージョンでも同じ手順で構築が可能です。
  • サーバーはインターネットへ接続されており、グローバルIPアドレスが一つ、割り当てられています。

尚、CentOSの場合、バージョン確認は以下のコマンドで実施できます。

本環境では

が表示されます。この環境を前提に先へ進めて行きます。
※これ以降はApacheとhttpdという記述が混在していますが、基本的には同じものとして読み進めて下さい。

目次

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

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

1-1.ユーザー作成

ユーザー追加はuseraddコマンドで行います。-sオプションを付けることでshellを指定しています。
wwwユーザーはサーバーへログインすることがないので、シェルとして”/sbin/nologin”を指定します。成るべくシステムへログインできるユーザーを制限することがセキュリティの基本です。

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

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

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

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

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

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

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

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

2.httpdパッケージの確認

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

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

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

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

  • httpd.x86_64 2.4.6-67.el7.centos.6
  • httpd-devel.x86_64 2.4.6-67.el7.centos.6
  • httpd-manual.noarch 2.4.6-67.el7.centos.6
  • httpd-tools.x86_64 2.4.6-67.el7.centos.6

の4パッケージになります。各パッケージは以下のような機能が含まれています。

  • httpd.x86_64 (httpdウェブサーバー本体)
  • httpd-devel.x86_64 (httpdに関連する開発ツール、モジュールなどのパッケージ)
  • httpd-manual.noarch (httpdのマニュアル)
  • httpd-tools.x86_64 (httpdに関連するツール群)

ここでは、この4パッケージをインストールします。

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

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

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

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

上記ではyumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。
パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。コマンドを実行すると、以下のようにインストールが開始されます。

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

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

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

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

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

実行結果は以下のようになります。

この結果から、httpdが/usr/sbin以下にインストールされたことが確認できます。
これでhttpdのインストールが正常に終了したことが確認できました。

3-3.httpd起動の確認

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

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

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

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

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

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

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

エラーが出力されなければ、自動起動は設定が完了しています。

続いて自動起動が設定されたことを確認します。こちらもsystemctlコマンドから確認できます。

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

4.firewallの許可設定

本記事は、ウェブサーバーの導入環境として、記事「CentOS7の基本設定 Linuxのインストール後に設定する9つのポイント」の項目6.で記載したfirewall設定を行っていることを前提としています。
このfirewall設定の場合、httpの接続ポートである80番をオープンしていないため、ブラウザでアクセスしてもテスト用のページを表示できません。
その為、以下のようにiptablesコマンドを利用してのルールを追加し、80番ポートへアクセスできるようします。
※firewalldを利用している場合は、項目4-2.を参照して設定を行って下さい。

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

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

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

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

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

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

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

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

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

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

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

スポンサーリンク

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

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

http://111.8.21.167

をブラウザへ入力すると、以下のようなテスト用のウェルカムページが表示されます。
centos-httpd-inst-5
これでテスト用のウェルカムページが表示されることまで、確認が出来ました。
続いてhttpdの設定を行います。

6.httpdの設定

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

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

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

6-1.httpd.confの変更

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

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

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

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

に変更します。

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

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

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

に変更しています。

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

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

上記の”#ServerName www.example.com:80″からコメントを外します。
また、”www.example.com”の部分を、httpdをインストールしたサーバーのホスト名に変更します。
ここでは

に変更しています。

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

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

上記のDocumentRoot “/var/www/html”の”/var/www/html”を “/home/www/html” に変更します。

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

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

上記の へ変更します。

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

131行目にある

へ変更します。

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

247行目にあるスクリプトエイリアスの設定を変更します。cgiを配置する場所を指定します。

上記の

に変更します。

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

255行目にある を変更します。cgiディレクトリの権限設定です。

上記の

に変更します。
ここまでの8点で設定ファイルの変更は完了です。変更したファイルを保存してください。
本記事では最短でテスト用ページが表示できることを目標にしています。実際の運用にあたってはもう少しセキュリティの設定が必要になります。
なお、Apacheのお勧めセキュリティ設定は記事「攻撃を受ける前に!Apacheインストール後に必要な8つの変更点」で紹介しています。併せて参考にして下さい。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ここまででApache(httpd)の基本的な導入と外部からアクセスするためのファイアウォール設定が完了しました。
しかし、このままではブラウザでウェブページを開いても、以下のエラーで表示されません。
centos-httpd-inst-7
これはwelcome.confというデフォルトページを表示するための設定ファイルをリネームしたことが理由です。代わりに動作確認用としてテストページを表示させるための簡単なHTMLファイルを作成します。

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

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

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

続いてHTMLファイルを作成します。

作成後、ファイルを保存します。
作成したファイルのアクセス権を変更します。

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

http://111.8.21.167

で以下のように作成したテスト用ページが表示できればApache(httpd)の導入は完了です。
centos-httpd-inst-7-2

8.まとめ

以上、7項目に渡ってCentOSへ最短でウェブサーバーを設定する手順を紹介しました。
実際に導入を行ってみると、どのようにウェブサーバーが稼働するか、運用管理をどのように行ったら良いかが理解できます。
本手順は最短でウェブサイトを公開するというところにポイントを置いていますので、SSL化やバーチャルホストの設定は含まれていません。出来れば最低限の設定としてSSL化は行っておくことをお勧めます。SSLは記事「SEO対策にも有効!CentOS 7 と Let’s Encryptで信頼性の高いHTTPSを設定する」で導入方法を紹介しています。次に参照する記事としてはこの記事をお勧めします。

また、ここ最近ではApache単体ではあまり利用することはなく、phpなどのアプリケーションサーバーと連携して動作するようなものが殆どです。Apacheとphpで動作する代表的なアプリケーション、wordpressなどもその中に含まれます。
このphpについては記事「CentOS 7のウェブサーバーにphp 7.2を導入する。phpの入門にも最適な環境の構築」で詳しく紹介しています。是非、Apacheだけでなくphpも導入してアプリケーションサーバーとしての環境を作成してみて下さい。phpのプログラム言語を学ぶphp入門環境にも適しています。本記事と併せて参考にしてみて下さい。

関連する記事


Facebookでのご購読が便利です。

Twitter・Feedlyでもご購読できます。

Twitterでフォローする Feedlyでフォローする

Comment

  1. […] CentOS 7 への Apacheインストール。最短でウェブサーバーを構築してテストページを表示する。 MySQL 5.7 を CentOS 7 に yum インストールする手順 CentOS6/CentOS7にPHP5.6/PHP7をyumでインストール Ap […]

Message

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

  • スポンサーリンク