向服务器添加域和子域

向服务器添加域和子域

您好,如果这是一个非常基本的问题,请原谅。

问题:

目前我已经从购买了一个域名(crazywebsite.com)Godaddy网站我在 Site5.com 有一个非托管 VPS。

我已经建立了一个LAMP 堆栈(Debian,Apache2,MySQL,PHP Laravel)在我的Debian 计算机Site5.com目前我的 IP 和网站的外观和访问方式如下:

292.168.0.1./website (Just an example IP)
292.168.0.1./forum

问题:

我如何才能实现以下目标?

crazywebsite.com => 292.168.0.1./
网站 forum.crazywebsite.com => 292.168.0.1./论坛

因此,当您记下我购买的域名时,您就会看到网站的内容(当然不是通过 IP 链接访问它)。

关于如何做到这一点,有任何想法或链接吗?

目前我已经尝试了以下方法:

添加的设置:

/etc/apache2/站点可用/默认

到:

# website
 <VirtualHost *:80>                                                              
     ServerName crazywebsite.com                                                                      
     ServerAlias crazywebsite.com                                                   
     DocumentRoot /var/www/website                                       
 </VirtualHost>

 <VirtualHost *:80>                                                              
     ServerName www.crazywebsite.com                                                                      
     ServerAlias www.crazywebsite.com                                                   
     DocumentRoot /var/www/website                                       
 </VirtualHost>

 # forum
 <VirtualHost *:80>                                                              
     ServerName forum.crazywebsite.com                                                                      
     ServerAlias forum.crazywebsite.com                                                   
     DocumentRoot /var/www/forum                                       
 </VirtualHost>

 <VirtualHost *:80>                                                              
     ServerName www.forum.crazywebsite.com                                                                      
     ServerAlias www.forum.crazywebsite.com                                                   
     DocumentRoot /var/www/forum                                       
 </VirtualHost>

提前谢谢您!

编辑:

根据@Sven的建议,我在 GoDaddy.com 中创建了 A 记录。有人能确认这是正确的吗?我为名称服务器创建了两个域 NS1 和 NS2(以防万一)以及一个“引荐”,我将需要它作为子域。 在此处输入图片描述

我是否需要在我的 Debian 服务器上进行任何其他设置(例如 BIND9 等?)或者我只需要等到 DNS 更新。

编辑:

这些设置已经奏效。现在我唯一的问题是我无法指向http://crazywebsite.com到 123.456.789.000/mywebsite。相反,它总是显示根文件夹“/”。有什么建议吗?

答案1

您需要添加 DNS 记录

  • crazywebsite.com
  • www.crazywebsite.com
  • 论坛...
  • www.forum...

到 GoDaddy 控制中心中的 DNS 区域,例如使用Acrazywebsite.com 的记录和CNAME所有其他记录,指向回crazywebsite.com(但四个A记录也可以)。

您不需要为每个站点添加两个虚拟主机(/website/forum),而应该执行以下操作:

<VirtualHost *:80>                                                              
     ServerName  crazywebsite.com                                                                      
     ServerAlias www.crazywebsite.com                                                   
     DocumentRoot /var/www/website                                       
 </VirtualHost>

 # forum
 <VirtualHost *:80>                                                              
     ServerName forum.crazywebsite.com                                                                      
     ServerAlias www.forum.crazywebsite.com                                                   
     DocumentRoot /var/www/forum                                       
 </VirtualHost>

答案2

Sven 建议添加“forum”和“www”记录,指向您的 Site5 VPS。您需要的是这些记录,而不是“ns1”和“ns2”——GoDaddy 目前是您的名称服务器,因此暂时不必担心自己做 DNS。

Sven 建议的 Apache 配置完全足够了。您的 ports.conf 中几乎肯定已经有了:

NameVirtualHost *:80

答案3

我已经解决了我的问题,这里为每个需要它的人提供了解决方案:

1. 将你的域名绑定到 Debian 服务器中的 IP

首先,您需要在 Debian 机器中绑定您的域名。这样您的 Debian 服务器就知道它需要响应这个域名。打开并编辑/etc/hosts文件如下:

127.0.0.1               localhost.localdomain localhost                                                                                                                   
123.456.789.000         crazywebsite.com # of course, in stead of 123.456.789.000 you type the IP of your Debian server

2.为域名和子域名设置虚拟主机。

然后进入 Apache 设置并设置域和子域虚拟主机。这样,您就可以将每个域指向服务器中将指向的确切文件夹。示例:

crazywebsite.com => 292.168.0.1./网站 forum.crazywebsite.com => 292.168.0.1./论坛

为此,您需要打开文件 /etc/apache2/站点可用/默认并使用以下内容进行编辑:

# This is the default  content of the file
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
# END: Default content of the file

# Your custom domain and subdomain content below this line
# website
 <VirtualHost *:80>                                                              
     ServerName crazywebsite.com                                                                      
     ServerAlias www.crazywebsite.com                                                   
     DocumentRoot /var/www/website                                       
 </VirtualHost>

 # forum
 <VirtualHost *:80>                                                              
     ServerName forum.crazywebsite.com                                                                      
     ServerAlias www.forum.crazywebsite.com                                                   
     DocumentRoot /var/www/forum                                       
 </VirtualHost>

3. 确保带有“WWW”和不带有“WWW”的域名指向同一个文件夹。

这是我完成所有这些步骤后遇到的问题。只有我的 www.crazywebsite.com指向/var/www/网站,但crazywebite.com版本仍然只指向/var/www

解决方法是进入以下目录:

/var/www/

并创建一个.htaccess 文件将允许当你输入“crazywebsite.com“ 和 ”www.crazywebsite.com“重定向至您的/var/www/网站文件夹。服务器名称 crazywebsite.com 服务器别名 www.crazywebsite.com 使用 CanonicalName 开启

RewriteEngine     On
RewriteCond %{HTTP_HOST}   !^crazywebsite\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://crazywebsite.com/$1 [L,R]

相关内容