Site does not exist error for a2ensite

ApacheApache2Virtualhost

Apache Problem Overview


I have cmsplus.dev under /etc/apache2/sites-available with the following code,

<VirtualHost *:80>
	ServerAdmin master@server.com
	ServerName www.cmsplus.dev
	ServerAlias cmsplus.dev
	
	DocumentRoot /var/www/cmsplus.dev/public

	LogLevel warn
	ErrorLog /var/www/cmsplus.dev/log/error.log
	CustomLog /var/www/cmsplus.dev/log/access.log combined
</VirtualHost>

Now when I use sudo /usr/sbin/a2ensite cmsplus.dev, I am getting the error,

ERROR: Site cmsplus.dev does not exist!

My webserver Apache/2.4.6 (Ubuntu)

How to solve this issue?

Apache Solutions


Solution 1 - Apache

Solved the issue by adding .conf extension to site configuration files.

Apache a2ensite results in:

> Error! Site Does Not Exist

Problem; If you found the error while trying to enable a site using:

sudo a2ensite example.com

but it returns: > Error: example.com does not exist

a2ensite is simply a Perl script that only works with filenames ending .conf

Therefore, I have to rename my setting file for example.com to example.com.conf as might be achieved as follows:

mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf

Success

Solution 2 - Apache

You probably updated your Ubuntu installation and one of the updates included the upgrade of Apache to version 2.4.x

In Apache 2.4.x the vhost configuration files, located in the /etc/apache2/sites-available directory, must have the .conf extension.

Using terminal (mv command), rename all your existing configuration files and add the .conf extension to all of them.

mv /etc/apache2/sites-available/cmsplus.dev /etc/apache2/sites-available/cmsplus.dev.conf

If you get a "Permission denied" error, then add "sudo " in front of your terminal commands.

You do not need to make any other changes to the configuration files.

Enable the vhost(s):

a2ensite cmsplus.dev.conf

And then reload Apache:

service apache2 reload

Your sites should be up and running now.


UPDATE: As mentioned here, a Linux distribution that you installed changed the configuration to Include *.conf only. Therefore it has nothing to do with Apache 2.2 or 2.4

Solution 3 - Apache

There's another good way, just edit the file apache2.conf theres a line at the end

> IncludeOptional sites-enabled/*.conf

just remove the .conf at the end, like this

> IncludeOptional sites-enabled/*

and restart the server.

(I tried this only in the Ubuntu 13.10, when I updated it.)

Solution 4 - Apache

I just had the same problem. I'd say it has nothing to do with the apache.conf.

a2ensite must have changed - line 532 is the line that enforces the .conf suffix:

else {
    $dir    = 'sites';
    $sffx   = '.conf';
    $reload = 'reload';
}

If you change it to:

else {
    $dir    = 'sites';
    #$sffx   = '.conf';
    $sffx   = '';
    $reload = 'reload';
}

...it will work without any suffix.

Of course you wouldn't want to change the a2ensite script, but changing the conf file's suffix is the correct way.

It's probably just a way of enforcing the ".conf"-suffix.

Solution 5 - Apache

So .. quickest way is rename site config names ending in ".conf"

mv /etc/apache2/sites-available/mysite /etc/apache2/sites-available/mysite.conf

a2ensite mysite.conf

other notes on previous comments:

  • IncludeOptional wasn't introduced until apache 2.36 - making change above followed by restart on 2.2 will leave your server down!

  • also, version 2.2 a2ensite can't be hacked as described

as well, since your sites-available file is actually a configuration file, it should be named that way anyway..


In general do not restart services (webservers are one type of service):

  • folks can't find them if they are not running! Think linux not MS Windows..

Servers can run for many years - live update, reload config, etc.

The cloud doesn't mean you have to restart to load a configuration file.

  • When changing configuration of a service use "reload" not "restart".

  • restart stops the service then starts service - if there is a any problem in your change to the config, the service will not restart.

  • reload will give an error but the service never shuts down giving you a chance to fix the config error which could only be bad syntax.

debian or ubunto [service-name for this thread is apache2]

service {service-name} {start} {stop} {reload} ..

other os's left as an excersize for the reader.

Solution 6 - Apache

Worked after I added .conf to the configuration file

Solution 7 - Apache

I have just upgraded the Ubuntu Server version from 12.04 LTS to 14.04 LTS.

Indeed, as said above, the .conf extension to Apache 2.4.x is needed to the websites vhost files that resides on sites-available directory.

Before read this question I did not have a clue what was going on with the server.

Pretty nice solution.

Just summarizing I did the following steps on Terminal:

  1. Access sites-enabled folder

    $ cd /etc/apache2/sites-enabled

  2. Because the command a2dissite will not work with deprecated files (without .conf) remove the old website files that was published

    $ sudo rm

  3. Rename the website vhost files changing its extension adding .conf to the end

    $ sudo mv /etc/apache2/sites-available/mywebsite /etc/apache2/sites-available/mywebsite.conf

  4. Republish the new and correct vhost file

    $ sudo a2ensite mywebsite.conf

  5. Check the website on browser and have fun! :)

Solution 8 - Apache

In my case with Ubuntu 14.04.3 and Apache 2.4.7, the problem was that I copied site1.conf to make site2.conf available, and by copying, something happend and I could not a2ensite site2.conf with the error described in thread.

The solution for me, was to rename site2.conf to site2 and then again rename site2 to site2.conf. After that I was able to a2ensite site2.conf.

Solution 9 - Apache

I realise that's not the case here but it might help someone.

Double-check you didn't create the conf file in /etc/apache2/sites-enabled by mistake. You get the same error.

Solution 10 - Apache

Try like this..

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin master@server.com
    ServerName www.cmsplus.dev
    ServerAlias cmsplus.dev

    DocumentRoot /var/www/cmsplus.dev/public

    LogLevel warn
    ErrorLog /var/www/cmsplus.dev/log/error.log
    CustomLog /var/www/cmsplus.dev/log/access.log combined
</VirtualHost>

and add entry in /etc/hosts

127.0.0.1 www.cmsplus.dev

restart apache..

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAnshad VattapoyilView Question on Stackoverflow
Solution 1 - ApacheAnshad VattapoyilView Answer on Stackoverflow
Solution 2 - ApacheconsuelaView Answer on Stackoverflow
Solution 3 - ApacheGuilhermeView Answer on Stackoverflow
Solution 4 - ApachecslottyView Answer on Stackoverflow
Solution 5 - Apachelil ol meView Answer on Stackoverflow
Solution 6 - Apache16kbView Answer on Stackoverflow
Solution 7 - ApacheAlexandre RibeiroView Answer on Stackoverflow
Solution 8 - ApacheSysManSDView Answer on Stackoverflow
Solution 9 - ApacheDaveView Answer on Stackoverflow
Solution 10 - ApacheBalaji PerumalView Answer on Stackoverflow