观武大樱花

本来计划上周末去武汉找老领导聊聊,发觉现在正是樱花盛开的季节,那不如去武大看樱花吧。查了下资料,发现武大现在是可以免费进去赏樱,但是要提前网上预约,我打开指定的活动页面,发现只能预定本周的,于是干脆推迟去武汉看望老领导(^_^),顺便把樱花看了。 我的路线是从茶港门进入的,从西门也可以,这样可以从西到东,先逛樱园,再接着逛樱花大道,顺带去看老斋舍和图书馆。 春天里的樱花 樱园 一阵风吹来,樱花雨飘飘洒洒 好看的妹子 绚烂的樱花正当时 鲲鹏广场 老图书馆附近看到的一树花 老斋舍 春赏樱,不要辜负大好春光…

不使用Ghost-CLI安装新版Ghost

新版的Ghost出来有一段时间了,我一直没太注意。偶然发现最新版已经到1.20了,便决定升级下自己的老版本。 根据官方的说明,新版已经不能像老版本那样通过一些文件的覆盖更新来升级了,貌似新版从1.0.0开始采用了Ghost-CLI来进行安装升级,不用像以前那样人工动作比较多。这确实挺好的,但是仔细一看说明,只能是先导出老版的数据,然后直接安装新版,最后导入。好吧,那么就按照官方的做吧,可是这新版的安装的限制也太多了吧,居然要指定Ubuntu16.04的OS,我可不太想重建我的VPS。。。 我尝试在我的CentOS 6.9的系统上用Ghost-CLI来安装,但是中途出了很多错,我尝试着修改源码(这样以后升级就不方便了),大部分错误都是系统环境差异调用的命令参数不一致造成的,我固然可以一个个找到错误点,修改Ghost-CLI的源码执行,但是这样谁知道会不会埋坑啊。。。而且以后升级不得重新再来一次? 搜索后,发现了下面两个博客的文章。 Installing Ghost 1.0 (without ghost-cli) Upgrading Ghost Without the CLI 第2篇博客是根据第1篇博客找到的,感觉第2篇博客介绍的方法高效方便,而且末尾也介绍了如何升级到最新版,十分详尽,…

CentOS 6使用Let’s Encrypt遇到openssl相关问题的解决

问题出现 因为应急的原因,要给一台老服务器临时换上免费的Let's Encrypt生成的HTTPS证书,想简单一点直接采用自动化方案,但是无论是参照certbot的方案,还是直接从letsencrypt的源码仓库里拉取执行letsencrypt-auto命令,总是会在ssl相关的模块出错,后来参照在网上各处找到的方案,却总是得到不同的错误信息,问题总是指示python相关模块引用的_openssl.so相关的库构建错误,不是少这个变量就是少那个变量 问题分析 第一时间,我想绕过python版本引发的问题,先升级吧,于是把老服务器上的python2.6.6升级到了最新的python2.7,还顺带升级了pip,但是ssl相关问题还是会出现。 折腾了很多次,发现问题可能出现在我曾经手动升级过openssl,因为机器比较老,要支持ALPN,所以就升级到了较高等级的版本,但是当时升级的openssl的用途主要就是单独提供命令和提供源码给nginx编译,实际上系统内部的动态链接库应该还是之前的。参考了这篇文章,决定要让letsencrypt编译安装时链接到正确的openssl库,但是这篇文章只是提供了系统包含了正确的库的前提下怎么重新构建的方法,现在的问题是如何让系统包含正确的库。另外,目前来看,这个问题和python版本是没有关系的,我先恢复到phthon2.6的版本,让问题的能控制的变化因子到一个最小的集合。 问题解决过程 之前的openssl版本是1.0.1的,先是想升级到当时安装比较新的1.1.0,但是编译的时候出错,当时也懒的去把环境里的必须的库去升级一下,…

老版本confluence和bitbucket修改代码连接MySQL5.7

