第 2 页 - 分类 技术 下的文章 - HelloJXL

技术

acme.sh80端口http2无法签发证书

起因

一直都在用acme.sh脚本进行证书签发,直到最近在给探针的域名进行签发的时候,不知为何总是一直load最后失败,加debug也看不出问题来,初步感觉可能是反代的问题就没管,最近进行了一次探针面板迁移,配置完之后发现所在服务器的其它域名也会一直load,签发不成功,甚是脑袋疼。

解决

直接说解决方案:尝试更换CA机构,最开始acme.sh默认的是Letsencrypt,后来改为了ZeroSSL,起初也没感觉有什么不同,这次始终不行,于是干脆就先切换了一下签发机构,切换完了立马就提示错误,具体错误想不起来了,大致就是因为在80端口开启了http2,签发机构认为不安全不进行签发。大致想了一下,因为之前嫌改端口麻烦,就把探针面板的监听端口通过80反代了,由于哪吒探针需要启用http2,所以就直接走的80端口,但是不知为何其它域名也受这个影响。知道原因就好解决了,先去掉http2再进行签发就可以了,顺便把端口又改为443再启用http2。

总结

目前看来还是Letsencrypt更好一点,起码出现问题时会先提示,不会想ZeroSSL傻傻的跑完了然后提示超时。所以等下一次签发不成功并且没有提示的时候可以试试切换为Letsencrypt。

Alpine中安装哪吒探针代理端

很久之前买的sentris家的小鸡最近突然离线了,之前图省事装的是debian8,可能是因为性能太差或内存太小吧,经常会挂掉。想想这性能啥也干不了还是换成alpine吧,然后就打算只挂个探针,可是哪吒官方的安装脚本里面暂时还没有alpine,只能自己捣鼓了。

安装

虽然官方没有提供一键安装脚本,但毕竟是golang开发的,直接下载二进制就可以了。

启动

废话不多说,直接nohup启动就得了,

nohup /home/nezha-agent  -s 服务器地址:端口 -p 密钥 0  --report-delay 3 --skip-conn --skip-procs -- disable-command-execute &

开机启动

网上查alpine的开机启动目录在/etc/local.d下,可以在这个目录touch一个启动文件,然后把上面的脚本拷贝到文件里面,比如我们就叫做nezha.start,然后赋予执行权限,然后再加到开机启动里面就可以了,具体操作步骤如下:

#创建启动文件
touch nezha.start

#获取shell路径
echo $0

#编辑开机文件内容
#!/bin/ash
nohup /home/nezha-agent  -s 服务器ip:端口 -p 密钥 0  --report-delay 3 --skip-conn --skip-procs -- disable-command-execute &


#增加执行权限
chmod +x nezha.start

#增加开机启动
rc-update add local

#查看一下服务状态
rc-status

#如果local的服务是停止的启动起来
service local start

结束

好了,到这里基本上就完成了。😎😎😎


补充:最近发现探针经常挂掉,但是进入服务器发现好像系统也没重启,怀疑是代理自己停掉了,虽然可以开机启动,但是因为没有进程守护所以还是需要经常手动启动,后来又研究了一下alpine系统自带的OpenRC init系统,研究并部署了一下,最近一直正常,分享一下过程:

首先在/etc/init.d/目录下创建一个文件,比如nezha-agent,增加启动权限:chmod +x nezha-agent,然后输入

#!/sbin/openrc-run
name="nezha agent"
command="/home/nezha-agent"
command_background=true
command_args="-s 服务器ip:端口 -p 密钥 0  --report-delay 3 --skip-conn --skip-procs -- disable-command-execute"
pidfile="/run/${RC_SVCNAME}.pid"
depend() {
        need net
        use dns logger netmount
}

后面就可以通过rc-service nezha-agent start进行启动了,如果要开机启动那么就rc-update add nezha-agent就可以了。

Debian更新最新php版本记录

