如何在Debian 10上安装Apache并设置虚拟主机
Apache HTTP Server 是目前应用最多的 web server 服务软件之一,Apache提供了许多强大的功能,而且可以通过其他模块进行扩展。Apache HTTP Server是一个开源的跨平台的服务器软件,目前大部分网站都采用Apache作为网站HTTP服务器。
在本教程中,我们将向你介绍如何在Debian 10中安装Apache并配置虚拟主机。
首先你得有一台安装了Debian的服务器,这样便于你在上面进行演练操作。如果你没有可以考虑自己在虚拟机中安装一个Debian 10。当然,我也推荐您购买一台 阿里云VPS 或者 腾讯云VPS 虚拟主机,如果你更喜欢国外服务器,推荐你尝试 Vultr上的VPS ,注册即送$50美元体验,性价比非常高。
当然有主机了,为安全考虑不建议使用root账号,建议创建一个具有 sudo权限的用户 。
同时,你的Debian已经安装了PHP,如果没有安装可以参考「 如何在Debian 10安装PHP 」教程。
Apache的安装包在Debian的默认源中提供了,所以只需要执行安装命令即可安装。执行安装Apache命令之前我们需要先更新一下系统,命令如下:
安装完成后,apache将默认自动运行,我们通过以下命令查看apache服务状态。
输出命令类似如下:
开启防火墙可以加强服务器的安全性,我们通过防火墙只开放需要访问的端口。可以通过防火墙管理软件 ufw 或者 nftables 进行管理。
如果系统没有安装 ufw 或者 nftables ,可以通过如下命令直接安装。
UFW 如果需要开启 (HTTP)80 或者 (HTTPS)443 端口,可以通过执行如下命令开启:
nftables 如果需要开启 (HTTP)80 或者 (HTTPS)443 端口,可以通过执行如下命令开启:
这个更建议使用 UFW 作为防火墙管理软件,相对来说操作更简单。
Apache安装完成后,需要校验一下Apache是否正常工作。校验方法是打开浏览器,在地址栏中输入 http://ip_or_domain ,如果能正常显示类似如下界面,说明Apache安装成功运行正常。
Apache安装完成后,默认的安装配置文件路径如下:
我们在 /var/www 目录中创建一个网站目录,例如 examplecom 。默认情况,目录结构如下:
可以通过以下命令创建:
在该目录下我们创建一个 indexphp 文件,文件内容如下:
首先,进入 /etc/apache2/sites-available 目录,创建配置文件 examplecomconf 文件,并在其中添加如下内容。
您可以根据需要命名虚拟主机配置文件,但是建议使用域名作为配置文件的名称。
要启用新的虚拟主机文件,请创建一个从虚拟主机文件到启用站点的目录的符号链接,该链接在启动过程中由Apache读取。
在Debian系统中,您可以使用名为 a2ensite 的帮助程序脚本来启用虚拟主机,命令如下:
当然你也可以选择手动创建符号链接,如下所示:
启用配置后,通过键入以下命令测试语法是否正确:
如果一切正常,会输出如下内容:
重启服务,使配置生效,命令如下:
在浏览器地址栏中输入 http://examplecom ,正常情况下你将看到如下输出:
至此,本教程交接完毕。
通过本教程,你将学会如何在Debian 10上安装Apache并设置虚拟主机,如果你有自己的的Debian 10主机不妨按照教程进行安装尝试,如果没有自己的Debian自己建议可以安装一台Debian10虚拟主机或者去 阿里云 或者 腾讯云 或者 Vultr 购买一台自己的VPS服务器。
1先决条件
每个域必须有一个DNS服务器。建议不要使用Live域用于测试目的。在本教程中,将在实验室环境中使用测试域exampletst。在这个假设域名的DNS服务器应该在至少以下记录。
exampletst的forward zone配置:
IN MX 10 mailexampletst
mailexampletst IN A 192168101
exampletst的Reverse zone配置:
192168101 IN PTR mailexampletst
在配置邮件服务器的过程中,这些记录可以根据系统的要求进行修改。
2设置主机名
首先,必须在/etc/hostname和/etc/hosts文件中指定邮件服务器的主机名。前者应仅包含主机名。
root@mail:~# vim /etc/hostname
root@mail:~# vim /etc/hosts
## IP Fully Qualified Domain Name Hostname ##
192168101 mailexampletst mail
增加用户
每一个Linux用户,在默认情况下,系统会为其自动创建一个邮箱。这些用户和邮箱将被用作电子邮件帐户和它们各自的邮箱。创建一个用户是很容易的。
root@mail:~# adduser fourbyte
安装和配置SMTP
服务: postfix
配置文件路径 /etc/postfix/
执行脚本 /etc/initd/postfix
日志文件 /var/log/maillog
端口 TCP/25
SMTP:安装postfix
postfix是广泛使用的SMTP服务器之一,因为它是稳定的、轻量级的、可扩展的、高度可定制的。安装postfix可以使用apt-get的完成。
root@mail:~# apt-get install postfix
在安装过程中,需要指定电子邮件服务器和域名的类型。
由于此邮件服务器就会直接向目的地发送电子邮件,我们选择Internet Site。
邮件服务器的域名也需要配置,这可以从确保该邮件服务器发送的所有邮件都有@ exampletst作为发件人域。
postfix的配置文件存储在/etc/postfix目录。下面的配置文件是非常重要的。他们中的一些可能不存在,因此需要手动创建。
transport:主要用于定义邮件如何被路由到特定的目标域。绕过DNS查询可以是一个很好的例子。在这种情况下,人们可以发送到域XYZcom的电子邮件直接通过IP地址XYYX不考虑任何DNS查询的结果。
access:可用于安全目的,如阻止发件人/收件人和他们的域名。
aliases:用于定义用户别名。例如,发送到userA的邮件可以由userB和userC接收。
maincf:是postfix的配置文件。
SMTP:准备配置文件
差不多可以准备配置文件了。transport与aliases配置文件没有默认提供,需要手动创建。
root@mail:~# cd /etc/postfix
root@mail:/etc/postfix# touch transport aliases
maincf
首先需要备份maincf然后再进行修改。根据下面的配置添加或修改配置文件。有关参数的更多详细信息,请参阅官方README和配置手册。
root@mail:/etc/postfix# vim maincf
## the name of the server ##
myhostname = mailexampletst
## alias definitions ##
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
## transport definition ##
transport_maps = hash:/etc/postfix/transport
## myorigin defines the domain name for emails originated from this server In this case, all outgoing mail should have '@exampletst' as sender domain ##
myorigin = exampletst
## mydestination parameter specifies what domains this machine will deliver locally, instead of forwarding to another machine ##
mydestination = mailexampletst, localhostexampletst, localhost, hash:/etc/postfix/transport
## the smarthost address Not used in this tutorial and will be covered in the future##
relayhost =
## the trusted sender networks postfix will not forward mails originated from other subnets ##
mynetworks = 127000/8 [::ffff:127000]/104 [::1]/128 192168100/24
## mailbox size in bytes 0 denotes no limit ##
mailbox_size_limit = 0
## postfix will listen on all available interfaces ie eth0, eth1, eth2 and so on ##
inet_interfaces = all
transport
邮件域exampletst被定义为在本地传递不需要任何DNS查询。
root@mail:/etc/postfix# vim transport
exampletst local:
exampletst local:
root@mail:/etc/postfix# postmap transport
aliases
假设所有发送到userA的所有电子邮件可以由userB接收,别名文件需要按如下所述进行修改。
软路由都是集成好的系统。debian虽然也可以实现,但是各个模块都需要自己测试和集成,等于自己开发一个软路由,你觉得可能吗?
当然,如果你只是要简单的共享上网功能,只要把iptables搞熟悉了就行。
而且,现在那么多现成的软路由系统,为什么不直接用呢,比如:
WFilter上网行为管理系统,和一般的软路由器相比,有很多优势:
1 超级强大的上网行为管理功能,支持网址库过滤,应用过滤,聊天过滤等。
2 上网记录和统计功能:网页和邮件的内容记录和审计。各种统计报表。
3 域账号集成,可以和微软AD域集成。
4 多种扩展插件:局域网扫描,DHCP扫描,私接路由和随身Wifi扫描等。
5 当然,软路由的其他功能都有。
通ssh:
linux安装openssh或者ssh包发起者windows需要安装xshell软件
linux见通ssh ipaddress port格式发起访问;用scp user_name@ipaddr:/dir/filename 文件拷贝本或者反文件拷贝远程:scp /dir/filename username@ipaddr:/dir2/
windowslinux:windows安装lrzsz包用xshell建立ssh连接(22端口)建立远程终端命令行输入rz或者sz传输文件
将DHCP移交给专用服务器的另一个好处就是可以建立动态域名服务(DDNS),那样当主机向服务器请求DHCP地址时,新主机的主机名称会被添加到DNS系统中。
第一步:安装及配置ISC DHCP Server
1 想开始搭建这台多宿主服务器这个过程,需要使用“apt”实用工具,通过Debian软件库来安装ISC软件。与所有教程一样,假设你拥有root或sudo访问权限。请对下列几个命令做适当的改动。
# apt-get install isc-dhcp-server[安装ISC DHCP Server软件]
# dpkg --get-selections isc-dhcp-server [证实已成功安装]
# dpkg -s isc-dhcp-server [以另一种方式证实安装]
将ISC DHCP Server安装在Debian中
2 鉴于服务器软件已证实成功安装,现在就有必要为服务器配置它需要分发出去的网络信息。管理员最起码要知道基本DHCP范围的下列信息:
•网络地址
•子网掩码
•将被动态分配的地址范围
让服务器动态分配的其他实用信息包括如下:
•默认网关
•DNS服务器的IP地址
•域名
•主机名称
•网络广播地址
这些仅仅是ISC DHCP服务器所能处理的诸多选项中的几个而已。想获得每个选项的详细描述以及完整列表,安装程序包之后请输入下面这个命令:
# man dhcpdconf
3 一旦管理员确定了该服务器要分发出去的所有必要信息,现在就可以配置DHCP服务器以及必要的池了。不过,在创建任何池或服务器配置之前,必须配置DHCP服务,以便侦听服务器的其中一个接口。
在这一台服务器上,网卡组已建立起来,DHCP会侦听被赋予名称“bond0”的组接口。考虑到服务器和一切已配置好的环境,务必要进行适当的更改。该文件中的默认值适用于本教程。
配置ISC DHCP网络
这一行将指示DHCP服务在指定的一个接口或多个接口上侦听DHCP流量。这时候,可以改动主配置文件,以便启动必要网络上的DHCP池。主配置文件位于/etc/dhcp/dhcpdconf。首先用文本编辑工具打开该文件:
# nano /etc/dhcp/dhcpdconf
该文件含有针对DHCP服务器的选项的配置,以及用户希望配置的所有池/主机。文件顶部以“ddns-update-style”子句开始;就本教程而言,它仍保持被设成“none”;不过在将来的一篇文章中,将会包括动态DNS, ISC-DHCP-Server将与BIND9整合起来,让主机名称转成IP地址的更新成为可能。
4 下一节通常介绍管理员配置全局网络设置,比如DNS域名、IP地址的默认租期、子网掩码及更多选项。想进一步了解所有选项,请务必阅读dhcpdconf文件的参考手册页。
# man dhcpdconf
就这次安装的服务器而言,有几个全局网络选项已在配置文件的顶部配置好,那样它们没必要实施在创建的每一个池中。
配置ISC DDNS
我们不妨稍微抽点时间解释其中一些选项。虽然它们在本例中全局配置,但所有选项同样可以针对每个池来配置。
•option domain-name “comptechlocal”:该DHCP服务器托管运行的所有主机将是DNS域名“comptechlocal”的成员。
•option domain-name-servers 17227106:DHCP将向经配置以托管的所有网络上的所有主机分发DNS服务器IP,即17227106。
•option subnet-mask 2552552550:被分发到每个网络上的子网掩码将是2552552550 或/24。
•default-lease-time 3600:这是租期将自动有效的时间(以秒为单位)。如果时间超时,主机会重新请求同一租期。如果主机已用完租期,就能及早归还地址。
•max-lease-time 86400:这是主机保持租期的最长时间(以秒为单位)。
•ping-check true:这是一个额外测试,确保服务器想要分配出去的地址没有已被网络上的另一个主机所使用。
•ping-timeout:这是指在假设地址未使用之前,服务器为响应ping而等待多长时间(以秒为单位)。
•ignore client-updates:眼下这个选项无关紧要,因为DDNS之前已在配置文件中被禁用,但是当DDNS运行时,这个选项将忽视主机在DNS中更新主机名称的请求。
5 该文件中的下面一行是权威DHCP服务器这行。这一行意味着,如果该服务器将是为该文件中所配置的网络分发地址的服务器,那么就取消注释权威节(authoritative stanza)。
该服务器将是它所网络的所有网络上的唯一权威,那样只要去掉关键字authoritative(权威)前面的“#”,即可取消注释全局权威节。
启用ISC Authoritative
默认情况下,服务器假设不是网络上的权威。这么做是出于安全。如果有人不明就里对DHCP服务器配置不当,或者在不该连接的网络上,这就会引起严重的连接问题。这一行还可以针对每个网络来使用。这意味着,如果服务器不是整个网络的DHCP服务器,authoritative这一行就可以改而针对每个网络来使用,而不是像上面截图看到的那样用在全局配置中。
6 下一步是配置该服务器管理的所有DHCP池/网络。为了简洁起见,本文将只介绍配置的其中一个池。管理员需要收集所有的必要网络信息(即域名、网络地址、多少地址可以分发出去,等等)。
就这个池而言,下列信息从网络管理员处获得:网络ID为17227600,子网掩码为2552552550或/24,子网的默认网关是17227601,广播地址为1722760255。
这些信息对于构建dhcpdconf文件中适当的网络节而言很重要。闲话少说,不妨再次使用文本编辑工具,打开配置文件,然后将新的网络添加到服务器。这必须借助root/sudo权限来完成!
# nano /etc/dhcp/dhcpdconf
配置DHCP协议和网络
这是为了将IP地址分发给用于搭建VMware虚拟服务器的网络而建立的示例。第一行表明了网络以及该网络的子网掩码。然后在括号里面是DHCP服务器应该提供给该网络上主机的所有选项。
第一个节range 172276050 1722760254;是DHCP服务器可以分发给该网络上主机的动态分配地址的范围。请注意头48个地址并不在池中;需要的话,这些地址可以静态分配给主机。
第二个节option routers 17227601;将默认网关地址分发给该网络上的所有主机。
最后一个节option broadcast-address 1722760255;表明该网络的广播地址。该地址不应该是范围节的一部分,因为广播地址无法分配给主机。
一些指针务必总是以分号(;)来结束选项行,始终确保每个创建的网络用花括号{ }包起来。
7 如果有更多的网络要建立,继续以合适的选项来建立,然后保存文本文件。一旦所有配置都完成, ISC-DHCP-Server进程需要重启,以便让新的变更生效。这可以用下面这个命令来实现:
# service isc-dhcp-server restart
这会重启DHCP服务,然后管理员可以通过几种不同的方式,检查服务器是否准备好处理DHCP请求。最简单的方式就是只要通过lsof命令,看看服务器是不是在侦听端口67:
# lsof -i :67
检查DHCP侦听端口
这个输出结果表明,DHCPD(DHCP Server守护程序)在运行,并侦听端口67。由于/etc/services文件中端口67的端口号映射,该输出结果中的端口67实际上被转换成了“bootps”。
这在大多数系统上很常见。至此,服务器应该已为网络连接准备好,只要将机器连接到网络,让它向服务器请求DHCP地址,即可加以证实。
本章目录
0 声明
1 简介
2 安装
3 配置
4 小测试
5 修改 From: 的地址
6 配置Fetchmail
7 修改exim的投递限制
8 综合测试
9 TODO
10 结束语
11 参考文献
0 声明
本文是在《通过exim建立家庭网络的邮件系统》一文的基础上修改的,作者:Jan
W Stumpel, Oegstgeest, The Netherlands。
这篇章的地址是:http://21116766225/~yzhao/lg-zh/lg-zh-issue8/stumpelhtml
1 简介
我想现在一个再普通的单位,也会需要用到电子邮件。我所在的企业,已经到了无法离开email的地步——每当邮件服务器出现问题,我的电话都会被打爆。在M$平台上,邮件服务器市场基本上被两个软件占领:M$的Exchange和Lotus的Domino/Notes。这些软件所花费的费用,实在不小。而Unix平台上,我们有很多选择,而且都是免费的。
在Debian里面,我们不用Sendmail,也不用Qmail和Postfix,而是用Exim,这是Debian的缺省邮件服务器,连基本系统都附带了这个软件。理由我就不说了,反正,Debian推荐的,不会错。
11 我们将实现的功能
◆
局域网中的用户可以实现本地邮件的发送和转发。
◆ 发往局域网以外的邮件有正确From:邮件地址,以使外部的邮件能够正确的回复。
◆
电子邮件账号是所有本地子网用户所共享,但是要实现每个用户仅仅能够收到自己的邮件。
◆ exim作为邮件的收发代理(它比sendmail好配置的多)。
◆ mail作为linux端的邮件客户程序。
◆ Microsoft Outlook Express 作为Win2000端的邮件客户程序(同样你也可以使用其它的类似工具,比如Foxmail)。
◆ qpopper 作为POP3服务器, 用来把邮件从Linux系统中转移到Win2000机器上。
◆ fetchmail 用来从互联网上收取邮件。
我在两台机器上(分别安装Linux和Win2000系统)做的测试,当然,win9x/NT/XP都可以,而且两台机器都是Linux的话也当然可以。这个方案,应付一个中小型的办公室应该绰绰有余。
12 网络和命名
在这篇文章中我假定以下的名字(您实际应用时应该做写修改,以适应您的实际情况):
◆ 拥有者和系统管理员的名称 kanaka Leng。
◆ Linux机器名为 Debian。
◆ Win2000 机器名为 Notepad。 通常使用者为 ganghua Leng。
◆ kanaka 在 Debian 机器上的注册用户名为 kanaka。
◆ ganghua 在 Debian 机器上的注册用户名为 ganghua。
◆ ganghua 在 Notepad 机器上的注册用户名也为 ganghua。
她的在linux下的Debian机器和 Win2000上的口令也相同。
◆
我们公司的局域网通过宽带连接互联网,当然你通过普通拨号也可以。
◆ kanaka 和 ganghua 都使用电子邮件地址:kanaka@yeahnet。
◆ kanaka到POP3收信的口令为kanakapswd。
◆ ISP的发送邮件的邮件服务器为smtpyeahnet。
◆ ISP的接受邮件的邮件服务器为pop3yeahnet。
机器Debian和Notepad都属于一个域,域名为testcom。
这个域名是我们内部搞测试用的,我们并没有注册这个域名,
因而对于外部网络来说, 并不能直接识别这个域名。
此外,我还假设内部网络已经正常工作,
并且已经拥有使用daild实现的非永久拨号连接,或者宽带网连接。
在Debian机器上也没有安装DNS服务。/etc/resolvconf中只是加入了ISP提供的两个DNS服务器的地址。同样的设置也要加在Notepad机器上的TCP/IP设置中。
13 邮件地址
在"To:"和"From:"中指定邮件地址是一封邮件的基本组成部分,
此外还有更多的内容。 举例来说:
To: ganghua Leng kanaka@yeahnet
'ganghua Leng'是一个"real-name part"(真实姓名部分)。
这是通过撰写电子邮件的程序加上的。
这个部分就是将邮件发送给ganghua本人的依据。 注意:如果在real-name
part中有句点存在, 邮件地址必须用"符号包围起来(例如:"kanaka
CLeng")。 您可以用man mailaddr参考一下相关的帮助页。
2 安装
由于我们已经安装了Debian基本系统,而Debian基本系统里面含有exim和mail这两个软件,所以我们只需要安装这两个:fetchmail、fetchmailconf和qpopper。
#
apt-get install fetchmail fetchmailconf qpopper
其中,fetchmailconf是用来配置fetchmail的工具。
系统会有一些问题提问你。当问你是否以root身份运行system-wide
fetchmail时,答Yes。其他的都选默认值。
3 配置
31 配置Debian的hosts
Debian机器上的/etc/hosts文件内容如下:
127001 localhost
19216811 Debiantestcom Debian
19216812 Notepadtestcom Notepad
32 配置exim
在Debian下,这一切都是由eximconfig程序来完成的。
#
eximconfig
程序将问到一些问题,你可以参考下面的回答:
◆ 你的系统是一个Internet主机(选择1,虽然你在局域网。这样你可以发邮件到互联网)。
◆ “显示的邮件域名”为testcom。
◆ 系统有其他的名称吗?你可以回答 Debian:localhost。
◆ 你不想转发任何非本地域的邮件。保持none,按回车。
◆ 你想转发的本地域地址为19216810/16。
◆ 处理向外转发的邮件的smarthost 地址为 smtpyeahnet。
◆ 系统管理员的邮件为kanaka(非root)。
33 配置Win2000
331 hosts
在Notepad机器上的c:/winnt/system32/drivers/etc/hosts文件中的内容跟Debian机器中的/etc/hosts文件的内容一样。
127001 localhost
19216811 Debiantestcom Debian
19216812 Notepadtestcom Notepad
332 邮件客户端
在Microsoft Outlook Express(或者你在Win2000使用的其他此类的邮件客户程序)。
必须都将Debian输入作为SMTP 邮件服务器和POP3服务器。 在“POP3账号名”和“POP3口令”输入框,
上一页12 3 4 5 6 下一页
0条评论