起因 之前给公司装了confluence(v5.8.15)和bitbucket(v4.2.0),因为一直能满足实际需求,也没怎么升级。最近因为要把开发测试环境的项目迁移到同一台服务器上,这就要求必须保持和线上服务器MySQL版本一致,所以要升级这台服务器的MySQL到5.7版本。MySQL5.6升级到MySQL5.7确实很平滑,优化了一下配置,可以直接无缝衔接,但是confluence和bitbucket跑不起来了。 探究 分别查了下confluence和bitbucket对应版本的文档,发现confluence和bitbucket都表示5.7没有经历过测试,最佳MySQL版本还是5.6,其中bitbucket还说5.6的版本不能低于5.6.16(5.7不就是大于这个版本的吗?所以直觉上觉得5.7应该是能兼容的)。从官方的描述来看,之所以不直接支持5.7,完全是因为当时MySQL5.7刚刚出来,没有放出稳定版,无法给产品做足够的测试造成的。我查了下各自的日志,发现都是各自校验数据库的工具类报错,那么一个想法出现了,我修改它们的代码,让它们能够检验通过,运行一段时间看看是否真的不支持MySQL5.7。 解决方案…

Ubuntu16.04上MySQL Workbench6.3无法通过Standard TCP/IP over SSH连接数据库

今天发生了一个奇怪的问题,以前一直通过MySQL Workbench使用Standard TCP/IP over SSH方式连接非外网环境的MySQL,怎么今天突然就无法连上了,看了下~/.mysql/workbench/log/wb.log,发现出现以下错误: 22:00:59 [ERR][sshtunnel.py:notify_exception_error:233]: Traceback (most recent call last): File "/usr/share/mysql-workbench/sshtunnel.py", line 298, in _connect_ssh look_for_keys=has_key, allow_agent=…

【译】鼓吹驱动开发

在twitter上看到阮一峰推荐的这篇文章,觉得确实囊括了团队技术选型阶段很多不好的方式,尝试着翻译了一下,建议还是看原文。原文的标题是Hype Driven Development,我个人觉得Hype在这个语境下翻译成鼓吹比较好,因为很多人确实是在微博上看到某些大牛说某某新技术非常好,就迫不及待的也向周围的同事宣传,并极力在公司里推广(当然这个推广要分情况,也有推广了确实提高了团队生产力的,关键在于是否考虑了团队实际情况)。 以下是译文 软件开发团队经常基于不准确的看法,社交媒体以及被大众认为是最火的技术而不是扎实的调研和任何对项目产生预期影响的认真思考来对项目的软件架构和技术栈做决定。 新技术— 新希望 你见过吗?一个正在选择最新最火技术的开发团队。其中的某人看了一篇微博上正趋火热的博客文章,然后我们大家也刚刚从一场热情讨论这个的技术会议上回来。不久,团队就开始使用这个崭新闪耀的技术(或者软件架构设计范式),但是,团队并没有走的更远(原本承诺的),并没有开发出一个更好的产品,反而陷入了新的麻烦里。他们停下脚步,变得消极,很难正常交付产品的工作版本。一些团队甚至在不停的修改bug而不是交付新特性。他们需要所谓的“再过几天”来解决所有的难题。 鼓吹驱动开发 鼓吹驱动开发(HDD)有许多特点,而且会以不同的方式影响你的项目。 社交网站驱动开发— 当一个团队或者个人在技术/架构/设计相关方面是基于博客上的流行文章或者reddit, hackernews, blogs twitter,…

Web服务HTTP接口开启keep alive

