Skip to main content

How to configure multiple host for Apache on Ubuntu

Introduction

I recently switched to Ubuntu Desktop. Everything was simple and
straight forward until i needed to run multiple Laravel projects on my
LAMP stack.

For the records, I will also demonstrate how i installed a stable LAMP setup. If you are only interested in configuring multiple Host on Apache, you can click here to skip the story.

Installing the LAMP Stack

LAMP simply means Linux,Apache,MySql,PHP.

I tried so many methods but the command below made life easier for the living.

sudo apt-get install lamp-server^

The command above installed all i needed without any issue. I already configured Mysql from previous installation. All data and configurations of MySql from previous installation remained intact.

I installed the laravel installer and initialized a new Laravel project in the Apache directory.

cd /var/www/html

At first i was comfortable with using 

php artisan ser

Later i decided i was not convenient with the 127...:8080, in windows i had laragon to create vanity urls for my new projects.

 

Configuring Apache

1. first I created 2 laravel projects in the home directory. one called flighter and the other called pakt.

2. I also decided that flighter will be accessible as fly.mk and pakt will be accessible as pakt.pak

2. We need to create entries for these custom domains in the /etc/hosts file. see below command

nano /etc/hosts

you can see the screenshots before and after editing the host file.


3. I created an apache conf file for my domain names. the conf files are usually stored at /etc/apache2/sites-available.

below is a sample of the conf file i created. you can create many conf files if you like but i chose to use one conf file for both domains i am creating.

<VirtualHost *:80>  
  ServerAdmin admin@example.com
     DocumentRoot /var/www/html/flighter/public
     ServerName fly.mk
     ServerAlias www.fly.mk

     <Directory /var/www/html/flighter/public>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/flighter-error.log
     CustomLog ${APACHE_LOG_DIR}/flighter-access.log combined
</VirtualHost>

<VirtualHost *:80>   
  ServerAdmin admin@example.com
     DocumentRoot /var/www/html/pakt/public
     ServerName pakt.pak
     ServerAlias www.pakt.pak

     <Directory /var/www/html/pakt/public>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/pakt-error.log
     CustomLog ${APACHE_LOG_DIR}/pakt-access.log combined
</VirtualHost>

4. save the code above as mydomains.conf

5. run the commands below to enable the new virtual hosts and rewrite modules for our projects.

sudo a2ensite mydomains.conf

sudo a2enmod rewrite

6. then restart apache with the command below

systemctl restart apache2

7. now you can access any of the laravel projects from 

fly.mk and pakt.pak

 

I hope i was brief enough to spark your interest most articles and SO answers forget to mention steps 1, 2 and 3. 

Let me know if you faced any challenge while practicing these.

Thanks for reading.

Comments

Popular Articles

Installing Docker on Ubuntu 18.04 ([SOLVED]- libseccomp2 version 2.3.1 installed but 2.4 required)

 Introduction: If you're attempting to install Docker on Ubuntu 18.04 Bionic Beaver, which is known for having installation issues, this comprehensive guide aims to address common errors you may encounter during the process. Our goal is to save you time searching for answers on StackOverflow by providing clear instructions. The guide is based on the official Docker documentation available at https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository. Step 1: Updating Package Lists To begin, run the following command to update your package lists using the "apt-get update" command: sudo apt-get update Note: If you encounter any errors during the update process, it may be due to the older Ubuntu 18.04 release. In such cases, you can refer to the Configure DNS server IP to resolve errors with apt-get update  guide for assistance. This guide will help you address any DNS-related issues that might be preventing successful updates. Step 2: Installing Dependencie...

Is this a CSS Bug: setting Background and z-index for Pseudo selectors(::before & :: after)

Recently I was making some UI for a friend's project. We had this CSS button effect that works elsewhere but failed to work at the desired location. Upon troubleshooting, we discovered that if the parent element has a background defined, you can't control the z-index of the pseudo selection of any of its children. Wait for it, I have got some demo. TL;DR set background colour or image for a " DIV.parent ", create a " Div.child " inside the " DIV.parent ". use CSS to modify the " ::before" " element of the " Div.child " as follows; set position as absolute, content as an empty string, height:100% and width is best at 50% for example purposes, lastly, give it a background colour. You will observe that the " ::before" " element is overlaying the actual element's content. Try to adjust the z-index of the " ::before" ". You will also realize that the z-index works fine if we remove the backgroun...

Linux - How many network cards/interfaces do I have and what's their IP

 Yup! You have your Linux server or desktop installed, you have been enjoying this setup and suddenly you need to know how many network adapters are installed. You probably also want to know which of these adapters is connected to the internet, please follow through. First, you should run the command below on the terminal ip addr TL; DR: T here are 2 network adapters here,  “enp0s3” is my internet network adapter because it has an IP address from my internet gateway/router/MiFi. The IP address pattern gives this information.it begins with 192.x.x.x. Also "epn0s8" is the local network adapter which allows connections within an ethernet,  This output is quite verbose. Let’s dissect it in a bit. Firstly, we can observe items 1, 2 and 3. It is worth mentioning that item 1 is not an adapter, it is synonymous with the local network. Item 1 is labelled as “lo:”, this means that details in this section have to do with your localhost. Internal network setting of your system. This ...