【CentOS7】httpd 2.2 (Apache)をコンパイルからインストールする手順

アプリの仕様により特定のバージョンの httpd をインストールしなければいけない場合があります。

(本当は特定のバージョンにこだわると「脆弱性」「バグ」「サポート切れ」などで品質が落ちるので、定期的に最新バージョンにアップデート出来た方がいいですが)

そのような場合のインストール方法について調べました。

 

 

yum コマンドでは特定のバージョンの httpd をインストールするのが難しい

CentOS はパッケージは「yum」コマンドでインストールしますが、古い特定のバージョンをインストールする場合は、結構難しい場合があります。

 

その理由は

「httpd のパッケージだけ古いバージョンをインストールすればいいというわけではない」

からです。

 

httpd だけでなく関連するパッケージも古いバージョンに合うバージョンを探してインストールする必要があります。

これだけでもかなりハードルが上がります。

 

今回はためしに1つ前のバージョンの「httpd 2.2」をインストールしてみます。

 

 

Apacheの公式サイトにアクセスします。

http://httpd.apache.org/

 

 

 

「Apache httpd 2.2.34 Release End-of-Life」「Download」をクリックします。

 

 

 

以下の画面より「Apache HTTP Server 2.2.34(httpd)」がダウンロードできますが、種類が多いです。

 

 

Linux上に置けばすぐに使えるバイナリファイルはない

Linux 上のディレクトリに展開すればすぐに使えるバイナリファイルはありません。

 

「Rpmfind mirror located at Insa-lyon.fr」で rpm パッケージを探すことができますが、さすがに「CentOS7」で「httpd 2.2」をインストールできる「rpm」はありませんでした。

 

 

https://rpmfind.net/

 

 

CentOS7 に httpd 2.2 をインストールするためにはソースからコンパイルするしかない

いろいろ調べましたが、結局「CentOS7」「httpd 2.2」をインストールするためにはソースファイルをダウンロードしてコンパイルするしかありません。

過去の「rpm」パッケージを集めているサイトもありましたが、すべての環境のすべてのバージョンが用意されているわけではなく、特に CentOS7の場合は過去のバージョンの「rpm」パッケージは見つからないと思った方が良さそうです。

仮に配布しているサイトがあってもすぐにリンク切れをするようです。

 

 

今回用意した環境

OSは、CentOS 7.3 を用意しました。

インストールは最小構成の「minimal」でインストールしました。

