10 年来,我的网络服务器设置错误了吗?

10 年来,我的网络服务器设置错误了吗?

故事前:
我们在 2004-2007 年左右拥有一个带有域的 vserver,使用 apache。我父亲是所有者,我从他的朋友那里学到了一点(他正在做那些事情)。我通过 putty 学会了如何使用 linux。我认为我们在那里使用了一个名为 confixx 的系统。在那里,我们有一个 linux 用户帐户,即 /home 文件夹中的“web1”,其中有一个 html 文件夹,所有 web 内容都在那里。

这些天我使用 nginx,如果我读到文章,他们总是写关于“/var/www/”和“www-data”用户。我甚至找到了一篇关于 www/web1 www/web2 的文章。这对我来说很有意义,因为有时我甚至会遇到权限问题。例如,如果我通过 php 脚本上传文件,它无法移动文件,因为它属于 www-data(即使 web1 有 www-data 组)。我需要将 php 配置更改为该用户名。

我如何进行设置:
大多数情况下,虚拟服务器都会带有一个疯狂的域名,例如 vserver1234.yourniceserver.com。我创建子域名或普通域名,根 html 位于

  • /home/web1/sites/域名/html
  • /home/web1/sites/域名/子域名/名称/html
  • /主页/web2/html它是一个特殊的单一域。

我大部分时间都使用我的虚拟服务器来测试周围的东西,用于自己编写的文件共享系统和 wordpress 博客。

所以问题是:

  • 难道我这些年都错了吗?
  • 我应该将其移动到“/var/www”文件夹吗?
    • 如果是,是否可以用来创建 web1 用户或需要这些文件夹属于 root?因为每个用户(如 web1、web2)都可以使用 ftp。

编辑:我使用 debian。

答案1

如果你关注跳频仔细观察,你就能看出哪/srv/www/example.com一个是最合适的。尽管它最不受欢迎。

虽然合适,但可能不实用。

如果您使用的是 CentOS/RHEL 或其他基于 Fedora 的系统并打算保持 SELinux 启用,那么只需匹配现有的文件上下文位置/var/www/html/example.com就是最实用的。

因此,例如,如果您将 Wordpress 实例放在/var/www/html/example.com,那么它将正常工作,而无需禁用 SELinux,因为文件将具有正确的标签。

在 RHEL 8 系统上,semanage fcontext -l | grep wp-产生:

...
/var/www/html(/.*)?/wp-content(/.*)?               all files          system_u:object_r:httpd_sys_rw_content_t:s0 
...

因此,标准 SELinux 对文件放置在/var/www/html(每个服务器单个站点)或/var/www/html/example.com(服务器上多个网站)中具有“期望”。

不过,根据个人喜好,我仍然会坚持/srv/www/example.com并添加正确的标签,例如semanage fcontext -a ...

答案2

您的配置并不是特别“错误”(如“它不起作用”),但肯定不太理想;您将 Web 服务器文件和数据放置在本质上是用户主目录中。

有点像在 Windows 中,您将网站根目录放在C:\Users\Someone\wwwroot而不是C:\inetpub\wwwroot(或任何更合适的地方,例如专用的数据磁盘)。

对于单个小型网站来说没有任何实际差异,但是没有人会在真正的网络服务器中使用这样的设置。

相关内容