dmxt
By:
dmxt

How do I add sub domain and make it point to a certain directory?

February 17, 2016 5.8k views
LAMP Stack Networking Control Panels DigitalOcean Debian

I want to add subdomain dev.mydomain.com that point to /var/www/html/dev.

I currently have a main domain and my server is Debian 8.2 x64 running on LAMP. My apache configuration /etc/apache2/sites-available/000-default.conf which I think is correct file to check:

<VirtualHost *:80>
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        <Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride FileInfo
                Order allow,deny
                allow from all
        </Directory>
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

It looks barehand because I removed almost all comments. Not sure where did that vim line come from. My site works, my domain points to /var/www/html. (Off-topic, i would like it to point to /var/www/ but if this is default, then it must be correct and common way)

Anyway I tried looking up how to add sub domain, found this reply on relevant thread but I don't know if it's okay to uncomment ServerName and set it as dev.mydomain.com and change directory from var/www/html to var/www/html/dev because that's what everyone is saying. It just doesn't make sense to me. If I do that, then my main domain and main directory configuration will probably cease to function (my guess).

I also do not know what to type in droplet cpanel in domain settings to make this work. Advice on that will be very helpful.

Can you advise me how to add a subdomain dev.mydomain.com and make it point to var/www/html/dev/ folder?

2 comments
  • Even though you're on a Debian distro, this tutorial on Apache virtual hosts on ubuntu should still be relevant. The red colored font shows which changes to make on your config file that you copied.
    BTW, the vim line is usually towards the top of the file for the vim editor to honor the directives.
    P.S. - The tutorial uses two same level directories, and not a subdirectory of another virtual host.

    by Justin Ellingwood
    The Apache web server is the most popular way to serve web content on the internet. Apache has the ability to serve multiple domains from a single server by using a mechanism called "virtual hosts". If a virtual host is configured correctly for each domain, the web server can correctly route traffic to the appropriate files based on the domain name requested. In this guide, we'll demonstrate how to configure Apache virtual hosts on an Ubuntu 14.04 VPS.
  • Could I ask which instruction should I follow in this page to add subdomain dev.mydomainname.com in DO cpanel and add dev.mydomainname.com in certain file to make it working?

    I don't even have ServerName setup, as mentioned in the thread, I'm worried if I setup ServerName with dev.mydomainname.com in 000-default.conf (I dont even know if it's right file) and it will break something.

1 Answer

@dmxt
1) cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/dev.mydomain.com
2) edit the file /etc/apache2/sites-available/dev.mydomain.com and make the necessary changes to make it look like the following:

<VirtualHost *:80>
        ServerAdmin webmaster@dev.mydomain.com
        ServerName dev.mydomain.com
        DocumentRoot /var/www/dev

        <Directory /var/www/dev/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        <files xmlrpc.php>
            order allow,deny
            deny from all
        </files>

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

Note: As mentioned in my previous comment, use same level directory instead of subdirectory, i.e, /var/www/dev and /var/www/html.

3) a2ensite dev.mydomain.com
4) service apache2 reload
5) create the directory /var/www/dev and add a sample index.html file with appropriate ownership and permissions for use with apache.
6) Test on the server using wget or curl for both dev.mydomain.com and mydomain.com

Hope that works for you.

Have another answer? Share your knowledge.