Vps

对 DigitalOcean 有些动心

今天下午我在新浪微博上乱翻,看到了一个提到了 DigitalOcean 的条目,于是又去 Google 搜索了一下,看到了两篇推介文章(1|2),上它的官网看了,觉得它的价格确实非常诱人。

DigitalOcean 的评价非常不错,同时它的价格是我目前在用的 Linode VPS 的一半。1G 内存的版本每个月的价格为 10 美元,这已经非常便宜了,比以便宜稳定著称的 Ramhost 都要便宜。如果它的稳定性、服务都可以达到目前宣传的水平,而且能够继续保持的话,它会是一家比 Linode 竞争力还要大的 VPS 公司。

我有些犹豫,因为我目前使用的 Linode 已经非常非常的稳定,可以满足我的日常需求。稳定性是我最最最最看重的,我之前用过的几个 VPS,除了 Ramhost 外,都是因为稳定性被我放弃的。我喜欢用 wiki 来管理一些信息,有时候服务器连不上了会让人非常急躁,很耽误事。因此我当年就痛定思痛,一下子花一倍的价格买了 Linode VPS,从那时候一切就都平静下来了。

DigitalOcean 的价格非常让人心动,不过我觉得最好还是考察一下它的稳定性吧。虽然有很多人在上面用了超过一年还非常满意,不过我过去也不是没有见过因为换老板而导致服务急剧下降的例子。而且我的 Linode 到今年五月份才到期,这将近两个月的时间不能浪费了,虽然 Linode 支持退款,但毕竟麻烦,似乎还有手续费。

更加让人在意的是,为了每个月省 10 美元而再折腾一次是否值得。Linode 反正就是这个价了,但它带给我的是令人放心的服务,以及快速的技术支持。它长时间的优秀服务带来的口碑,让我觉得在 Linode 上放置我的网站不用有任何的担心。归根到底,就是一个口碑的问题。目前还是继续观望吧。

64 位主机可以发邮件了

最近趁着春节假期,捣鼓了一把 VPS,主要是想架设 OpenVPN,不过目前还没有成功。我几年前还在用 Ramhost 的时候,在上面架设成功过一次,当时人在加拿大,日常用不着翻墙,纯粹是试验,所以也没有记录细节。现在再弄,就又有些云里雾里了。最好的成绩是能连接上,从 ip38.com 里能看到 IP 地址来自这一块变成了我的 VPS 主机所在地,但是上不了网,没有数据。其它的情况就是连接不上,说是握手错误。从网上找到一些论坛,也没有解决,更不知道默认的端口有没有被封锁 🙁

除此之外,之前的 VPS 也该整理了。我有些后悔从 Ubuntu 12.04 LTS 升级到 13.04 版本了,现在试着升级到 13.10 不成功,升级后 Apache 没法启动了,不升级的话旧版本又不知道出了什么问题,太慢,ssh 登陆后总要登上那么五、六秒钟才能出现提示符。早知道做这种系统升级困难当初就应该坚守 LTS 不动摇,我于是又切换会了 12.04 这个 Profile,把博客等数据库也都转移了一下。结果立竿见影,我的邮箱的 blog 标签马上就又一次收到了信息。这个标签是我专门过滤 WordPress 给我发的维护邮件,有了评论什么的我马上就可以直到。我换到 64 位的主机后就再也没有收到过邮件了,所以我真想就这么用会 12.04 版本。可惜我的 12.04 LTS Profile 也有些奇怪的问题,比如登陆后 bash 载入不正常,我制定的 aliases 都失效了,ls 显示也没有了颜色,必须我手动运行一下 bash 才恢复正常,或者是进入 screen 也算是正常了。中间哪里出问题了,我也找不出来。试着重新建立用户,反而把过去的一些权限给弄坏了。

