【问题标题】:Site does not exist error for a2ensitea2ensite 的站点不存在错误
【发布时间】:2014-01-02 17:17:22
【问题描述】:

我在/etc/apache2/sites-available 下有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!

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

如何解决这个问题?

【问题讨论】:

    标签: apache apache2 virtualhost


    【解决方案1】:

    通过在站点配置文件中添加 .conf 扩展名解决了这个问题。

    Apache a2ensite 结果:

    错误!网站不存在

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

    sudo a2ensite example.com
    

    但它会返回:

    错误:example.com 不存在

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

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

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

    成功

    【讨论】:

    • 奇怪!在 Ubuntu 12.04 和 12.10 中,这在没有扩展的情况下可以正常工作。
    • 对我来说也一样。就像 Guilherme 所说,apache2.conf 在 ubuntu 或 Apache 版本之间发生了变化。
    • 作为替代方案,我相信您可以只编辑 apache.conf 文件。相关行是“IncludeOptional sites-enabled/*.conf” 删除最后的 .conf,您将回到 12.04 中的工作状态。我认为这可能是 Debian 对 Ubuntu 做出的改变,但我不确定。
    • 为什么这个答案是第三个?这是正确的做法。
    • 我几乎改变了所有东西后已经放弃了...我会记得从现在开始添加.conf扩展名...
    【解决方案2】:

    您可能更新了 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
    

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


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

    【讨论】:

    • 奇怪,当我尝试使用以下路径启用站点时出现错误:“sudo a2ensite /etc/apache2/sites-available/example.com.conf”。另一方面,在站点可用目录中打开控制台窗口并运行“sudo a2ensite example.com.conf”完美执行。
    【解决方案3】:

    还有一个好办法,直接编辑文件apache2.conf末尾有一行

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

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

    包括可选站点启用/*

    然后重启服务器。

    (当我更新它时,我只在 Ubuntu 13.10 中尝试过。)

    【讨论】:

    • 嗯...我在 Ubuntu 14.04 上尝试过,但没有成功。不过,将.conf 添加到配置文件中确实如此。
    • 奇怪,当我将 ubuntu 12.04 更新到 13.10 时出现此错误(因为我无意中替换了 apache 配置文件)。在 14.04 更新中,我记得不能替换,我确实遇到了任何麻烦。
    • 这真的不是什么好办法。 sites-enabled 下的文件是 sites-available 下相应文件的符号链接,应该删除以禁用该站点 - 实际上 a2dissite 所做的就是 a2ensite 相应地启用该站点。
    【解决方案4】:

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

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

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

    如果你把它改成:

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

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

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

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

    【讨论】:

    【解决方案5】:

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

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

    关于以往 cmets 的其他说明:

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

    • 另外,2.2 版 a2ensite 不能像描述的那样被黑客入侵

    同样,由于您的站点可用文件实际上是一个配置文件,因此无论如何都应该这样命名..


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

    • 如果他们不跑步,人们就找不到他们!认为 linux 而不是 MS Windows..

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

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

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

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

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

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

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

    其他操作系统留给读者。

    【讨论】:

      【解决方案6】:

      在我将.conf添加到配置文件后工作

      【讨论】:

        【解决方案7】:

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

        确实,如上所述,位于站点可用目录中的网站 vhost 文件需要 Apache 2.4.x 的 .conf 扩展名。

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

        相当不错的解决方案。

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

        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) 在浏览器上查看网站,玩得开心! :)

        【讨论】:

          【解决方案8】:

          我知道这里的情况并非如此,但它可能会对某人有所帮助。

          再次检查您没有在 /etc/apache2/sites-enabled 中错误地创建 conf 文件。你得到同样的错误。

          【讨论】:

            【解决方案9】:

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

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

            【讨论】:

              【解决方案10】:

              像这样试试..

              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 页面而不是设置。
              • 你有多个虚拟主机配置吗?你能发布整个文件内容吗?
              • 谢谢,只需在这些站点配置文件中添加 .conf 扩展名即可解决此问题。
              猜你喜欢
              • 2015-04-18
              • 1970-01-01
              • 1970-01-01
              • 2014-05-19
              • 1970-01-01
              • 1970-01-01
              • 2014-07-27
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多