创建其他虚拟主机 Ubuntu 服务器

创建其他虚拟主机 Ubuntu 服务器

我目前有一个网站在我的 LAMP 服务器(Ubuntu Server 16.04.3)上完美运行。
我现在想在服务器上添加另一个网站。所以我首先转到 /etc/apache2/sites-available 文件并将 000-default.conf 文件复制到同一目录,同时将名称更改为 mydomainname.com.conf。
然后我将此文件编辑为以下内容:

<VirtualHost mydomain.com:80>
   ServerName mydomain.com
   ServerAlias www.mydomain.com
   ServerAdmin admin.mydomain.com
   DocumentRoot /var/www/mydomain.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

接下来我输入命令 a2ensite mydomain.com.conf
然后我重新启动了 apache。
然后我 mkdir /var/www/mydomain.com/public.html(也更改了权限)
之后我编辑了 /etc/hosts 文件并添加了:

127.0.0.1 mydomain.com.
myinternalIP mydomain.com 
myStaticIp mydomain.com 

然后我在这里添加了新站点的内部 IP 和新站点的公共 IP。
然后我转到 /etc/network/interfaces 文件:

The loopback network interface
auto lo
iface lo inet loopback

- The primary network interface(this is for the virtual host already on the server)

auto eno1
iface eno1 inet static
     address 192.168.11.199
     netmask 255.255.255.0
     network 192.168.11.0
     broadcast 192.168.11.255
     gateway 192.168.11.59
     dns-nameservers 8.8.8.8
     dns-search currentsite.com

-Second IP interface(This is for the new virtual host)<br>
iface eno1:1 inet static
   address 192.168.11.200
   netmask 255.255.255.0

当我执行 Ifconfig 时输出:

eno1: Link encap: Ethernet HWaddr xx:xx:xx:xx:xx:xx 
      inet addr:192.168.11.199 Bcast:192.168.11.255 Mask:255.255.255.0 
      inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:link 
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
      TX packets:6085 errors:0 dropped:0 overruns:0 carrier:364 
      collisions:381 txqueuelen:1000 
      RX bytes:563896 (563.8 KB) TX bytes:5541282 (5.5 MB) 
      Interrupt:20 Memory:f7c00000-f7c20000

eno1:1 Link encap: Ethernet HWaddr xx:xx:xx:xx:xx:xx 
       inet addr:192.168.11.200 Bcast:192.168.11.255 Mask:255.255.255.0 
       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
       Interrupt:20 Memory:f7c00000-f7c20000

lo    Link encap:Local Loopback 
      inet addr:127.0.0.1 Mask:255.0.0.0 
      inet6 addr: ::1/128 Scope:Host 
      UP LOOPBACK RUNNING MTU:65536 Metric:1 
      RX packets:9856 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:9856 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:1 
      RX bytes:731051 (731.0 KB) TX bytes:731051 (731.0 KB) 

重新启动服务器后,ifconfig 的输出-我看不到在 /etc/network/interfaces 文件中插入的 eno1:1

eno1: Link encap: Ethernet HWaddr xx:xx:xx:xx:xx:xx 
      inet addr:192.168.11.199 Bcast:192.168.11.255 Mask:255.255.255.0 
      inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:link 
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
      RX packets:77 errors:0 dropped:0 overruns:0
      TX packets:76 errors:0 dropped:0 overruns:0 carrier:0  
      collisions:0 txqueuelen:1000 
      RX bytes:8760 (8.7 KB) TX bytes:10725 (10.7 KB) 
      Interrupt:20 Memory:f7c00000-f7c20000

 lo   Link encap:Local Loopback 
      inet addr:127.0.0.1 Mask:255.0.0.0 
      inet6 addr: ::1/128 Scope:Host 
      UP LOOPBACK RUNNING MTU:65536 Metric:1 
      RX packets:190 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:190 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:1 
      RX bytes:14760 (14.7 KB) TX bytes:14760 (14.7 KB) 


然后我执行 ifup -v eno1:1,然后当我执行 ifconfig 时,eno1:1 又恢复了。我现在也可以在本地搜索 192.168.11.200,但它会重定向到服务器上的其他网站。


服务网络启动输出

failed to start network.service: Unit network.service not found.


服务网络状态输出