无奈之下我只好重新建立一个 Profile。因为我觉得 Ubuntu 的大升级对我来说有点“重口”,我想要一个可以完全平滑升级的系统。Gentoo 用作服务器有点超前,ArchLinux 我又没用过,最后只好选择了 Debian 7.3。Linode 在最新的发行版选择中,Debian 只有 64 位版的,而且 Linode 自己也说推荐使用 64 位版的,我就被蛊惑的选择了 64 位版。进入了之后我发现依旧不能发邮件,而且 OpenVPN 也没有配置好。所以今天早上,我重新创建了一个 Profile,选择了老版本的 32 位的 Debian 7。反正 Debian 升级保守,我用 apt-get 手动升级的办法也能保持最新,不用去追求副版本号的不同。在配置它的过程中,我由于忘了在运行旧的 Profile 的时候就打开我的 wiki 上的 VPS 配置页面,于是切换回了 64 位的 Debian 7.3 Profile 中。期间又看到了 Linode 关于邮件系统的描写,除了 Postfix 之外,更轻量的、我过去用的 Exim4 也有一篇文章,我照着配置了一遍。这篇文章也给了我信心,因为 Linode 自己也认为 64 位的主机发邮件也没问题。虽然结果我还是没有成功发送邮件,但这篇文章的末尾给了我很好的思路。

艰难的架设了 VPN

今天我终于在我的 Linode VPS 上架设好了 L2TP/IPSec VPN,历时一个多星期。

我 8 月 21 日回到了济南的家,回来后想的第一件事情就是要架 VPN。这里的互联网和加拿大的不同感觉太明显了,在北京下了飞机就有感觉了。不是说我一定要访问什么敏感信息,实在是 Twitter、Google+ 等各种交流信息的网络都没法登陆,这感觉太让人难过了。

开始的时候我没有觉得架设 VPN 会消耗多少时间。我在过去还在用 Ramhost 的 VPS 的时候,就自己架设过 OpenVPN,顺着教程走下来就好了,没有什么难的,因此这次架设的时候我信心满满。

经过调查,架设 VPN 主要有三种模式,PPTP、OpenVPN 和 L2TP/IPSec。前两种我过去就听过,因为 PPTP 不好在 OpenVZ 的虚拟机上架设,因此我上次用的就是 OpenVPN。但 OpenVPN 在客户端上需要安装第三方软件,比较讨厌,所以我开始的时候就弄得 PPTP。结果走下来之后发觉连不上,Mac 和 iPhone 上能提示服务器无法连接,Android 手机上干脆什么提示都没有,状态直接从 Connecting… 就到了 Disconnected。我没办法只好研究其它的方法,结果 L2TP/IPSec 也可以直接脸上,Mac、Android、iPhone 都支持,我看了一下教程,也不是特别复杂,而且据说相比 PPTP,它有很多好处,于是我就开始研究这个。

结果之后的几天让我头疼不已,每次照着教程走一遍后,结果都是无法连接服务器。我换了好几个教程,郑界涵的Apple4us 的 等等等等,都是不行。后来想起李笑来做过一个脚本,可以直接 Deploy 一台配置好的服务器,我试了,还是连不上。中间我曾一度怀疑我这个地点也许根本就不能用 VPN,于是找到了一个 DDVpn.com,有 3 天的免费试用,我试了一下,也确实能连上。我还买了一个月的 Ladder,也可以脸上。这几次的失败让我差点放弃,因为买 VPN 服务也不是很贵。但我有些不甘心,我用的 Linode VPS 的配置相比起其它的 VPS 是相当好的,有这么好的资源却不能用,实在是很让人不爽。而且别人在 Linode 上架 VPN 就用的好好的,到了我这里就不行,太气人了。

最后我从李笑来的那篇文章里看到了一篇文章——《Linode CentOS / Debian 部署 ipsec+l2tpd 简要笔记》,抱着死马当活马医的心态,尝试了一次。那篇文章是用 CentOS 架设的,我就新建了一个 CentOS 的 Profile,照着来一遍,结果成了。

Linode 使用一周年

今天收到了 Linode 的邮件,提示我续费,我发现不知不觉我用了 Linode 一周年多了。

一年前的四月十五日,我买了 Linode 的 VPS。之前我用的是 YardVPS,因为它很便宜。但我深受其苦,因为它太不稳定了。开始的时候有人跟我说,叫我别用它,我还不大相信。结果几个月后,就有几次无论如何也连不上主机的情况。有一次把我急坏了,我的站点上不光有让别人访问的 blog,更重要的是它上面还有我的私人 wiki,我喜欢把日常收集的各种资料,包括学习笔记,都放在上面。那次我正好需要查一个资料,结果几个小时的连不上去,我不知道骂了几次娘,只好傻等。那次之后我下决心一定要弄一个更加稳定的 VPS,坚决不用 YardVPS 了。

