Tiny Internet Project,第三部分
在之前的文章中,我 介绍了 Tiny Internet Project,这是一个独立的 Linux 项目,向您展示如何在一台计算机上使用虚拟化软件、路由器和免费开源应用程序构建互联网的关键组件。在 第二部分 中,我解释了如何使用 Proxmox 设置主机服务器并构建第一个基本的 Ubuntu 14.04 虚拟机。在第三部分中,您将学习如何设置 Ubuntu 镜像、DNS 服务器、邮件服务器和 Web 服务器。
当您完成 第二部分 时,您希望已经启动了一个原始的 Ubuntu 14.04 服务器 VM。现在,我将描述如何使用一些用户帐户和软件自定义该 VM,使其保持相当通用,但可以作为您将构建的大多数其他所有内容的模板。
最初,您将通过 Proxmox Web 界面在您的 Proxmox 服务器上完成所有工作:https://10.128.1.2:8006。
登录并启动您创建的 Ubuntu VM,它可能被命名为“100 (ubuntu)”。等待片刻使其启动,然后单击 Proxmox 控制台按钮以启动本质上是基于 Web 的终端。

图 1. Ubuntu 安装界面—选择您的语言
当 shell 打开时,您将看到 Ubuntu 安装屏幕。选择您的语言,然后从操作列表中选择“安装 Ubuntu Server”。系统将再次提示您选择语言和键盘布局;选择适合您需要的选项。安装程序将检测您的网络并提示您输入主机名。

图 2. 输入主机名
由于您将使此 VM 成为模板,因此请为计算机指定一个通用主机名,例如“ubuntu”。这样,如果您以后部署不同类型的服务器(例如,ArchLinux),您将能够轻松区分它们。
当要求您创建用户名时,选择一个遵循您可以用于所有未来用户的命名约定的名称,例如您的首字母和您的完整姓氏。这样,当您以后需要找出用户名(和电子邮件地址)时,您就不必猜测了。

图 3. 选择用户名
提供密码,如果需要,添加加密,设置您的时区,然后继续进行磁盘分区。
当您第一次在 Proxmox 下创建此 VM 时,您为其提供了一个主虚拟磁盘,这就是 Ubuntu 安装程序现在看到的。选择“Guided — use entire disk”(引导 — 使用整个磁盘),而不是默认的 LVM 选项。接受配置,然后将更改写入磁盘。

图 4. 磁盘分区
安装程序将设置系统,这需要几分钟。如果您曾经从 DVD 将操作系统安装到硬件上,则这是一样的。
当提示您输入 HTTP 代理信息时,将其留空并继续,除非您的学校或情况需要代理才能访问公共互联网。
一旦安装程序配置了 apt
,它将设置所有基本软件并提示您如何管理升级。选择“自动安装安全更新”并继续。在“软件选择”页面上,目前仅选择“OpenSSH 服务器”。这样做将为这个基本 VM 模板提供直接 shell 访问权限,并且不会加载您不需要的软件包。

图 5. 软件选择—仅选择 OpenSSH 服务器
当提示您将 GRUB 引导加载程序安装到主引导记录时,选择“是”,并在提示时重新启动。VM 将快速启动到 GRUB 菜单,启动并在登录提示符处停止。

图 6. 登录提示符
使用您在安装期间设置的用户名和密码登录,并检查系统的 IP 地址。它在安装期间使用 DHCP 动态配置,了解它会很方便,这样您就可以 ssh
进入您的新 VM
$ ifconfig