network.service
 Loaded:not-found (Reason: No such file or directory)
 Active: inactive (dead)

IP 路由的输出

default via 192.168.11.59 dev eno1 onlink 
192.168.11.0/24 dev eno1 proto kernel scope link src 192.168.11.199

之后,我在防火墙中(使用 Mikrotik 防火墙)为端口 80 添加了新条目,以允许该域的 HTTP 流量。我还重新启动了防火墙以确保安全。

然后我去了我的域名提供商并创建了一个将我的静态 IP 指向新域名的 A 记录,还创建了一个将我的静态 IP 指向新域名的 WWW 记录。这边一切都很好。
我已经在 Google 上搜索过了,但似乎做不到。我浏览了很多帖子,但仍然无法从浏览器中看到我的新域名。
我在服务器上建立第一个网站时就是这样做的,一切都正常。
如果这个问题在某个地方得到解答,请指导我。

答案1

1.您不需要第二个 IP 地址来为服务器上的多个虚拟主机提供服务。正如我所理解的,您只有一个静态 IP。因此,如果您没有其他特殊要求,我建议您恢复与网络接口相关的更改。

2.无需对它进行任何操作/etc/hosts。此文件用作当地的DNS 以及您是否想访问您的域名 (FQDN)本地(从机器本身,当您无法访问互联网或设置 DNS 时)输入以下内容就足够了:

127.0.0.1 localhost example.com www.example.com second-example.com www.second-example.com
  • 其中127.0.0.1是通常绑定到的环回接口的地址本地主机域名。

您可以hosts在其他 LAN 连接的 PC 上编辑该文件,以便通过域名而不是 IP 地址访问您的 LAN 服务器。为此,您需要在hosts其他 LAN 连接的 PC 的文件中输入服务器的 LAN IP:

192.168.0.111 example.com www.example.com second-example.com www.second-example.com
  • 替换192.168.0.111为实际服务器的 LAN IP 地址。

3. 虚拟主机如何工作?

在客户端,当您在浏览器(例如http://example.com检查[1]中是否有此 FQDN 的记录/etc/hosts。如果没有这样的记录,向您的 DNS(在/etc/network/interfaces或 中提供/etc/resolv.conf,或由 DHCP 提供)询问所请求的 FQDN 的 IP 地址。DNS 返回A记录请求的域名。然后浏览器向提供的 IP 地址发送 HTTP 请求。请求的标头包含 IP、完全限定域名、ETC

  • [1] 不完全是浏览器,但我不想扩展答案。

在服务器端,当请求到达服务器 IP 地址上的某个端口时,该请求将由监听此端口的服务处理。默认HTTP/HTTPS端口为80/443阿帕奇 听它/他们——这是在中定义的/etc/apache2/ports.conf

当 Apace 处理请求时,它会读取请求头并将请求重定向到与请求头中的域名相对应的虚拟主机。

4.不要以这种方式使用 VirtualHost 标签:<VirtualHost mydomain.com:80>。这是一个拼写错误。相反,按默认方式使用它:<VirtualHost *:80>。实际上,星号*表示所有可用的网络接口(服务器处理的 IP 地址)。

5.根据上述内容,您的 Apache 配置应如下所示:

<VirtualHost *:80>
   ServerName example.com
   ServerAlias www.example.com
   ServerAdmin [email protected]

   DocumentRoot "/var/www/example.com/public_html"

   ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
   CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
</VirtualHost>

<VirtualHost *:80>
   ServerName second-example.com
   ServerAlias www.second-example.com
   ServerAdmin [email protected]

   DocumentRoot "/var/www/second-example.com/public_html"

   ErrorLog ${APACHE_LOG_DIR}/second-example.com.error.log
   CustomLog ${APACHE_LOG_DIR}/second-example.com.access.log combined
</VirtualHost>
  • 通常,不同虚拟主机的定义放在单独的.conf文件中,以a2ensite方便使用a2dissite

  • 不强制要求将日志文件分开(如示例中所示)。这只是另一种想法。

  • 在问题写成时ServerAdmin admin.example.com,您必须提供带有此指令的电子邮件。

6.如果一切正常,您可以进一步在 Let's encript(Certbot)的帮助下设置免费的 HTTPS(SSL/TLS)证书:

相关内容