Apache没有';升级到Ubuntu13.10后不要使用DocumentRoot(使用默认页面,上面写着“它可以工作!”)

Apache没有';升级到Ubuntu13.10后不要使用DocumentRoot(使用默认页面,上面写着“它可以工作!”),apache,ubuntu-13.10,Apache,Ubuntu 13.10,我有各种虚拟主机用于我的web开发工作,包括 cnm sites-available/cnm 我的档案说得很简单: <VirtualHost *:80> ServerName cnm DocumentRoot /var/www/cnm/public_html </VirtualHost> 其中包括: DocumentRoot/var/www 当我浏览到cnm/时,我需要做什么才能让Apache读取我的cnm文档根目录 注: 我已经尝试将我的site

我有各种虚拟主机用于我的web开发工作,包括 cnm

sites-available/cnm
我的档案说得很简单:

<VirtualHost *:80>
    ServerName cnm
    DocumentRoot /var/www/cnm/public_html
</VirtualHost>
其中包括:


DocumentRoot/var/www
当我浏览到cnm/时,我需要做什么才能让Apache读取我的cnm文档根目录

注:

  • 我已经尝试将我的sites available/cnm文件重命名为sites available/cnm.conf,并使用
    a2ensite cnm
    service apache2 reload
    启用它。这是一件好事,但它不会改变什么

  • 我已经尝试将
    更改为
    。那没用


  • Ubuntu 13.10使用apache2.4,您应该检查所有apache配置。但在本例中,您应该注意,
    a2ensite
    a2dispate
    命令如果不以
    .conf
    结尾,将无法在/etc/apache2/sites available中查看您的文件,因此请将其重命名为
    sites available/cnm.conf
    并运行
    a2ensite cnm

    如果使用
    *:80
    ,您的虚拟主机定义肯定会更好,这意味着端口80上的所有IP接口(
    *
    )都会激活此虚拟主机
    cnm.localhost
    cnm
    在这里是无效的值,只有IP号(apache服务器的IP)或
    *
    表示全部,以及端口号

    然后运行以下命令,检查apache如何读取配置:

    # load apache env
    # be careful, there is a dot and a space
    . /etc/apache2/envvars
    # Check apache Virtualhosts config
    apache2 -S
    
    你应该得到类似于:

    VirtualHost configuration:
    *:80                   is a NameVirtualHost
         default server something (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost something (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost cnm (/etc/apache2/sites-enabled/cnm.conf:4)
    
    如果它正常,并且如果您的主机文件中有正确的Ip用于
    cnm
    ,您可以使用ping进行测试,然后使用
    http://cnm/
    应在服务器名中使用具有cnm的Virtualhost


    如果您有来自默认Virtualhost的答案,则表示apache在该IP/端口可用的ServerName和ServerAlias列表中找不到主机头中使用的名称,并返回默认Virtualhost。如果您真的陷入困境(并且没有忘记重新启动),您可以始终删除默认的Virtualhost,只保留您正在处理的Virtualhost。

    我找到了问题的答案。我需要删除/etc/apache2/sites-enabled中的文件

  • 已启用删除/etc/apache2/sites中的文件
  • 重命名/etc/apache2/sites中的配置文件,使其以.conf结尾
  • 对于站点中可用的每个文件,运行
    sudoa2ensite mysite
  • 运行
    sudo服务apache2重新加载

  • 我找到了这个问题的答案:

    升级到
    ubuntu13.10
    时,
    DocumentRoot
    似乎没有什么不同

    这是因为Apache2.4将目录配置移到了其他地方。旧的
    .conf
    文件仍有以下行:

        DocumentRoot "/var/www/myVhost"
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory "/var/www/myVhost">
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
    

    现在重新加载您的设置:
    service apache2 reload
    DocumentRoot
    已返回。:)

    用扩展名.conf重命名文件配置“cnm”

    mv sites-available/cnm sites-available/cnm.conf
    a2ensite sites-available/cnm.conf
    
    准备好了

    service apache2 reload
    
    我也有同样的问题 一种方法是禁用默认设置并重新加载apache,但这不是解决方案,因为您必须同时拥有一个vhost:(


    我找不到任何关于如何让它在我这边起作用的分步教程。我在这里和那里收集了一些零碎的东西,因此对于那些需要遵循所有步骤的人,这里有:

    $ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/local-mydefault.conf
    
    $ sudo gedit /etc/apache2/sites-available/local-mydefault.conf
    
    将以下内容粘贴到local-mydefault.conf文件中(将路径“/your/full/path”更改为您想要存放文件的位置,并将用户名更改为您自己的用户名):


    我遇到了一个类似的问题。我的服务器名和FQDN与默认名称相同。默认名称运行在/var/www/html目录中。我禁用了默认配置,我的站点运行起来非常轻松。谢谢@regilero

    sudo a2dissite 000-default.conf
    

    为我修复了它。

    谢谢!我的便条1说我已经试过了,但没有用。我仍然看到/var/www/index.html而不是/var/www/cnm/index.html:-)我也有同样的问题,这没有用。我的虚拟主机正在工作,它们只是不听DocumentRoot设置<代码>/etc/apache2/envvars
    不输出任何内容。有什么想法吗?@Redsandro使用envvars的dot命令只是为了加载apache的env变量,因此您可以运行
    apache2-h
    和所有其他
    apache2-X
    命令,而不会因缺少env变量而出现配置错误。现在没有文档根的
    listen
    ,如果您有问题,请在此网站或@engineer上详细解释它:提出一个新问题,并在这个问题中添加/etc/apache2/sites/*中存在的文件列表,apache2-S的输出,等等,详细信息,详细信息,详细信息,错误肯定在其中一个详细信息中,我们无法在没有信息的情况下猜测它在哪里。还要记住,他们已经更改了访问控制指令(例如,
    Order deny,allow deny from all
    Require all denied
    ),请看,我也遇到了同样的问题,这没有帮助。我的虚拟主机正在工作,它们只是不听
    DocumentRoot
    设置。步骤2。。。不 真实 的。谢谢。这些都帮不了我,在000-default.conf文件中定义DocumentRoot后,无法识别它。有什么线索吗?没有线索,这里有用。可能将
    www-data
    添加为
    user:group
    ?是否需要该部分?似乎对我没有任何帮助。但另一件事解决了我的问题:)(我想你现在需要明确指定目录的所有选项,但我不确定)@CJBrew我不确定。我上面的答案是我通过当时为解决我的问题所做的研究收集的所有资料。但我已经忘了这些作品到底是做什么的:-/
    service apache2 reload
    
    sudo a2dissite 000-default.conf
    sudo service apache2 reload
    
    $ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/local-mydefault.conf
    
    $ sudo gedit /etc/apache2/sites-available/local-mydefault.conf
    
    # ------------------------------------------------------
    <VirtualHost *:80>
        ServerName localhost
        ServerAdmin webmaster@localhost
    
        DocumentRoot /your/full/path
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /your/full/path>
                DirectoryIndex index.php
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Require all granted
                allow from all
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
    User username
    Group username
    # ------------------------------------------------------
    
    $ cd /etc/apache2/sites-available/
    $ sudo a2ensite local-mydefault.conf
    $ sudo a2dissite 000-default.conf
    $ sudo /etc/init.d/apache2 restart
    
    sudo a2dissite 000-default.conf