使用Ubuntu 16.04在VirtualBox上设置vhost

我对开发很陌生,这就是为什么我会遇到这样的“初学者”问题。

我希望在/ var / www / mysite下有一个带有index.html的目录,并通过键入mysite.example在我的PC(Win10 64位)上通过Web浏览器访问它。

我不想在网上发布任何东西。 我只想测试和开发一个以后可能托管的网站。

我使用Oracle VirtualBox创建了一个VirtualMachine并安装了Ubuntu16.04(64位,也在我的i5 2500 in Bios中启用了虚拟化,因此我显示了这些64位)。

然后我安装了apache2mysqlphp

ip addr show给了我一个地址: 192.168.178.31

所以,如果我输入我的浏览器http://192.168.178.31/我会进入apache2默认页面 – 它有效!

我创建了目录/ var / www / mysite ,并将一个简单的index.html用于测试purpouse。 我说sudo chown -R 775 to /var/www/

现在我需要创建一个vhost,这样我就可以通过在浏览器中输入特定的字符串来访问此特定目录中的index.html 。 但它只是行不通!

我去了/ etc / apache2 / sites-available /并创建了mysite.conf

这是内容:

  ServerAdmin webmaster@localhost DocumentRoot /var/www/mysite ServerAlias mysite.example  

我做了a2ensite mysite.confsudo service apache2 reloadrestart

我就是这样。 如果我在浏览器中输入mysite.example,我只会收到错误。

网站未到达。 找不到mysite.example的DNS服务器等等(ERR_NAME_NOT_RESOLVED)。

请注意,如果您使用mysite.local而不是mysite.org *(或其他常用扩展程序),则每次都可以在其前面键入http:// ,因为浏览器可能无法将.local识别为域扩展名。

  • 自2017年12月以来, .google.dev.foo.chrome.app.chrome域名扩展程序不是类似用途的好主意,请阅读更多 … 以及更多 …

如果要从本地计算机访问mysite.localwww.mysite.local ,请编辑/etc/hosts并将这两个域名绑定到loopback接口 – 127.0.0.1

 127.0.0.1 localhost mysite.local www.mysite.local 
  • /etc/hosts某处添加此行。

  • 请注意,在此上下文中,本地“计算机”是具有Ubuntu的虚拟机。

如果要通过LAN中的另一台计算机访问mysite.local ,请编辑其host文件并将两个域名绑定到服务器IP地址:

 192.168.178.31 mysite.local www.mysite.local 
  • 如何在Windows,Mac或Linux上编辑主机文件

  • 运行Oracle VirtualBox的主机必须被视为虚拟LAN中的机器,您在VirtualBox的设置过程中创建了该机器。


另一种选择是创建本地DNS:

  • 如何在Ubuntu 14.04上将BIND配置为专用网络DNS服务器

在这里,您是适用于您的案例的基本虚拟主机配置:

  ServerName mysite.local ServerAlias www.mysite.local ServerAdmin webmaster@mysite.local DocumentRoot /var/www/mysite  Options Indexes FollowSymLinks AuthType None AllowOverride All Order allow,deny Allow from all Require all granted  ErrorLog ${APACHE_LOG_DIR}/mysite.local-error.log CustomLog ${APACHE_LOG_DIR}/mysite.local-access.log combined  
  • 一开始在/var/www/mysite放了一些基本内容。 函数phpinfo(); 是一个好主意:

     echo '' | sudo tee /var/www/mysite/index.php 

重启Apache并尝试通过浏览器访问http://mysite.local