图 7. 登录和 ifconfig
输出
您将看到两个条目,一个用于 eth0,另一个用于 lo(本地)。在我的示例中,自动分配的地址是 10.128.1.26。如果您的管理 PC 是 Linux 机器或 Mac,请打开终端并通过键入 ssh
进入您的新 VM
$ ssh username@10.128.1.26
如果您在 Windows 上,请使用 PuTTY 或类似工具 ssh
进入。如果您收到登录提示符,则一切顺利。您始终可以使用 Proxmox 控制台连接到您的 VM,但能够直接 ssh
进入非常方便。
在您的 Ubuntu VM 启动并可访问后,是时候进行一些自定义,这将为所有未来的部署节省时间。首先添加您需要的任何其他管理用户。这样,当您从此 VM 创建模板时,所有这些用户都将被设置好。您自己已经是管理(sudo)用户,但让其他人拥有管理员权限可能会很方便
$ sudo adduser msmith
按照提示操作,输入用户的全名以及您想要添加的其余信息。接下来,将您的新用户添加到 sudoers 组
$ sudo adduser msmith sudo
这些步骤可以组合起来,但我认为查看输出很有用,这样您可以更好地了解幕后发生的事情。
设置静态 IP 地址您的所有服务器都将具有静态 IP 地址,以便以后可以将其映射到 DNS,因此现在是通过编辑网络配置文件来更改它们的好时机
$ sudo vi /etc/network/interfaces
将 eth0 条目从
auto eth0
iface eth0 inet dhcp
更改为
auto eth0
iface eth0 inet static
address 10.128.1.200 # .200 is out of range of anything
# I might be adding soon
netmask 255.255.255.0
dns-nameservers 10.128.1.3
dns-search tiny.lab
保存文件并重新启动。
添加第二个网络接口您的 Tiny Internet 的目标是创建一个不依赖公共互联网的独立系统,但是您需要在这个第一个 VM 以及稍后的镜像服务器上稍微作弊一下。这些 VM 需要第二个 NIC,以便它们可以同时访问您的私有网络和公共网络。
一旦此 VM 被自定义和更新,您可以通过反转您即将采取的步骤来删除第二个 NIC。
在主 Proxmox Web 界面中,单击 VM 的“硬件”选项卡。单击“添加”,然后从菜单中选择“网络设备”。在模态窗口中,选择“桥接模式”,并将第二个网络接口桥接到我的示例“vmbr1”。单击“确定”,为了安全起见,重新启动 VM。

图 8. 桥接模式
当您在登录后在提示符下键入 ifconfig
时,您仍然只会看到 eth0 和 lo,因此您需要激活新添加的 NIC。在控制台窗口(或 shell)中,编辑网络配置文件
$ sudo vi /etc/network/interfaces
为第二个 NIC 创建静态 IP 条目
auto eth1
iface eth1 inet static
address 192.168.1.200 # .200 is an available address on
# my network
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
在本例中,我选择 .200,因为它是我 LAN 上的一个空闲地址。分配一个您自己的地址,该地址不会与您网络上的其他计算机冲突。dns-nameservers 是 Google 的。
保存文件并重新启动 VM。当您登录并现在运行 ifconfig
时,您应该看到 eth0 和 eth1 接口都处于活动状态(图 9)。

图 9. eth0 和 eth1 都处于活动状态。
此 VM 现在可以访问您的私有网络和公共互联网,因此您可以进行更新和下载。运行此更新,以便您拥有最新版本的软件和内核
$ sudo apt-get update && sudo apt-get upgrade -y
↪&& sudo apt-get autoremove -y
安装 Webmin
您现在可以安装 Webmin,这是一个基于浏览器的工具,用于管理您的 Linux 服务器。值得在模板 VM 上安装它,以便从现在开始在您构建的每台服务器上都可用。
首先,安装 Webmin 正常工作所需的一些软件包
$ sudo apt-get install libnet-ssleay-perl libauthen-pam-perl
↪libio-pty-perl apt-show-versions libapt-pkg-perl
安装这些软件包后,从 Webmin 下载页面(请参阅“资源”部分)复制最新 Debian 安装程序的 URL,并将其获取到此 VM 上的主目录
$ cd ~
$ wget http://prdownloads.sourceforge.net/webadmin/
↪webmin_1.791_all.deb
现在,安装它
$ sudo dpkg -i webmin_1.791_all.deb
安装程序将需要一段时间,请耐心等待。完成后,它将指示您在 https://ubuntu:10000 登录,但由于您尚未设置 DNS,因此您现在必须使用 https://10.128.1.200:10000。使用您的管理 PC,并使用您的用户名和密码登录。

