Skip to content

Building Apache HTTP Server

aborkar-ibm edited this page Dec 22, 2020 · 55 revisions

Building Apache HTTP Server

Below versions of Apache HTTP Server are available in respective distributions at the time of creation of these build instructions:

  • RHEL (7.8, 7.9) have 2.4.6
  • RHEL (8.1, 8.2, 8.3) have 2.4.37
  • SLES 12 SP5 has 2.4.23
  • SLES 15 SP1 has 2.4.33
  • SLES 15 SP2 has 2.4.43
  • Ubuntu 18.04 has 2.4.29
  • Ubuntu 20.04 has 2.4.41
  • Ubuntu 20.10 has 2.4.46

The instructions provided below specify the steps to build Apache HTTP Server version 2.4.46 on Linux on IBM Z for following distributions:

  • RHEL (7.8, 7.9, 8.1, 8.2, 8.3)
  • SLES (12 SP5, 15 SP1, 15 SP2)
  • Ubuntu (18.04, 20.04)

General Notes:

  • When following the steps below please use a standard permission user unless otherwise specified.
  • A directory /<source_root>/ will be referred to in these instructions, this is a temporary writable directory anywhere you'd like to place it

Step 1: Build using script

If you want to build Apache http server using manual steps, go to STEP 2.

Use the following commands to build Apache http server using the build script. Please make sure you have wget installed.

wget -q https://raw.githubusercontent.com/linux-on-ibm-z/scripts/master/ApacheHttpServer/2.4.46/build_apachehttpserver.sh

# Build Apache HTTP Server
bash build_apachehttpserver.sh

If the build completes successfully, go to STEP 3. In case of error, check logs for more details or go to STEP 2 to follow manual build steps.

Step 2: Build Apache HTTP Server

2.1) Install dependencies

  • RHEL (7.8, 7.9)

    sudo yum install git -y openssl openssl-devel python gcc libtool autoconf make pcre pcre-devel libxml2 libxml2-devel expat-devel which wget tar
  • RHEL (8.1, 8.2, 8.3)

    sudo yum install -y git openssl openssl-devel python2 gcc libtool autoconf make pcre pcre-devel libxml2 libxml2-devel expat-devel which wget tar 
  • SLES 12 SP5

    sudo zypper install -y git openssl openssl-devel python gcc libtool autoconf make pcre pcre-devel libxml2 libxml2-devel libexpat-devel which wget tar
  • SLES (15 SP1, 15 SP2)

    sudo zypper install -y git openssl libopenssl-devel python gcc libtool autoconf make libpcre1 pcre-devel libxml2-tools libxml2-devel libexpat-devel which wget tar
  • Ubuntu (18.04, 20.04)

    sudo apt-get update
    sudo apt-get install -y git python openssl gcc autoconf make libtool-bin libpcre3-dev libxml2  libexpat1 libexpat1-dev wget tar 

2.2) Extract Apache HTTP source code (and supporting packages)

export SOURCE_ROOT=/<source_root>/
cd $SOURCE_ROOT
git clone git://github.com/apache/httpd.git 
cd $SOURCE_ROOT/httpd
git checkout 2.4.46

cd $SOURCE_ROOT/httpd/srclib
git clone git://github.com/apache/apr.git
cd $SOURCE_ROOT/httpd/srclib/apr 
git checkout 1.6.5

cd $SOURCE_ROOT/httpd/srclib
git clone git://github.com/apache/apr-util.git
cd $SOURCE_ROOT/httpd/srclib/apr-util
git checkout 1.6.1

2.3) Build and Install Apache HTTP Server

cd $SOURCE_ROOT/httpd
sudo alternatives --set python /usr/bin/python2 (For RHEL 8.1, 8.2, 8.3 only)
./buildconf
./configure --with-included-apr --prefix=<build-location>
make
sudo make install

Note: Skipping the --prefix results in Apache httpd being installed in the default location.

Step 3: Verification(Optional)

Note: All the following commands may require sudo depending on the <build-location> specified.

3.1) Update your configuration as necessary

To update configuration you may modify <build-location>/conf/httpd.conf file.

3.2) Verify the configuration and start the server

Create daemon user for SLES 15 SP1 and SP2 only

sudo groupadd daemon
sudo useradd -G daemon daemon

Start the server

<build-location>/bin/apachectl configtest
<build-location>/bin/apachectl -k start

Note: If <build-location> is the prefix you specified, ensure that in /conf/httpd.conf file, values for User and Group fields are same as that of <build-location>. Else, it will display forbidden(403) error in the browser.

3.3) Stop the webserver

<build-location>/bin/apachectl -k stop

Note: <build-location> is the prefix you specified, if you didn't specify a prefix it should be installed to /usr/local/apache2.

References:

http://httpd.apache.org/

Clone this wiki locally