【问题标题】:How do I change the root directory of an Apache server? [closed]如何更改 Apache 服务器的根目录? [关闭]
【发布时间】:2011-08-19 00:09:58
【问题描述】:

如何更改 Apache 服务器的文档根目录?我基本上希望localhost 来自/users/spencer/projects 目录而不是/var/www


我最终弄明白了。有人建议我更改httpd.conf 文件,但我最终在/etc/apache2/sites-available/default 中找到了一个文件,并将根目录从/var/www 更改为/home/myusername/projects_folder,并且成功了。

【问题讨论】:

标签: linux apache lamp


【解决方案1】:

您需要更改httpd.conf 文件中的DocumentRoot 设置。它可能会在/etc/apache2/conf/httpd.conf 之类的名称下。

使用您最喜欢的编辑器(我推荐Vim)并查找DocumentRoot 并将其更改为/users/spencer/projects。再往下看一些类似这样的设置:

<Directory "/var/www">

您还需要将引号中的内容更改为新目录。当用户发出调用该目录的请求时,这使 Apache 可以访问该目录。

现在重新启动您的 Apache 服务 (httpd -k restart),您应该一切顺利。

Apache 2 站点配置文件现在通常保存在 /etc/apache2/sites-available/(Debian、Ubuntu 等)中。

