您好,如果这是一个非常基本的问题,请原谅。
问题:
目前我已经从购买了一个域名(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 区域,例如使用A
crazywebsite.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]