网站不存在a2ensite的错误

时间:2013-12-15 06:29:39

标签: apache apache2 virtualhost

我在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)

如何解决这个问题?

10 个答案:

答案 0 :(得分:532)

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

Apache a2ensite导致:

  

错误!网站不存在

问题;如果您在尝试使用以下网址启用网站时发现错误:

sudo a2ensite example.com

但它返回:

  

错误:example.com不存在

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

因此,我必须将mysite.com的设置文件重命名为mysite.com.conf,如下所示:

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

成功

答案 1 :(得分:86)

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

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

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

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

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

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

启用vhost:

a2ensite cmsplus.dev.conf

然后重新加载Apache:

service apache2 reload

您的网站现在应该正常运行。


更新:如上所述here,您安装的Linux发行版仅将配置更改为Include * .conf。因此它与Apache 2.2或2.4

无关

答案 2 :(得分:27)

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

  

IncludeOptional sites-enabled / * .conf

最后删除.conf,就像这样

  

IncludeOptional sites-enabled / *

并重新启动服务器。

(我在Ubuntu 13.10中尝试了这个,当我更新它时。)

答案 3 :(得分:8)

我遇到了同样的问题。我说它与apache.conf无关。

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

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

如果您将其更改为:

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

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

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

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

答案 4 :(得分: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不能被描述

同样,由于您的站点可用文件实际上是一个配置文件,因此它应该以这种方式命名..


一般重启服务(网络服务器是一种服务):

  • 如果他们没有跑步,他们就找不到他们!认为Linux不是MS Windows ..

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

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

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

  • restart会停止服务然后启动服务 - 如果更改配置时出现任何问题,服务将不会重新启动。

  • 重新加载会出错,但服务永远不会关闭,让您有机会修复配置错误,这只能是错误的语法。

debian或ubunto [此主题的服务名称是apache2]

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

其他操作系统留给读者作为一个例外。

答案 5 :(得分:5)

.conf添加到配置文件

后工作

答案 6 :(得分:1)

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

我的解决方案是将site2.conf重命名为site2,然后再将site2重命名为site2.conf。之后我能够a2ensite site2.conf。

答案 7 :(得分:1)

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

实际上,如上所述,驻留在sites-available目录中的网站vhost文件需要Apache 2.4.x的.conf扩展名。

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

非常好的解决方案。

总结一下,我在终端上做了以下步骤:

1)访问已启用网站的文件夹

$ cd /etc/apache2/sites-enabled

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

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

3)重命名网站vhost文件,更改其扩展名,将.conf添加到结尾

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

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

$ sudo a2ensite mywebsite.conf

5)在浏览器上查看网站,玩得开心! :)

答案 8 :(得分:0)

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

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

答案 9 :(得分:-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 ..