VPS搭建记录(一):发行版选择与基础服务搭建

非常幸运地,我曾经抓住机会用正当方式获得了 github education 的100$ DigitalOcean 代金券。在此鄙视一下滥用这个项目进行套利的无良商人。

这学期有机会使用网银+Paypal 激活了DO帐号,开了一个10刀每月的VPS,放在新加坡节点。

VPS 能用来干什么呢?无外乎以下用途:

  • 科学上网
  • 搭建个人博客
  • 挂机运行程序
  • 搭建个人邮件服务器
  • 运行其它服务

因此,以下一系列文章主要围绕以上内容展开。


启用 Digitalocean VPS

最开始的时候曾经想不走寻常路,选择了荷兰阿姆斯特丹三号节点作为母机;后来发现延迟大到难以忍受,最后还是乖乖地选择了新加坡节点。

有的人说新加坡节点无法直连需要绕道美国,但是我觉得从 ssh 效果看,延迟还是可以接受的,我怀疑绕道的问题已经被解决了。虽然新加坡节点不能更换内核,不过这不是大问题,毕竟就算是 AMS3 这样可以更换内核的节点也不过是把当前内核与发行版历史内核列表让你选,不可能让你启动自定义的内核的。(Update:如果使用 kexec 之类的黑科技工具还是可以启动自己的内核的。另外,如果选择了 Debian 8,那么母机默认会使用传统的 mbr+grub 启动系统,这时就十分方便了。提供一个在 DO 上使用 Archlinux 的项目:gh2o/digitalocean-debian-to-arch

发行版选择的是新出的 Debian 8。毕竟我所在的科大 LUG 几乎清一色的 Debian 服务器,对 Debian 系比较熟悉,甚至受 Aron Xu 的影响有了一些感情(可能误)了。曾经看有人写道 Debian 血统高贵平易近人,我感觉还是有那么一点道理的。不用 Ubuntu 一是它六个月一次的更新(反正个人 PC 每次更新都会出各种小问题需要修复),不用 LTS 还是因为总感觉 Ubuntu 格调太低。如果 DO 提供 Arch 的选项,说不定我还真的会作死试一把呢。

ssh 登陆并无问题,软件源默认选择 debian.net 速度同样可以接受。一个小问题是 IPv6,虽然 DO 提供了 IPv6 选项,但是需要激活虚拟机后在控制面板里启用。可能是 Debian 8 新版本的问题,即便是启用再重启虚拟机也不会默认绑定 IPv6 地址。目前我的做法是在/etc/rc.local里补上两句:

ifconfig eth0 add 2400:6180:0:d0::482:c001/64
route -A inet6 add default gw 2400:6180:0:d0::1

DO 的控制面板里会告诉你你的 IPv6 地址与网关,适当填写即可。IPv6 支持对我还是很重要的,毕竟在校时一直有 IPv6 环境。

我想现在可以谈一谈 Debian 8 的特点了,一个就是它采用了 systemd 这个东西。大家对它褒贬不一,我知道某位前辈提起 systemd 就是一句“diao丝!”的评语,也有一位前辈非常喜爱 systemd,不惜在自己笔记本电脑上把包括 fstab 在内的很多功能让 systemd 接管。我个人认为至少在 init 功能与日志功能上,systemd 做的还是不错的。

简要提一下常用的与 systemd 相关的功能:

systemctl status/restart/reload/stop/start/enable/disable [*.service]

用来替换 /etc/init.d/* service * start/stop/restart/reload。注:使用systemctl status命令时,可以同时看到该服务最近的几条日志,这对服务启动失败/伪成功的查错非常有用。这时建议加上-l参数。

systemctl halt/shutdown/reboot

如此明了的命令就不用多说明了。反正用传统的命令还是会被软链接到 systemctl 工具上的。

journalctl -fb

追踪系统日志。有的人可能会说我用的命令行参数怎么和你的不一样,这不是重点,请去翻 man 手册页了解详情。

虽然 Debian 应用了 systemd,但是在使用中可以看出有大量的服务仍然沿用 sysvinit 的启动/停止脚本。看来迁移还需要一段时间。

Debian 一直存在的另一大特点就是配置文件拆分。好好的一个配置文件被打散拆成一堆小配置文件,conf.d文件夹层出不穷。从 RH 系过来的使用者可能感到水土不服,没关系,习惯就好。

上面好像有点跑题了。下面言归正传,说一下我在 VPS 上面安装的应用与服务。


安装基础应用与服务

首先是最最基础的工具:
# apt install git vim python3 nohup tmux

其实 DO 默认带了不少软件,例如rsync什么的都默认安装了。

记得禁用 root 远程登录。现在扫密码的不少,从日志里可以看到我的 VPS 才安装没几天就有各种登录尝试,简直是丧病(也可能是盯着 DO 的 IP 段扫描的)。最好是装上fail2ban

由于后续需要装 WordPress,所以对 HTTP 服务器选择了 Apache2:

# apt install apache2
# systemctl enable apache2
# systemctl start apache2

科学上网:SS搭建

常见选择:Python shadowsocks

科学上网作为基础需求,选择比较容易的 Shadowsocks 进行搭建:

apt install python3-pip
pip3 install shadowsocks
vim /etc/shadowsocks.json # 编写适合的 SS 配置
vim /etc/rc.local # 在倒数第二行添加 "nohup ssserver -c /etc/shadowsocks.json > /dev/null &"

其实我认为完全可以为 ss 单独编写一个 systemd service 的,不过最终还是偷了个懒。

小内存机器上的选择:shadowsocks-libev

小内存的机器建议选用高性能的程序。这时,用libev库的C语言 Shadowsocks 实现就十分不错。

yaourt -S shadowsocks-libev
vim /etc/shadowsocks-myconfig.json # 写入自己的配置
cp /lib/systemd/system/shadowsocks-libev@.service /etc/systemd/system/shadowsocks-libev@myconfig.service
systemctl daemon-reload
systemctl enable shadowsocks-libev@myconfig.service

这里举的是 Archlinux 的例子。如果要在 Debian 上实现请自行参考解决。

未完待续。下一篇打算记录 WordPress 的安装,SSL 证书的部署,以及邮件服务器的配置。

最后,我知道以上所写内容有各种槽点可供吐槽,请大家理解 🙂

3 thoughts to “VPS搭建记录(一):发行版选择与基础服务搭建”

    1. 首先建议你拿“log”和“日志”关键字去 ss-libev GitHub issue 历史存档中搜索一下。
      其次日志存储与否决定于你安装以及启动 ss-libev 的方式。默认提供的 shadowsocks-libev.service 会把所有日志打入对应服务的 systemd journal 里。如果手工启动的话,日志在标准输出或者标准错误输出中,你可能需要重定向才能获取日志。另外注意,启动 ss-libev 时如果加上 -v 参数的话可以获得比较详细的日志输出,具体怎么加参数决定于你启动 ss-libev 程序的方式。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注