• Home
  • About Us
  • Contact
  • Privacy Policy

LinuxAdmin.io

  • Home
  • Tutorials
    • System Administration
    • Linux Tutorials
    • Web Hosting
    • WordPress
    • Virtualization
    • Troubleshooting
    • OpenStack

Compile Apache 2.4 From Source

Compile Apache From Source

Compiling Apache 2.4 from source is easy and allows for more customization later on. It also allows for control over where it is installed

Install some required depedencies:

yum install -y wget pcre-devel openssl openssl-devel expat-devel

First get the latest version, at the time of writing this it is 2.4.25. The link to download the latest version is here

wget -O /usr/src/httpd-2.4.25.tar.gz http://mirror.nexcess.net/apache//httpd/httpd-2.4.25.tar.gz

Change directories to /usr/src

cd /usr/src

Uncompress the tar

tar xfvz httpd-2.4.25.tar.gz

Go to the directory:

cd httpd-2.4.25

The build we are creating requires apr and apr-util so to the src lib directory and download the following (APR download page):

cd ./srclib
wget http://mirror.stjschools.org/public/apache//apr/apr-1.5.2.tar.gz
wget http://mirrors.gigenet.com/apache//apr/apr-util-1.5.4.tar.gz

Uncompress them and rename them:

tar xfvz apr-1.5.2.tar.gz; mv apr-1.5.2 apr
tar xfvz apr-util-1.5.4.tar.gz; mv apr-util-1.5.4 apr-util

Configure Apache:

Go back to the main source directory:

cd ../

To view the configure options type the following

./configure --help

This is a sample config:

./configure \
--enable-layout=RedHat \
--prefix=/usr \
--enable-expires \
--enable-headers \
--enable-rewrite \
--enable-cache \
--enable-mem-cache \
--enable-speling \
--enable-usertrack \
--enable-module=so \
--enable-unique_id \
--enable-logio \
--enable-ssl=shared \
--with-ssl=/usr \
--enable-proxy=shared \
--with-included-apr

Make:

make

Install:

make install

Start Services:

CentOS 7 

Create a systemd start file by creating /etc/systemd/system/httpd.service and add

[Unit]
Description=The Apache HTTP Server

[Service]
Type=forking
PIDFile=/var/apache/httpd.pid
ExecStart=/usr/sbin/apachectl start
ExecReload=/usr/sbin/apachectl graceful
ExecStop=/usr/sbin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true


[Install]
WantedBy=multi-user.target

Configure it to start on boot:

systemctl enable httpd

Start it

systemctl start httpd

CentOS 6

chkconfig --add httpd

chkconfig httpd on

service httpd start

That’s it for compiling Apache from source. If you visit the http://ip-address of the server you should see a default page for apache.

You can also verify its running by typing the following:

# ps aux|grep httpd
root 1101 0.0 0.0 105376 836 pts/0 S+ 21:03 0:00 grep httpd
nobody 15834 0.0 0.4 270908 8288 ? S 03:46 0:00 /usr/sbin/httpd -DHAVE_PROXY_FTP -DHAVE_AUTH_TOKEN -DHAVE_PROXY_HTTP -DHAVE_RPAF -DHAVE_PHP5 -DHAVE_XSENDFILE -DHAVE_AUTH_MYSQL -DHAVE_PROXY -DHAVE_PROXY_AJP -DHAVE_PROXY_BALANCER -DHAVE_PROXY_SCGI -DHAVE_SSL -DHAVE_PROXY_CONNECT -DSSL -DSSL -DSSL
nobody 15835 0.0 0.4 270764 8224 ? S 03:46 0:00 /usr/sbin/httpd -DHAVE_PROXY_FTP -DHAVE_AUTH_TOKEN -DHAVE_PROXY_HTTP -DHAVE_RPAF -DHAVE_PHP5 -DHAVE_XSENDFILE -DHAVE_AUTH_MYSQL -DHAVE_PROXY -DHAVE_PROXY_AJP -DHAVE_PROXY_BALANCER -DHAVE_PROXY_SCGI -DHAVE_SSL -DHAVE_PROXY_CONNECT -DSSL -DSSL -DSSL
nobody 15836 0.0 0.4 270764 8224 ? S 03:46 0:00 /usr/sbin/httpd -DHAVE_PROXY_FTP -DHAVE_AUTH_TOKEN -DHAVE_PROXY_HTTP -DHAVE_RPAF -DHAVE_PHP5 -DHAVE_XSENDFILE -DHAVE_AUTH_MYSQL -DHAVE_PROXY -DHAVE_PROXY_AJP -DHAVE_PROXY_BALANCER -DHAVE_PROXY_SCGI -DHAVE_SSL -DHAVE_PROXY_CONNECT -DSSL -DSSL -DSSL
nobody 15837 0.0 0.4 270764 8224 ? S 03:46 0:00 /usr/sbin/httpd -DHAVE_PROXY_FTP -DHAVE_AUTH_TOKEN -DHAVE_PROXY_HTTP -DHAVE_RPAF -DHAVE_PHP5 -DHAVE_XSENDFILE -DHAVE_AUTH_MYSQL -DHAVE_PROXY -DHAVE_PROXY_AJP -DHAVE_PROXY_BALANCER -DHAVE_PROXY_SCGI -DHAVE_SSL -DHAVE_PROXY_CONNECT -DSSL -DSSL -DSSL
nobody 15838 0.0 2.1 321656 40916 ? S 03:46 0:00 /usr/sbin/httpd -DHAVE_PROXY_FTP -DHAVE_AUTH_TOKEN -DHAVE_PROXY_HTTP -DHAVE_RPAF -DHAVE_PHP5 -DHAVE_XSENDFILE -DHAVE_AUTH_MYSQL -DHAVE_PROXY -DHAVE_PROXY_AJP -DHAVE_PROXY_BALANCER -DHAVE_PROXY_SCGI -DHAVE_SSL -DHAVE_PROXY_CONNECT -DSSL -DSSL -DSSL
nobody 15839 0.0 1.6 292740 32276 ? S 03:46 0:00 /usr/sbin/httpd -DHAVE_PROXY_FTP -DHAVE_AUTH_TOKEN -DHAVE_PROXY_HTTP -DHAVE_RPAF -DHAVE_PHP5 -DHAVE_XSENDFILE -DHAVE_AUTH_MYSQL -DHAVE_PROXY -DHAVE_PROXY_AJP -DHAVE_PROXY_BALANCER -DHAVE_PROXY_SCGI -DHAVE_SSL -DHAVE_PROXY_CONNECT -DSSL -DSSL -DSSL
nobody 15840 0.0 1.6 291948 31052 ? S 03:46 0:00 /usr/sbin/httpd -DHAVE_PROXY_FTP -DHAVE_AUTH_TOKEN -DHAVE_PROXY_HTTP -DHAVE_RPAF -DHAVE_PHP5 -DHAVE_XSENDFILE -DHAVE_AUTH_MYSQL -DHAVE_PROXY -DHAVE_PROXY_AJP -DHAVE_PROXY_BALANCER -DHAVE_PROXY_SCGI -DHAVE_SSL -DHAVE_PROXY_CONNECT -DSSL -DSSL -DSSL
nobody 15841 0.0 1.6 291948 31048 ? S 03:46 0:00 /usr/sbin/httpd -DHAVE_PROXY_FTP -DHAVE_AUTH_TOKEN -DHAVE_PROXY_HTTP -DHAVE_RPAF -DHAVE_PHP5 -DHAVE_XSENDFILE -DHAVE_AUTH_MYSQL -DHAVE_PROXY -DHAVE_PROXY_AJP -DHAVE_PROXY_BALANCER -DHAVE_PROXY_SCGI -DHAVE_SSL -DHAVE_PROXY_CONNECT -DSSL -DSSL -DSSL

