在 FreeBSD 上创建虚拟主机后,上传的站点文件未显示

在 FreeBSD 上创建虚拟主机后,上传的站点文件未显示

早上好,

新手警报!!:)

我在我的 FreeBSD 服务器上创建了一个虚拟主机,并将域名指向该服务器。我将站点文件上传到 /home/servername/www/virtualhostname。我看到 /usr/local/apache2/htdocs 中还有 alos 文件。这些是通用的“欢迎使用您的服务器”HTML 文件和图像文件。

为了让服务器呈现 /home/servername/www/virtualhostname 中的文件,我是否需要从 /usr/local/apache2/htdocs 中删除文件?

谢谢,席德

编辑:
/usr/local/apache2/conf/httpd.conf 包含以下内容:

DocumentRoot "/usr/local/apache2/htdocs"

因此,将 DocumentRoot 更改为虚拟主机的目录是否可取?或者,我是否应该将网站文件放在上述 DocumentRoot 中并让其运行?

答案1

首先,确保您的域名指向您正在使用的服务器的正确 IP,一个简单的方法ping domain.com就可以做到,但您也可以使用 tracert domain.com 或 traceroute,具体取决于您从哪里检查它。

之后,找到该文件httpd.confvhosts.conf这些就是您的 Web 服务器配置文件。

检查是否vhosts.conf为空,如果不为空,请查找 DocumentRoot 条目并通过更新您的问题为我们发布内容,如果为空,请转到httpd.conf并查找<virtualhost条目,如果有,则表示您的网络服务器正在使用服务器 DocumentRoot 目录。

通常服务器的 DocumentRoot 目录是这样的,/var/www/htdocs但它可能会因安装不同而改变,也可能因操作系统不同而改变。

要验证您拥有哪一个,请在 httpd.conf 中查找DocumentRoot不在任何内的条目virtualhost,并且它前面的就是您的主根目录的路径。


最好为相关域创建自己的 VirtualHost,如果您有一个 vhosts.conf 文件,请将下面的内容添加到其中,替换您自己的域所需的内容,如果您没有 vhosts.conf,请在 httpd.conf 文件末尾添加:

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName domain.com
        ServerAlias www.domain.com
        DocumentRoot /home/servername/www/virtualhostname/
        ServerAdmin [email protected]

        ErrorLog /home/servername/logs/domain.com_error_log
        CustomLog /home/servername/logs/domain.com_access_log combined
</VirtualHost>

确保您已经创建了/home/servername/logs用于保存日志文件的目录,或者已将其指向您喜欢的某个位置。


Apache 网络服务器的工作方式如下:

  • 如果您没有配置虚拟主机,它将通过定义的 ip 或 ServerName 指向服务器 DocumentRoot。

  • 如果您确实有虚拟主机,那么当您使用服务器的 ServerName(这是在您的虚拟主机之外和之前的 ServerName 中定义的域httpd.conf)时,您才会访问服务器的 DocumentRoot,否则它将引导您进入配置文件中的第一个虚拟主机。

  • 假设您的第一个域名是 blabla.com,它使用虚拟主机 *:80,这意味着如果用户没有定义任何要访问的域名,则绑定到您的网络服务器的任何 IPS 都将指向该虚拟主机,例如,用户访问您的 IP 而不是域名。

  • 如果您总是使用域名来访问您的域,那么这并不重要,只要您的虚拟主机配置良好,您就可以到达您想要的位置和您想要的文件。

相关内容