我需要一些帮助来设置 apache 文档根的正确权限或所有权。这是我需要的:
/var/www/html/<site>我怎样才能做到这一点?目前所有文件都是全局可写的,这不好。服务器运行 CentOS 5.5
谢谢
我在运行 Apache Httpd 的服务器上托管了一些网站。每个网站都有自己的域或子域和虚拟主机。因此,我不需要默认的文档根目录。是否有可能禁用DocumentRoot的/etc/httpd/conf/httpd.conf?
我正在尝试学习如何配置其他人在运行 Ubuntu 8.04 的 VM 中设置的 Apache HTTP 服务器(我没有经验)。
我知道服务器正在运行,因为<html><body><h1>It works!</h1></body></html>当我访问http://1.2.3.4/(其中 1.2.3.4 是 VM 的 IP 号)时,我得到了“ ” 。
我在 /etc/apache2/ 中找到了 apache2.conf 和 httpd.conf(以及其他文件)。httpd.conf 为空。
我尝试添加DocumentRoot "/home/username/temp"到 /etc/apache2/httpd.conf 并在 /home/username/temp/index.html 中放入一些简单的 HTML。但是当我重新加载http://1.2.3.4/时没有任何变化。
我是否需要重新启动 httpd 才能让它接受对 DocumentRoot 的更改?
更新:我将 /etc/apache2/sites-available/default 中的“DocumentRoot /var/www/”更改为“DocumentRoot /home/username/temp”,但直到我运行sudo service apache2 restart. 我可以告诉 Apache 重新加载配置(而不是重新启动)吗?
更新 #2:从Karol Piczak对他的回答的评论中得到这个:sudo /etc/init.d/apache2 reload
在不同的服务器环境中,PHP $_SERVER['DOCUMENT_ROOT']super global 有时尾部有斜线,有时没有。我原以为这个问题与文件中ApacheDocumentRoot的定义方式直接相关httpd.conf:
即我会认为如果不httpd.conf包含尾部斜杠:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
Run Code Online (Sandbox Code Playgroud)
然后echo $_SERVER['DOCUMENT_ROOT']应该给/var/www/live/current
如果httpd.conf确实包含尾部斜杠:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
Run Code Online (Sandbox Code Playgroud)
然后echo $_SERVER['DOCUMENT_ROOT']应该给/var/www/live/current/
在 Ubuntu 10.04 上就是这种情况,但在 RHEL 5.5 上,$_SERVER['DOCUMENT_ROOT']即使在 Apache 上没有定义任何斜杠,也会添加尾部斜杠。
知道为什么会这样吗?是否有我遗漏的配置参数?
以供参考:
我不知道这是否可以在 apache 上实现,在来到这里之前我已经做了大量的研究。但:
我有一个 VirtualHost 运行在 **:80*,ServerName 到 somedomain.tld。我想要实现的是,如果客户端 10.2.1.4 访问 somedomain.tld,客户端将从 DocumentRoot /var/www/pages-1/ 获得内容。那么如果 10.3.0.* 访问同一个 somedomain.tld,客户端将从 DocumentRoot /var/www/pages-2/ 获取内容。目前有没有办法实现这一目标?
好的,所以我刚刚启动了一个新的 ubuntu 服务器 11.10,我添加了虚拟主机,一切看起来都不错……我也重新启动了 apache,但是当我访问浏览器时,我得到了一个空白页面
服务器 ip 是http://23.21.197.126/但是当我拖尾日志时
tail -f /var/log/apache2/error.log
[Wed Feb 01 02:19:20 2012] [error] [client 208.104.53.51] File does not exist: /etc/apache2/htdocs
[Wed Feb 01 02:19:24 2012] [error] [client 208.104.53.51] File does not exist: /etc/apache2/htdocs
Run Code Online (Sandbox Code Playgroud)
但我在启用站点的唯一文件是这个
<VirtualHost 23.21.197.126:80>
ServerAdmin something@gmail.com
ServerName logicxl.com
# ServerAlias
DocumentRoot /srv/crm/current/public
ErrorLog /srv/crm/logs/error.log
<Directory "/srv/crm/current/public">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
有什么我遗漏的......文档根目录应该是/srv/crm/current/public而不是/etc/apache2/htdocs错误所暗示的
有想法该怎么解决这个吗
更新
sudo apache2ctl -S
VirtualHost configuration:
23.21.197.126:80 is a NameVirtualHost
default server …Run Code Online (Sandbox Code Playgroud) 我有一个关于 Apache 安全性的一般性问题DocumentRoot,该问题来自我在安装 Galaxy(一种生物信息学 Web 服务和基础设施)时阅读的声明。声明说
“请注意,Galaxy 永远不应位于 Apache 的 DocumentRoot 内的磁盘上。
默认情况下,这会将所有 Galaxy(包括数据集)暴露给网络上的任何人。”
本段复制自 https://wiki.galaxyproject.org/Admin/Config/ApacheProxy
所以问题是将某些内容放入DocumentRoot与放入 的子目录之间有什么区别DocumentRoot?即使将内容放在子目录中,默认情况下,所有内容也会暴露给网络上的任何人吗?
如果我把在内容DocumentRoot的的SSL服务器,并且只允许经过身份验证和授权的用户访问,将这一决心在全球范围内访问问题?
更新:感谢大家的深思熟虑的回答。我想我已经回答了所有问题。总结一下:
除非设置了不同的权限,否则所有人都可以访问 DocumentRoot 中的子目录。
SSL 只保护通过网络传输的数据包,而不保护文件的权限。
身份验证/授权将限制谁可以访问 DocumentRoot。
Unix/Linux 文件权限不会影响访问,因为 Web 服务器所有者必须可以访问所有文件。
我刚刚在我的机器上安装了 Ubuntu 9.10 服务器版本,我希望与同一局域网中的其他用户一起运行我自己的个人本地服务器。
首先,我想知道哪种文件夹目录结构最适合 Web 根目录?
我应该只使用:
/var/www/
Run Code Online (Sandbox Code Playgroud)
并开始在那里扔网络文档,还是应该在其他地方创建一个文件夹(可能是主目录)?
其次,在
/var/www/
Run Code Online (Sandbox Code Playgroud)
目录只有 root 用户可以在那里创建文档,但是,我希望其他用户能够在文档 root 中创建文件并通过 FTP 上传它们。我应该更改权限还是www/文件夹?或者,我应该在其他地方创建具有不同权限的文档根目录吗?这样做最安全的方法是什么?
我想使用子域作为我的 DocumentRoot 文件夹
foo.example.com
Run Code Online (Sandbox Code Playgroud)
前往
/var/www/foo
Run Code Online (Sandbox Code Playgroud)
但是我不想为每个子域添加一个新条目
基本上
*.example.com
Run Code Online (Sandbox Code Playgroud)
前往
/var/www/*
Run Code Online (Sandbox Code Playgroud)
其中 * 是任何字母字符串
我阅读了以前的所有答案,但我无法解决我的问题.. 我正在更改托管网站的服务器,并再次设置 apache.. 现在,在安装 php、fail2ban 等之后,我遇到了这个问题:
service httpd start
Avvio di httpd: Syntax error on line 292 of /etc/httpd/conf/httpd.conf: DocumentRoot must be a directory
[FALLITO]
Run Code Online (Sandbox Code Playgroud)
我已经禁用了 selinux 并重新启动了,但什么也没发生..
sestatus
SELinux status: disabled
Run Code Online (Sandbox Code Playgroud)
在其他答案中,我阅读了该帖子..但我不知道它是什么,但我看到它与我看到的其他非常不同..
ls -laZ /var/www/html/
drwxr-xr-x root root ? .
drwxr-xr-x root root ? ..
drwxr-xr-x root root ? form
Run Code Online (Sandbox Code Playgroud)
显然我的 httpd.conf 有
DocumentRoot "/var/www/html”
Run Code Online (Sandbox Code Playgroud)
我需要的根是
DocumentRoot "/var/www/html/form”
Run Code Online (Sandbox Code Playgroud)
现在使用默认根目录不起作用,但在编辑某些文件(我不记得是哪个)之前,它正确启动。我希望你能帮助我.. 我使用的是 cents 6.5 x64.. 非常感谢
安德烈亚
我发现很难找到这个答案,经过一个小时(是的,一个小时)谷歌搜索和浏览 stackexchange 和其他几个论坛上的几篇文章......甚至通过 Apache 的文档!
我不为我的生活查找这两者之间的区别是,添加到我相当与Apache缺乏经验。
在我的本地机器上寻找为 PHP 和 MySQL 创建开发服务器的替代解决方案时,我遇到了这个问题。我正在关注本教程:
https://mallinson.ca/osx-web-development/
...其中提到了“VirtualDocumentRoot”,但没有说明为什么这是比 DocumentRoot 更好的(是吗?)选择。
任何指向我可能会找到有关此文档的线索或链接将不胜感激。谢谢!
注意:我发现的最接近文档的只有 DocumentRoot http://httpd.apache.org/docs/2.4/mod/core.html#documentroot
我的目标是让 Laravel 安装与生成为静态内容的 Nuxt 应用程序一起运行。
我希望 Laravel 可用,当位置以/api. 这按预期工作。
对于任何其他请求,我希望 Nginx 为我提供另一个文件夹中的静态内容。
我可以通过更改第 18 行 ( ) 处的文档根root /var/www/html/public/dist;并将以下try_files配置更改为下面的配置中的内容来实现此目的。
我尝试换成root其他alias的,这给了我一些奇怪的结果。我从 Nginx 收到 500 服务器响应,错误日志中包含以下输出:
2020/09/29 13:28:17 [error] 7#7: *3 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 172.21.0.1, server: _, request: "GET /my/fake/url HTTP/1.1", host: "localhost"
172.21.0.1 - - [29/Sep/2020:13:28:17 +0000] "GET /claims/creat HTTP/1.1" 500 580 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like …Run Code Online (Sandbox Code Playgroud) 当我尝试访问 DocumentRoot 时,它重定向到我的 VirtualHosts 之一,我看不到 /var/www/html 中的内容。
它的Virtualmin 3.94之下,我觉得有人在我的问题在这里,但我找不到他试图修复的选项。
请问我该如何解决?
documentroot ×13
apache-2.2 ×11
virtualhost ×4
centos ×2
permissions ×2
security ×2
ubuntu ×2
alias ×1
apache-2.4 ×1
ftp ×1
httpd ×1
httpd.conf ×1
nginx ×1
php ×1
selinux ×1
web-server ×1