最近php爆出两个漏洞,分别为:CVE-2022-31625和CVE-2022-31626,涉及MySQL和postgresql,由于本站数据库采用的是postgresql,所以修补了一下。默认的php版本直接用的apt安装的,直接更新的话是无效的,因此找了半天,找到了deb.sury.org维护源。

对于Debian 11(bullseye) 更新很简单:

echo "deb https://packages.sury.org/php/ bullseye main" >> /etc/apt/sources.list.d/php.list

然后接着apt update更新一下包然后再apt upgrade进行升级就可以了。

迁移哪吒探针

最近virmach支持迁移到其它地区的Ryzen服务器,正好之前买的ip被墙了,由于当时在忙工作,没注意,过了几天才发现是被墙的,也懒得找客服,心想就等着解封吧,结果等了将近半年依然没有解封,看来是永封了,正好现在支持迁移就立马迁移到西雅图了。

由于迁移的比较仓促,只备份了哪吒探针的服务端,没有备份相关的nginx配置,所以之后又重新部署了一遍。下面就梳理一下迁移流程:

  1. 备份服务端下的/opt/nezha文件夹。
  2. 在新服务器上新安装哪吒服务面板,安装完成之后将之前备份的覆盖到本地的/opt/nezha文件夹下,启动就可以了。
  3. 配置nginx转发,由于客户端连接的域名通过nginx转发之后无法进行域名证书续签,所以只好走80端口了。

具体的nginx配置如下:

(1)服务器端转发配置:

    location /
    {
        proxy_pass http://127.0.0.1:8008;
        proxy_set_header Host $host;
    }
    location /ws
    {
        proxy_pass http://127.0.0.1:8008;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
    }
    location /terminal
    {
        proxy_pass http://127.0.0.1:8008;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
    }

(2)客户端转发配置:

    #开启http2
    listen       80 http2;
    #可以把access日志关了,不然太多
    access_log  off;
    #重要,不开启是不行的
    underscores_in_headers on;
    location / {
        grpc_read_timeout 300s;
        grpc_send_timeout 300s;
        grpc_pass grpc://127.0.0.1:5555;
    }

好了,基本上部署完毕后就可以看到所有的服务器都在线了。

补充:
最近登录的时候一直提示 server response missing access_token,网上查说是反代https的问题,可是我这里明明之前是可以的,查找半天无果,后来在github的secret界面发现密钥一直没有使用过,感觉不太对劲,于是重新添加了一个新的并替换了现有配置,重启之后发现问题解决,这才想起来之前迁移的时候可能是误删了新建的secret。具体替换方法是在修改/opt/nezha/dashboard/data下的config.yaml文件。

迁移禅道

最近把公司内网的禅道迁移到外网,由于不想装apache,所以没有采用一键安装的方式,采用了nginx+fastcgi的方式安装,数据还原完成后不知道为何找不到备注了,并且访问地址必须为:地址+zendaopms/www才行,看上去非常别扭,网上查大部分都是通过nginx反向代理apache的地址,或者是直接根目录访问,因为后面还有别的业务要用,所以想配置成/zentao这种访问方式,查了半天,最终在官方的问答里找到了配置方式,nginx采用如下配置:

location ~ ^/zentao/.+\.php$ {
   root /opt/zentao/www;
   fastcgi_index index.php;
   fastcgi_pass unix:/run/php/php7.0-fpm.sock;
   if ( $fastcgi_script_name ~ ^/zentao/(.*\.php) ) {
       set $cginame $1;
   }
   fastcgi_param SCRIPT_FILENAME $document_root/$cginame;
   include fastcgi_params;
}

location ~ ^/zentao($|/.*) {
      alias /opt/zentao/www/$1;
      index index.php index.html index.htm;
}

最初也猜想到需要用alias切换到实际目录,但是少了一些配置,一直提示not found。只要是采用fastcgi的方式应该都可以用这种方式配置,因此记录下来备忘,在此也非常感谢原作者。

引用地址:https://www.zentao.net/ask/4621.html