概要
今回はソースからインストールしてLAMP環境を構築していきます。必要になるものはなるべくソースからインストールしていますが、wget
やgcc
はdnfコマンドでパッケージからインストールします。この記事は Apacheをソースからインストールします。MySQLやPHPは次回の記事でインストールしていきます。
環境
OS - ホスト: ESXi 7.0.1 - OS: CentOS8 (最小限のインストール)
使用ライブラリ - apache-2.4.46 - apr-1.7.0 - apr-util-1.6.1 - openeel-3.0.0 - pcre-8.44 - expat-2.3.0
事前準備
Apacheをソースコードからインストールするためには、gcc, make, pcre, pcre-devel のライブラリが必要になります。 なので、それらをあらかじめインストールしておきます。
# dnf install gcc gcc-c++ make pcre pcre-devel perl wget
httpdをソースからインストール
今回は、ソースからApache(httpd)をインストールしていきます。 以下のページにApacheのビルドに必要なライブラリやインストール手順が書かれていて、ここを参考にしています。 Compiling and Installing – Apache HTTP Server Version 2.4 これに従うと、APR と APR-Util と PCRE というのライブラリが必要になりますが、その他にもExpatというライブラリや追加した方が良いモジュールもあるので、作業がスムーズになるように整理してまとめていきます。 まず、Apache本体をダウンロードします。
# cd /usr/local/src # wget https://ftp.yz.yamagata-u.ac.jp/pub/network/apache/httpd/httpd-2.4.46.tar.gz # tar zxvf httpd-2.4.46.tar.gz
APR と APR-Util
APR(Apache Portable Runtime)は、Apacheのサポートライブラリで、OS等の環境の違いを吸収する機能です。使用するOSが、機能が備わっていない場合、このAPRが代わりとなってその機能を提供してくれます。
# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/apr/apr-1.7.0.tar.gz # tar zxvf apr-1.7.0.tar.gz # mv apr-1.7.0 httpd-2.4.46/srclib/apr
APR-Utilも同様に、ダウンロードと解凍をして、解凍できたディレクトリをhttpd-2.4.46/srclib/apr-util
に移動させます
# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/apr/apr-util-1.6.1.tar.gz # tar zxvf apr-util-1.6.1.tar.gz # mv apr-util-1.6.1.tar.gz httpd-2.4.46/srclib/apr-util
PCRE
PCRE(Perl Compatible Regular Expressions)は、Perl互換の正規表現を他の言語でも使えるようにするもので、多くのミドルウェアで必要とされているライブラリです。 事前準備が終わっていなければ、インストールしてください。 PCREのビルドをしていきます。wget でダウンロードして、展開・解凍を行い、解凍・展開してビルドします。
# wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz # tar zxvf pcre-8.44.tar.gz # cd pcre-8.44.tar.gz # ./configure # make # make install
Expat
Expatとは、XMLファイルの中身のデータを解析・整形するライブラリです。 Welcome to Expat! · Expat XML parser のサイトから、wget でダウンロードして、展開・解凍を行い、解凍・展開してビルドします。
# wget https://github.com/libexpat/libexpat/releases/download/R_2_3_0/expat-2.3.0.tar.gz # tar zxvf expat-2.3.0.tar.gz # cd expat-2.3.0.tar.gz # ./configure # make # make install
OpenSSL
これでApacheのビルドができますが、TLS通信は必須なので、OpenSSLをソースからビルドしていきます。 この段階で設定しておかないと、後からOpenSSLを使用できないからです。(再度ビルドすることになる)
# wget https://www.openssl.org/source/openssl-3.0.0-alpha14.tar.gz # tar zxvf openssl-3.0.0-alpha14.tar.gz # cd openssl-3.0.0-alpha14.tar.gz # ./config # make # make install
Apacheのビルド
これで準備ができたので、Apacheをビルドしていきます。
# cd httpd-2.4.46/ # ./configure \ --prefix=/usr/local/httpd \ --with-included-apr \ --with-pcre=/usr/local/src/pcre-8.44/pcre-config \ --enable-mods-shared=all \ --enable-ssl \ --with-ssl=/usr/local/ssl \ --with-mpms-shared=all # make # make install
configureのオプションは以下の通りです。
オプション | 説明 |
–prefix | インストールするディレクトリを指定 |
–with-included-apr | srclib内のAPRとAPR-Utilもビルド対象にする |
–with-pcre | インストールしたPCREのディレクトリを指定 |
–enable-mods-shared | 動的モジュールをビルド対象にする |
–enable-ssl | sslモジュールをビルド対象にする |
–with-ssl | インストールしたOpenSSLのディレクトリを指定 |
–with-mpms-shared | worker, prefork, eventをビルド対象にする |
ビルドができたら、新しくapacheのユーザとグループを作成し、メイン設定ファイルを変更します。 サービスを動かす用のユーザなので、デフォルトシェルに/sbin/nologinを指定して、ログインを禁止にします。
# cd /usr/local/httpd/ # groupadd apache # useradd apache -g apache -s /sbin/nologin # chown -R apache.apache . # vi conf/httpd.conf
# vi /usr/lib/systemd/system/httpd.service [Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/httpd/bin/apachectl start ExecReload=/usr/local/httpd/bin/apachectl graceful ExecStop=/usr/local/httpd/bin/apachectl stop [Install] WantedBy=multi-user.target
以下のコマンドで変更を反映させます。
# systemctl daemon-reload
ファイアウォールの設定を変更して、HTTP/HTTPS通信用の待ち受けポートを開放させます。
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --add-service=https --zone=public --permanent # firewall-cmd --reload
自動起動&今すぐ起動の設定を行います。
# systemctl enable httpd --now
まずはcurlコマンドでページをとってこれるか確認します。
# curl http://192.168.1.220 <html><body><h1>It works!</h1></body></html>
そしたら、実際にWebブラウザで開いてみて、この画面が表示されればApacheがビルドして、起動することができています。
まとめ
こんかいは、Apacheのみでしたが、これから、LAMP環境のMySQL PHPのソースからのインストールに挑戦していきたいと思います。