我正在阅读一本有关 Ubuntu Server 的书,在连接好所有网络、DHCP、DNS、NTP 等之后,我们就需要创建一个 apache2 网络服务器了。
我遵循了所有的指示,但当我们到达多虚拟主机部分,我似乎无法让它工作。
由于只有一个网络接口,我选择了基于命名的虚拟主机我将列出我所有的 DHCP、DNS 和 Apache2 配置,以便每个人都能轻松找出问题所在。
DHCP
/etc/dhcp/dhcpd.conf
default-lease-time 43200;
max-lease-time 86400;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option domain-name "local.lan";
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.240;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
}
DNS
/etc/bind/named.conf.options
options {
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-validation auto;
listen-on-v6 { any; };
};
/etc/bind/named.conf.local
zone "local.lan" IN {
type master;
file "/etc/bind/net.local.lan";
};
/etc/bind/net.local.lan
$TTL 1D
@ IN SOA local.lan. exampleemail.local.lan. (
202212152; serial
8H ; refresh
4H ; retry
4W ; expire
1D ) ; minimum
IN A 192.168.1.1
;
@ IN NS lenovo.local.lan.
lenovo IN A 192.168.1.1 #my server
网站
对于网站配置,我创建了一个名为的文件000-virtual-hosts.conf
,其中包含我想要工作的虚拟主机的配置。
/etc/apache2/sites-available/000-virtual-hosts.conf
<VirtualHost *:80>
ServerName mywebsite.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/mywebsite_error.log
CustomLog ${APACHE_LOG_DIR}/mywebsite_access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName myotherwebsite.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/myotherwebsite_error.log
CustomLog ${APACHE_LOG_DIR}/myotherwebsite_access.log combined
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
你可以说我菜鸟,但我不知道它不起作用的原因是否因为我不拥有mywebsite.com
和myotherwebsite.com
域名,但我认为它会遵循书中的示例,并且将通过端口 80 专门请求域名,并在这篇文章中进一步添加对我的服务器 IP 的解析,无论我是否拥有域名,它都是本地的。我认为可能是因为它们指向同一个/var/www/html
文件,这可能是问题所在。我在尝试使其工作之前启用了它们,sudo a2ensite 000-virtual-hosts.conf
&& sudo systemctl reload apache2
。
书中曾写道:“如果您使用带有虚拟主机的域名,那么这只有在您设置网络使得文件中引用的域名解析为您服务器的 IP 地址时才会起作用。 [...] 如果您正在运行自己的 DNS 服务器,则可以在那里添加 A 记录。“因此我添加了此行/etc/bind/net.local.lan
并更新了serial
数字,否则 DNS 将不会接受新主机。
mywebsite.com IN A 192.168.1.247
但我认为问题是我真的不知道自己在做什么/做错了什么。
这是捕获的日志/var/log/apache2/error.log
,我不知道这些日志是否包含连接失败,mywebsite.com
因为它们应该是默认.conf
文件的,但我愿意与你分享它们,以防你需要它们。
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
[Fri Dec 16 01:32:24.187718 2022] [mpm_event:notice] [pid 32022:tid 139897582640192] AH00489: Apache/2.4.41 (Ubuntu) configured -- resuming normal operations