[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

 

「minimal」インストール直後は何の環境も入っていない状態です。

[root@centos7 ~]# rpm -qa | grep httpd
[root@centos7 ~]# rpm -qa | grep apr
[root@centos7 ~]#

 

 

httpd をソースからコンパイルする手順

httpd をソースファイルからコンパイルしてインストール手順です。

ソースファイルをダウンロードする

Apache の公式サイトよりソースファイルのダウンロードページに移動します。

https://httpd.apache.org/download.cgi

 

 

 

Source httpd-2.2.34.tar.gz のリンクを右クリックして「リンクのアドレスをコピー」をクリックします。

 

 

 

wget コマンドで先ほどコピーしたリンクのアドレスを貼り付けて「httpd-2.2.34.tar.gz」をダウンロードします。

[test@centos7 ~]$ wget http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.34.tar.gz
--2018-03-08 22:58:27--  http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.34.tar.gz
ftp.kddilabs.jp (ftp.kddilabs.jp) をDNSに問いあわせています... 192.26.91.193
ftp.kddilabs.jp (ftp.kddilabs.jp)|192.26.91.193|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 7684419 (7.3M) [application/x-gzip]
`httpd-2.2.34.tar.gz' に保存中

100%[==============================================================>] 7,684,419   1.01MB/s 時間 4.8s

2018-03-08 22:58:32 (1.53 MB/s) - `httpd-2.2.34.tar.gz' へ保存完了 [7684419/7684419]

[test@centos7 ~]$

 

 

■wget コマンドがインストールされていない場合

もし「wget」コマンドがインストールされていない場合は、以下の「yum」コマンドでインストールします。

[test@centos7 ~]$ sudo yum install wget

 

 

ダウンロードしたら「tar」コマンドで「httpd-2.2.34.tar.gz」を解凍します。

[test@centos7 ~]$ tar xvfz httpd-2.2.34.tar.gz

 

 

解凍したソースファイルの一覧を見ていて気が付いたのですが、「httpd-2.2.34.tar.gz」に必要なソース一式が入っています。

[test@centos7 srclib]$ pwd
/home/test/httpd-2.2.34/srclib
[test@centos7 srclib]$ ls
Makefile.in    apr    apr-util    pcre ← /home/test/httpd-2.2.34/srclib ディレクトリに「apr」「apr-util」「pcre」のライブラリが入っています。つまり、別途用意する必要はありません。
[test@centos7 srclib]$

 

以下のライブラリが入っているので別途用意する必要はありません。

 

 

次にインストール方法確認のため「INSTALL」ファイルの中身を確認してみます。

なんだかんだ言って公式の手順が一番信頼できます。

[test@centos7 httpd-2.2.34]$ ls
ABOUT_APACHE  InstallBin.dsp  NWGNUmakefile     acinclude.m4   docs         include       server
Apache.dsw    LAYOUT          README            build          emacs-style  libhttpd.dep  srclib
BuildAll.dsp  LICENSE         README-win32.txt  buildconf      httpd.dep    libhttpd.dsp  support
BuildBin.dsp  Makefile.in     README.platforms  config.layout  httpd.dsp    libhttpd.mak  test
CHANGES       Makefile.win    ROADMAP           configure      httpd.mak    modules
INSTALL       NOTICE          VERSIONING        configure.in   httpd.spec   os
[test@centos7 httpd-2.2.34]$ cat INSTALL

  APACHE INSTALLATION OVERVIEW

  CAUTION
  -------

  This package represents a legacy version of the Apache HTTP Server software
  and is not current.

  Please note that Apache Web Server Project will only provide maintenance
  releases of the 2.2.x flavor through June of 2017, and will provide some
  security patches beyond this date through at least December of 2017.
  Minimal maintenance patches of 2.2.x are expected throughout this period,
  and users are strongly discouraged from deploying this legacy release.

  Also note, this package includes very stale and known-vulnerable versions
  of the Expat [http://expat.sourceforge.net/] and PCRE [http://www.pcre.org/]
  packages. Users are strongly encouraged to first install the most recent
  versions of these components.

  Quick Start - Unix
  ------------------

  For complete installation documentation, see [ht]docs/manual/install.html or
  http://httpd.apache.org/docs/2.2/install.html

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start ← httpd を起動するコマンドです。

     NOTES: * Replace PREFIX with the filesystem path under which
              Apache should be installed.  A typical installation
              might use "/usr/local/apache2" for PREFIX (without the ← デフォルトでは/usr/local/apache2にインストールされます。
              quotes).

            * If you are a developer who will be linking your code with
              Apache or using a debugger to step through server code,
              ./configure's --with-included-apr option may be advantageous,
              as it removes the possibility of version or compile-option
              mismatches with APR and APR-util code.  (Many OSes now
              include their own version of APR and APR-util.)

            * If you are a developer building Apache directly from
              Subversion, you will need to run ./buildconf before running
              configure. This script bootstraps the build environment and
              requires Python as well as GNU autoconf and libtool. If you
              build Apache from a release tarball, you don't have to run
              buildconf.

            * If you want to build a threaded MPM (for instance worker)
              on  FreeBSD, be aware that threads do not work well with
              Apache on FreeBSD versions before 5.4-RELEASE. If you wish
              to try a threaded Apache on an earlier version of FreeBSD,
              use the --enable-threads parameter to ./configure in
              addition to the --with-mpm parameter.

            * If you are building directly from Subversion on Mac OS X
              (Darwin), make sure to use GNU Libtool 1.4.2 or newer. All
              recent versions of the developer tools on this platform
              include a sufficiently recent version of GNU Libtool (named
              glibtool, but buildconf knows where to find it).

  For a short impression of what possibilities you have, here is a
  typical example which configures Apache for the installation tree
  /sw/pkg/apache with a particular compiler and flags plus the two
  additional modules mod_rewrite and mod_speling for later loading
  through the DSO mechanism:

     $ CC="pgcc" CFLAGS="-O2" \
     ./configure --prefix=/sw/pkg/apache \
     --enable-rewrite=shared \
     --enable-speling=shared

  The easiest way to find all of the configuration flags for Apache 2.2
  is to run ./configure --help.

 

 

デフォルトでソースコードをコンパイルしてインストールします。

configure コマンドを実行します。

[test@centos7 httpd-2.2.34]$ ./configure

 

make コマンドを実行します。

[test@centos7 httpd-2.2.34]$ make

 

make install コマンドを実行します。

/usr/local ディレクトリにファイルを展開するため、sudo コマンドで実行します。

[test@centos7 httpd-2.2.34]$ sudo make install

 

 

 

 

httpd のバージョン確認

インストールが完了したら httpd のバージョンを確認します。

[test@centos7 httpd-2.2.34]$ cd /usr/local/apache2

[test@centos7 bin]$ ./httpd -version
Server version: Apache/2.2.34 (Unix)
Server built: Mar

 

 

 

GCCがインストールされていない場合

以下のようなエラーが出力されます。

[test@centos7 httpd-2.2.34]$ ./configure
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu

Configuring Apache Portable Runtime library ...

checking for APR... reconfig
configuring package in srclib/apr now
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
Configuring APR library
Platform: x86_64-unknown-linux-gnu
checking for working mkdir -p... yes
APR Version: 1.5.2
checking for chosen layout... apr
checking for gcc... no ← gccがインストールされていません。
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/test/httpd-2.2.34/srclib/apr':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
configure failed for srclib/apr
[test@centos7 httpd-2.2.34]$

 

GCCをインストールします。

[test@centos7 httpd-2.2.34]$ sudo yum install gcc

 

 

 

httpd の起動確認

「apachectl start」コマンドで起動できます。

[test@centos7 bin]$ sudo ./apachectl start
httpd: Could not reliably determine the server's fully qualified domain name, using centos7.localdomain for ServerName

 

 

httpd プロセスが起動していることを確認します。

[test@centos7 bin]$ ps -ef | grep httpd
root     10373     1  0 00:13 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
daemon   10374 10373  0 00:13 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
daemon   10375 10373  0 00:13 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
daemon   10376 10373  0 00:13 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
daemon   10377 10373  0 00:13 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
daemon   10378 10373  0 00:13 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
test     10381 10320  0 00:13 pts/0    00:00:00 grep --color=auto httpd
[test@centos7 bin]$

 

※気が付いたと思いますが、アカウントが「daemon」です。

そのため、アカウント「apache」、グループ「apache」を作成して httpd を apache アカウントで実行します。

 

 

apache アカウントを作成し apache で起動する

以下のように「apache」アカウントと「apache」グループを作成します。

# groupadd apache ← 最初に「apache」グループを作成します。
# useradd -s /sbin/nologin apache ← 次に「apache」アカウントをシェルを「nologin」で作成します。
# usermod -G apache apache ← 次に「apache」アカウントを「apache」グループに割り当てます。
# chown -R apache:apache /usr/local/apache2 ← 「/usr/local/apache2」ディレクトリ配下を「apache」アカウント、「apache」グループに割り当てます。

 

 

httpd.conf ファイルで httpd プロセス実行アカウントを「apache」、グループを「apache」に設定する

apache アカウント、apache グループを作成したら、httpd.conf ファイルで httpd プロセス実行アカウントを設定します。

[root@test-CentOS7 ~]# vi /usr/local/apache2/conf/httpd.conf

 

~ 省略 ~

#
# 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 daemon ← コメントアウトします。
#Group daemon ← コメントアウトします。
User apache ← アカウントに apache を設定します。
Group apache ← グループに apache を設定します。

 

 

 

ソースコンパイルした httpd 2.2 を Systemd に登録して自動起動の設定をする

最後に httpd を Systemd に登録して自動起動するように設定します。

httpd インストールディレクトリ: /usr/local/apache2

以下を参考に設定をします。

vi /etc/systemd/system/httpd.service

[Unit]
Description=The Apache 2.2 HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
EnvironmentFile=/usr/local/apache2/conf/httpd.conf
ExecStart=/usr/local/apache2/bin/apachectl -k start
ExecReload=/usr/local/apache2/bin/apachectl -k graceful
ExecStop=/usr/local/apache2/bin/apachectl -k stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

 

 

 

自動起動設定をする

以下のように「systemctl」コマンドで「httpd」の自動起動設定をします。

# systemctl enable httpd.service
# systemctl list-unit-files | grep httpd.service ← 「enable」になっていることを確認します。

 

httpd の起動確認をします。

[root@test-CentOS7 bin]# systemctl start httpd.service
[root@test-CentOS7 bin]# systemctl status httpd.service
● httpd.service - The Apache 2.2 HTTP Server
   Loaded: loaded (/etc/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 金 2018-03-09 10:40:11 JST; 4s ago
  Process: 2499 ExecStart=/usr/local/apache2/bin/apachectl -k start (code=exited, status=0/SUCCESS)
 Main PID: 2502 (httpd)
   CGroup: /system.slice/httpd.service
           tq2502 /usr/local/apache2/bin/httpd -k start
           tq2503 /usr/local/apache2/bin/httpd -k start
           tq2504 /usr/local/apache2/bin/httpd -k start
           tq2505 /usr/local/apache2/bin/httpd -k start
           tq2506 /usr/local/apache2/bin/httpd -k start
           mq2507 /usr/local/apache2/bin/httpd -k start

 3月 09 10:40:11 test-CentOS7 systemd[1]: Starting The Apache 2.2 HTTP Server...
 3月 09 10:40:11 test-CentOS7 apachectl[2499]: httpd: Could not reliably determine the server's ...ame
 3月 09 10:40:11 test-CentOS7 systemd[1]: Started The Apache 2.2 HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

 

 

最後に httpd のプロセスの実行アカウントを確認します。

ps -ef | grep httpd
root      1570     1  0 10:49 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    1571  1570  0 10:49 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    1572  1570  0 10:49 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    1573  1570  0 10:49 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    1574  1570  0 10:49 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    1575  1570  0 10:49 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
root      1577  1531  0 10:49 pts/0    00:00:00 grep --color=auto httpd

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

“【CentOS7】httpd 2.2 (Apache)をコンパイルからインストールする手順” への1件のコメント

  1. 名無しさん より:

    助かりました