(0)目次&概説
(1) 記事の目的
(1-1) 目的とApache概要
(1-2) 前提条件
(2) Apacheの導入手順
(2-1) Apacheのインストール
(2-2) Apacheのサービス起動
(2-3) Apacheのポート開放
(2-3-1) HTTP通信の場合(80番)
(2-3-2) HTTPS通信の場合(443番)
(2-4) インストールの疎通チェック
(3) エラー対応
(3-1) [Errno -1] repomd.xml does not match metalink for XXXXX
(3-1-1) エラー概要
(3-1-2) エラー原因
(3-1-3) エラー対処①(応急処置)
(3-1-4) エラー対処②(本対応?)
(3-1-5) 用語の補足
(3-1-6) 参考:repomd.xmlの記述例
(4) 補足情報
(4-1) 仮想ホストの有効化について
(4-2) TomcatとApacheの同居について
(1) 記事の目的
(1-1) 目的とApache概要
・ApacheをCentOS7にインストールする手順を紹介する事です。
・Apacheは世界中で最も使われているHTTP Webサーバ(静的コンテンツの配信)の一つです。
・Apacheの役割はサーバとクライアント(ブラウザ)との間の接続を確立することです。
・Apache Tomcatも基本的なWebサーバの機能は兼ね備えているものの、主たる機能は「サーブレットコンテナ」であり、JSP/Servletといった動的コンテンツの配信をするためのアプリケーションサーバに相当している点で、Apacheとの大きな違いがあります。
・OSのパッケージ管理システム(yumやapt)から簡単にインストールが可能です。
・Apacheは世界中の約60%程度のWebサーバで利用されていると言われています。
(1-2) 前提条件
(2) Apacheの導入手順
(2-1) Apacheのインストール
CentOS7のデフォルトのパッケージ管理システムである「yum」を利用してインストールします。
$ sudo yum install httpd
(図211)
↓
※yumの基礎については下記記事の「(3) yum(パッケージ管理システム)」を参照ください。
(2-2) Apacheのサービス起動
インストールが完了したら、systemdコマンドを利用してApacheのサービスを起動します。
$ sudo systemctl start httpd
$ sudo systemctl enable httpd.service
(図221)
(2-3) Apacheのポート開放
(2-3-1) HTTP通信の場合(80番)
「80番ポート」を解放する事で、Web通信を行えるようにします(HTTPリクエストを受けられるようにする)
$ sudo firewall-cmd --add-service=http --permanent
設定変更を反映させるためfirewalldの設定を再ロードします。
$ firewall-cmd --reload
(図231)
(2-3-2) HTTPS通信の場合(443番)
もしHTTPSでコンテンツを配信する場合は、追加で「https」サービスを有効化し「443番ポート」の開放を行います。
$ sudo firewall-cmd --add-service=https --permanent
設定変更を反映させるためfirewalldの設定を再ロードします。
$ firewall-cmd --reload
(2-4) インストールの疎通チェック
ブラウザから自身のサーバのIPアドレスを含んだ下記URLを入力する事で、Apacheのインストールが成功したかどうか確認ができます。もしインストールが成功していればCentOS7 Apacheのウェブページ(テスト疎通用)に遷移します。
http://[Your IP adress]/
(図241)
(3) エラー対応
(3-1) [Errno -1] repomd.xml does not match metalink for XXXXX
(3-1-1) エラー概要
Apacheのインストールで「sudo yum install httpd」コマンドを実行した際に、上記の「[Errno -1] repomd.xml does not match metalink for XXXXX」エラーが出ました。
(図311)
(3-1-2) エラー原因
・サーバには接続できているものの、epelのメタリンクの整合性が取れていないためエラーになっている
・根本的にはepelのバージョンが古いため起きているようで、古いメタデータが悪さをしているようです。
・リポジトリのメタデータを保持するxmlファイルが「repomd.xml」と呼ばれており、他xmlの場所やタイムスタンプなどの情報を保持しています
(3-1-3) エラー対処①(応急処置)
一旦はミラーリスト(mirrorlist)ではなく、ベース(baseurl)を見に行くように設定を変更する事でエラー自体は回避できました。
<手順>
①epel.repoファイルを編集します。
$ vi /etc/yum.repos.d/epel.repo
②epel.repoファイルの「baseurl」の行をコメント解除します。
baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
③「mirrorlist」の行をコメントアウトします。
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
(図313)(※注)編集する所は複数箇所あります
(3-1-4) エラー対処②(本対応?)
このコマンドはメタデータの不整合によるエラーを解消するため、有効化されている各リポジトリのxmlメタデータ削除を行います。
$ sudo yum clean metadata
(3-1-5) 用語の補足
「baseurl」はリポジトリの全ての資産があるURLです。一方で「mirrorlist」はベースに接続出来なかった際に利用したり、ベースの負荷を下げる目的で利用されるURLで、ベースの保持する資源の全部あるいは一部を保持しています。
(3-1-6) 参考:repomd.xmlの記述例
下記の例では「filelists」に関するチェックサムやタイムスタンプ、サイズなど各種メタデータが格納されています。
<data type="filelists"> <checksum type="sha256">9731c9f8bcdc772927d90327e29f87d7197f71bf185caa88087c927b83da5c54</checksum> <open-checksum type="sha256">c24cc2641db15397dde67dfd71fbf1bf05ab9d241d5aed01cf2612ef30eaaed4</open-checksum> <location href="repodata/9731c9f8bcdc772927d90327e29f87d7197f71bf185caa88087c927b83da5c54-filelists.xml.gz"/> <timestamp>1591901344</timestamp> <size>583571</size> <open-size>2189390</open-size> </data>
(4) 補足情報
(4-1) 仮想ホストの有効化について
(4-2) TomcatとApacheの同居について
特に問題なし。Tomcatを8080ポートで動かし、Apacheを80/443ポートで動かし、加えて「mod_proxy」機能を用いて、ApacheがTomcatがホストするアプリケーションのプロキシとして動作させたりといった構成は良くある例です。