我有一台服务器托管 mydomain.com。然后我还有一台服务器托管 subdomain1.mydomain.com。
在 subdomain1.mydomain.com 服务器上,如何创建子域名?例如,我想创建 subdomain2.subdomain1.mydomain.com
我的 subdomain1.mydomain.com 网站位于 /home/USER/public_html,运行正常。但是当我尝试创建 subdomain2.subdomain1.mydomain.com 时,它显示浏览器中未找到服务器。我在 /etc/hosts 和 /etc/apache2/sites-available/subdomain2.subdomain1.mydomain.com 中尝试了很多配置,但都失败了
我能得到一些详细的说明吗?我到处都找过了,每个地方的说明都不一样,但还是没找到。
Ubuntu Server 11.10 带有 Lamp Stack 选项
答案1
Apache 的配置
您需要的是 Apache VirtualHost 指令。请参阅Apache 文档还有一些例子。
基本上,您想要在 Ubuntu 中执行的操作是确保您要使用的端口(通常为:80)已在 /etc/apache2/ports.conf 中启用,如下所示:
NameVirtualHost *:80
Listen 80
接下来,您必须在 /etc/apache2/sites-available 中创建一个新的 conf 文件。我建议将其命名为 proj1.conf 或 proj1.mydomain.conf。
您可以在那里按如下方式配置 VirtualHost:
<VirtualHost *:80>
ServerName proj1.subdomain.domain.com
DocumentRoot /var/www/proj1
ServerAdmin [email protected]
# Write a seperate log per Virtualhost
CustomLog /var/log/apache2/proj1.subdomain.access_log combined
ErrorLog /var/log/apache2/proj1.subdomain.error_log
# Maybe you want to put some restrictions on the directory
<Directory /var/www/proj1>
Options -Indexes +FollowSymLinks + Includes
AllowOverride All
# Restrict Access to certain IP's
Order Deny,Allow
Deny from All
Allow from 127.0.0.1 IP IP IP
Satisfy ALL
</Directory>
</VirtualHost>
查阅 Apache 手册来了解可以使用该指令做什么。
要启用此站点,请将其链接到 /etc/apache2/sites-enabled
ln -s /etc/apache2/sites-available/proj1.conf /etc/apache2/sites-enabled/proj1
现在您要做的就是确保您的配置有效,然后重新启动 Apache:
apache2ctl configtest && /etc/init.d/apache2 restart
DNS
如果您正在运行虚拟机,DNS 可能是由您的托管商提供的,因此您可以与他讨论如何设置 DNS。
当然,您必须在 DNS 中设置子域名,使其指向此服务器。为此,您可以为每个子域名创建一个 A 记录或 CNAME 记录,并将其指向您的服务器。
你的绑定区域文件可能如下所示:
$TTL 2h
@ IN SOA dns1.example.com. emailaddress.domain.com. (
2011120701 ; serial number YYMMDDNN
1h ; Refresh
20m ; Retry
2w ; Expire
2h ; Min TTL
)
@ IN NS dns1.example.com.
@ IN NS dns2.example.com.
@ IN MX 10 mx1.domain.com.
@ IN MX 20 mx2.domain.com.
@ IN A 999.999.999.999
subdomain IN A 666.666.666.666
proj1.subdomain IN CNAME subdomain
*.subdomain IN CNAME subdomain
显然,您必须用您的域名替换 domain.com,用正确的 IP 替换 999.999... 和 666.666,更改 NS 和 MX 记录等。
查看绑定手册了解更多详情。
为了测试目的,您还可以在本地计算机上编辑 hosts 文件。这样,只有您的计算机才能将子域解析到此服务器,因此您可以检查一切是否正常,并且仅在一切正常时更改 DNS。
编辑: 如果您想要创建指向与子域名相同目录的“子子域名”,您可以在 Apache2 配置中的 ServerName 旁边添加一个 ServerAlias:
ServerName subdomain.mydomain.ain
ServerAlias proj.subdomain.mydomain.ain
ServerAlias *.subdoamaind.mydomain.ain
DNS 配置与上图相同。
答案2
Lukas 是对的,但是以这种方式处理 Vhost 真的很麻烦。
你试过免费的网站管理软件吗?虽然我们是一个开发团队,但我们使用 Webmin (http://www.webmin.com/) 用于我们的 VHosts、Cron 作业和配置管理。
您还可以获取 CPanel &cie 的副本,但这些都是付费的,并且通常不会比免费的基于 Web 的面板给您带来更多的东西。