Install and Configure Apache Server

Install and Configure Apache Server

 A. Install and Verify Apache Server

  1. Install the Web Serverpackage group:
# yum groupinstall -y "Web Server"
  1. Edit the /etc/hosts file and the ip address and fully qualified domain name of the server:
192.168.2.50 server.example.com
  1. Optionally, Set the ServerName directive in /etc/httpd/conf/httpd.conf file. Activate at boot time and start the service:
# systemctl enable httpd

# systemctl start httpd
  1. Add the HTTP service to the firewall configuration and reload it:
# firewall-cmd --list-all
# firewall-cmd --permanent --add-service=http
Success
# firewall-cmd --reload
Success

If you plan to use the HTTPS protocol, the command should be # firewall-cmd –permanent –add-service=https

  1. Check which ports this deamon is listening on:
$ ss -nutlp | grep -i http

Here it shows that our web server daemon is listening on port 80 and 443. A further check you can do is this:

# fuser -v -n tcp 80
# fuser -v -n tcp 443
  1. Confirm that our client can connect to these ports:
# nc -v 10.0.5.10 80
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 10.0.5.10:80.
^C
# nc -v 10.0.5.10 443
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 10.0.5.10:443.
^C

 

  1. Test the Welcome Page. Open the browser and visit http://server.example.com. You will get the welcome page, even if you create an html page in /var/www/html. This is due to  IncludeOptional conf.d/*.confstatement at the end of the /etc/httpd/conf/httpd.conf file that instructs Apache to load the files finishing by *.conf located in the /etc/httpd/conf.d To display the content of the /var/www/html directory, you need to go to the /etc/httpd/conf.d directory and check the welcome.conf file.
  2. Create /etc/httpd/conf.d/mywebserver.conf file:
<Directory /var/www/html>

AllowOverride None

Require all granted

</Directory>
  1. Install the httpd-manual package.
# yum install -y httpd-manual
# elinks /usr/share/httpd/manual/howto/auth.html

B. Configure a Virtual Host.

Let’s assume your website is called vhost1.example.com.

  1. Create /var/www/html/vhost1.example.com directory:
# cd /var/www/html

# mkdir vhost1.example.com
  1. Create an index.html file and assign the correct SELinux context:
# echo "This is vhost1 test." > vhost1.example.com/index.html

# restorecon -R vhost1.example.com
  1. Create the /etc/httpd/conf.d/vhosts.conf file and paste the following lines:
<VirtualHost *:80>
ServerAdmin webmaster@vhost1.example.com
DocumentRoot /var/www/html/vhost1.example.com
ServerName vhost1.example.com
ErrorLog logs/vhost1.example.com-error_log
CustomLog logs/vhost1.example.com-access_log common
</VirtualHost>
  1. Optionaly, rename the /etc/httpd/conf.d/ssl.conf file, otherwise you get an additional non-working https virtual host displayed in the configuration.
# cd /etc/httpd/conf.d; mv ssl.conf ssl.conf2
  1. Check the validity of the configuration:
# apachectl configtest

Syntax OK

You can also type: # httpd -t

  1. Restart the httpd service:
# apachectl restart

You can also use # systemctl restart httpd. For minor configuration changes, it is also possible to restart the Apache daemon without losing the current connections: # apachectl graceful

  1. Check the virtual host(s) configuration:
# httpd -D DUMP_VHOSTS
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server vhost1.example.com (/etc/httpd/conf.d/vhosts.conf:1)
         port 80 namevhost vhost1.example.com (/etc/httpd/conf.d/vhosts.conf:1)
         port 80 namevhost vhost1.example.com (/etc/httpd/conf.d/vhosts.conf:1)
  1. Check the configuration:
# yum install -y elinks
# elinks http://vhost1.example.com

C. Configure Apache access restrictions on directories.

  1. Create a private directory, private, in /var/www/html
# cd /var/www/html 
# mkdir private
# echo "This is Private Host test." > private/index.html
# restorecon -R .
  1. Host-based private directories: To only allow the test.example.com host (add the name/IP address in the /etc/hosts file if necessary) to access a specific directory (here private), edit the /etc/httpd/conf/httpd.conf file and paste the following lines at the end:
<Directory "/var/www/html/private">
AllowOverride None
Options None
Require host test.example.com
</Directory>
  1. Check the configuration file:
# apachectl configtest
Syntax OK
  1. User-based private directories: To only allow me to access a specific directory (here private), edit the /etc/httpd/conf/httpd.conffile and paste the following lines at the end:
<Directory "/var/www/html/private">
AuthType Basic
AuthName "Password protected area"
AuthUserFile /etc/httpd/conf/passwd
Require user me
</Directory>
  1. Check the configuration file:
# apachectl configtest
Syntax OK
  1. Create the passwd file and store me‘s password:
# htpasswd -c /etc/httpd/conf/passwd me
# chmod 600 /etc/httpd/conf/passwd
# chown apache:apache /etc/httpd/conf/passwd

The .htpasswd file can be used locally instead of the httpd.conf file.

  1. Whatever the option chosen, restart the httpd service:
# systemctl restart httpd
  1. Check the httpd service:
# yum install -y curl
# curl -u user:password http://localhost

or

# yum install -y elinks
# elinks http://localhost/private
September 27, 2019

0 responses on "Install and Configure Apache Server"

Leave a Message

Featured Testimonial

I would like to mention a new feature "Interactive Video". You can't simply watch the video. You have to actually get involved. It will pause suddenly and ask question. If you are not able to answer the question you have to watch it all over again. Hence a real learning is guaranteed.Read more

Indiana Jones

Co-Founder Director

Certificate Code

Become an Instructor

top
Designed by  © Alliance Softech Pvt Ltd. All rights reserved.
WhatsApp chat
X