为 Linux 机器的每个用户设置单独可访问的 public_html

为 Linux 机器的每个用户设置单独可访问的 public_html

我有一台专用服务器,上面有一个网站http://www.example.com

我需要创建一个用户并:


  1. 我如何向他提供 ftp 访问权限?
  2. 我该如何设置 public_html 和所有必要的详细信息,以便他可以从互联网访问 html 文件?我希望他也能执行 php 脚本(我认为这应该不是问题,因为这个网站上的网站已经可以做到这一点)。

我没有 cPanel。我正在运行 RHEL5/CentOS


編輯1

在 httpd.conf 中我添加了以下内容:

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName www.example.com
  DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *:80>
  ServerName david.example.com
  DocumentRoot /home/david/public_html
</VirtualHost>

<VirtualHost *:80>
  ServerName matthew.example.com
  DocumentRoot /home/matthew/public_html
</VirtualHost>

并确保相应文件夹存在且具有 755 权限。

我现在可以访问主站点,但无法访问 subdomain.example.com 站点。

答案1

你用mod_userdir设置public_html和允许用户在您的机器上建立网站的目录。

如果您只需要为一个用户提供此功能,您也可以为该目录设置一个简单的虚拟主机。例如:

Listen 80
NameVirtualHost *

<VirtualHost *>
  ServerName www.yourdomain.com
  DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *>
  ServerName subdomain.yourdomain.com
  DocumentRoot /home/username/public_html/
</VirtualHost>

如果您有多个用户名想要创建 VirtualHosts,您有几种选择。第一种是将它们明确地写在 httpd.conf 中。第二种是使用 mod_rewrite 查找未知主机名并将其转换为默认用户目录http://yourhostname.com/~用户名/

这解决了 Web 方面的问题。对于 FTP 方面,可以使用诸如 ProFTPd 的守护进程默认根目录负责用户目录 FTP 访问。对于 DNS,您可以创建通配符 A 条目,将 *.yourdomain.com 指向您的服务器的 IP 地址。

附注:请使用您在 StackOverflow 上提供的问题信息(最终移植到 ServerFault)编辑此问题,这样我们就不会出现重复的问题。谢谢!

相关内容