图 10. 登录 Webmin
设置防火墙如果您想在模板上启用防火墙,现在是时候了。使用 Webmin 界面很容易—在“网络”下,单击“Linux 防火墙”。选中底部标有“在启动时启用防火墙”的框,然后单击“设置防火墙”按钮。创建四个基本规则
-
如果连接状态为 ESTABLISHED,RELATED,则接受。
-
如果接口不是 eth0,则接受。
-
如果源是 10.128.1.0/24,则接受。
-
如果源是 192.168.1.0/24,则接受。
这些规则仅允许来自您的两个网络上的设备的流量—您用于连接到互联网的网络和构成您的 Tiny Internet 的私有网络。将第一个条目(“接受”在其他两个条目上)上的“默认操作为:”按钮设置为“丢弃”,然后单击“应用配置”。

图 11. 设置防火墙规则
您可以通过运行以下简单命令来确认这些规则是否处于活动状态
$ sudo iptables -L

图 12. sudo iptables -L
命令的输出
接下来,您将把 /etc/apt/sources.list 中列出的 apt 软件包存储库从 Ubuntu 默认存储库更改为您自己的存储库。这将使您能够在本地更新所有 VM,而无需它们访问公共互联网。请注意,这在您的 apt-mirror 完全运行之前不会起作用(如果您不想设置镜像,请跳过此步骤)
$ mv /etc/apt/sources.list /etc/apt/sources.list.bak
$ sudo vi /etc/apt/sources.list
在 sources.list 中输入以下三行并保存。URL 指向您将在名为“tiny.lab”的域上创建的名为“mirror”的 VM
deb http://mirror.tiny.lab/ubuntu trusty main restricted
↪universe multiverse
deb http://mirror.tiny.lab/ubuntu trusty-security main
↪restricted universe multiverse
deb http://mirror.tiny.lab/ubuntu trusty-updates main
↪restricted universe multiverse
设置代理
如果您计划构建和使用 HTTP 代理,请编辑 /etc/environment 以添加以下行。在本例中,我使用了稍后通过安装 tinyproxy 创建的地址和端口号。在 PATH
行之后,添加
no_proxy="127.0.0.1, localhost, *tiny.lab"
http_proxy="http://proxy.tiny.lab:8888"
ftp_proxy="http://proxy.tiny.lab:8888"
在这种情况下,我不希望系统对我的私有 Tiny Internet 域(*tiny.lab)上的任何内容使用代理,但它可以用于任何其他非本地的内容。如果您不打算构建自己的镜像并计划使用公共存储库(默认),您还需要编辑 /etc/apt/apt.conf 以添加一行,告诉 apt 使用您的代理来访问存储库
Acquire::http::Proxy "http://proxy.tiny.lab:8888";
将您的 VM 转换为模板
现在您已准备好将此 VM 转换为模板。它已使用您的凭据、可以轻松修改的静态 IP 地址、用于轻松系统管理的 Webmin、简单的防火墙规则、自定义 sources.list 和代理设置(如果需要)进行自定义。
要转换它,请返回 Proxmox 浏览器界面并关闭计算机。右键单击 VM,然后从菜单中选择“转换为模板”。

