Install Apache web server from source

Installing Apache server from source, and building from source provides the following options that are not available when using a version from a binary package manager.

Compiling from source allows you to:

  • use processor-specific optimizations
  • use the very latest version

Apache Server (HTTP) is a free open source web server for Unix-like systems, Windows and other operating systems.

For my web server setup, I will be using CentOS7 the latest version of Apache 2.4.26 PHP 7.1 with FPM and MariaDB for my database setup and I will configure apache to use Nginx as a reverse proxy.

Open a terminal and install the prerequisits we use the Sudo command to give us root control if you are logged in as a normal user.

 sudo yum -y install gcc.x86_64 pcre-devel.x86_64 openssl-devel.x86_64 expat-devel

 

Next, we will download the Apache source code

 
cd /usr/src
sudo wget https://www-eu.apache.org/dist//httpd/httpd-2.4.26.tar.gz
sudo tar xvfz httpd-2.4.26.tar.gz

We have downloaded the Apache source and extracted it to the /usr/src folder, we need to download and extract the apr and apr-util to be able to build the Apache source

sudo wget https://www-us.apache.org/dist//apr/apr-1.6.2.tar.gz
sudo wget https://www-us.apache.org/dist//apr/apr-util-1.6.0.tar.gz

sudo tar xvfz apr-1.6.2.tar.gz
sudo tar xvfz apr-util-1.6.0.tar.gz

sudo cp -av apr-1.6.2 httpd-2.4.26/srclib/apr
sudo cp -av apr-util-1.6.0 httpd-2.4.26/srclib/apr-util

We have coppied the apr and apr-util to the correct folders, now we can configure apache and install it under the /opt/httpd folder

cd httpd-2.4.26
sudo ./configure --prefix /opt/httpd --enable-rewrite --enable-ssl --enable-proxy --enable-so  --with-included-apr
sudo make
sudo make install

We can configure the apache server and create our SSL keys.

sudo nano /opt/httpd/conf/httpd.conf

Set user and group inside on file httpd.conf to apache

User apache
Group apache

Add this line under include vhosts

IncludeOptional conf/vhosts/*.conf

Create apache vhost directory, for place of config vrtualhost

Enable SSL in httpd.conf

LoadModule ssl_module modules/mod_ssl.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Include conf/extra/httpd-ssl.conf

sudo mkdir /opt/httpd/conf/vhosts
cd vhosts

Apache Server Create server.crt and server.key file

First, Generate the server.key using openssl.

cd /usr/src
sudo openssl genrsa -des3 -out server.key 1024

The above command will ask for the password. Make sure to remember this password. You need this while starting your Apache later.

Next, generate a certificate request file (server.csr) using the above server.key file.

# openssl req -new -key server.key -out server.csr

Finally, generate a self signed ssl certificate (server.crt) using the above server.key and server.csr file.

# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

After you’ve done with the above steps, you’ll see the following three files under /usr/src

# ls server*
  server.crt server.csr server.key

Copy the server.key and server.crt file to appropriate Apache configuration directory location.

cp server.key /opt/httpd/conf/
cp server.crt /opt/httpd/conf/

To start, stop and restart apache service

[root@webserver]# /opt/httpd/bin/apachectl start
[root@webserver]# /opt/httpd/bin/apachectl stop

open a web browser goto https://IP_address/ to test