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

sudo npm install 找不到命令

sudo npm install -g packname 执行提示 找不到npm命令。

这是因为您的登陆用户环境和sudo执行的环境有一定的差异。

首先,我们需要在 vi /etc/profile 里将node的bin目录已经加到path里。
然后将node 和 npm 都做个软链接到 /usr/bin/ 目录下。

我的node目录是在 /usr/loacl/src/node-v16.15

sudo ln -s /usr/local/src/node-v16.15/bin/node /usr/bin/node
sudo ln -s /usr/local/src/node-v16.15/bin/npm /usr/bin/npm

然后再执行 sudo npm install -g 就可以了

 

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