我很早就听说过 Linode,看过许多人对它的好评。一开始我没有选择它,是因为它相对太“高端”了。我从来没有想过把自己的个人站点放在 512M 内存的服务器上,因为它太奢侈了。而 Linode 的最低配置就是 512M。后来用过 YardVPS 之后,我考虑下一个 VPS 大概就是 Linode 的,因为实在是没有很多其它的选择了。其它的要么性价比更低,而且也总有各种的差评,Linode 大概是我见过的性价比最高、好评率最高的 VPS 了。想想它的价格我也不是不能接受,每个月少喝几杯咖啡,少下几次馆子就能省出来了。于是终于在 YardVPS 最后一次抽风的时候,我买了 Linode

Linode 还有一点让我顾虑的是它不接受 Paypal 付费,只接受信用卡。虽说它的信誉足够,但总感觉不是最安全(前几天 Linode 确实发生了泄露事故)。不过最终我还是下定了决心。开始时只买了半个月的,只需要支付半个月的费用就好,付款灵活这也是 Linode 的好处之一。用了几天之后就得出了 Linode 相当稳健的结论,让我相当的满意放心。我当时写过

不知道是口碑还是心理上的原因,我开通了 Linode 的服务后,我就没有任何的担心过。过去的两个 VPS 我在使用的时候都要战战兢兢,就怕什么时候就出问题了。Linode 不是这样,我在使用的时候对它有一种微妙的信任——相信它不会出任何问题,相信就算它出问题了我也不会受到损失,它的面板也相当顺手,所有的选项都相当清晰,统计图表也不像别家那样能看不能用。总之,用 Linode 就是让我有一种完全安心的感觉。虽然我不知道是怎样养成这样的感觉的,但就凭这一点,我就觉得值了。

所以,当半个月后,我没有选择更保险的逐月付款,而是直接买了一年的服务,因为可以打折。所以,当我使用了这一年下来后,回想过去,竟然发觉没有什么可写的,因为服务太稳定了,我不需要花精力去处理什么问题,自然话题就少了。

有人说,买 VPS 就是为了折腾,我觉得不全面。当 UNIX-like 的系统用的熟了之后,操纵 Linux 服务器并不是困难的折磨,我在自己的笔记本上也是这么做的。当过了最初接触时的新鲜感之后,像使用自己的电脑一样使用远程的 VPS 之后,其实非常自然,并没有什么让你折腾的感觉。

前几天 Linode 又升级了。在之前提升流量、扩充硬盘之后,又把内存翻倍了。现在最低的配置就是 1G 内存了,而价格比原先贵了 5 美分,这是摩尔定律体现出来的好处。我的 VPS 很早之前就从东京迁移到了 Fremont,而 Fremont 的内存升级迟迟没有完成。不过 Linode 的政策是如果你不升级内存,费用还是跟原来一样。所以这时候续费倒便宜了我,省下了几毛钱 🙂

服务器的文件不知不觉的被人动了

今天早上偶尔访问我的服务器上的文件时,发现当我访问一个 HTML 文件 时,Chrome 浏览器提醒我这个页面有不良程序。

Chrome 浏览器发出的警告

Chrome 浏览器发出的警告

我第一个反应是“怎么可能”,这明明是我自己的服务器,文件也是我几年前自己编辑放上去的,有了木马我自己怎么可能不知道。不过为了以防万一,我用 SSH 登陆了服务器检查了一下,没想到这个文件里确实有不明脚本。

不良脚本的内容截图

不良脚本的内容截图

这个文件很老旧了,早在我还在用 Dreamhost 共享空间的时候就已经存在了。中间我的帐号也被黑过,因此有些文件被加了木马也是有可能的。这次这个脚本是用 JavaScript 写的,放在了 的后面,用 DOM 语法在页面里插入一些内容。具体作用是什么我不清楚,因为脚本里加了一些乱码来变换真实内容,我也没有兴趣去仔细研究它。

我检查了一下其它文件,发现没有问题。

我怎么又修改了一次 .htaccess 文件?

