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

January 12, 2018 363 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?

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.