【讨论】:

  • 我打开了 /etc/apache2/httpd.conf ,但文件是空白的。我用 gedit 打开它。
  • 该文件可能位于 /etc/httpd/conf/httpd.conf 中,具体取决于您的 Linux 风格。
  • httpd.conf 文件为空,但我在 etc/apache2/sites-available/default 找到了一个文件,并在那里更改了根目录。我可能应该提到这不在实际的服务器上。我正在建立一个本地开发环境。不确定这是否有影响
  • 是否可以同时启用 /var/www 和 /home/myusername/projects_folder ?我应该如何配置?谢谢。
  • “答案”确实过时了。根据 Ubuntu 18.x 文档的正确答案是更改 Apache 的根目录或将项目移动到 /var/www/html 。要更改 Apache 的根目录,请运行:cd /etc/apache2/sites-available。然后使用命令打开 000-default.conf 文件:nano 000-default.conf。编辑 DocumentRoot 选项:DocumentRoot /path/to/my/project。 (见askubuntu.com/questions/337874/…
【解决方案2】:

我不得不编辑/etc/apache2/sites-available/default。行与mentioned by RDL相同。

【讨论】:

  • @pabloab 的建议编辑是这样说的:“Apache 2.4 及更高版本需要.conf 最后,默认情况下有一个000- 作为前缀”。结果是/etc/apache2/sites-available/000-default.conf。我尚未对此进行测试,但它可能对某些人有所帮助。
  • ^^ 这修复了它。它在哪里记录了我需要 .conf 在我的站点可用文件的末尾?!?我有大约 20 个虚拟主机在更新后被禁用和脱机,几个小时后,找到这个并重命名我的站点可用文件为我修复了它。
【解决方案3】:

如果你找不到http.conf 并关注Nick's way

使用 sudo service apache2 restart 重新启动 Apache。

【讨论】:

    【解决方案4】:

    我正在使用LAMP更改文档根文件夹,我编辑了 default 文件,该文件位于 /etc/apache2/sites-available 文件夹。

    如果你想这样做,只需编辑如下:

    DocumentRoot /home/username/new_root_folder
        <Directory />
            Options FollowSymLinks
            AllowOverride None
        </Directory>
        <Directory /home/username/new_root_folder>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>
    

    之后,如果您在浏览器中输入“localhost”,它将加载 /home/username/new_root_folder 内容。

    【讨论】:

    • 文件名是什么? 000-default.conf?
    【解决方案5】:

    如果有人在/opt 文件夹中安装了LAMP,那么/etc/apache2 文件夹不是您要查找的。​​p>

    在文件夹/opt/lampp/etc 中查找httpd.conf 文件。

    更改此文件夹中的行并从终端保存。

    【讨论】:

    • 为什么lampp中有两个ps?
    【解决方案6】:

    请注意,这仅适用于 Ubuntu 14.04 LTS (Trusty Tahr) 和更新版本。

    在我的 Ubuntu 14.04 LTS 中,文档根目录设置为 /var/www/html。它是在以下文件中配置的:

    /etc/apache2/sites-available/000-default.conf
    

    所以做一个

    sudo nano /etc/apache2/sites-available/000-default.conf
    

    并将以下行更改为您想要的:

    DocumentRoot /var/www/html
    

    也做一个

    sudo nano /etc/apache2/apache2.conf
    

    然后找到这个:

    <Directory /var/www/html/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>
    

    并将/var/www/html 更改为您的首选目录并保存。

    保存更改后,只需重新启动 Apache 2 Web 服务器即可:)

    sudo service apache2 restart
    

    如果您更喜欢图形文本编辑器,只需将 sudo nano 替换为 gksu gedit

    【讨论】:

    • @Paul Lo:我没有在 Ubuntu 13.10 上尝试过,只在 Ubuntu 14.04 上尝试过;我很确定我第一次设置 apache(在 Ubuntu 12.04 上)时,没有这样的目录。所以是的,我猜这仅适用于 Ubuntu 14.04 LTS 及更高版本。但是,您可以查看其他答案。赞成票表明他们帮助了其他人,也许他们也使用 Ubuntu 13.10。
    • 不过,感谢您的提问,我只是将这些信息编辑到了答案中,这样其他人就不会陷入使用旧 Ubuntu 版本 (y) 进行尝试的陷阱
    • @mozzbozzm,你是对的。只有 14.04。真是一个奇怪的选择,现在突然将var/www/html 作为默认根。他们真的是在试图浪费人们的时间吗? :)
    • 当我在浏览器中点击 localhost:80 时,我收到了一个禁止错误You don't have permission to access / on this server.。我需要更改端口吗?
    • @Costa 我通过在 /etc/apache2/apache2.conf 中添加 &lt;Directory path_to_directory&gt; Options Indexes FollowSymLinks AllowOverride None Require all granted &lt;/Directory&gt; 解决了这个问题
    【解决方案7】:

    Red Hat Linux 7.0:/etc/httpd/conf/httpd.conf

    【讨论】:

      【解决方案8】:

      这是给Ubuntu 14.04(Trusty Tahr)的:

      在文件/etc/apache2/apache2.conf 中应该如下,没有目录名:

      <Directory /home/username>
          Options Indexes FollowSymLinks
          AllowOverride All
          Require all granted
      </Directory>
      

      在文件/etc/apache2/sites-available/000-default.conf 中,您应该包含自定义目录名称,即www

      DocumentRoot /home/username/www
      

      如果不是如上,加载服务器时会报错:

      Forbidden 您无权访问此服务器上的 /

      【讨论】:

      • 谢谢你的朋友 :) 这在 Ubuntu 16.04 中对我有用
      • 它也适用于 Debian 8
      • “没有目录名”是什么意思?
      【解决方案9】:

      对于Linux Mint 17.3 Cinnamon 64 位上的 Apache 2,以下工作:

      1. /etc/apache2/sites-available/ 中打开000-default.conf 文件,并将Document Root 更改为您目录的绝对路径。

        sudo vim /etc/apache2/sites-available/000-default.conf

      2. 在文件夹/etc/apache2/ 打开文件httpd.conf,并添加一个&lt;Directory&gt; 标记引用您的目录并包含与var/www 标记完全相同的设置。

         sudo vim /etc/apache2/apache2.conf
        

        在我的机器上看起来像这样:


         <Directory /home/my_user_name/php/>
                 Options Indexes FollowSymLinks
                 AllowOverride All
                 Require all granted
         </Directory>
        

      注意:在第一步中,您可能还想更改 default-ssl.conf 文件中的 Document Root 以用于 SSL 目的。但据我所知,这并不是运行通用开发环境所必需的。

      【讨论】:

        【解决方案10】:

        在 Apache 版本 2.4.18 (Ubuntu) 中。

        1. 打开文件 /etc/apache2/apache2.conf 并 搜索 &lt;Directory /var/www/&gt; 并替换到您的目录。

        2. 打开文件 /etc/apache2/sites-available/000-default.conf,搜索 DocumentRoot /var/www/html 并将其替换为您的 DocumentRoot。

        【讨论】:

        • 这两件事我都做了。它仍然显示 Forbidden You don't have permission to access / on this server.
        • 检查您的文件夹权限,如果它不在您的主目录中。
        【解决方案11】:

        我已将/var/www 设为所需目录的软链接(例如,/users/username/projects),之后一切正常。

        但是,很自然地,原来的/var/www 需要删除或重命名。

        【讨论】:

          【解决方案12】:

          如果您使用的是Linux Mint(个人意见,从所有发行版来看,这让我很开心),请按照以下说明操作:

          1. 转到文件夹 /etc/apache2/sites-available 并编辑文件 000-default.conf
          2. 搜索 DocumentRoot,例如 DocumentRoot /var/www/html。您切换到各自的目录;
          3. 打开终端并输入:sudo service apache2 restart

          在 Linux Mint 中,您选择文件 /etc/apache2/apache.conf。将 /var/www 替换为您各自的路径,然后重新启动服务器(步骤 3)。

          就是这样。

          【讨论】:

            【解决方案13】:

            Apache 2 切换目录或从不同端口下的多个目录运行的正确方法如下:

            对于 Apache 2,配置文件位于 /etc/apache2 下,不像旧版本那样使用单个配置文件,而是拆分成更小的配置文件,/etc/apache2/apache2.conf 是主要配置文件。为了提供来自不同目录的文件,我们需要一个新的虚拟主机 conf 文件。虚拟主机配置文件位于/etc/apache2/sites-available(不要在启用站点的情况下编辑文件)。默认的 Apache 安装使用虚拟主机配置文件000-default.conf

            首先创建一个新的虚拟主机文件,方法是复制 Apache 默认安装使用的默认虚拟主机文件(在 localhost 端口 80 上运行的虚拟主机文件)。切换到目录/etc/apache2/sites-available 然后用sudo cp 000-default.conf example.com.conf 复制,现在用sudo gedit example.com.conf 编辑文件到:

            <VirtualHost *:80>
                ServerAdmin example@localhost
                DocumentRoot /home/ubuntu/example.com
            </VirtualHost>
            

            为简洁起见,我已从上述文件中删除了不重要的行。这里DocumentRoot 是要提供网站文件的目录的路径,例如index.html

            创建您要从中提供文件的目录,例如mkdir example.com,并更改目录的所有者和默认组,例如,如果您的登录用户名为ubuntu,则将权限更改为sudo chown ubuntu:www-data example.com .这将授予用户 ubuntu 的完全访问权限,并允许对组 www-data 的读取和执行访问权限。

            现在通过发出命令sudo gedit apache2.conf 编辑Apache 配置文件/etc/apache2/apache2.conf 并找到&lt;Directory /var/www/&gt; 和结束标记&lt;/Directory&gt; 下方的行,添加以下内容:

            <Directory /home/ubuntu/example.com>
                Options Indexes FollowSymLinks Includes ExecCGI
                AllowOverride All
                Require all granted
            </Directory>
            

            现在有两个命令可以启用或禁用虚拟主机配置文件,分别是a2ensitea2dissite。现在由于我们的example.com.conf 文件使用与默认配置文件(000-default.conf)相同的端口(@98​​7654345@),我们必须通过发出命令sudo a2dissite 000-default.conf 禁用默认配置文件并启用我们的虚拟主机配置文件sudo a2ensite example.com.conf

            现在使用命令sudo service apache2 restart 重新启动或重新加载服务器。现在 Apache 在默认端口 80 上的 localhost 提供目录 example.com 中的文件。

            a2ensite 命令基本上是在启用站点的目录下创建一个指向配置文件的符号链接。

            this answer 中指出的,请勿编辑启用站点(或启用 *)的目录中的文件。

            更改端口并从不同端口上的多个目录运行:

            现在,如果您需要在不同的端口上运行目录,请将虚拟主机文件编辑为:将端口号从 80 更改为 8080:

            <VirtualHost *:8080>
                ServerAdmin user@localhost
                DocumentRoot /home/ubuntu/work
            </VirtualHost>
            

            编辑/etc/apache2/ports.conf 并在Listen 80 行下方添加Listen 8080

            现在我们可以启用在端口 80 上运行的默认虚拟主机配置文件,因为 example.com 目录使用端口 8080,如 sudo a2ensite 000-default.conf

            现在使用命令sudo service apache2 restart 重新启动或重新加载服务器。现在这两个目录都可以从localhostlocalhost:8080 访问。

            【讨论】:

              【解决方案14】:

              如果您使用的是Ubuntu 16.04 (Xenial Xerus),请更新目录 /etc/apache2/sites-available 中的 000-default.conf 文件.

              这里→

              ServerAdmin webmaster@localhost
              DocumentRoot /var/www/html/YourFolder

              【讨论】:

              • “更新”是什么意思?删除评论字符?用别的东西代替东西?添加“/你的文件夹”?还是别的什么?
              【解决方案15】:

              以下内容适用于Ubuntu 14.04 (Trusty Tahr) 及更高版本。请务必在进行任何更改之前备份以下文件。

              1. 打开/etc/apache2/apache2.conf 并搜索&lt;Directory /var/www/&gt; 指令并将路径替换为/home/&lt;USERNAME&gt;/public_html。您可以使用 * 代替 .

              2. 打开/etc/apache2/sites-available/000-default.conf 并将DocumentRoot 值属性从/var/www/html 更改为/home/&lt;USERNAME&gt;/public_html。还有&lt;Directory /var/www/html&gt;&lt;Directory /home/&lt;USERNAME&gt;/public_html

              3. 打开/etc/mods-available/php7.1.conf。查找并注释以下代码

                php_admin_flag 引擎关闭

              不要打开php_admin_flag engine OFF 标志on,原因在指令代码上方的评论中提到。 PHP 版本也可以是 5.0、7.0 或您已安装的任何版本。

              home/&lt;USERNAME&gt; 中创建public_html 目录。

              执行命令sudo service apache2 restart重启Apache服务。

              通过在服务器上运行示例脚本进行测试。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2013-08-27
                • 1970-01-01
                • 1970-01-01
                • 2015-09-02
                • 2017-01-07
                • 2022-10-13
                • 1970-01-01
                相关资源
                最近更新 更多