今天打开了好久没有关注的 Google Webmaster Tools 页面,看了一下我的网站的情况,发现有好几百个 404 链接。看一下描述,结果又是 .html 文件找不到错误。

这是一个很老的问题了。还是年轻时犯下的错误。小时候对于互联网更多是一种娱乐、玩耍的态度,所以对一些事情就比较随意。最开始时我用的 WordPress 搭建 blog,因为刚开始时什么也不懂,在买共享空间之前从网上注册了一个免费的临时空间,在里面上传了 WordPress 的程序(我记得当时好像版本时 1.5),很快的就运行起来了。我当时觉得安装 WordPress 原来这么容易,于是等有了共享空间后就用 WordPress 来写 blog。

那时候最流行的 blog 程序有两款,WordPress 和 Movable Type,相对来说 Movable Type 评价更高一些。Movable Type 是老牌的 blog 工具,质量上有保证,底蕴也更厚重一些;WordPress 比较新,年轻、有活力,但从时间上还没有完美的证明自己。从国内的用户来看,WordPress 安装容易,还是完全的自由软件,所以用户很多;但很多重量级的 blogger 都在用 Movable Type,也很有影响力。我因为是玩的心态,所以就都想试试。但 Movable Type 是 Perl 程序,安装 CGI 程序比 PHP 要难一些,尤其是在共享空间里,PHP 需要的各种库都全了,而有些主机的一些 Perl CGI 库就没有,所以安装 Movable Type 就更困难,因此我开始时没有安装成功。到后来慢慢有了经验后,我才成功安装了 Movable Type。

安装成功了之后我就有转移的想法,我想把我的 blog 转移到 Movable Type 上。从今天看来这是相当不明智的,两个工具之间有很大的差异,转移过去容易但一些后续问题都比较麻烦。我当时也没有马上转换,因为我还不大会用它。后来我第一个共享空间到期了,我一直也没有主意,有一天突然我的 blog 不能访问了,我面临着转移的问题。后来有人从网上看到了我的消息,好心的为我提供空间,同样是 Dreamhost,我于是就把文件都转移到新空间上去。因为这个契机,我把 blog 程序换成了 Movable Type。

提升上传限制

昨天晚上我写了一篇 blog,需要放两张图像。

我现在一般使用我的 Nexus 4 手机拍照,而不是用我出国时带的佳能 IXUS 800 IS 数码相机。主要原因是用手机可以很方便的传到电脑上,而用相机不能。我的相机用的是 SD 存储卡,我的 MacBook 上没有读卡器。唯一可以用来读卡的设备是从国内带来的一台数码伴侣,它是一个移动硬盘,加上可以读许多类型的存储卡的读卡器。所谓数码伴侣是上面有一个按键,可以把存储卡里的数据(主要是照片)复制到硬盘里,而不用连接到电脑上手工操作。可惜这个功能做的比较阳春,只有在硬盘的第一个分区是 FAT32 格式的情况下才有效,现在早就是 NTFS 格式了,所以我一次也没有用过这个功能。

可以我的这个 SD 卡和这个数码伴侣似乎不是很相配,它们接触不太好。每次我用的时候都需要用手指把卡往一个方向推着,它们才能保持良好接触。在复制的过程中手不能离开卡片,否则就会失败。而复制粘贴操作我只能用一只手来推着卡,一只手操纵电脑才能完成,非常麻烦。所以有了手机可以方便的传输照片后,我就基本上不用相机了。

另一个原因是现在手机的摄像头像素更高了。我的数码相机有一些年份了,镜头的像素是 600 万的,而我的 Nexus 4 的摄像头已经是 800 万像素的了。我对这个要求不高,600 万像素在我看来已经很好了,要知道我用了很长时间的第一部手机 Nokia E50 的摄像头才 30 万像素,照出来的图片真叫一个惨啊。现在的手机照出来的图片已经相当清晰了。

照片清晰度的提升的同时,图片文件的大小也提升了。过去我用数码相机照的照片,大小不用 2M,我已经可以接受了。但昨天的两张照片,一张信息量比较小,大小是 5M 多,另一张信息量略大,等我处理完了,大小已经超过了 10M 了。

过去我遇到这种情况一定会压缩图片大小,但现在我已经用了 VPS,所以也不在乎这点空间,于是就直接上传,然后用 WordPress 程序来生成一个小一点的图片放在文章里,但源文件还在。结果上传的时候出现了问题,原因是文件大小超出限制了。

