CentOSから提供されている Apache の RPM パッケージでは、
suEXEC のドキュメントルートのディレクトリが /var/www になっています。
これだと、/home ディレクトリ以下をドキュメントルートに使う場合は、
CGIが正常に動作しません。
この問題を解消するために RPMパッケージをカスタマイズし、独自のRPMを作成して、作成したRPMパッケージからApacheをインストールします。
Apache SRPM
Apache の SRPM(ソースパッケージ) を元にして、RPMファイル を作成します。
src.rpm のファイルをダウンロード後、ダウンロードしたsrc.rpmをインストールします。
"mockbuild" ユーザーを作成していない為、警告が大量に出てくるが無視してください。
気になる場合は、mockbuild のユーザーを作成すれば良いと思います。Apache SRPM インストール
※ "mockbuild" ユーザーを作成していない為、警告が大量に出てくるが無視してよい。src.rpmをダウンロード
#----- httpd(src) をダウンロードする
[root@vm ~]# wget -P /root/setup/rpm/ http://vault.centos.org/7.6.1810/os/Source/SPackages/httpd-2.4.6-88.el7.centos.src.rpm
[root@vm ~]#
src.rpmをインストール
#----- httpd(src) をインストール
[root@vm ~]# rpm -ihv /root/setup/rpm/httpd-2.4.6-88.el7.centos.src.rpm
更新中 / インストール中...
1:httpd-2.4.6-88.el7.centos ################################# [100%]
警告: ユーザー mockbuild は存在しません - root を使用します
警告: ユーザー mockbuild は存在しません - root を使用します
~ 中略 ~
警告: ユーザー mockbuild は存在しません - root を使用します
警告: ユーザー mockbuild は存在しません - root を使用します
[root@vm ~]#
/root/rpmbuild/ のディレクトリにインストールされます。
RPMパッケージを作成する
インストールした RPMパッケージの設定を変更します。httpd.spec 編集
##■ 設定ファイルをバックアップ
[root@localhost ~]# cp -a /root/rpmbuild/SPECS/httpd.spec /root/rpmbuild/SPECS/httpd.spec.org
[root@localhost ~]#
##■ 設定ファイルを編集する
[root@localhost ~]# vi /root/rpmbuild/SPECS/httpd.spec
--------------------------------------------------
##★ suexec_docroot の設定 (先頭に追記する)
%define suexec_docroot /home
##★ --with-suexec-docroot の設定 (310行目辺り)
--with-suexec-docroot=%{docroot} \
## ↓ 変更する
--with-suexec-docroot=%{suexec_docroot} \
##★ --with-suexec-uidmin --with-suexec-gidmin の設定 (314行目辺り)
--with-suexec-uidmin=500 --with-suexec-gidmin=100 \
## ↓ 変更する
--with-suexec-uidmin=89 --with-suexec-gidmin=89 \
--------------------------------------------------
##■ 保存して編集終了
:wq
[root@localhost ~]#
依存パッケージの確認
この状態でインストールしようとすると依存パッケージのエラーが発生します。まずは、依存パッケージを確認します。
依存パッケージの確認
[root@vm ~]# rpmbuild --bb --clean /root/rpmbuild/SPECS/httpd.spec
エラー: ビルド依存性の失敗:
xmlto は httpd-2.4.6-88.el7.x86_64 に必要とされています
zlib-devel は httpd-2.4.6-88.el7.x86_64 に必要とされています
libselinux-devel は httpd-2.4.6-88.el7.x86_64 に必要とされています
lua-devel は httpd-2.4.6-88.el7.x86_64 に必要とされています
apr-devel >= 1.4.0 は httpd-2.4.6-88.el7.x86_64 に必要とされています
apr-util-devel >= 1.2.0 は httpd-2.4.6-88.el7.x86_64 に必要とされています
pcre-devel >= 5.0 は httpd-2.4.6-88.el7.x86_64 に必要とされています
systemd-devel は httpd-2.4.6-88.el7.x86_64 に必要とされています
openssl-devel >= 1:1.0.1e-37 は httpd-2.4.6-88.el7.x86_64 に必要とされています
libxml2-devel は httpd-2.4.6-88.el7.x86_64 に必要とされています
[root@vm ~]#
依存パッケージをインストール
ここでは、依存パッケージをyumコマンドでインストールします。数が多いので、yumコマンドで時間短縮していきます。
依存パッケージの確認
[root@vm ~]# yum -y install xmlto
[root@vm ~]#
[root@vm ~]# yum -y install zlib-devel
[root@vm ~]#
[root@vm ~]# yum -y install libselinux-devel
[root@vm ~]#
[root@vm ~]# yum -y install lua-devel
[root@vm ~]#
[root@vm ~]# yum -y install apr-devel
[root@vm ~]#
[root@vm ~]# yum -y install apr-util-devel
[root@vm ~]#
[root@vm ~]# yum -y install pcre-devel
[root@vm ~]#
[root@vm ~]# yum -y install systemd-devel
[root@vm ~]#
[root@vm ~]# yum -y install openssl-devel
[root@vm ~]#
[root@vm ~]# yum -y install libxml2-devel
[root@vm ~]#
RPMパッケージを作成する
src.rpmファイルを元にして、rpmパッケージを作成します。環境によっては作成が完了するので数十分掛かる場合があります。
依存パッケージの作成
[root@vm ~]# rpmbuild --bb --clean /root/rpmbuild/SPECS/httpd.spec
~ 中略 ~
書き込み完了: /root/rpmbuild/RPMS/x86_64/httpd-2.4.6-88.el7.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/httpd-devel-2.4.6-88.el7.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/noarch/httpd-manual-2.4.6-88.el7.noarch.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/httpd-tools-2.4.6-88.el7.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/mod_ssl-2.4.6-88.el7.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/mod_proxy_html-2.4.6-88.el7.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/mod_ldap-2.4.6-88.el7.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/mod_session-2.4.6-88.el7.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/httpd-debuginfo-2.4.6-88.el7.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.WrOWth
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd httpd-2.4.6
+ rm -rf /root/rpmbuild/BUILDROOT/httpd-2.4.6-88.el7.x86_64
+ exit 0
[root@vm ~]#
Apacheをインストールする
上記で作成したRPMパッケージからApacheをインストールします。インストールの途中で依存関係のエラーが発生しますので、その都度、依存パッケージをyumコマンドでインストールしていきます。
依存パッケージをrpmコマンドでインストールする場合は、こちらのURLから検索してください。
ftp://ftp.riken.jp/pub/Linux/centos/7/os/x86_64/Packages/
Apache インストール
#----- httpd-toolsをインストール
[root@vm ~]# rpm -ihv /root/rpmbuild/RPMS/x86_64/httpd-tools-2.4.6-88.el7.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:httpd-tools-2.4.6-88.el7 ################################# [100%]
[root@vm ~]#
#----- httpdをインストール
[root@vm ~]# rpm -ihv /root/rpmbuild/RPMS/x86_64/httpd-2.4.6-88.el7.x86_64.rpm
エラー: 依存性の欠如:
/etc/mime.types は httpd-2.4.6-88.el7.x86_64 に必要とされています
[root@vm ~]#
#★ 依存関係のエラーが発生
#----- /etc/mime.types が含まれているパッケージを検索する
[root@vm ~]# yum provides /etc/mime.types
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp-srv2.kddilabs.jp
* extras: ftp-srv2.kddilabs.jp
* updates: ftp-srv2.kddilabs.jp
mailcap-2.1.41-2.el7.noarch : Helper application and MIME type associations for file types
リポジトリー : base
一致 :
ファイル名 : /etc/mime.types
[root@vm ~]#
#----- mailcapをインストール
[root@vm ~]# yum -y install mailcap
[root@vm ~]#
#----- 再度 httpdのインストールを試みる
[root@vm ~]# rpm -ihv /root/rpmbuild/RPMS/x86_64/httpd-2.4.6-88.el7.x86_64.rpm
[root@vm ~]#
#----- httpd-develをインストール
#※ 「/usr/local/bin/perl が必要」という警告が出る為、依存関係を無視(--nodeps)してインストールする
[root@vm ~]# rpm -ihv --nodeps /root/rpmbuild/RPMS/x86_64/httpd-devel-2.4.6-88.el7.x86_64.rpm
[root@vm ~]#
#----- httpd-manualをインストール
[root@vm ~]# rpm -ihv /root/rpmbuild/RPMS/noarch/httpd-manual-2.4.6-88.el7.noarch.rpm
[root@vm ~]#
#----- mod_sslをインストール
[root@vm ~]# rpm -ihv /root/rpmbuild/RPMS/x86_64/mod_ssl-2.4.6-88.el7.x86_64.rpm
[root@vm ~]#
#----- mod_fcgidをインストール
#※ 警告が出ますが、インストールは完了しているようです
[root@vm ~]# yum -y install mod_fcgid
~ 中略 ~
警告: RPMDB は yum 以外で変更されました。
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
httpd-devel-2.4.6-88.el7.x86_64 は次の要求が不足ています: /usr/local/bin/perl
インストール中 : mod_fcgid-2.3.9-4.el7_4.1.x86_64 1/1
検証中 : mod_fcgid-2.3.9-4.el7_4.1.x86_64 1/1
インストール:
mod_fcgid.x86_64 0:2.3.9-4.el7_4.1
完了しました!
[root@vm ~]#
Apacheを再起動する
インストールが完了したら、Apacheを再起動してみます。
[root@vm ~]# systemctl restart httpd.service
[root@vm ~]#
Apacheの自動起動を設定する
Apacheをインストールしただけでは自動起動が有効になっていません。
CentOSの起動と同時にApacheも起動するように有効化します。
Apache 自動起動を有効化
#----- Apacheの自動起動を有効化する
[root@vm ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@vm ~]#
FireWallでApacheを許可する
FireWallを有効に設定している場合は、Apacheを許可しないとアクセスができません。
Webページが表示できるように許可の設定をします。
FireWall Apache 許可
#----- 恒久的にサービスを追加する(http)
[root@vm ~]# firewall-cmd --zone=public --add-service=http --permanent
success
[root@vm ~]#
#----- 恒久的にサービスを追加する(https)
[root@vm ~]# firewall-cmd --zone=public --add-service=https --permanent
success
[root@vm ~]#
#----- 設定を再読み込みする
[root@vm ~]# firewall-cmd --reload
success
[root@vm ~]#
動作確認
インストール直後の動作を確認します。ブラウザのアドレスにから IPアドレス を入力して、Webページを表示させます。
http://[IPアドレス]/ にアクセスして、ページが表示されればインストールは成功しています。
以上で、Apacheのインストールは終了です。
続いて、Apacheの詳細設定をおこなう場合は、こちらのページをご覧ください。
CentOS-7/Apache/設定(httpd.conf,SSL,VirtualHost)
0 件のコメント:
コメントを投稿