技术

CentOS 有线网卡配置 IEEE 802.1X 上网

技术

CentOS 有线网卡配置 IEEE 802.1X 上网

公司网络使用 IEEE 802.1X 认证网络接入,手机端和 Windows 端都很方便,Linux 上稍微麻烦一些。最近有个测试服务器(CentOS 7.6)需要接入办公网络测试,折腾了一番。 中间走的弯路就不讲了,直接讲最终的解决方案吧。 1. 取消 /etc/sysconfig/network-scripts/ 中活动网卡(本例中是 ifcfg-em1)的任何配置,例如 ONBOOT 等。 2. chkconfig --list ,查看是否有 network 的服务,如果有,执行 chkconfig --del network 删除 3. 修改 /etc/wpa_supplicant/wpa_supplicant.conf,

Ghost Docker 部署方式配置邮箱

Docker

Ghost Docker 部署方式配置邮箱

2019年01月09日 天气阴很久没登录博客了,今天登录时,发现忘记密码了,之前都是自动登录的,估计是自动登录过期了,没办法自动登录了,试了几次,账号被锁定了。 尝试找回密码,发现好像没有配置 SMTP 邮箱。于是找了下配置项,用 Docker 部署的话,在编排模板的 environment 中添加如下配置: - 'mail__transport=SMTP' - 'mail__from=Ghost <[email protected]>' - 'mail__options__host=smtp.qiye.aliyun.com' - 'mail_

技术

前端跨项目组件化及基于Docker的快速部署方案

> 2018年04月14日凌晨 天气🌧 最近静下心来写了几个项目,花了些时间重新整理了整套组件化方案和部署方案,记录一下。 跨项目组件化 前端的组件化不用多说了,发展到现在,无论是React的还是Vue,都提供了相当方便的组件化实现。在日常项目中,有些组件其实是可以跨多个项目使用的,将这些组件抽离出来作为单独项目,并复用到其他项目中去,一来可以避免重复造轮子,加快开发速度,二来维护效率也高,一些bugfix或者新特性直接在组件中更新,项目中只需要更新引用版本号即可,方便快捷。 跨项目的组件化方式也很多,开发阶段可以用npm link,相当于在主项目的node_modules 目录中创建了一个链向组件项目的软链,方便是挺方便,但是有几个问题。一是Eslint的目录递归检查是基于最终实际目录的,也就是说虽然Eslint默认排除 node_modules 目录,但它依然会对该目录中的软链项目进行检查,一旦组件项目的Eslint规则和主项目的Eslint不一致的话,主项目Eslint就没法通过,这个比较蛋疼,就得临时禁用Eslint或者修改组件项目的规则。作为组件项目应该保证少依赖,

技术

Maven项目Docker一键发布配置

