How to host a subdoman and main domain in a same droplet?

January 12, 2018 107 views
Apache Ubuntu

I have a droplet in Ubuntu 14.04,what I want to do is create a subdomain and host it in the same droplet.

My main domain : example.com
Subdomain created : api.example.com

*What I tried so far: *

1) Created a "A" record for api.example.com in Networking section

2) Created a CNAME record for www.api.example.com

3) Set up the virtual host for api.example.com following this How To Set Up Apache Virtual Hosts on Ubuntu 14.04 LTS

*Below is the step I tried to set up the virtual host *

1) The droplet is installed Apache2 before,so I didnt install again

2) Create the directory for my api.example.com by using this command
sudo mkdir -p /var/www/api.example.com/public_html

3) Create a demo page by using this command nano /var/www/api.example.com/public_html/index.html
and add a simple html code inside it .

4) I copy the 000-default.conf to my new created conf like this
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/api.example.com.conf

5) I change the api.example.com.conf to the following:

<VirtualHost *:80>
    ServerAdmin myemailaddress@example.com
    ServerName api.example.com
    ServerAlias www.api.example.com
    DocumentRoot /var/www/api.example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

6) Lastly I use this command to enable the virtual host for api.example.com sudo a2ensite api.example.com.conf and restart the apache by sudo service apache2 restart

After all this step, I test my subdomain,but it doesnt work.It said refused to connect

so what I missing here?? Can somebody help??

2 Answers

Is DNS pointing to your Droplet IP dig api.example.com and dig www.api.example.com ?

Is Apache2 listening on 80 port netstat -tlnpu | grep -i 'apache' ?

Do you have any firewall iptables -nvL with Drop policy and not allowed ports 80 ? Maybe ufw is installed and filtering ports.

Is your config correctly loaded by Apache2 apache2ctl -S ?

  • Hi,

    Is DNS pointing to your Droplet IP dig api.example.com and dig www.api.example.com ?
    i cannot get the answer for this dig api.example.com

    Is Apache2 listening on 80 port netstat -tlnpu | grep -i 'apache' ?
    yes

    Do you have any firewall iptables -nvL with Drop policy and not allowed ports 80 ? Maybe ufw is installed and filtering ports.
    no

    Is your config correctly loaded by Apache2 apache2ctl -S ?
    yes

    I have been using the main domain for quite some time, but just when i try to create a new subdomain and point it to my main domain's droplet and it failed.

    I follow the guide Example link

    and when i calledhost api.example.com ns1.digitalocean.com it return me the desires result

    Using domain server:
    Name: ns1.digitalocean.com
    Address: 1:2:3:4
    Aliasas:
    
    api.example.com has address 5:6:7:8(My main domain droplet IP)
    

    is there any further step i need to configure?

    This article explains how to manage your DNS records using the DigitalOcean Control Panel and can help you decide if DigitalOcean's DNS management tools are right for your situation.

I don't understand - you cannot get IP with dig api.example.com but with host api.example.com you can ?

Please run these commands and paste outputs:
dig example.com NS +short
dig api.example.com +short
dig www.api.example.com +short

It seems to be DNS problem. Please try to override default DNS on your PC, not server by adding 2 lines in "hosts" config file. On Linux/Mac it's in /etc/hosts. On Windows it's in %WINDIR%\system32\drivers\etc\hosts. Any changes need to be made with highest privileges by root or Administrator.

Add 2 new lines:
public_ip_of_server api.example.com
public_ip_of_server www.api.example.com

And try site in browser.

Have another answer? Share your knowledge.