安装Apache服务器

在Ubuntu 18.04上安装Apache Web服务器是一个非常简单的过程:

$ sudo apt-get update && apt-get install apache2

防火墙设置

如果在系统上启用了UFW防火墙 ,允许在端口80上传入流量:

$ sudo ufw allow http

同样,如果使用的是firewalld防火墙,我们可以运行:

$ sudo firewall-cmd --permanent --add-service=http && firewall-cmd --reload
在Ubuntu 18.04 Linux上安装Apache

配置虚拟主机

Apache Web服务器有能力在同一台计算机上运行多个网站。
每个站点(Apache术语中的虚拟主机)必须具有自己的配置。
虚拟主机可以是IP或者基于名称。

默认虚拟主机

在Ubuntu上,默认虚拟主机定义为 /etc/apache2/sites-available目录中的000-default.conf文件:

<VirtualHost *:80>
	[...]
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html
	[...]
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	[...]
</VirtualHost>

第1行的“<VirtualHost>”指令用于对apache为特定虚拟主机使用的设置进行分组。我们其中看到的第一个定义是*:80指令。这表示虚拟主机使用的ip地址和端口。

可以在同一个文件中定义多个虚拟主机,也可以遵循“每个文件定义一个虚拟主机”方案。在这两种情况下,如果没有其他虚拟主机与客户端请求匹配,则第一个定义被视为默认定义。

第3行的“ServerAdmin”指令是可选的,用于指定web服务器在出现错误消息时显示的联系人地址。通常,我们希望提供一个有效的电子邮件地址作为此指令的参数,因为web服务器将在其上使用'mailto:',以方便与管理员联系。

DocumentRoot第4行是必需的,它对于虚拟主机配置至关重要。此指令的参数必须是有效的文件系统路径。提供的目录将被视为虚拟主机的根目录,并且不能包含尾随的“/”。在本例中,文档根目录是/var/www/html。如果我们看一下它的内容,就会发现它包含了“index.html”页面,该页面被用作我们以前看到的服务器欢迎页面。

此virtualhost中第8–9行提供的最后两条说明是“ErrorLog”和“CustomLog”。通过使用第一个,我们设置了服务器将记录发生错误的文件。第二种方法用于以指定的格式记录发送到服务器的请求(您可以将其用作深入了解日志格式的参考)。

创建新的虚拟主机

我们看到了默认virtualhost是如何定义的;现在假设我们想使用我们的Web服务器为另一个网站提供服务:我们必须定义一个新的虚拟主机来实现我们的目标。
如上所述,虚拟主机文件必须在/etc/apache2/sites available目录中定义(至少在基于debian的发行版中):因此我们将在那里创建文件。在此之前,我们希望创建用作“文档根目录”的目录,并创建一个基本页面,在到达站点时显示:

$ sudo mkdir /var/www/example && echo "Welcome to example!" > /var/www/example/index.html

继续配置我们的虚拟主机:

<VirtualHost *:80>
DocumentRoot /var/www/example
ServerName www.example.local
</VirtuaHost>

这是运行虚拟主机所需的最低配置。这里我们可以看到一个新的指令,ServerName:这是定义虚拟主机的指令。让我们将此文件保存为'example.conf'。要激活我们的virtualhost,我们使用'a2ensite'命令:该命令所做的只是将文件的符号链接创建到/etc/apache2/sites enabled目录中:

$ sudo a2ensite example.conf

我们必须重新加载服务器配置:

$ sudo systemctl reload apache2.service

我们定义了一个virtualhost,但由于这是一个测试,并且没有与之关联的“dns条目”,为了验证配置是否有效,我们必须在试图访问站点的机器的“/etc/hosts”文件中添加一个条目。

$ sudo echo "192.168.122.241 www.example.local" >> /etc/hosts

如果没有这一行(并且没有DNS条目),就不可能将服务器地址与虚拟主机的名称相关联,而直接使用服务器ip将“触发”默认虚拟主机。

在客户机,如果我们现在使用浏览器打开“www.example.local”,我们将看到上面设置的index.html页面:

日期:2020-07-07 20:55:43 来源:oir作者:oir