通过travis自动将Jekyll持续部署到服务器上

迁移回Jekyll以后更新博客就成了比较麻烦的事情,Jekyll处于本地每次发布就需要在本地生成静态文件以后上传到服务器上. 在很久以前这一系列的工作只能手动完成,不过travis-ci给了我们提供了更方便高效的持续集成解决方案. 首先 我们到travis-ci使用Github帐号登录,授权完成后进入个人页面开启你需要进行持续集成的项目,就像下图中 添加.travis.yml文件 在项目中新建.travis.yml, language: ruby rvm: - 2.3.3 before_install: script: after_success: 由于Jekyll是ruby环境下的框架所以language项填写的ruby, before_install可以视为正式执行前的准备工作, script则为正式执行阶段, after_success为执行成功后的处理. 执行 在travis启用相应项目并且在添加.travis.yml文件提交推送到Github后travis-ci会很快开始运行. 并且可以看到类似下图中这样的控制台执行过程, 成功后的部署 执行成功后可以通过ssh以及scp将生成好的静态文件部署到服务器上.不过不管是直接在.travis.yml中写服务器密码还是上传私钥都相当危险. travis-ci专门为私钥的加密准备了一套方案. ssh-keygen -t »

月杪 月杪 on Jekyll

博客从Ghost切换到Jekyll

快4年前开始用Ghost写博客,当时觉得Ghost最大的优势就是支持Markdown格式.相比Wordpress来说不需要安装mysql和php同时和Hexo以及Jekyll相比也有强大的后台. 然而在发展了几年以后Ghost迭代到了1.0版本, 在1.0版本中出现了以下几个特点: 开始推荐使用mysql数据库,仍然能够指定为sqlite但是支持肯定越来越薄弱. 改进了编辑器,虽然在一定程度上仍然兼容Markdown但是还是给人一种不舒服的感觉. 开始推广自己的CL工具,不能像1.0版本以前那样直接通过npm安装和运行.并且这玩意还没做好,运行和更新非常容易报错. Ghost默认主题是一款杂志主题而非博客,也从侧面反应出他们的着重发展方向.marketplace中也没几个支持1.0的博客主题,并且90%为收费主题. 所以一直坚持使用0.11.12长期支持版, 然而长期支持版其实就是长期没支持慢慢就淘汰版本.. 斟酌再三决定换回Jekyll. 并且很幸运还找到了和Ghost 0.11.12默认主题几乎一致的Jekyll主题jekyll-casper. »

月杪 月杪 on Jekyll

AmpliFi

家里的路由器从网件的WNDR4300换成UBNT的AmpliFi HD已经过去3个月了,它拥有着你这辈子买的路由器加起来都没它贵的价格以及绝对对得起这个价格的品质. AmpliFi HD是企业级网络设备供应商UBNT在2016年10月推出的Mesh Wifi系统.也是该厂推出的第一款家用路由设备,并为之创立了一个新的品牌AmpliFi. 主要参数 1 个千兆 WAN 接口 4 个千兆 LAN 接口 1 个 USB-A 接口 IEEE 802.11n IEEE 802.11g IEEE 802.11b IEEE 802.11.ac »

月杪 月杪 on 心情

利用iodine为Ocserv提供本地DNS服务

起因 尝试在同一台Linux上同时安装Ocserv和Dnsmasq,并将Ocserv的DNS配置指向Dnsmasq,然而不管是走内网IP还是外网IP都完全不工作.发邮件询问Ocserv作者本人收到的回复也是建议我检查Dnsmasq的配置.鬼都知道Dnsmasq配置不可能有问题啦! 后来猜测是虚拟网卡的原因,于是尝试自己建立内网DNS隧道来搞定它. 安装及配置 # 安装 apt-get install iodine # 启动 nohup iodined -f 10.10.10.10 gov.com & 启动后通过ifconfig能查看到已经生成了名为dnsx的虚拟网卡,地址为10.10.10.10. dns0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1130 inet 10.10.10.10 netmask 255.255.255.224 »

月杪 月杪 on Ocserv, SSL

使用LetsEncrypt签发多域名ECC证书

克隆certbot cd /opt git clone https://github.com/certbot/certbot.git 配置openssl.cnf cp /etc/ssl/openssl.cnf /opt/certbot/ vi openssl.cnf # 在[ v3_req ]标签下添加 subjectAltName = @alt_names [ alt_names ] DNS.1 = example.com DNS.2 »

月杪 月杪 on SSL

为Nginx添加TLS1.3支持

Nginx主线分支从1.13.0版本开始支持TLS1.3,只需要在编译的时候选择使用OpenSSL支持TLS1.3的分支进行编译即可. 使用对应的OpenSSL分支进行编译 # OpenSSL对TLS1.3的支持已经到了draft19,不过Chrome和Firefox对TLS1.3的支持还在draft18 git clone -b tls1.3-draft-18 --single-branch https://github.com/openssl/openssl.git openssl 然后在预编译的时候选择该分支,并添加额外选项--with-openssl-opt=enable-tls1_3. 其他操作参考手动编译Nginx支持ALPN,以在最新版Chrome中支持HTTP/2. 浏览器设定 Firefox目前最新版已经默认开启TLS1.3支持(如果不是新安装的Firefox那么可能依然需要检查about:config中的对应设定). Chrome需要在chrome:flags中将TLS 1.3选项调整为Enabled (Draft) 测试 Firefox: Chrome: 已知问题 由于nginx-ct目前并不支持TLS1.3,所以如果Certificate Transparency是靠该方案实现的话那么开启TLS1.3后无法继续显示Certificate Transparency信息. »

月杪 月杪 on Nginx

利用Haproxy使Ocserv和HTTPS工作在同一端口

#/etc/haproxy/haproxy.cfg frontend https-in bind *:443 tcp-request inspect-delay 3s tcp-request content accept if { req.ssl_hello_type 1 } acl tls req.ssl_hello_type 1 acl has_sni req.ssl_sni -m found use_backend »

月杪 月杪 on Haproxy

Git忽略证书错误

在尝试使用源码编译很多陈旧开源软件的时候会遇到该软件的源地址SSL证书失效(比如iftop). 网上流传的很多都是直接修改git全局设置: git config --global http.sslVerify false 但会造成更大的安全问题. 正确方法需要在克隆的时候手动忽略证书错误: env GIT_SSL_NO_VERIFY=true git clone https://code.blinkace.com/pdw/iftop.git cd iftop git config http.sslVerify "false" 使用env命令保证了忽略证书错误只应用于此次克隆,http.sslVerify保证设置只应用于该仓库. »

月杪 月杪 on Git

快速统计项目代码行数

$ find . -name "*.swift" -or -name "*.h" | xargs wc -l 59 ./mas-cli/AppStore/Downloader.swift 62 ./mas-cli/AppStore/ISStoreAccount.swift 114 ./mas-cli/AppStore/PurchaseDownloadObserver.swift 29 ./mas-cli/AppStore/SSPurchase.swift 24 ./mas-cli/Commands/Account.swift 58 ./mas-cli/Commands/Install.swift 25 ./mas-cli/Commands/List.swift »

月杪 月杪 on 技巧