このWebサイト ひつじ帳 は、管理者がWEB関連の技術をまとめた備忘録サイトです。 Linux,CentOS,PHP,MySQL,Blogger,JavaScript,CSS について記録しています。

CentOS-7/Apache/インストール(suEXEC対応)

CentOS-7に、Apacheをインストールします。

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 件のコメント:

人気記事

このブログを検索