如何更改apache服务器的根目录?[关闭]


241

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

编辑

我最终弄清楚了。有人建议我更改httpd.conf文件,但最终还是在其中找到一个文件,/etc/apache2/sites-available/default并将根目录从更改为/var/www/home/myusername/projects_folder并且可以正常工作。


堆栈溢出是一个用于编程和开发问题的站点。这个问题似乎与主题无关,因为它与编程或开发无关。请在帮助中心中查看我可以询问哪些主题。也许Server FaultWebmaster Stack Exchange是更好的选择。
jww

Answers:


209

您需要更改文件中的DocumentRoot设置httpd.conf。很有可能会发生类似/etc/apache2/conf/httpd.conf

使用您喜欢的编辑器(建议使用Vim)并查找DocumentRoot并将其更改为/users/spencer/projects。对于看起来像这样的设置,还要往下看一点:

<Directory "/var/www">

您还需要将引号中的内容更改为新目录。这样,当用户发出调用该目录的请求时,Apache便可以从该目录进行读取。

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

编辑:Apache2站点配置文件现在通常保存在/etc/apache2/sites-available/ (Debian,Ubuntu等)中。


6
我打开了/etc/apache2/httpd.conf,但文件为空。我正在用gedit打开它。
斯宾塞·库利

3
该文件可能位于/etc/httpd/conf/httpd.conf中,具体取决于您的Linux风格。
克里斯·亨利

3
httpd.conf文件为空,但我在etc / apache2 / sites-available / default中找到了一个文件,并在那里更改了根目录。我应该提到过,这不在实际的服务器上。我正在建立一个本地开发环境。不确定是否会有所不同
Spencer Cooley

3
是否可以同时启用/ var / www和/ home / myusername / projects_folder?而我应该如何配置?谢谢。
Paul Lo

3
“答案”确实过时了。根据Ubuntu 18.x docs的正确答案是更改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/...
sea26.2

263

请注意,这仅适用于Ubuntu 14.04 LTS和更高版本。

在我的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转到您的首选目录

并保存。

保存更改后,只需重新启动apache2网络服务器,即可完成:)

sudo service apache2 restart


如果您更喜欢图形化文本编辑器,则可以将替换sudo nanogksu gedit


1
@Paul Lo:我没有在Ubuntu 13.10上尝试过,仅在Ubuntu 14.04上尝试过;因为我很确定我是第一次设置apache(在Ubuntu 12.04上),所以没有这样的目录。所以是的,我想这仅适用于Ubuntu 14.04 LTS和更高版本。但是,您可以查看其他答案。投票表明他们帮助了其他人,也许他们也使用Ubuntu 13.10。
mozzbozz 2014年

1
但是,感谢您提出问题,我只是将此信息编辑为答案,以便其他人也不会陷入尝试使用旧版Ubuntu(y)的陷阱
mozzbozz 2014年

3
@mozzbozzm,你是对的。只有14.04。真是一个奇怪的选择,现在突然有了var/www/html默认根目录。他们实际上是在试图浪费人们的时间吗?:)
davidkonrad 2014年

4
You don't have permission to access / on this server.当我在浏览器中点击localhost:80时,我收到了一个禁止的错误。我需要更改端口吗?
哥斯达黎加

3
@Costa我通过添加<Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> /etc/apache2/apache2.conf 解决了这个问题
Keenan Gebze

42

我不得不编辑/etc/apache2/sites-available/default。这些行与RDL提到的相同。


3
@pabloab建议的编辑应这样说:“ Apache 2.4及更高版本要求.conf结尾,默认情况下具有000-as前缀”。结果是/etc/apache2/sites-available/000-default.conf。我尚未对此进行测试,但可能会对某些人有所帮助。
尼克

^^这样解决了。在哪里可以找到我的网站末尾需要.conf的文件?我有大约20个虚拟主机,它们在更新后已被禁用且处于脱机状态,几个小时后,找到了这个虚拟主机并重命名了我的站点,可用文件为我修复了它。
詹姆斯·佩里

23

这是针对Ubunutu 14.04的:

在文件中,/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 You don't have permission to access / on this server


谢谢哥们:)这在Ubuntu 16.04为我工作
Magesh库马尔

2
它还适用于Debian 8
androsfat

15

更改目录或从apache2的不同端口下的多个目录运行的正确方法如下:

对于apache2,配置文件位于/etc/apache2旧版本下,并且不像以前的版本中那样使用单个配置文件,而是被拆分为较小的配置文件,并/etc/apache2/apache2.conf作为主要配置文件。要从其他目录提供文件,我们需要一个新的virtualhost conf文件。virtualhost conf文件位于/etc/apache2/sites-available(请勿在启用站点的位置编辑文件)。默认的apache安装使用virtualhost conf文件000-default.conf

