CentOS 7 Apache 2.4.29のソースファイルからのインストール

# 動作確認環境
- 仮想環境 VMware Workstation Player 14.1.1
- OS Windows 10 Pro 64bit

# 仮想環境
- OS CentOS 7.4 (1708) minimalインストール
- メモリ 2GB
- HDD 250GB

# 前提条件
- gcc 7.2.0
- cmake 3.10.2
- MySQL 5.7.21
- OpenSSL 1.1.0.g

# 必要なパッケージのインストール
## Nghttp2
最新バージョンの確認
[Release nghttp2 v1.31.0 · nghttp2/nghttp2 · GitHub](https://github.com/tatsuhiro-t/nghttp2/releases/latest)

`/usr/local/src`ディレクトリに移動する。

````
cd /usr/local/src
````
ソースファイルをダウンロードする。

````
wget https://github.com/nghttp2/nghttp2/releases/download/v1.31.0/nghttp2-1.31.0.tar.gz
````

ダウンロードしたファイルを展開する。

````
tar xvzf nghttp2-1.31.0.tar.gz
````
コンパイル・インストール
展開したディレクトリに移動する。

````
cd nghttp2-1.31.0/
````

コンパイル・インストール

````
autoreconf -i
automake
autoconf
env OPENSSL_CFLAGS="-I/usr/local/openssl/include" OPENSSL_LIBS="-L/usr/local/openssl/lib -lssl -lcrypto" ./configure
make
make install
````

エラーが発生するので、対策で共有ライブラリに追加する。

````
echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf ldconfig
````

## APR 1.6.3
最新バージョンの確認
[Download - The Apache Portable Runtime Project](http://apr.apache.org/download.cgi)

`/usr/local/src`ディレクトリに移動する。

````
cd /usr/local/src
````
ソースファイルをダウンロードする。

````
wget http://www-eu.apache.org/dist//apr/apr-1.6.3.tar.gz
````

ダウンロードしたファイルを展開する。

````
tar zxvf apr-1.6.3.tar.gz
````
コンパイル・インストール
展開したディレクトリに移動する。

````
cd apr-1.6.3
````

コンパイル・インストール

````
./configure --prefix=/usr/local/apr-1.6.3
make
make install
````

## APR-Util 1.6.1
最新バージョンの確認
[Download - The Apache Portable Runtime Project](http://apr.apache.org/download.cgi)

コンパイル・インストールするとエラーが発生するので、対策をする。

````
xml/apr_xml.c:35:19: 致命的エラー: expat.h: そのようなファイルやディレクトリはありません
コンパイルを停止しました。
make[1]: *** [xml/apr_xml.lo] エラー 1
make[1]: ディレクトリ `/usr/local/src/apr-util-1.6.1' から出ます
make: *** [all-recursive] エラー 1
````
`expat-devel`をインストールする。

````
yum -y install expat-devel
````

`/usr/local/src`ディレクトリに移動する。

````
cd /usr/local/src
````
ソースファイルをダウンロードする。

````
wget http://www-eu.apache.org/dist//apr/apr-util-1.6.1.tar.gz
````

ダウンロードしたファイルを展開する。

````
tar zxvf apr-util-1.6.1.tar.gz
````
コンパイル・インストール
展開したディレクトリに移動する。

````
cd apr-util-1.6.1
````

コンパイル・インストール

````
./configure --prefix=/usr/local/apr-util-1.6.1 --with-apr=/usr/local/apr-1.6.3
make
make install
````
## PCRE 8.41
最新バージョンの確認
[Index of /pub/pcre/](https://ftp.pcre.org/pub/pcre/)

`/usr/local/src`ディレクトリに移動する。

````
cd /usr/local/src
````
ソースファイルをダウンロードする。

````
wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
````

ダウンロードしたファイルを展開する。

````
tar zxvf pcre-8.41.tar.gz
````
コンパイル・インストール
展開したディレクトリに移動する。

````
cd pcre-8.41
````
コンパイル・インストール

````
./configure --prefix=/usr/local/pcre-8.41
make
make install
````
## Apache
最新バージョンの確認
[Welcome! - The Apache HTTP Server Project](http://httpd.apache.org/)

`/usr/local/src`ディレクトリに移動する。

````
cd /usr/local/src
````
ソースファイルをダウンロードする。

````
wget http://www-eu.apache.org/dist//httpd/httpd-2.4.29.tar.gz
````

ダウンロードしたファイルを展開する。

````
tar zxvf httpd-2.4.29.tar.gz
````
コンパイル・インストール
展開したディレクトリに移動する。

````
cd httpd-2.4.29
````
コンパイル・インストール

````
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr-1.6.3 --with-apr-util=/usr/local/apr-util-1.6.1 --with-pcre=/usr/local/pcre-8.41 --enable-http2 --enable-ssl --with-ssl=/usr/local/openssl --enable-so --enable-mods-shared=all --enable-mpms-shared=all
make
make install
````
Apacheの実行ユーザーを作成する。

````
useradd -d /tmp -s /sbin/nologin apache
useradd: 警告: ホームディレクトリが既に存在します。
skel ディレクトリからのコピーは行いません。
````
 
パスワードの変更

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

所有者とグループの変更

````
chown -R apache:apache /usr/local/apache2/
````

Apache の基本設定
`/etc/bashrc`に追記する。

````
vi /etc/bashrc
````

追記する。

````bashrc
PATH=$PATH:/usr/local/apache2/bin
````

更新する。

````
source /etc/bashrc
````

`httpd.conf`を編集する。

````
vi /usr/local/apache2/conf/httpd.conf
````

`ServerName`を変更する。

````httpd.conf
ServerName localhost:80
````

自動起動できるようファイルを作成する。

````
vi /usr/lib/systemd/system/httpd.service
````

````httpd.service
[Unit]
Description=Apache httpd daemon

[Service]
Type=forking
ExecStart=/usr/local/apache2/bin/apachectl -k start

[Install]
WantedBy=multi-user.target  
````

作成後、更新する。

````
systemctl daemon-reload
````

システム起動時の自動起動設定

````
systemctl enable httpd
````
以下のような表示をする。

````
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
````

起動

````
systemctl start httpd
````
ステータス確認

````
systemctl status httpd
````

以下のような表示をする。

````
● httpd.service - Apache httpd daemon
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2018-03-11 20:05:43 JST; 4s ago
  Process: 70397 ExecStart=/usr/local/apache2/bin/apachectl -k start (code=exited, status=0/SUCCESS)
 Main PID: 70400 (httpd)
   CGroup: /system.slice/httpd.service
           tq70400 /usr/local/apache2/bin/httpd -k start
           tq70401 /usr/local/apache2/bin/httpd -k start
           tq70402 /usr/local/apache2/bin/httpd -k start
           mq70403 /usr/local/apache2/bin/httpd -k start

 3月 11 20:05:43 knut systemd[1]: Starting Apache httpd daemon...
 3月 11 20:05:43 knut systemd[1]: Started Apache httpd daemon.
````

# 参考
[記事がなくなりました](http://itmemo.net-luck.com/linux-centos-apache-install-2/)
[systemctl service の新規作成](http://www.smiyasaka.com/CentOS7.0_server21.html)

---
[目次](https://qiita.com/knutpb1205/items/3ece0cab588afdb13f02)