把大家的VPS的Ubuntu 11.10升级至了Ubuntu 12.04 LTS版本,结果还是差不多顺利的,但是还是微调了一些。
简单记之:
升级至Ubuntu 12.04 LTS Server
从Ubuntu 11.10升级至Ubuntu 12.04是非常简单的,只需要执行一下「sudo do-release-upgrade」,进行确认、软件包的更新、下载与安装配置,即可完成升级。
但是升级过程还是有一点点意外:
我使用byobu的类screen工具连接至Server进行升级,升级了一半时,会话乱掉了(大概是重启啥服务引起的),等我再登录进去,dpkg的进程还跑着,但是byobu已经登录不进,也无法继续操作。只得将「/var/lib/dpkg/lock」删除,再手动执行「sudo dpkg --configure -a」及「sudo apt-get dist-upgrade」,一切得以顺利进行下去。
一些服务(nginx、mysql)的调整
我手动升级服务器的策略是,尽可能使用新版本的配置相关文件,再手动将旧设置应用于新的配置上。
比如在将mysql-server从5.1升级到5.5之后,原有的utf8设置可能会无效,于是在「/etc/mysql/conf.d/」下建立一个「utf8_charset.cnf」的文件,输入以下内容:
[mysqld]
max_allowed_packet=64M
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
然后再用「show variables like 'char%'」查询时,就会看到都是utf8了。
nginx+uwsgi的问题
升级了nginx新旧配置相关文件没啥不同,唯一的一点是,之前我为了用nginx跑uwsgi,用了「root」用户,现在又变成了「www-data」,重新改回来就可以。
所说现在有更好的跑Python App的类uwsgi工具(或其他模式),有时间再升级一下了。
Python Virtualenv的问题
随着发行版的升级,Python版本也升级了,于是会导致使用Virtualenv的WebApp有诡异的问题,最好的办法是,重新建立一遍virtualenv环境,非常简单。
比如本站的环境是「imtx.me」,只需要「mkvirtualenv imtx」,它会自动去对原环境进行一次重新建立(和覆盖操作),完成后,重新通过pip去安装软件包即可。
Crontab的通知问题
之前在VPS上会跑一些cron,这些cron会有输出,每跑一次都会向当前用户发送一封邮件,久而久之就有积累了上千封邮件了。这些邮件通常告诉你cron跑的过程与结果是不是顺利,偶尔是要看一下,但多了也不方便,该怎么办呢?
于是我想到了一个办法,「crontab -e」编辑时,在最上面写一行:MAILTO="yourmail+cron@gmail.com",这样它就会发到我的邮箱的指定位置,我只要想看时,看自己的私人邮箱就可以了,而不用登录到服务器上看邮件了。
另外,一旦真的不需要通知,在crontab里命令行后面弄一句「> /dev/null 2>&1」也行。
小结
尽管现在各种云大行其道,但是自己管理自己的VPS依然很有价值,关键是享受乐趣与最大的灵活性和可配置性。
另外做个小广告,这些年来用过不少VPS,今年开始用Linode,大半年过去了,确实非常棒:稳定、快速,后台也十分强大,非常自动化。比如我昨天忘记密码了,就通过Rescue功能重设了root密码。
一旦你打算使用Linode,可以考虑用我的可以考虑使用我的 referral code(通过该链接或该代码去购买Linode的产品):3a7a044d481045ae2ff2f4469357779e2322f5c6,算是对我blog的赞助吧。