httpd -M will show the compiled modules:

# httpd -M
Loaded Modules:
 core_module (static)
 authn_file_module (static)
 authn_default_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 authz_user_module (static)
 authz_default_module (static)
 auth_basic_module (static)
 cache_module (static)
 mem_cache_module (static)
 include_module (static)
 filter_module (static)
 log_config_module (static)
 logio_module (static)
 env_module (static)
 expires_module (static)
 headers_module (static)
 usertrack_module (static)
 unique_id_module (static)
 setenvif_module (static)
 version_module (static)
 mpm_prefork_module (static)
 http_module (static)
 mime_module (static)
 status_module (static)
 autoindex_module (static)
 asis_module (static)
 cgi_module (static)
 negotiation_module (static)
 dir_module (static)
 actions_module (static)
 speling_module (static)
 userdir_module (static)
 alias_module (static)
 rewrite_module (static)
 so_module (static)
 ssl_module (shared)

Configuration Changes

The configuration is located in /etc/httpd/conf/httpd.conf typically.

How to change default ports

Apache listens on ports by the Listen directive to change it from port 80 (default)

Listen 8080

How to enable ssl in httpd.conf

Edit /etc/httpd/conf/httpd.conf and ensure the following line is uncommented:

LoadModule ssl_module modules/mod_ssl.so

And add the following line

Listen 443

You will need to restart the service if you make any changes to the configuration files.

May 2, 2017LinuxAdmin.io
0 0 votes
Article Rating
Virsh KVM Commands For Managementmod_auth_token Installation In Apache
You Might Also Like
 
How To Setup Nginx To Use SSL With LetsEncrypt
 
Exploring eBPF: Revolutionizing Network and System Monitoring
Subscribe
Notify of
guest

guest

0 Comments
Inline Feedbacks
View all comments
8 years ago Apache, Linux Tutorials, Web Hosting linux, sysadmin3,821
Recent Posts
  • Configuring Firewalld to Work Seamlessly with Docker on CentOS
  • Mastering NGINX Tuning: Optimizing Web Server Performance
  • Exploring eBPF: Revolutionizing Network and System Monitoring
  • Kubernetes: Installation and Overview on CentOS 8
  • Install Docker on Centos 8
Most Commented
Hot Clone Linux Server with Rsync
Hot Clone A CentOS Server With Rsync
14 Comments
ngx_cache_purge module
Install The ngx_cache_purge Module In Nginx
8 Comments
piwik-nginx
Piwik Analytics on Nginx
8 Comments
Tags
linuxcentosLinux Performance Tuningsysadminkvmnetworkingmemcachedanalyticssystemd
About

We love Linux and are dedicated to creating Linux administration tutorials for System Administrators since 2016.

Most Viewed
Default Gateway
How To Configure A Default Gateway on CentOS
76,143 views
Zend Opcache
Setup and Optimize Zend OpCache
47,105 views
Install ffmpeg
FFMpeg Install On CentOS 7
21,674 views
Archives
Email subscription

Sign up for our newsletter to receive the latest news and event postings.

2018 © LinuxAdmin.io
wpDiscuz