git: gnutls_handshake() failed: Handshake failed

在客户一台设备上git clone总是出现这个问题,网上搜了一堆全是千篇一律的文章。现在百度出来的东西真是没有质量!有几篇不一样的也是没求证的估计,没一个解决问题的。

没办法,还是F出去找答案了。没几分钟找到方案:

This is solution fix this issue on ubuntu server 14.04.x

STEP1:

vi /etc/apt/sources.list

STEP2:

加入:

deb http://security.ubuntu.com/ubuntu xenial-security main
deb http://cz.archive.ubuntu.com/ubuntu xenial main universe

STEP3:

apt-get update && apt-get install curl

解决!

git冲突解决方案

第一种需要保存保留的:
git stash 先把当前的修改暂存起来
git pull 再拉取远程代码
git stash list 查看
对于stash后的分支,有三种处理方法,任选其一
git stash drop 删除stash内容,保留pull的结果为最终分支
git stash apply 恢复stash为最终分支 但stash中内容不删除
git stash pop 恢复stash为最终分支,同时把stash内容也删除
————————————————
第二种对保存不保留的(一般是产生了日志或Runtime的临时文件):
git reset –hard
git pull

curl error 60 ssl certificate problem:certificate has expired

今天一台服务器无法进行composer了,发现这个错误。于是搜了下试了各种方法竟然都无法解决(吐槽下搜索引擎)。什么设置ca证书、设置路径,更新证书。。。

没办法只好翻到stackoverflow上,找到一个解决方案,貌似还可以,就是使用 dpkg-reconfigure ca-certificates 重新配置下取消 mozilla/AddTrust_External_Root.crt  试着还是不行。于是,就想既然这个过期,那是不是还有另外一个也过期了?

有思路就好办,于是在curl的网站上找了下没找到,后来在ubuntu的官网上找到了一篇官方更新说明。才明白curl 的版本问题,导致这些问题,而且在 Oct 1, 2021 又过期一个。是的!没错,刚过期,就是它 DST_Root_CA_X3.crt

于是重新 reconfigure下,uncheck 这个。ok!郁闷!

Ubuntu安装和使用supervisor

对于需要以进程的方式常驻在Ubuntu系统中或开机启动的脚本程序,通常使用supervisor进程管理工具进行管理。本文将简单介绍supervisor进程管理工具的安装和使用。
安装

sudo apt-get install supervisor

新建进程配置
安装supervsor进程管理工具后,建议在/etc/supervisor/conf.d/文件夹中为每一个进程创建一个进程配置。

cd /etc/supervisor/conf.d/
sudo touch test.conf


配置详解

[program:test]
command=sh /usr/local/bin/test.sh ;被监控的进程路径
numprocs=1 ; 启动一个进程
directory=/usr/local/bin/ ;执行前切换路径
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
stdout_logfile=logfile ; 指定日志文件

启动进程

supervisorctl reload
supervisorctl start test

启动进程

supervisorctl start xxx

重启进程

supervisorctl restart xxx

重启所有属于名为group的分组进程

supervisorctl stop group

停止全部进程

supervisorctl stop all

载入最新配置的文件

supervisorctl reload

根据最新的配置文件,启动新配置或有改动的进程

supervisorctl update

frp内网穿透设置

内网有时候快速搭建原型发给用户看的时候,配置服务器很麻烦,未进入生产环境的应用也不敢往正式服务器上放。所以本地的快速访问很是需要和方便。

看了下内网穿透的方式基本上都是属于数据转发,有软件和硬件两种途径。下面我列出主流和我都试用的。硬件都是咸鱼上淘的二手的。

软件有:ngrok、 frp、 花生壳服务端

硬件有:花生壳棒、 花生壳盒子、零遁、汉土、固定IP小魔棒

其中最坑的就是花生壳,首先就是用的它是因为以前TP路由器里经常带着的,想着是个老牌子了也知名。先用了服务端软件方式穿透,用了段时间被封了,理由是我在国外登录了。好吧!写代码的有几个不偶尔VPN去google下呢。忍了!然后一个月过后莫名奇妙没了,一看理由一个月内没有访问流量给删除了。好吧~ 花生壳各种收费模式太多了,基本上每一个点都要收费,强烈建议不要使用!映射也有严格限制。80端口也无法做多域名绑定。一个网站就得占用一条映射。

固定IP模式基本上是用公网IP做了桥接。比较方便,但是80端口需要备案,而且流量也挺贵。

最后还是采用了软件方案比较好点。于是又试用了ngrok和frp。觉得从免费和域名来说,frp还是比较良心的。

服务端配置很简单。

客户端配置web

[web]
type = http
local_port = 80
custom_domains = *.yourdomain.com

这里的custom_domains 类型是 string[] 可以用逗号做多个隔开,也可以用泛域名。