我过去设定的限制是 5M,觉得这些已经够用了,结果到现在发现其实还是不够了。于是就改吧。我一共改动了三个地方:

  • Apache fcgi 的设定

  • php.ini 里的上传文件大小的设定

  • php.ini 里的 POST 大小的限制

具体设置参见我的 wiki 页面

Ubuntu 升级后 MySQL 无法启动

上一篇文章中我说道,我遇到了 MySQL 的严重问题。在这里专门说一说。

当时我写好了程序,已经通过 FTP 上传到服务器上了,然后就上服务器上调试。由于近期 Ubuntu 12.04 LTS 出来了,因此每次我登陆的时候,都会有升级的提示,让我运行 do-release-update 来升级。因为我用的是 VPS,我不确定 Linode 是怎么说这个事的,是不是有问题,因此我在这半个月中一直忽视它。今天又看到了这个提示,觉得大概是时候把它处理一下了。

于是我搜索了 Linode 的页面,看到它的 blog 上写的可以升级。我过去在用 Ramhost 和 YardVPS 的时候都做过这个,因此虽然脑子里想的是不是要备份一下数据库,但考虑到过去都很顺利的通过了,于是就没有再管,直接升级了。

升级中间出来一个窗口,让我设置 MySQL 的 root 密码。虽然我过去设置过,但我这次还是重新输入了两次,接着提示我说设置 root 密码失败,原因可能是我过去设置过 root 密码,或者是配置出了问题。我一看,我过去设置过 root 密码啊,于是就没有考虑这个,直接选择继续了。

升级结束后我开始测试我的程序。我选择了手动创建数据库,但在运行 MySQL 客户端的时候,却出现了错误信息:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

无论我用普通帐号还是 root 帐号都出现了这种问题。开始时我以为是个小问题,于是重启 MySQL,结果发现启动不起来了,运行 service mysql restart 的结果是:

start: Job failed to start

这时,我意识到可能是 MySQL 系统出问题了,去浏览器访问我的 blog,果然提示数据库连接不正常。

我上网搜索,确实有人有过这种经历,但原因是因为硬盘空间满了,清除出一些空间来就解决了。还有人说跟 /var/run/mysqld 的权限有关,我试过修改权限,但仍然不管用。

迁移 Linode 主机到 Fremont

今天我把 Linode 主机从日本东京迁移到了加州的 Fremont。

我从去年九月在 Fenng 的 blog 上看到 Linode 开通了日本机房的消息。那时候我还没有 Linode VPS,只是听说日本机房在大陆访问速度更快,因此有些羡慕。所以这次我买 Linode 的时候,自然就选择了日本的机房。但真正用 ssh 登陆主机之后就立马后悔了——我忘了考虑自己的地理位置了!

如果我人在中国大陆,我一定会选择东京机房,因为速度更快。可目前我人在加拿大,选择东京机房的结果是,国内的人访问速度不知道是不是更快了,但我用 ssh 登陆后明显能感觉到比我过去用 Ramhost 的时候的响应要更迟钝。这种体验实在是太不好了,因为理论上说,终端的响应要比 HTTP 的响应更加敏感,我从键盘上输入字母,要等半秒钟才出现在屏幕上,这比打开网页要延迟两秒钟还要让人心烦。

为了平衡我这里的远程操作速度和国内的网页响应速度,我让朋友 @zhaokai 帮我测试一下 Linode 的 speed test 页面上的文件下载速度。@zhaokai 在青岛给我的反馈是 Dallas 最快,Tokyo、Atlanta 和 Fremont 次之,London 和 Newark 没速度。当然,不同地域的速度会有区别,所以我需要进一步调查,但要换机房是定下来了。

今天正好有时间,我就用 just-ping 来分别测试 speed test 页面给的主机域名。伦敦在英国,所以估计无论如何都不会超过美国和日本,所以我就没测它。其它五个城市,我调查了它们在国内的响应速度,并用本地的 traceroute 工具来检测本地的响应速度。调查结果基本上如下:

From server to my home:

 8  newark1.linode.com (207.192.68.6)  45.461 ms  45.814 ms  46.035 ms

