比较新的 Debian 系统中内置的 vim 也比较新,vim 有个默认的配置文件位于/usr/share/vim/vim80/defaults.vim,如果没有设置 $HOME/.vimrc 的话,vim 就会读取这个配置文件。

这个配置文件里有一项配置

if has('mouse')
  set mouse=a
endif

导致 vim 默认为 visual 模式,与之前的默认模式不一致,操作不顺手。

我们可以自己新建一个 $HOME/.vimrc 写入自己想要的配置,比如代码高亮

if has("syntax")
  syntax on
endif

有了 $HOME/.vimrc 之后就不会读取 /usr/share/vim/vim80/defaults.vim 了。

在做 telegram bot 的时候遇到一个问题:Unknown SSL protocol error in connection to

解决方案

先贴解决方案:在能够正常访问 api.telegram.org 的服务器上执行 ping api.telegram.org 记录下 ip 地址,然后在墙内的服务器上绑定下 host,将 api.telegram.org 绑定到刚才记录的 ip 上。

原因分析

由于众所周知的原因,api.telegram.org 是无法直接访问的,所以我在使用 python-telegram-bot 的时候设置了代理,配置如下:

updater = Updater(token='TOKEN', request_kwargs={'proxy_url': 'socks5://127.0.0.1:1080/'})

但是设置了代理之后但还是不行,于是我试了下 curl google.com -x socks5://127.0.0.1:1080 -vvv 发现可以访问,又试了下 curl api.telegram.org -x socks5://127.0.0.1:1080 -vvv 这回问题来了,在等了一阵子之后,看到这样一个报错:

*   Trying 127.0.0.1...
* TCP_NODELAY set
* SOCKS5 communication to api.telegram.org:443
* SOCKS5 connect to IPv4 243.185.187.39 (locally resolved)
* SOCKS5 request granted.
* Connected to (nil) (127.0.0.1) port 1080 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to core.telegram.org:443 
* Curl_http_done: called premature == 1
* stopped the pause stream!
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to api.telegram.org:443 

这就很奇怪了,代理是可用的,但是 tg 却访问不了,在 Google 查询半天终于搜到了这样一篇文章 点击查看,遇到了跟我一样的问题。

主要是国内 DNS 服务器的问题,被墙的网址被分配了一个错误的 IP 地址。与代理服务器上连接的 IP 地址不同。

checklist:

  1. 安装 nginx、mysql、php71
  2. scp /data0/ 文件、nginx 配置、https 配置、/home/ 文件
  3. mysql 数据导入

    • 旧服务器上执行 mysqldump -uroot -p --all-databases > mysql.sql
    • scp 到新服务器
    • 新服务器登录 mysql 然后执行 source /path/to/mysql.sql
  4. crontab 任务迁移