首先通过复制默认安装的apache(在端口80上的localhost运行的默认安装)使用的默认虚拟主机文件来创建新的虚拟主机文件。切换到目录/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

现在,/etc/apache2/apache2.conf通过发出命令来编辑apache conf文件,sudo gedit apache2.conf并找到该行<Directory /var/www/>并在结束标记下方</Directory>,在下面添加以下内容:

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

现在有两个命令用于启用或禁用虚拟主机配置文件,分别为a2ensitea2dissite。现在,由于我们的example.com.conf文件使用的端口号80与默认配置文件的端口号相同000-default.conf,因此我们必须通过发出命令来禁用默认配置文件,sudo a2dissite 000-default.conf并通过以下方式启用我们的virtualhost conf文件:sudo a2ensite example.com.conf

现在,使用command重新启动或重新加载服务器sudo service apache2 restart。现在阿帕奇提供从目录中的文件example.comlocalhost的默认端口80

a2ensite命令基本上在站点启用目录下创建指向conf文件的符号链接

请勿在此答复所指出的站点启用(或启用*)的Directoy中编辑文件,如https://stackoverflow.com/a/41568701/2532763

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

现在,如果您需要在其他端口上运行目录,请通过将virtualhost文件编辑为以下内容将端口号从80更改为8080:

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

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

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

现在,使用command重新启动或重新加载服务器sudo service apache2 restart。现在两个目录都可以从localhost和访问localhost:8080


4

我正在使用LAMP,并且要更改“文档根目录”文件夹,我已经编辑了/ 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 *内容。


4

如果找不到 http.conf并遵循尼克的方法。

使用重启Apache sudo service apache2 restart


4

对于Linux Mint 17.3 Cinnamon 64位上的apache2,可以进行以下工作:

  1. /etc/apache2/sites-available/打开000-default.conf文件中,将“ 文档根目录” 更改为目录的绝对路径。

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

  2. /etc/apache2/开放httpd.conf,并添加<Directory>标签引用您的目录,包含完全相同的设置作为标记var/www

    sudo vim /etc/apache2/apache2.conf

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


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

注意:在第一步中,您可能还想出于SSL的目的更改文件中的文档根default-ssl.conf目录。但是据我所知,这不是运行常规开发环境所必需的。


2

在Apache 2.4.18版(Ubuntu)中。

1.转到此文件/etc/apache2/apache2.conf搜索 <Directory /var/www/>并替换到您的目录......

2.转到/etc/apache2/sites-available/000-default.conf搜索DocumentRoot /var/www/html并替换为您的DocumentRoot...。


我都做过 它仍然显示“禁止访问”,您没有访问此服务器上的权限。
程序员

检查文件夹权限(如果它不在主目录中)。
哈比邦'16

2

如果您使用的是Ubuntu 16.04。请更新目录中的000-default.conf / etc / apache2 / sites-available中。

此处-> ServerAdmin webmaster @ localhost DocumentRoot / var / www / html / YourFolder


1

我已经将变成了/var/www到所需目录的软链接(例如/users/username/projects)之后一切都很好。

但是,自然地,原始文件/var/www需要删除或重命名。


0

如果有人安装LAMP了该/opt文件夹,则/etc/apache2则不是您要查找的。

寻找httpd.conf档案/opt/lampp/etc/httpd.conf

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



0

如果您使用的是Linux Mint(个人观点,从所有发行版中这使我感到高兴),请遵循以下步骤:

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

编辑-----我意识到在Mint中,您需要/etc/apache2/apache.conf,将/ var / www替换为各自的路径,而不是重新启动服务器(步骤3)。

而已。


0

适用于Ubuntu 14.04和更高版本。进行任何更改之前,请确保备份以下文件。

1.打开/etc/apache2/apache2.conf并搜索<Directory /var/www/>指令,并用替换路径/home/<USERNAME>/public_html。您可以使用*代替。

2. 从到打开/etc/apache2/sites-available/000-default.conf并替换DocumentRootvalue属性。也到。/var/www/html/home/<USERNAME>/public_html<Directory /var/www/html><Directory /home/<USERNAME>/public_html

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

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

不要打开 php_admin_flag engine OFF指令代码上方的注释中提到了原因,请标志。php版本也可以是5.0、7.0或您已安装的任何版本。

在中创建public_html目录home/<USERNAME>

通过执行命令重新启动apache服务sudo service apache2 restart

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


-3

如果您(像我一样)通过Google查找此信息:

我在/etc/apache2/sites-available/000-default.conf中找到它


4
请使用嵌入式代码描述您的详细答案,而不是指向外部文件。
Christian MICHON 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.