a2ensite的网站不存在错误


275

cmsplus.dev/etc/apache2/sites-available用下面的代码,

<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>

现在,当我使用时sudo /usr/sbin/a2ensite cmsplus.dev,我得到了错误,

ERROR: Site cmsplus.dev does not exist!

我的网络服务器 Apache/2.4.6 (Ubuntu)

如何解决这个问题?

Answers:


577

通过将.conf扩展名添加到站点配置文件来解决此问题。

Apache a2ensite导致:

错误!网站不存在

问题; 如果在尝试使用以下方法启用站点时发现错误:

sudo a2ensite example.com

但它返回:

错误:example.com不存在

a2ensite 只是一个Perl脚本,仅适用于以文件名结尾的文件 .conf

因此,必须将我的设置文件重命名为example.comexample.com.conf以实现以下目的:

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

成功


25
奇怪的!以前在Ubuntu 12.04和12.10中没有扩展就可以正常工作。
FloatingRock

我也是。就像说Guilherme一样,apache2.conf在ubuntu或Apache版本之间进行了更改。
Nicolas Zozol 2014年

7
另外,我相信您可以只编辑apache.conf文件。相关行是“ IncludeOptional sites-enabled / *。conf”。最后删除.conf,您将回到12.04的工作状态。我认为这可能是Debian对Ubuntu进行的更改,但我不确定。
乔西亚2014年

2
为什么这是第三答案?这是正确的方法。
2014年

我几乎已经改变了一切之后就已经放弃了……我会记得从现在开始添加.conf扩展名……
wtf8_decode 2015年

91

您可能已经更新了Ubuntu安装,更新之一包括将Apache升级到版本2.4.x。

在Apache 2.4.x中,位于/ etc / apache2 / sites-available目录中的vhost配置文件必须具有.conf扩展名。

使用终端(mv命令),重命名所有现有的配置文件,并将.conf扩展名添加到所有文件中。

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

如果收到“权限被拒绝”错误,请在终端命令前面添加“ sudo”。

您无需对配置文件进行任何其他更改。

启用虚拟主机:

a2ensite cmsplus.dev.conf

然后重新加载Apache:

service apache2 reload

您的网站现在应该已启动并正在运行。


更新:如前所述在这里,一个Linux发行版已安装更改配置为仅包括* .conf文件。因此,它与Apache 2.2或2.4无关


28

还有另一种好方法,只需编辑文件apache2.conf,在最后一行

包括启用了可选的站点/*.conf

只需删除.conf末尾的,像这样

包括启用了可选的站点/ *

并重新启动服务器。

(我在更新时仅在Ubuntu 13.10中尝试过此操作。)


1
嗯...我在Ubuntu 14.04上试过了,但是没有用。不过,添加.conf到配置文件中确实如此。
Clifton Labrum 2014年

奇怪,我将ubuntu 12.04更新到13.10时遇到了此错误(因为我无意间替换了apache配置文件)。在14.04更新中,我记得不能替代,而且确实遇到了任何麻烦。
Guilherme 2014年

这确实不是一个好方法。启用站点下的文件是指向站点下相应文件的符号链接,应将其删除以禁用该站点-实际上a2dissite所做的是a2ensite相应地启用了该站点。
Dokbua

8

我只是有同样的问题。我想说这与apache.conf无关。

a2ensite必须已更改-532行是强制执行.conf后缀的行:

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

如果将其更改为:

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

...它将没有任何后缀。

当然,您不想更改a2ensite脚本,但是更改conf文件的后缀是正确的方法。

这可能只是强制执行“ .conf”后缀的一种方式。


看到这个问题太:askubuntu.com/questions/362682/...
cslotty

7

因此,..最快的方法是重命名以“ .conf”结尾的站点配置名称

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

a2ensite mysite.conf

关于先前评论的其他说明:

  • 直到apache 2.36才引入IncludeOptional-在上面进行更改然后在2.2上重新启动将使您的服务器停机!

  • 此外,2.2 a2ensite版本也无法按照所述方式被黑客入侵

同样,由于您的网站可用文件实际上是一个配置文件,因此无论如何都应以这种方式命名。


通常,不要重新启动服务(Web服务器是一种服务):

  • 如果他们不在跑步,人们将找不到他们!认为linux不是MS Windows。

服务器可以运行很多年-实时更新,重新加载配置等。

云并不意味着您必须重新启动才能加载配置文件。

  • 更改服务配置时,请使用“重新加载”而不是“重新启动”。

  • 重新启动将停止服务,然后再启动服务-如果对配置所做的更改有任何问题,该服务将不会重新启动。

  • 重新加载将给出一个错误,但是该服务永远不会关闭,这使您有机会修复配置错误,这可能是错误的语法。

debian或ubunto [此线程的服务名称是apache2]

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

其他操作系统则留给读者阅读。



2

我刚刚将Ubuntu Server版本从12.04 LTS升级到14.04 LTS。

实际上,如上所述,驻留在站点可用目录中的网站虚拟主机文件需要Apache 2.4.x的.conf扩展名。

在阅读此问题之前,我不知道服务器发生了什么。

相当不错的解决方案。

总结一下,我在Terminal上执行了以下步骤:

1)访问启用站点的文件夹

$ cd /etc/apache2/sites-enabled

2)因为命令a2dissite不适用于已弃用的文件(没有.conf),所以删除已发布的旧网站文件

$ sudo rm <my-old-website-without-.conf>

3)重命名网站虚拟主机文件,更改其扩展名,并在最后添加.conf

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

4)重新发布新的正确的vhost文件

$ sudo a2ensite mywebsite.conf

5)在浏览器上检查网站并获得乐趣!:)


1

在我使用Ubuntu 14.04.3和Apache 2.4.7的情况下,问题是我复制了site1.conf以使site2.conf可用,并且通过复制,发生了某些事情,而我无法使用线程中描述的错误来a2ensite site2.conf。 。

对我来说,解决方案是将site2.conf重命名为site2,然后再次将site2重命名为site2.conf。之后,我可以访问site2.conf。


1

我知道这里不是这种情况,但可能会对某人有所帮助。

仔细检查您没有在错误的/ etc / apache2 / sites-enabled中创建conf文件。您会收到相同的错误。


-2

像这样尝试

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>

并在/ etc / hosts中添加条目

127.0.0.1 www.cmsplus.dev

重新启动Apache。


现在,它为我提供了默认It works页面而不是设置。
devo 2013年

您是否有多个虚拟主机配置?您可以发布整个文件的内容吗?
Balaji Perumal

3
谢谢,只需将.conf扩展名添加到这些站点配置文件即可解决此问题。
devo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.