树莓卷饼:我的奥地利树莓派之旅
我相当怀念我的第一台托管服务器。那是一台 1U Supermicro 服务器,它在我的雇主那里服役几年后退役了。虽然它对于我的公司来说太旧太慢,但对于 2005 年的我来说,800MHz CPU、1GB RAM 和 36GB SCSI 存储已经足够完美了。一位朋友好心地允许我免费将服务器托管在他的机房。因此,经过大量的规划,我安装并配置了 Debian,生成了 SSH 密钥并设置了 IP 地址,以便我可以远程管理这台机器。一旦服务器托管到位,它就成为了我的主要服务器,用于 Web、DNS、SMTP 以及我永久运行的 Irssi-in-a-screen 会话。这台机器为我服务了五年多,直到我最终用更新的硬件替换了它。
快进到今天,虽然我的主服务器拥有明显更多的资源,但我刚刚完成了托管一台新服务器,再次是免费的,并且再次拥有与我旧的 Supermicro 类似的资源:900MHz CPU、256MB RAM 和 40GB 闪存存储。但这一次,服务器是一台树莓派,机房位于奥地利。在本文中,我将解释我是如何托管一台树莓派的,以及我为远程管理它所做的准备步骤。
交易当我第一次看到广告上的交易时,我简直不敢相信自己的眼睛。一家奥地利托管机房 EDIS GmbH 正在提供免费的树莓派托管服务。虽然我有点怀疑,但我仔细阅读了细则,但它非常明确。如果您设置一个帐户,EDIS GmbH 的工作人员会向您发送树莓派的网络信息。一旦您配置了网络设置,您就可以将树莓派连同 SD 卡、USB 电缆以及可选的小型 USB 拇指驱动器一起寄给他们,他们会将它上架,并在 100Mb 连接上提供 100Gb/月的流量。他们甚至提供免费的服务器远程电源重启服务,只要您可以接受等待 24-48 小时。我想最坏的情况就是我损失了一台 35 美元的树莓派和一些闪存存储,所以我注册了,并留出了一台树莓派、8GB SD 卡和 32GB 拇指驱动器,同时等待我的 IP 信息。
设置我对托管没有远程管理功能的服务器并不陌生。虽然我当然更喜欢提供远程带外管理的服务器,但乞丐不能挑肥拣瘦,所以我许多个人服务器不得不凑合使用 SSH 和让别人重启电源的能力。虽然我不确定我将如何使用这台服务器,但我确实知道我想保持操作系统的相对轻量级。我也不想在一台我几乎无法访问的机器上冒险,所以我选择了树莓派下载页面上链接的标准 Raspbian “wheezy” Debian 发行版。已经有很多关于如何设置 Raspbian 的文档,所以我在这里不再赘述。相反,我专注于我在发货前对发行版所做的更改。
由于 Raspbian 假定您将运行桌面,因此它与 GPU 共享可用 RAM。当然,在服务器上,您需要 RAM 来运行您的服务,所以我做的下一件事是运行 sudo raspi-config
来启动一个 ncurses 界面,让我可以调整一些硬件默认设置。我最终只分配了少量 RAM 给 GPU,当我在界面中时,我想扩展根文件系统以填满我的 SD 卡、将树莓派超频到 900MHz、更改我的区域设置和时区以及更改启动行为以便桌面在启动时不会启动,这些都不会有什么坏处。
默认的 Raspbian 镜像附带一个标准用户和已知密码。我不希望除我以外的任何人登录我的服务器,所以我做的下一件事是添加我自己的用户帐户
$ sudo adduser greenfly
然后,我以 root 用户身份编辑了 /etc/group 文件,并在我看到 pi 用户的任何地方,都将我的 greenfly 用户添加到列表中。特别是,您需要将您的新用户添加到 sudo 组,因为发行版上的默认 sudoers 文件为该组的任何成员提供了完整的 sudo 权限。此时,我也使用了 ssh-copy-id
将我的公共 SSH 密钥复制到这台服务器,以便我可以 ssh
登录。
在我确认我可以作为我的用户登录并 sudo
到 root 之后,我修改了 /etc/ssh/sshd_config 并将 PasswordAuthentication
更改为 no,这样我就不必担心 SSH 暴力攻击了。然后,在我确认我仍然可以 ssh
登录后,我删除了 pi 用户并删除了它的主目录
$ sudo deluser --remove-home --group pi
现在我的用户已经设置好了,下一步是删除我不再需要的所有桌面软件包,这样我就可以有额外的空间来安装任何我想要的服务。这实际上没有什么科学依据;我只是尝试选择我认为会删除很多其他桌面依赖项的基本桌面软件包
$ sudo apt-get remove x11-common openbox-lxde omxplayer
↪openbox libgtk2.0-common lxde-common xarchiver
配置大容量存储
树莓派的基本操作系统位于一张 8GB SD 卡上。我想要拥有更多存储的选择,托管机房的人员表示他们允许使用外部 USB 驱动器,只要它们的长度小于 4 厘米。我有一个 32GB 的 USB 棒,符合这个尺寸要求,并且在插入时显示为 /dev/sda,所以我接着对其进行了分区和格式化
$ sudo fdisk /dev/sda
$ sudo mkfs -t ext4 /dev/sda1
我没有做的一件事是将磁盘添加到我的 /etc/fstab 中。我不希望服务器因为 USB 驱动器被拔掉或发生故障而在启动过程中停顿,所以我决定将挂载语句添加到 /etc/rc.local 的末尾。
当我们在谈论 /etc/fstab 时,我也决定我应该为设备设置一些交换存储。我不打算需要交换空间,但我不想让内存不足问题导致服务器崩溃。与传统服务器不同,在 Raspbian 上,建议使用 dphys-swapfile
创建一个交换文件,它会负责为您挂载
$ sudo dphys-swapfile setup
默认情况下,它会选择一个它认为最适合您系统的交换文件大小,但您始终可以编辑 /etc/dphys-swapfile 并更改大小。
IP 地址更改虽然我可以设置一个本地网络来真正测试托管网络设置,但我不想去麻烦,所以我对系统做的最后一个更改是网络设置。在那之前,我重启并更新了树莓派几次,并确保我仍然能够登录。一旦我准备好了,我编辑了 /etc/network/interfaces 并将我的 eth0 网络配置从 dhcp 更改为静态(IP 地址已更改以保护,嗯,我)
auto eth0
iface eth0 inet static
address 151.236.x.x
netmask 255.255.255.0
gateway 151.236.x.1
我希望我做过的事情
事实证明,我只花了大约 5 美元通过美国邮政服务将树莓派从加利福尼亚运到奥地利。当然,当我把它寄走的那一刻,我开始思考所有我应该做的事情。特别是,有两件事我希望我做过。
首先,我希望我设置了一个系统,以便树莓派在每次启动时自动给我发送电子邮件。这本可以大大缓解我在等待服务器上架时的不耐烦。相反,我所能做的就是 ping IP 地址,并希望我设置的网络是正确的。要设置它给我发送电子邮件,我所要做的就是安装 postfix 软件包,并在安装时将其配置为独立的 Internet 邮件服务器。然后我可以安装 mailutils 软件包,并在我的 /etc/rc.local 文件的末尾附近添加一个 mail 命令
echo "I'm alive!" | mail -s "I'm alive!" me@mydomain.com
然后在我在家更改网络设置之前,我可以重启系统几次,并确认邮件已发送。
我希望我做的第二件事是花额外的钱买一个跟踪号码!我实际上对自己忘记做这件事感到非常生气。我不仅可以知道树莓派在运输过程中的位置,而且我还会知道它何时到达机房。此外,在没有任何跟踪的情况下,沿途的任何不诚实的人都可能私吞树莓派并说它在运输途中丢失了。
您可能想知道我最终将用这台树莓派做什么。由于没有太多冗余,我不打算在其上托管任何关键的东西;但是,我正在考虑,如果我与一位树莓派托管客户合作并共享资源,我可以获得什么样的冗余。目前,我只是用它来提供网络健全性检查,这样我就可以在美国境外执行网络故障排除。除此之外,我已经在其上设置了 postfix 和 nginx,并计划运行某种基本的 Web 服务,并可能备份 DNS。请关注本专栏的更新,因为我将开始向其添加服务。
资源EDIS GmbH 树莓派托管产品页面: https://manage.edis.at/whmcs/cart.php?gid=6
树莓派操作系统下载页面: http://www.raspberrypi.org/downloads