网站不存在a2ensite的错误

dev*_*evo 265 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>
Run Code Online (Sandbox Code Playgroud)

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

ERROR: Site cmsplus.dev does not exist!
Run Code Online (Sandbox Code Playgroud)

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

如何解决这个问题?

dev*_*evo 556

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

Apache a2ensite导致:

错误!网站不存在

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

sudo a2ensite example.com
Run Code Online (Sandbox Code Playgroud)

但它返回:

错误:mysite.com不存在

a2ensite 只是一个perl脚本,只适用于文件名结尾 .conf

因此,我不得不重新命名我的设置文件example.com,以example.com.conf作为可能实现如下:

mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf
Run Code Online (Sandbox Code Playgroud)

成功

  • 奇怪的!这在Ubuntu 12.04和12.10中没有扩展的情况下工作正常. (25认同)
  • 作为替代方案,我相信你可以编辑apache.conf文件.相关的行是"IncludeOptional sites-enabled/*.conf"删除末尾的.conf,你将回到12.04的工作原理.我认为这可能是Debian对Ubuntu的一种改变,但我不确定. (7认同)
  • Why is this answers 3rd? This is the correct way of doing it. (2认同)

con*_*ela 88

您可能已更新了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
Run Code Online (Sandbox Code Playgroud)

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

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

启用vhost:

a2ensite cmsplus.dev.conf
Run Code Online (Sandbox Code Playgroud)

然后重新加载Apache:

service apache2 reload
Run Code Online (Sandbox Code Playgroud)

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


更新:如前所述在这里,您安装一个Linux发行版更改了配置,使其只包含*.conf文件.因此它与Apache 2.2或2.4无关


Gui*_*rme 28

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

IncludeOptional sites-enabled/*.conf

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

IncludeOptional sites-enabled/*

并重新启动服务器.

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


csl*_*tty 8

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

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

else {
    $dir    = 'sites';
    $sffx   = '.conf';
    $reload = 'reload';
}
Run Code Online (Sandbox Code Playgroud)

如果您将其更改为:

else {
    $dir    = 'sites';
    #$sffx   = '.conf';
    $sffx   = '';
    $reload = 'reload';
}
Run Code Online (Sandbox Code Playgroud)

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

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

它可能只是一种强制执行".conf"-suffix的方法.


小智 7

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

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

a2ensite mysite.conf
Run Code Online (Sandbox Code Playgroud)

以前评论的其他说明:

  • 在apache 2.36之前没有引入IncludeOptional - 在上面进行更改然后在2.2上重启将使您的服务器停机!

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

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


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

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

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

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

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

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

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

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

service {service-name} {start} {stop} {reload} ..
Run Code Online (Sandbox Code Playgroud)

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


16k*_*6kb 5

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


Dav*_*ave 5

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

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

  • @LucasSteffen /etc/apache2/sites-available。根据记忆,sites-enabled 中的那个是自动创建的 (2认同)