keep alive的作用网上资料很多了,需不需要开启,开启时候设置多长,都是要根据项目实际情况来设置的,就算开启了,是不是真的做到了从客户端请求经过层层代理到后端服务器,都是一条线的keep alive维系的,这是一个心细活,需要在上下游的各个节点协作配置才能打通所有环节。 项目架构 目前的项目的结构如下图所示: 外网的交互采用https/http2协议,内网的交互采用http1.1协议,虽然这样会比一些二进制协议性能差一些,但是方便提高整体项目的可维护性,可水平扩展性和开发便捷性,其实差也差不了多少,系统的瓶颈不在这里,更何况这个项目仅仅是一个跨终端的SaaS项目,对信息交互没有到那种极致的要求,而且开启了keep alive甚至http2后,连接性能方面更是可以不用担心了。 后端相关配置 api服务器是负责主要业务的,然后分别向内网和移动端提供rest api接口,不同的连接策略提供一致的业务数据。 这里先看看后端服务器的情况,在内网情况下,肯定希望保持和内网机器的有效长连接来减少频繁新建连接带来的消耗成本,提高性能,外网连接主要是移动端,考虑到后面移动端设备数目可能会很多的情况下,就算开启keep-alive,keepalive_timeout也要设置一个合适的值,不能让空闲长连接过多的占用端口和资源。 因为项目还没有正式上线,所以不能根据实际情况来动态的调整参数,一般来说,有2个参数是需要注意的,一个是keepalive_timeout,另一个是最大并发空闲keepalive数。比如内网环境,…

CentOS 6.7 (64位)配置nginx支持http2

基础知识 其实nginx配置http2大部分工作都是配置ssl,这个网上资料很多,重点是要做好ssl的优化,比如OCSP的配置,这里推荐Jerry Qu的博客,他上面有很多web优化方面的文章,自然也包括ssl优化,比如: 为什么我们应该尽快升级到 HTTPS? 本博客 Nginx 配置之安全篇 本博客 Nginx 配置之性能篇 使用 BoringSSL 优化 HTTPS 加密算法选择 TLS 握手优化详解 从无法开启 OCSP Stapling 说起 这些文章对ssl的基础配置和高级优化做了比较好的概括,最后我的nginx相关部分配置如下: user nginx; worker_processes 1;#这个根据实际情况来 events { worker_connections 31024;#这个要根据实际情况来计算 multi_accept on; } http { include mime.types; default_…

西佘山一览

周末顺便去了佘山国家森林公园,在九亭住了这么久,怎么也要来一回看看。这次去了西佘山,因为一直想看看天文台,话说小时候我想当个天文学家的,一直对天文很感兴趣。 从西佘山的北门入口往上走,走进门口的时候自己去售票点拿票再刷门禁进入,接着就进入了公园,往下面看了看 秀道者塔 天文馆是要另外收12元门票的,地方不大,一路跟着指示牌走就到了 日晷 某长廊 简仪 外面庭院一角 外面看天文馆 天文馆前 佘山之巅 馆内的球幕电影放映厅,可以带小孩来看看 挺喜欢这种有年代感的楼梯 观察室 顶层 旁边就是佘山天主教堂…

CentOS 6.5 (32位)安装Ghost记录

写这篇博客的时候Ghost还是0.11.x版本,最新的Ghost1.x.x版本和旧版已经很大不同了。 起由 最近发现服务器上的php-fpm内存占用有些夸张,本来想优化一下,毕竟我的vps上只有512mb的内存,后来想想,为什么不换个更现代一点的博客呢?google了半天,发现了Ghost这个系统,支持MD语法,Node.js开发,支持sqlite3,这些特点都深深打动了我,于是,正式将博客迁移到Ghost 安装 本来我想直接基于Ghost源码来直接编译安装,这样方便我以后做二次修改,结果中途编译出现问题,总是进行不下去,期间我看了下内存,在gcc编译过程中内存都快耗尽了,看来也许和系统资源有一定关系,那么就去官方下载下载Release包好了,按照官方快速安装说明里说的来安装 问题 在npm install --production途中无法编译成功,看了下日志,报错是在make阶段,看了下我机器的gcc,CentOS 6.5自带的是4.4.7的版本,看来我要升下级,我不想手动编译,找了下资料,发现有yum的仓库,虽然是升级到4.8但是应该能满足大部分的需求了 解决…