轶哥博客

妄图改变世界的全栈程序员。

解决 Rancher 2 卸载后无法重新运行的问题

因某些原因需要重装Rancher 2,本想着运行在docker中的系统应该很容易重装。但是重装后出现了很多报错。

一个Rancher集群需要EtcdControlWorker三个角色都正常运行,该集群才能正常工作。其中Worker代表执行任务的服务器,EtcdControl服务至少部署一个。

重装后EtcdControl服务均出现报错。

报错详情

其中Control则是kube-apiserver容器报Unable to create storage,报错类似:

配置自动续期的免费通配符SSL证书

公益SSL证书机构Let’s Encrypt从2018-03-13起开始支持通配符证书。通配符证书必须通过DDNS添加TXT记录验证域名所属权。

  1. certbot官网安装certbot。

  2. 安装DNS插件

    cerbot支持很多DNS插件,例如:

     certbot-dns-cloudflare
     certbot-dns-cloudxns
     certbot-dns-digitalocean
     ...

    这里以DNSPOD(腾讯云域名默认DNS)为例:

     git clone https://github.com/tengattack/certbot-dns-dnspod
     cd certbot-dns-dnspod
     sudo python setup.py install
Nginx 解决API跨域问题

利用Nginx可以最简单且高效解决跨域问题。

跨域是前后端分离开发中非常常见的问题。这个问题网上已经有非常多的答案,但大部分是编程框架里面添加CORS头。但无论用什么Web框架,现已很难离开Nginx。因此直接在Nginx中处理跨域问题有得天独厚的优势,可以将OPTIONS请求拦截在API服务之前,节约服务器开销。

简单说,跨域分为简单跨域复杂跨域

简单跨域不会发送OPTIONS请求。

复杂跨域会发送一个预检查OPTIONS请求。

复杂跨域的条件是:

  1. 非GET、HEAD、POST请求。
  2. POST请求的Content-Type不是application/x-www-form-urlencoded, multipart/form-data, 或text/plain
  3. 添加了自定义header,例如Token

跨域请求浏览器会在Headers中添加Origin,通常情况下不允许用户修改其值。

Node.js 获取项目根目录

  介绍一个小技巧获取node.js项目根目录,这个技巧非常实用。

  假设我们的js文件写在server目录中,但是我们的资源文件存储在app/img目录中。如下图,我们需要在server/index.js文件中使用fs读取app/img/favicon.ico文件。

获取node项目根目录

  在node.js只提供了一个__dirname全局变量。通过__dirname可以获得“C:\wwwroot\yidata\server”。这时需要用到path。

小技巧解决Windows To Go新机驱动问题

  使用Windows To Go的体验比Ubuntu To Go要好得多。特别是加密U盘/移动硬盘的功能很实用。然而无论是Windows To Go还是Ubuntu To Go都无法避免在新机子中移动使用需要安装驱动的问题。欣慰的是在Windows To Go中微软专门针对移动使用定制了部分功能,然而还是无法完美安装所有驱动。特别是在某些win10平板中,几乎有数十个无法识别的驱动( 设备管理器中的感叹号)。怎么办呢?安装带网卡的驱动人生和驱动精灵?不,这个方法太Low了。

  对于高手,驱动缺失的第一个反应是去官网找驱动,搜芯片型号。然而很多驱动你根本找不出来,特别是定制性的。这些驱动有个特点,就是驱动人生和驱动精灵也无法识别。

  这里有一个小技巧,如果Windows To Go的目标主机和Windows To Go中安装的操作系统版本相近,位数相同,那么可以通过原有驱动直接安装。Windows10 To Go和Windows8 To Go均适用。

EA6500 V2/EA6700 散热改善,加装散热风扇

  EA6500 V2的CPU发热严重,最高温度可达104°(如上图)。别说煮鸡蛋了,烧水都没问题了。给EA6500 V2/EA6700加装风扇我不是第一个,网友“啥都不会”早在14年10月就已经成功安装过了。

  本文仅仅说明可以用5V风扇,而且可以控制是否启用。焊接点如下——USB电源接口。

  上一页下一页