图 13. 将 VM 转换为模板
片刻之后,VM 的图标将发生变化,显示该计算机现在纯粹是一个模板。它不再可以按原样启动。
如果您在 Proxmox 主机服务器上安装了第二个硬盘驱动器,那么现在是备份这个新模板的好时机。查看 Proxmox 网站以获取更多信息。
部署 Linux 存储库镜像在部署 Ubuntu 存储库时,您有两种选择:克隆您的新 VM 模板并调整其 30GB 虚拟磁盘的大小,或者创建一个具有更大磁盘的全新 VM。我在这里解释后者。
首先,从您用于创建模板 VM 的 Ubuntu .iso 文件创建一个新的 VM。这次,为计算机提供至少 200GB 的虚拟磁盘。启动计算机并像以前一样完成服务器安装过程,确保为计算机指定主机名“mirror”和 IP 地址 10.128.1.6。使用与模板上设置的相同的用户名和密码,并仅从应用程序列表中安装 OpenSSH。
按照添加第二个 NIC 的步骤操作,并确保暂时保持 /etc/apt/sources.list 不变。您需要它指向默认的外部 Ubuntu 存储库。
安装 apt-mirror在机器设置为可以访问您的 Tiny Internet 和公共互联网的情况下,安装 apt-mirror
和将提供软件包的 Web 服务器
$ sudo apt-get install apt-mirror apache2
apt-mirror
配置的核心是存储库 URL 列表。备份默认文件并编辑原始文件
$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.bak
$ sudo vi /etc/apt/mirror.list
将顶部的 config
部分保持原样,并且不要更改前三个 deb
列表。但是,为了节省磁盘空间,请删除所有 deb-src
条目,并将其替换为 32 位存储库。您的条目应如下所示
deb http://archive.ubuntu.com/ubuntu trusty main restricted
↪universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-security main
↪restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main
↪restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu trusty main
↪restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security main
↪restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates main
↪restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu
保存文件并使用您编辑的 mirror.list 启动 apt-mirror
。根据您的互联网连接,这可能需要很多小时。当它告诉您将下载多少 GB 时,您将大致了解需要多长时间。请耐心等待
$ sudo apt-mirror /etc/apt/mirror.list
通过打开另一个 shell 进入服务器,继续您的工作。您可以在 apt-mirror
执行其操作时配置 apache2,方法是从 apt-mirror
存储库创建一个指向安装 apache2 时自动创建的 Web 目录的符号链接。
如果您尚未这样做,请通过将浏览器指向 http://10.128.1.6 来测试 Web 服务器是否已启动。
如果它工作正常,请在 Web 服务器的根目录创建一个新目录
$ sudo mkdir /var/www/html/ubuntu
从 apt-mirror
存储软件包的目录创建一个指向新目录的符号链接
$ sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/
↪ubuntu/pool/ /var/www/html/ubuntu
通过将浏览器指向 http://10.128.1.6/ubuntu 来测试它。如果您看到目录列表,则一切设置就绪。一旦 apt-mirror 完成,使用本地 sources.list 构建的任何 VM 都将能够从此本地服务器下载软件包。(有关更多信息,请参阅“资源”部分。)

图 14. 安装 apt-mirror
设置 DNS (bind9)如果您想使用域名而不是 IP 地址来访问您的所有 Tiny Internet 机器,现在是时候部署 DNS 服务器了。使用您作为 Tiny Internet 架构一部分建立的地址。这是一个提醒
-
pve — 10.128.1.2
-
dns01 — 10.128.1.3
-
dns02 — 10.128.1.4
-
mail — 10.128.1.5
-
mirror — 10.128.1.6
-
web01 –10.128.1.7
首先克隆您的 VM 模板。右键单击模板并选择“克隆”。目标节点将默认为“pve”(或您为 Proxmox 主机命名的任何名称)。将 VM ID 和名称设置为您想要的任何名称。保留自动递增 ID 不变,并为 VM 指定与您将分配的主机名相同的名称。在我的示例中,我使用了“dns01”。将模式设置为“完整克隆”,并将目标存储设置为“本地”,格式为“原始磁盘映像”。