> 2018年04月12日 小雨🌦 Docker用了很久了,之前Maven项目一直用的docker-maven-plugin [https://github.com/spotify/docker-maven-plugin] ,但是作者目前已经不推荐使用这种方式了,该项目已经不再更新功能,只提供bugfix。他们的新项目叫做dockerfile-maven [https://github.com/spotify/dockerfile-maven] ,配置上有些不同,之前一直没时间去更新,最近的一个项目中,采用了最新的插件,中间也踩过不少坑,刚刚终于都搞定了,记录一下。 Dockerfile无需多说,整理了一个通用的,可以用在任意Spring Boot项目中,如下: FROM frolvlad/alpine-oraclejdk8:slim RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime VOLUME /tmp ARG JAR_FILE

技术

微信小程序在安卓上SSL报错的问题

开发工具上和iOS真机上访问api都是正常的,在安卓上提示如下错误: > request:fail ssl hand shake error 尝试在安卓的浏览器中访问api地址,提示“该证书并非来自可信的授权中心”,于是感觉应该是SSL证书的问题。 SSL证书是通过Let's Encrypt申请的,部署在阿里云SLB上。 通过https://www.ssllabs.com/ssltest/index.html 测试,TLS1.0、TLS1.1、TLS1.2都是支持的,但有如下提示 > This server's certificate chain is incomplete. Grade capped to B. 于是重新查看了下Let's Encrypt生成的证书文件,

Ghost博客迁移至阿里云Docker

技术

Ghost博客迁移至阿里云Docker

刚刚,将Ghost博客迁移到了阿里云Docker上。 由于近期网络问题,导致家里的NAS已经无法提供443端口的服务了,之前的临时解决方案是将hadb.me的域名解析到DigitalOcean的一台机器上,然后用nginx转发到NAS的20443端口,通过海外的服务器做了中转,访问速度可想而知。并且近期海外网络极不稳定,最终决定还是老老实实备案,迁移到阿里云上来。 近年来,Docker容器化越来越火,我最近的几个项目也都是通过Docker来部署的,非常方便。 域名备案经历了几波周折,提交备案后,阿里云初检未通过,有如下问题: 1. 根据要求已经取得备案号的网站最下方必须显示您的备案号,并能链接到工信部网站www.miitbeian.gov.cn [http://www.miitbeian.gov.cn/],目前您网站“monkeyrun.net”最下方备案号无法链接工信部网站,请您修改 2. 根据要求网站名称必须与主办单位名称有一定的关联性。您备案的网站名称“HADB的博客”与主办单位名称“上海猿奋网络科技有限公司”没有关联性,请修改 3. 根据要求域名持有者必须

开始使用Ghost啦!

日志

开始使用Ghost啦!

关注Ghost很久很久了,14年就尝试过0.5.3版,由于一直没有出正式版,所以一直处于关注和等待中。 终于在差不多一年前Ghost在GitHub上发布了1.0.0-alpha.1 [https://github.com/TryGhost/Ghost/releases/tag/1.0.0-alpha.1] ,本以为很快就能出正式版了,开始了焦急的等待。一开始基本上每天都会去GitHub上检查下他们的动态。后来变成了大约每周会去看一次,等了一个又一个版本,甚至等了大半年,终于在第21个alpha版后,推出了beta版,随后不久发布了1.0.0正式版。尝试去安装,结果发现挺多坑的,试了很久都没成功,正式版的Docker镜像也一直没出。再后面,Ghost团队的更新也非常勤奋,基本每周都会发布新版本,那段期间我正好也比较忙,一直在默默关注,没有再去尝试安装,任务列表里的“博客迁移到Ghost上”也被一再推迟。 直到今天,突然想再去试下。看到Docker镜像也同步了最新的版本,于是直接上Docker。几分钟就装完了,

技术

Entity Framework Core SQLite provider向已存在的表中添加外键

SQLite本身不支持向已创建的表中添加外键,类似的限制还有很多,比较蛋疼,具体可以参见SQLite Limitations [https://docs.microsoft.com/en-us/ef/core/providers/sqlite/limitations]。 项目中,如果是测试的时候,数据不是很重要的话,最方便的方法就是把已经创建的Migrations包括ModelSnapshot都删掉,重新Add-Migration重建数据库。 对于已经发布的应用,数据库不能删了创建的话,可以“曲线救国”。 假设需要给TableA添加一个需要建立外键的字段ColumnA,为了增加难度,假设TableB中的Column B是TableA的外键。具体操作方法如下: 1. 先在代码中TableA里添加ColumnA(不设置外键),Add-Migration,更新到线上数据库 2. 将本地的数据库改名为database-backup,删除项目中所有Migrations和ModelSnapshot,创建一个RebuildDatabase的Migration,创建全新的数据库,从新数据

技术

自建NAS及DDNS

众所周知的原因,前段时间360云盘也倒下了,之前大部分照片、电影资源都放在360云盘上。由于国内的环境,感觉第三方云盘的可靠程度还不如自己建个NAS。前端时间研究了硬件方案,今天研究了下外网访问的方案。 固定IP肯定是拉不起,太贵了,国内运营商太黑心。只能通过DDNS,但花生壳这种我也不想用,以前试用过,速度太慢。既然是程序猿,还是自己来吧。具体方案如下: 1. 阿里云的云解析DNS,升级付费版,将最低TTL值拉到1秒,其余都拉成最低配置,一年40.8块钱,完全可以接受。 2. 在自己的阿里云服务器上搭建一个小站点,用于返回来访请求的公网IP地址。没有外网服务器的,可以利用ip138的服务来做, http://city.ip138.com/ip2city.asp。 3. 做一个小应用,跑在NAS上,每秒向步骤2中的站点请求获取NAS的外网IP,并通过阿里云云解析DNS的api接口,更新域名的IP地址,并记录,如果下次请求IP不变则跳过,IP变化了则更新。做好日志,运行一段时间之后看下电信的动态ip更换有没有规律,可以适当调整获取外网IP的频率。

技术

解决阿里云CDN回源https返回503错误的问题

最近打算把www.monkeyrun.net [https://www.monkeyrun.net]改成全站https,使用的Let’s Encrypt [https://letsencrypt.org/] 的证书。然而在设置阿里云CDN的时候,阿里云CDN回源一直返回503错误,发工单,来来回回经过整整两天,终于把问题解决。容我娓娓道来。 最一开始,我先开启了阿里云的CDN,源站设置为www.monkeyrun.net [https://www.monkeyrun.net] ,通过80端口回源,没有任何问题。 后来当时配置好证书,站点也开启了https之后,将回源端口改为443,开始出问题了,CDN资源全部返回503。而直接通过浏览器访问https的源站内容,都是没有问题的。 发工单,经过漫长的等待和提供链接等更详细的信息之后,阿里云的工作人员首先认为这个问题可能是由于我开启了防火墙或者一些安全软件导致,拦截或阻止了CDN节点的回源请求。我关闭了防火墙,问题依旧存在。 又经过漫长的等待以及转交专项处理人员处理之后,给我发了个抓的包,说是CDN回源请求被源站给RST了,让我检查