14  dallas1.linode.com (69.164.200.100)  46.899 ms  46.901 ms  47.173 ms

 9  atlanta1.linode.com (63.247.71.196)  53.109 ms  53.801 ms  53.258 ms

 9  fremont1.linode.com (64.71.152.17)  75.233 ms  75.279 ms  74.783 ms

 9  tokyo1.linode.com (106.187.33.12)  161.979 ms  162.831 ms  165.290 ms

===========================================================================

From server to China:

Newark:

Location    Result  min. rrt    avg. rrt    max. rrt    IP

Hong Kong, China:   Okay    224.3   227.5   229.6   207.192.68.6

Shanghai, China:    Okay    522.4   529.2   534.3   207.192.68.6

Beijing, China:     Packets lost (20%)  454.8   557.3   621.0   207.192.68.6

Dallas:

Hong Kong, China:   Okay    227.3   228.1   229.1   69.164.200.100

Shanghai, China:    Checkpoint temporarily not available    -   -   -   -

Beijing, China:     Checkpoint temporarily not available    -   -   -   -

Atlanta:

Hong Kong, China:   Okay    233.0   236.5   239.7   63.247.71.196

Shanghai, China:    Packets lost (10%)  542.2   545.4   547.2   63.247.71.196

Beijing, China:     Packets lost (20%)  336.2   344.9   392.7   63.247.71.196

Fremont:

Hong Kong, China:   Okay    191.7   194.8   196.5   64.71.152.17

Shanghai, China:    Okay    271.6   274.5   278.0   64.71.152.17

Beijing, China:     Okay    223.3   224.0   225.2   64.71.152.17

Tokyo:

Hong Kong, China:   Okay    53.2    54.4    55.9    106.187.33.12

Shanghai, China:    Okay    509.9   516.6   520.6   106.187.33.12

Beijing, China:     Okay    159.2   171.4   179.3   106.187.33.12

综合的看结果,发现 Fremont 在国内访问和我家的访问速度种达成了很好的平均,特别是从我家里连接到机房,响应速度比连接到东京的速度要快一倍多;到国内的连接也没有掉包的情况,平均速度比东京的机房还有优势,所以我确定了要往 Fremont 的机房搬迁。

终于换了 Linode (续)

刚刚发表了上一篇文章后,想起还有一些感受忘了说。

首先就是转移 VPS 的感觉。这次转移有些麻烦,但速度很快。麻烦的是 YardVPS 根本死活连不上,自然没法转。我在后台跑了一个 lftp 来镜像 public_html 的文件,这就弄了好几个小时。不过好在我早就开始用 wiki 了,有了新的知识,就花点小时间整理下来,之后再用时就会节省很多时间,不用再去查资料了,比如这次,这篇《VPS 配置笔记》就省了我很多时间,一条一条走下来,就不用怕漏了什么东西没有配置。当然,Linode 本身有很丰富详细的文档,我这次也参考了一些,学到了一些知识,比如我过去用 VPS 从来不开防火墙,这次总算时学会了如何使用了。

我从上次切换到 YardVPS 的时候学会了使用 DNSPod,觉得它绝对是个好东西。我这次转移 VPS 速度很快也得益于它。我过去换一个 VPS,就用那一家 VPS 的 DNS,这就需要花费一段时间来使设定生效,有的 VPS 厂家,比如 Ramhost,添加一个域名需要发送 ticket,这就需要几个小时。在 VPS 服务商那里添加了一条域名之后,还有其它的各种设置,比如 Google Apps 就一堆 CNAME 和 MX 记录,很麻烦。而我这次转移 VPS,只是在 Linode 服务器那里把数据动放好后,去 DNSPod 改一下域名的 A 记录,然后等了几分钟,这就是全部了。我用过三家 VPS,Ramhost 的 DNS 设定面板是人家自己写的,我用过很多次,当然也为此发送过几条 ticket;YardVPS 的 DNS 设定面板我压根不知道长什么样;Linode 的我从它的文档里看了截图,但自己没有用过,当然我也完全不用考虑这些问题了。

最后再夸耀一次 Linode 带给我的安心感。虽然并不真实,但买了 Linode 后我确实产生了“如果从一开始就用 Linode 的话就少走了很多弯路了”的感觉。当然,从现在开始也不算晚。