我在/etc/apache2/sites下有cmsplus.dev -可用以下代码,

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

我的web服务器Apache/2.4.6 (Ubuntu)

如何解决这个问题?


当前回答

我也遇到了同样的问题。我认为它与apache.conf没有任何关系。

A2ensite必须已经更改-第532行是强制使用.conf后缀的行:

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

如果你把它改成:

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

...它将在没有任何后缀的情况下工作。

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

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

其他回答

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

在Apache 2.4中。在/etc/apache2/sites-available目录下,vhost配置文件必须扩展名为.conf。

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

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

如果你得到一个“Permission denied”错误,那么在你的终端命令前添加“sudo”。

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

启用vhost:

a2ensite cmsplus.dev.conf

然后重新加载Apache:

service apache2 reload

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


更新:正如这里提到的,您安装的Linux发行版将配置更改为仅包含*.conf。因此,它与Apache 2.2或2.4无关

试着这样做。

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

我在配置文件中加入了。conf之后就工作了

还有另一个好方法,就是编辑apache2.conf文件,最后有一行

IncludeOptional sites-enabled / * . conf

只需要在最后删除.conf,就像这样

IncludeOptional sites-enabled / *

并重新启动服务器。

(我只在Ubuntu 13.10更新时尝试了这个功能。)

我也遇到了同样的问题。我认为它与apache.conf没有任何关系。

A2ensite必须已经更改-第532行是强制使用.conf后缀的行:

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

如果你把它改成:

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

...它将在没有任何后缀的情况下工作。

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

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