How to Install Apache on CentOS 7

How to Install Apache on CentOS 7

Apache is a free, open source and popular HTTP Server that runs on Unix-like operating systems including Linux and also Windows OS. Since its release 20 years ago, it has been the most popular web server powering several sites on the Internet. It is easy to install and configure to host single or multiple websites on a same Linux or Windows server.

In this article, we will explain how to install, configure and manage Apache HTTP web server on a CentOS 7 or RHEL 7 server using command line.

Install Apache Web Server

1. First update the system software packages to the latest version.

# yum -y update

2. Next, install Apache HTTP server from the default software repositories using the YUM package manager as follows.

# yum install httpd

Manage Apache HTTP Server on CentOS 7

3. Once Apache web server installed, you can start it first time and enable it to start automatically at system boot.

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd

Configure firewalld to Allow Apache Traffic

4. By default, CentOS 7 built-in firewall is set to block Apache traffic. To allow web traffic on Apache, update the system firewall rules to permit inbound packets on HTTP and HTTPS using the commands below.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

Test Apache HTTP Server on CentOS 7

http://SERVER_DOMAIN_NAME_OR_IP 

Configure Name-based Virtual Hosts on CentOS 7

This section only useful, if you want to host more than one domain (virtual host) on the same Apache web server. There are many ways to setup a virtual host, but we will explain one of the simplest methods here.

6. First create a vhost.conf file under /etc/httpd/conf.d/ directory to store multiple virtual host configurations.

# vi /etc/httpd/conf.d/vhost.conf

Add the following example virtual host directive template for website inode, make sure to change the necessary values for your own domain

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@inode
    ServerName inode
    ServerAlias inode
    DocumentRoot /var/www/html/inode/
    ErrorLog /var/log/httpd/inode/error.log
    CustomLog /var/log/httpd/inode/access.log combined
</VirtualHost>

Important: You can add as many as domains to vhost.conf file, just copy the VirtualHost block above and change the values for each domain you add.

7. Now create the directories for inode website as referenced in the VirtualHost block above.

# mkdir -p /var/www/html/inode    [Document Root - Add Files]
# mkdir -p /var/log/httpd/inode   [Log Directory]

8. Create a dummy index.html page under /var/www/html/inode

# echo "Welcome to My inode Website" > /var/www/html/inode/index.html

9. Finally, restart Apache service for the above changes to take effect.

# systemctl restart httpd.service

10. Now you can visit inode to test the index page created above.

Apache Important Files and Directoires

  • The default server root directory (top level directory containing configuration files): /etc/httpd
  • The main Apache configuration file: /etc/httpd/conf/httpd.conf
  • Additional configurations can be added in: /etc/httpd/conf.d/
  • Apache virtual host configuration file: /etc/httpd/conf.d/vhost.conf
  • Configurations for modules: /etc/httpd/conf.modules.d/
  • Apache default server document root directory (stores web files): /var/www/html

Leave a Reply

Your email address will not be published. Required fields are marked *