如何更改apache服务器的根目录?

Spe*_*ley 231 linux apache lamp

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

编辑

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

moz*_*ozz 254

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

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

/etc/apache2/sites-available/000-default.conf
Run Code Online (Sandbox Code Playgroud)

所以,做一个

sudo nano /etc/apache2/sites-available/000-default.conf
Run Code Online (Sandbox Code Playgroud)

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

DocumentRoot /var/www/html
Run Code Online (Sandbox Code Playgroud)

还做一个

sudo nano /etc/apache2/apache2.conf
Run Code Online (Sandbox Code Playgroud)

找到这个

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

并更改/var/www/html为您的首选目录

并保存.

保存更改后,只需重新启动apache2 webserver即可完成:)

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)


如果您更喜欢图形文本编辑器,则只需替换sudo nanoa gksu gedit.

  • @mozzbozzm,你是对的.只有14.04.真的是一个奇怪的选择,现在突然将`var/www/html`作为默认根.他们真的**试图**浪费人们的时间吗?:) (3认同)
  • 我收到了一个禁止的错误:当我在浏览器中点击localhost:80时,你没有权限访问/在这个服务器上.我需要更换端口吗? (3认同)
  • @Costa 我通过在 /etc/apache2/apache2.conf 中添加 `&lt;Directory path_to_directory&gt; Options Indexes FollowSymLinks AllowOverride None Require all allowed &lt;/Directory&gt; ` 解决了这个问题 (3认同)

RDL*_*RDL 204

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

使用您最喜欢的编辑器(我推荐Vim)并查找DocumentRoot并将其更改为/users/spencer/projects.还可以向下看一下看起来像这样的设置:

<Directory "/var/www">
Run Code Online (Sandbox Code Playgroud)

您还需要更改新目录的引号内容.当用户发出调用它的请求时,这使Apache访问该目录.

现在重启你的apache服务(httpd -k restart),你应该好好去.

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

  • 我打开了/etc/apache2/httpd.conf,但文件是空白的.我用gedit打开它. (6认同)
  • “答案”确实已经过时了。根据 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。(请参阅https://askubuntu.com/questions/337874/change-apache-document-root-folder-to-secondary-hard-drive) (5认同)
  • 该文件可能位于/etc/httpd/conf/httpd.conf中,具体取决于您的Linux风格. (3认同)
  • httpd.conf文件为空但我在etc/apache2/sites-available/default中找到了一个文件,并在那里更改了根目录.我可能已经提到过,这不是在实际的服务器上.我正在建立一个本地开发环境.不确定这是否有所作为 (3认同)
  • 是否可以同时启用/ var/www和/ home/myusername/projects_folder?我该怎么配置?谢谢. (3认同)

Nic*_*ick 42

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

  • @pabloab的建议编辑说:"Apache 2.4及以上版本最后需要`.conf`,默认情况下有一个'000 -`作为前缀".结果是`/ etc/apache2/sites-available/000-default.conf`.我没有测试过这个,但它可能对一些人有所帮助. (3认同)

and*_*fat 20

这是Ubunutu 14.04:

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

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

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

DocumentRoot /home/username/www
Run Code Online (Sandbox Code Playgroud)

如果不是如上所述,它将在加载服务器时出现错误: Forbidden You don't have permission to access / on this server

  • 它也适用于Debian 8 (2认同)

lor*_*vcs 12

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

对于apache2,配置文件位于/etc/apache2旧版本下并且不使用单个配置文件,但是将其拆分为较小的配置文件,/etc/apache2/apache2.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>
Run Code Online (Sandbox Code Playgroud)

为简洁起见,我删除了上述文件中的非重要行.以下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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

不要在启用站点的(或*-enabled)directoy中编辑文件,如此答案中所述/sf/answers/2909809101/

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

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

<VirtualHost *:8080>
    ServerAdmin user@localhost
    DocumentRoot /home/ubuntu/work
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

与编辑/etc/apache2/ports.conf和添加Listen 8080只是线下Listen 80

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

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