图 15. 克隆模板
从您的模板生成新的 VM 不到一分钟。在其当前状态下,它与原始“ubuntu”VM 完全相同—相同的 IP 地址,相同的主机名。当然,您需要在将计算机投入生产之前更改这些。
-
编辑 /etc/hosts — 将
127.0.1.1 ubuntu
更改为10.128.1.3 dns01.tiny.lab dns01
。 -
编辑 /etc/hostname — 将
ubuntu
更改为dns01.tiny.lab
。 -
编辑 /etc/network/interfaces — 将
10.128.1.200
地址更改为10.128.1.3
。
完成这些基本更改后,重新启动,登录并安装 bind9
$ sudo apt-get update
$ sudo apt-get install bind9 bind9utils dnsutils bind9-doc
主要的 DNS 配置在以下三个文件中完成
-
/etc/default/bind9
-
/etc/bind/named.conf.options
-
/etc/bind/named.conf.local
您将通过在 /etc/bind/zones 中创建区域文件来完成。我在所有这些示例中都使用“tiny.lab”域名,但您可以将名称设置为您想要的任何名称。
首先添加 IPv4 选项
$ sudo vi /etc/default/bind9
将以下内容添加到文件末尾
OPTIONS="-4 -u bind"
在编辑接下来的两个文件之前,先创建它们的备份副本,然后编辑 /etc/bind/named.conf.options 并添加您信任的主机(您拥有的每个服务器和资源各一个),并设置选项
acl "trusted" {
10.128.1.1;
10.128.1.2;
10.128.1.3;
10.128.1.4;
10.128.1.5;
10.128.1.6;
10.128.1.7;
10.128.0.0/16;
};
options {
directory "/var/cache/bind";
recursion yes; # enables recursive queries
allow-recursion { trusted; }; # allows queries from "trusted"
# clients
listen-on { 10.128.1.3; }; # dns01 IP address
allow-transfer { none; }; # disable zone transfer by default
forwarders {
8.8.8.8; # These are Google's DNS servers
8.8.4.4;
};
...
};
保存文件并通过编辑 /etc/bind/named.conf.local 来创建您的区域。您可以在此处设置您的域名,将“tiny.lab”替换为您想要的任何名称
zone "tiny.lab" {
type master;
file "/etc/bind/zones/db.tiny.lab";
allow-transfer { 10.128.1.4; }; # Setting this for a
# future secondary DNS server
};
zone "128.10.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.10.128";
allow-transfer { 10.128.1.4; };
};
现在创建正向和反向区域文件,并将它们放在 /etc/bind/zones 文件夹中。如果它不存在,请创建它
$ cd /etc/bind
$ sudo mkdir zones
将默认 DNS 正向和反向区域配置文件复制到该文件夹中,将其重命名以匹配您的域名和 IP 子网
$ sudo cp db.local ./zones/db.tiny.lab
$ sudo cp db.127 ./zones/db.10.128
编辑 /etc/bind/zones/db.tiny.lab,并输入您当前和未来的主机。我设置的文件顶部包含注释,以提醒我所做的更改。我还为我的路由器 (10.128.1.1) 和代理服务器创建了条目,我将代理服务器放在与我的 dns02 相同的框中。每次进行修改时,请在保存之前递增序列号条目。另请注意每个名称后的“.?”。不要遗漏这些。您可以在本文末尾的“资源”部分找到有关 DNS 的更多信息,但这将使您入门
; BIND data file for local loopback interface
;
; 20150505 JST Modified proxy address
; 20160505 JST Added web01
$TTL 604800
@ IN SOA dns01.tiny.lab admin.dns01.tiny.lab. (
12 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers -- NS records
IN NS dns01.tiny.lab.
IN NS dns02.tiny.lab.
; name servers -- A records
dhcp.tiny.lab. IN A 10.128.1.1
pve.tiny.lab. IN A 10.128.1.2
dns01.tiny.lab. IN A 10.128.1.3
dns02.tiny.lab. IN A 10.128.1.4
proxy.tiny.lab. IN CNAME dns02.tiny.lab.
mail.tiny.lab. IN A 10.128.1.5
mirror.tiny.lab. IN A 10.128.1.6
web01.tiny.lab. IN A 10.128.1.7
保存文件并编辑 /etc/bind/db.10.128 反向区域文件。“PTR 记录”下每个服务器的 IP 地址看起来都被截断了,可能会让人感到困惑。想象一下,每个地址都以一个不可见的“10.128.”开头,以设想这些地址。同样,请务必在每次进行更改时递增序列号条目
; BIND reverse data file for local loopback interface
;
; 20160505 JST Added cname for proxy
; 20160505 JST Added mirror01
$TTL 604800
@ IN SOA tiny.lab. admin.tiny.org. (
11 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; name servers -- NS records
IN NS dns01.tiny.lab.
IN NS dns02.tiny.lab.
; PTR records
1.1 IN PTR dhcp.tiny.lab.
1.2 IN PTR pve.tiny.lab.
1.3 IN PTR dns01.tiny.lab.
1.4 IN PTR dns02.tiny.lab.
1.5 IN PTR mail.tiny.lab.
1.6 IN PTR mirror.tiny.lab.
1.7 IN PTR web01.tiny.lab.
保存文件并通过运行以下命令检查文件的语法
$ sudo named-checkconf
如果一切正确,您将不会得到任何输出,也没有错误。使用 named-checkzone
进一步检查配置
$ sudo named-checkzone tiny.lab /etc/bind/zones/db.tiny.lab
$ sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
如果一切正常,您将看到“OK”。否则,请编辑文件。遗漏尾随的“.?”是一个常见的错误。
重新启动 bind 以使其启动并运行
$ sudo service bind9 restart
当 bind9
重新启动时,使用 dig
实用程序快速检查一下,或者直接打开浏览器并导航到您的镜像服务器 http://mirror.tiny.lab
$ dig mirror.tiny.lab
如果您在 dig
输出中看到 10.128.1.6,则您已成功。DNS 正在工作。您可以通过部署第二个 VM 或在您的 Tiny Internet 网络上的物理独立机器上安装 bind9
来完成您的 DNS 设置,但在此时并非绝对必要。您还可以将此 VM 设置为在 Proxmox 主机启动时自动启动,以便在您的 Tiny Internet 启动时始终运行 DNS。
邮件服务器有两个关键组件:传输邮件的服务和提供邮件的服务。Postfix 是一个常见的传输代理 (SMTP),当与 Dovecot 结合使用时,它将为您提供通过 IMAP(或 POP,如果您愿意)发送和接收邮件所需的一切。
部署另一个“ubuntu”模板的克隆,这次将其命名为“mail”,确保模式为“完整克隆”,目标存储为“本地”。生成后,启动它,打开控制台,并更新您为镜像服务器执行的相同基本信息:将 eth0
的静态 IP 地址设置为 10.128.1.5,并将 hostname
更改为 mail.tiny.lab
。
重新启动并安装 Postfix 和 Dovecot
$ sudo apt-get update
$ sudo apt-get install postfix
在安装过程中,系统将提示您选择所需的安装类型。选择“Internet Site”(Internet 站点)。接下来,将“System mail name”(系统邮件名称)设置为“mail”—与主机名相同。
完成后,安装 mailutils
和 Dovecot 工具
$ sudo apt-get install dovecot-imapd dovecot-pop3d
回复“是”以安装自签名证书,将主机名设置为“mail”,并允许安装完成。
要配置 Postfix,请运行以下命令
$ sudo dpkg-reconfigure postfix
您可以确认您在 Postfix 安装期间所做的条目,然后继续为“Root and postmaster mail recipient”(Root 和 postmaster 邮件收件人)设置您的用户名—在我的情况下为“jtonello”。查看要从中接受邮件的其他目的地,并添加您的域 (“tiny.lab”)。不要强制邮件队列上的同步更新,但在本地网络下,请务必将“10.128.1.0/24”添加到列表中。那是您为所有机器定义的范围。如果您遗漏了这一点,邮件服务器将拒绝所有传入邮件。

图 16. Postfix 配置
设置邮箱限制以满足您的需求,并将“all”设置为要使用的 Internet 协议。您将从 IPv4 开始,但启用 IPv6 可以提供未来的灵活性。
现在基本设置已就位,请查看“资源”部分中列出的主要 Ubuntu Postfix 和 Dovecot 页面以获取更多信息。
您将能够将任何电子邮件客户端与您的新邮件服务器一起使用,包括 Thunderbird 和 Evolution,这两个常用工具在许多 Linux 发行版上都预装了。您还可以考虑安装一个基于 Web 的邮件工具,如 Roundcube。它提供了一个出色的界面和大量与 Postfix 和 Dovecot 配合良好的功能。
如果您想深入研究邮件配置,请使用 Webmin。在 https://mail.tiny.lab:10000 登录,并在“服务器”选项卡下查找 Postfix 和 Dovecot 条目。从那里,您可以轻松浏览和管理服务器。
设置 Web 服务器到目前为止,您可能没有意识到,您已经在镜像和邮件服务器上安装了 apache2。这些允许 Web 连接到这些服务,但您需要一个功能更全面的 LAMP 堆栈(Linux、Apache、MySQL 和 PHP)来构建强大的网站。
当您第一次从 .iso 安装 Ubuntu 时,您可能已经注意到应用程序安装步骤中的 LAMP 选择。您绝对可以从头开始创建一个 VM 并选中该框;它会为您提供所需的一切。但是,由于您有一个漂亮的预制 VM 模板,因此您可以使用它并将 LAMP 添加到其中。
首先克隆您的 Ubuntu 模板。按照您之前克隆时执行的相同步骤—更改 IP 地址 (10.128.1.7) 和主机名 (web01)。重新启动并打开终端以安装 LAMP 组件
$ sudo apt-get install lamp-server^
插入符号 (^) 很重要;不要遗漏它。随着安装程序的进行,系统将要求您为 MySQL 数据库创建 root 密码。记下它或将其放入您的密码保险箱中,以免忘记。
安装将创建 /var/www/html 文件夹和默认的 index.html。如果您将浏览器指向计算机(通过 IP 或 DNS 名称,如果您设置了它),您将看到默认的 Apache2 页面。通过在同一目录中创建一个新文件来测试 PHP 安装
$ sudo vi /var/www/html/phpinfo.php
将以下行添加到文件中
<?php
phpinfo();
?>
将浏览器指向 http://web01.tiny.lab/phpinfo.php 上的页面。如果您看到一个包含信息的页面,则您的服务器正在成功提供 PHP。
为了更容易地使用 MySQL 数据库,请安装 phpMyAdmin
$ sudo apt-get install phpmyadmin
选择“apache2”作为要自动重新配置的服务器,并对下一个问题回答“否”(因为数据库已配置)。安装完成后,您将拥有一个非常强大的基于 Web 的工具来管理您的所有数据库。使用 MySQL 用户名“root”和您设置的密码在 http://web01.tiny.lab/phpmyadmin 登录。
如果您计划部署多个 Web 服务器,请继续并将此 web01 VM 转换为模板。这样,它将功能齐全,只需进行少量更改即可使用。如果您希望每个 VM 都使用 WordPress 或其他内容管理工具,请在制作模板之前安装它。
结论您现在拥有一个功能齐全的 Tiny Internet,包括 Linux 存储库;邮件、DNS 和 Web 服务器;以及许多有用的工具。使用此设置来探索和学习 Linux。如果您搞砸了 VM 服务器,只需从您的模板部署另一个。最重要的是,分享您所学到的知识,让其他人参与进来,并帮助激发下一代 Linux 爱好者的好奇心。
资源下载 PuTTY:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Webmin 下载:http://webmin.com/download.html 和 http://prdownloads.sourceforge.net/webadmin/webmin_1.791_all.deb
设置镜像:https://www.howtoforge.com/local_debian_ubuntu_mirror_p2
设置 DNS (bind9):https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-14-04 和 https://help.ubuntu.com/community/BIND9ServerHowto
Postfix 和 Dovecot 安装:https://help.ubuntu.com/community/Postfix 和 https://help.ubuntu.com/community/Dovecot
安装 Roundcube:https://github.com/roundcube/roundcubemail/wiki/Installation
安装 LAMP 堆栈:https://help.ubuntu.com/community/ApacheMySQLPHP
TinyProxy 操作指南:https://tinyproxy.github.io