刚刚在开发箱上安装了 Apache2,无法从 Internet 访问。安装后,我可以从我的客户端 (MAC) 打开浏览器到 IP 地址,它确实显示默认的“Apache2 Ubuntu 默认页面”。
我正在尝试设置虚拟主机。找到了很多参考资料,但似乎无法完成这项工作。
在/etc/apache2/sites-available我创建的目录中,audio-site.conf它具有以下内容
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/jason/web
<Directory />
Options FollowSymLinks
AllowOverride All
Order Allow,Deny
</Directory>
<Directory /home/jason/web/>
AllowOverride all
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
然后运行命令
sudo a2ensite audio-site
sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)
在客户端浏览器中,我尝试使用http://IP-address/audio-site. 基于对此的研究,我尝试了几种不同的设置,但似乎没有任何效果。
对我所缺少的任何帮助将不胜感激。
恐怕这不是虚拟主机的工作方式;) 虚拟主机用于在同一 Web 服务器上托管多个独立站点。
“回到过去”,一台机器在一个地址下托管一个网站。假设您的网络服务器托管网站“www.my-site.tld”。该站点的文件(html、css、javascript、图像、脚本等)存储在/var/www/. 因此,在 Apache 配置DocumentRoot中将设置为该目录,/var/www/.
如果您现在将浏览器指向http://www.my-site.tld/welcome.html,它会显示文件/var/www/welcome.html。要构建您的站点,您可以使用子文件夹。因此,例如,如果您将浏览器指向http://www.my-site.tld/holidays/summer2001.html,它会显示文件/var/www/holidays/summer2001.html。
到现在为止还挺好。但是,如果您想在同一台机器上、同一台主机上托管多个网站怎么办?不同地址下的多个网站(如果您从“外部”看它们)彼此完全独立,而不仅仅是同一网站内的不同子目录?这就是虚拟主机发挥作用的地方。
在虚拟主机配置中,您可以不是为整个网络服务器全局设置许多指令,而是为每个网站设置。假设您在同一个网络服务器上托管两个网站,“www.my-site.tld”和“www.my-other-site.tld”。为此,您可以使用两个虚拟主机配置,例如
<VirtualHost *:80>
DocumentRoot /var/www/my-site/
ServerName www.my-site.tld
ServerAlias my-site.tld
DirectoryIndex welcome.html
CustomLog /var/log/apache2/my-site.access.log "combined"
ErrorLog /var/log/apache2/my-site.error.log
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
和
<VirtualHost *:80>
DocumentRoot /var/www/my-other-site/
ServerName www.my-other-site.tld
ServerAlias my-other-site.tld
DirectoryIndex index.html
CustomLog /var/log/apache2/my-other-site.access.log "combined"
ErrorLog /var/log/apache2/my-other.error.log
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
您会看到,DocumentRoot每个虚拟主机中对的定义不同,对 而言ServerName相同,对ServerAlias等等相同。
我希望我能说明虚拟主机的概念,以及为什么虚拟主机和同一主机内的子目录是两个不同的东西。更复杂的是,您可以在虚拟主机中设置子目录 ;) 比如说,http://www.my-other-website.tld/tournaments/finals2015.html上面配置的地址将指向/var/www/my-other-site/tournaments/finals2015.html.
您可能会遇到其他一些事情,但我无法在这里详细介绍:
如果您使用地址、域名等,您需要确保每个人都知道在哪里可以找到它们。只是设置ServerName my-cool-site.com不会让“互联网”现在将请求定向my-cool-site.com到 ;) 为此,您通常会通过购买来使用 DNS(实际上,这主要是租用更多,因为您需要经常更新)域命名并设置一个 dns 条目,以达到“如果有人正在寻找my-cool-site.com,请将它们发送到诸如此类的服务器”。
例如,当您使用 IP 地址而不是域名时 http://127.0.0.1/webstuff/how-dns-works.html,它不会改变上述原则。事实上,如果您的服务器为其分配了多个 ip,您可以在您的虚拟主机中区分它们。<VirtualHost *:80>' means "apply this to requests for any ip, on port 80". If your server has192.168.2.101 and192.168.2.102assigned to it, you can differentiate between those ips in your virtual hosts.仅适用于指向, not for requests directed to192.168.2.101 192.168.2.102` 的请求。
如果您想从运行它的同一台机器上调用您的网络服务器并且不想直接使用 ip,您通常可以说“在本地主机上向我显示我现在所在的同一台主机上的网页” . 为此,通常是特殊的主机名localhost会配置。因此,您可以在浏览器的地址字段中输入类似“ http://localhost/thats-a-long-answer.html ”的内容。
通常,您有一个通用的“父目录”,所有虚拟主机DocumentRoot都位于该目录下。例如,您可以将所有虚拟主机作为/var/www/. 使用这种结构并不是绝对必要的,但它已被证明可以帮助您跟踪事物,而不是将您的网站存储在所有地方;)
要包含虚拟主机外部的目录DocumentRoot,您可以使用Alias. 比如说,你在“www.my-site.tld”的虚拟主机配置中添加了一个类似的指令
Alias /sports /home/john/some-sports
Run Code Online (Sandbox Code Playgroud)
在这种情况下, http://www.my-site.tld/sports/soccer.html将指向/home/john/some-sports/soccer.html.
但是这种情况容易出现权限问题。中的文件/home/john/some-sports通常归用户所有john,因此运行您的网络服务器软件 (Apache) 的用户可能无法访问它们。
所有这些都可能一下子全部消化掉,但这些是成功运行网络服务器需要了解的一些基本概念。它并不像乍一看那么复杂。
| 归档时间: |
|
| 查看次数: |
32938 次 |
| 最近记录: |