Debian 8 升级 Debian 9 (DO篇)
这两天升级几个Debian 8 (jessie)的droplet,屡次失败,后来参考了一篇blog(请点击此处了解),并多次尝试后才最终成功。回过头来看看,其实整个过程很简单,只是被一个点卡住,就来回折腾。本文简要记录一下操作顺序和操作要点,以备日后查看。
修改 /etc/apt/sources.list 文件
这个是通用步骤了,修改成 Debian 9 (stretch) 的源即可。
deb http://deb.debian.org/debian stretch main contrib non-free deb http://deb.debian.org/debian stretch-updates main contrib non-free deb http://deb.debian.org/debian stretch-proposed-updates main contrib non-free deb http://deb.debian.org/debian stretch-backports main contrib non-free deb http://deb.debian.org/debian-security stretch/updates main contrib non-free deb-src http://deb.debian.org/debian stretch main contrib non-free deb-src http://deb.debian.org/debian stretch-updates main contrib non-free deb-src http://deb.debian.org/debian stretch-proposed-updates main contrib non-free deb-src http://deb.debian.org/debian stretch-backports main contrib non-free deb-src http://deb.debian.org/debian-security stretch/updates main contrib non-free
这里也可以用 DO 自己的镜像站点的源(http://mirrors.digitalocean.com/)。考虑到我们的droplet都部署在欧洲和美国,因此速度上没太大差别,还是直接取官网的源好了。
备份 /etc/cloud 目录
使用以下命令直接备份即可。这步骤非常重要,实际上是整个升级的关键点!后面操作中,必须要还原这个目录!
cp -r /etc/cloud /etc/cloud-bak
停止所有相关的服务
这也是通用步骤,没什么细讲。有什么服务就停什么服务好了。
systemctl stop apache2 systemctl stop mysql systemctl stop fail2ban systemctl stop dovecot
更新并升级
需要注意的是,一般情况下,升级提示是否保留原有配置时,一般都保留原有配置,这个也是默认选项。但是对于fail2ban的jail.conf文件,建议采用系统新的文件,后面手工再改即可。
我在这个更新过程中,没有提示是否保留/etc/cloud的配置,因此后面需要手工还原备份的/etc/cloud目录,如果是系统提示了,务必要保留原有的/etc/cloud配置。
apt update apt upgrade apt dist-upgrade
还原 /etc/cloud 目录
完成各项更新后,先不要重启系统,务必先还原 /etc/cloud 目录。这步相当关键!如果没有还原,将采用系统新的/etc/cloud 配置,导致cloud-init 过程失败,系统无法启动!
rm /etc/cloud cp -r /etc/cloud-bak /etc/cloud
最后,就是重启系统,完成整个升级。
关于 /etc/cloud 目录,只在 DO 的系统中有这个目录,在 Linode 等其他VPS系统没有发现。感觉是 DO 处理上一个不太完善的地方,这个目录似乎没有必要暴露给客机系统,主机系统配置即可。
和 DO 的技术支持人员简单交流了这个问题,平台相关的元数据(metadata)是保留在 /var/lib/cloud 目录下,似乎 /etc/cloud 只是上游云系统的初始化配置(根据 /var/log/cloud-init.log, 系统初始化时需要从这个目录下读取 cloud.cfg 等配置)。
Bitbucket/Mercurial在Debain8上的一点小问题
由于Debian 7已经被无情地终结了生命周期,因此不得不将部分生产环境升级到Debian 8。总体上还比较顺利,在mercurial库方面遇到点问题,记录如下:
问题1:UnicodeDecodeError: ‘ascii’ codec can’t decode
这是Python脚本编码的问题。一个好的py脚本,应该在脚本起始处就标明编码方式,可惜mercurial的很多脚本没有这么做。Debian 8采用Python 2.7.9,默认是ascii编码,需要修改为默认utf-8编码。注意,Debian 8安装了多个Python版本,首先要确认默认版本号:
python -V
接着修改“/etc/python2.7/sitecustomize.py”文件(如果没有的话,可以手工创建一个),在文件起始处添加以下代码:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
问题2: [SSL: WRONG_VERSION_NUMBER] wrong version number
Bitbucket网站禁止了有缺陷的TLSv1,TLSv1.1加密方式,奇怪的是mercurial为什么没有根据协商采用SSL或者TLSv1.2? 修改方式也简单,强制mercurial禁止掉TLS。修改“/etc/mercurial/hgrc”,增加以下内容:
[ui] tls=False
Wheezy被移除了
Debian 7 (Wheezy)结束了整个生命周期,Debian组织将Wheezy从所有的mirrors站点中删除了,如果仍旧使用apt-get进行更新或者安装软件时,会导致404错误,无法获取相关文件。关于这个问题的信息,请参考这个链接。
如果实在要停留在Debian 7版本上,需要修改sources.list文件,将deb库指向“http://archive.debian.org/debian/”。
巴菲特2019致股东的信
Google AdWords 一点小经验
古语有言:酒香不怕巷子深,然而今时今日这种观点已经过时了。好的产品如果不为人知,即对不起开发商自己,其实对消费者也是损害。好的产品就应该广而告之,让大家尽早享受,摆脱折磨,比如我们的产品(miniSIPServer)就挽救了很多迷失在 Asterisk、FreeSwitch 中的灵魂。
常见的广告手段无非是:
(1)传统方式。例如在电视、纸媒、报纸、杂志等撒钱做广告,这种方式适合有钱的主,对一般中小企业而言,这种方式的价值越来越低,尤其对我们这类小软件开发商而言,几乎毫无意义。
(2)网络搜索广告。作为中文用户,我们一度以为首先应该试试百度的广告推广方式,当然后来发生的一些事件以及我们自己的体会而言,建议放弃百度,不要抱任何幻想。本文推荐使用Google AdWords。 当然,由于众所周知的原因,您需要自行解决访问问题。
使用 AdWords 的经历积累了一点经验,“广而告之”的“广”有几个方面需要仔细考虑:
(1)人群。是不是所有人都适合点击、接受您的广告? 实际是要对自己的产品有准确认识。比如我们的产品是企业软件产品,那么一般的消费群众就不可能是目标客户,向他们提供广告就没有意义。
(2)地理。是不是需要向全球提供广告?这点其实也和产品本身的定位有关联。这里有个常见的误区:“应当尽量拓展新用户! 如果某个地区客户少,更应该加大该区域的广告推广!”。 如果您的客户大部分来自某个区域,那么向那个区域推广告其实更可能取得比较大的效果。比如我们的产品客户绝大部分来自欧美,因此我们在AdWords中,限制了广告的【地理范围】,只设置定位在欧美地区,基本上将广大亚非拉地区明确排除了(若干发达经济体除外,例如香港、新加坡等)。就我们的经验来说,亚非拉地区的欺诈性点击很多,对产品的推广毫无帮助。
(3)方式。AdWords 提供了很多推广告方式,例如搜索方式(这个最常见)、联盟网络推广等。我们可以明确的是:只要选择搜索方式即可。联盟网络推广等方式虽然能增加点击,但是帮助不大、欺诈也多,用户也可能只是看到广告,随手点击来看看而已,这类广告带来的用户往往并不是产品的目标客户。而通过搜索推广告,这契合了用户的搜索需求,极可能就是您产品的目标客户。
(4)关键词选择。通常我们都希望尽可能将所有的关键词都加入进去,哪怕只有一点点关联性的关键词也恨不得全部加入进去。这在初始阶段当然可以。运行一段时间后,需要观察关键词的效果,如果点击率小于1%,那这个关键词就应该放弃。有时候我们自认为某个关键词高度契合产品,实际搜索结果往往会大跌眼镜,这种情况下要果断砍掉,别犹豫。
(5)费用。不差钱的主可以忽略。如果费用预算有限制,自然需要精打细算。必须限制每个广告系列、默认每次出价的最高值。在这点上,不要相信 AdWords 的调价建议,这些建议基本是按照最高出价进行调整,如果盲目地跟随这些建议,您的广告费用就会直线上升。默认出价值仍然应该根据关键词的效果来调整,确保您希望的关键词能有合理的点击率。广告费用应当与您的产品销售收入要保持一致,过高的广告投入未必会换来产品销售增长。
华为
今天在网上看到一个新闻,关于美国打压华为和孟晚舟,具体链接请点击此处。
这事很让人愤慨,在网上进一步搜索了相关的资料,简直要拍案而起!这完全是赤裸裸地打压和抹黑。作为通信领域的从业人员以及一名深圳居民,一直以来都以华为为傲,华为也一直是我们学习的榜样。美国这种完全不顾廉耻、不讲究吃相地打压方式,实在太下作了!政府应该重视这件事,靠华为自己是不可能扛得住美国政府的国家行为的,不能让咱们的科技之光被美国黑手给掐灭了。上次在中兴事件上的绥靖和不作为,显然让美国得寸进尺!这次如果在华为事件上还不吸取教训,国内的高科技产业就可以洗洗睡,以后就干点垃圾回收的事情算了!
在网上看到另外一些言论更让人不齿,例如:“不要为了一个女人牺牲国家利益”;“华为给国家添麻烦了”…… 这帮混账东西,不是傻就是坏!作为一名长者,很久没有气愤难平了,华为这次事件确实让人郁闷气愤!
杀掉袁崇焕,清兵就不入关了吗?!
找到“丢失”的士兵,日本就不会侵华了吗?!
牺牲华为,美国就不打击中国了吗?!
THIS IS A WAR! 醒醒!!
乌合之众
周末终于挣扎着看完了勒庞写的《乌合之众》,一本言过其实的书。基本观点无非就是:群体会弱智化,即使这个群体是由精英组成。相比之下,大前研一的作品思考更深入、也更广泛一些,我更喜欢大前研一的书。
由于基本观点是群体性弱智,因此顺势就能推导出议会制的无效和荒谬。作者显然也意识到这点,因此最后一点章节又费力地硬拗,看得实在是替作者尴尬。
还是鲁迅说得对:看书就应该看二十年前,甚至一百年前的书。
2019桌面
SSHd使用强加密算法
默认情况下,SSH服务器会启用各种尽可能的加密算法,其中包含一些很弱的加密算法,这确保了客户端广泛的接入,但是的确会引入一些风险。企业环境中设备是可控的,因此可以去掉弱加密算法而只保留特定的强加密算法。
Linux环境中查询以下帮助,可以了解包含算法在内的各项配置信息:
man 5 sshd_config
修改/etc/ssh/sshd_config文件,指定Ciphers采用强加密算法即可,例如,将下列语句直接加入到该文件后面:
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes256-cbc
当然,最后要重启ssh服务才能使配置生效。

