手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:Linux

rpm数据库修复

因为偷懒,在腾讯云上使用的时候,就直接用了bt面板的镜像,这个镜像用的是centos,也因此就有了yum 和rpm数据库的问题。

因为某次在更新的时候嫌慢,所以直接ctrl+c,然后。。。再次启动的时候就:
 yum update
错误:rpmdb: BDB0113 Thread/process 8643/139904725112896 failed: BDB1507 Thread died in Berkeley DB library
错误:db5 错误(-30973) 来自 dbenv->failchk:BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
错误:无法使用 db5 -  (-30973) 打开 Packages 索引
错误:无法从 /var/lib/rpm 打开软件包数据库
CRITICAL:yum.main:
 
Error: rpmdb open failed
 
---看这个样子,就是数据库坏了。
看起来没什么特别好的办法,只能重建,于是:
# mkdir /var/lib/rpm/backup
# cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/
# rm -rf /var/lib/rpm/__db.[0-9][0-9]*
# rpm --quiet -qa
# rpm --rebuilddb
# yum clean all
 
yum clean all运行完后会显示 :
已加载插件:fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
正在清理软件源: centos-sclo-rh epel extras os updates
Cleaning up list of fastest mirrors
 
至此,修复完毕,因为用的腾讯云,所以直接将源切到腾讯:CentOS (tencent.com),先用yum version看看版本,然后下载相应的repo。最后运行:
yum clean all
yum makecache
 
世界清静了
 
 

千辛万苦搭建了一台gitea server

一直使用github,也有因为各种原因使用过不少的git server,比如:codeup/gitee/coding/甚至腾讯工蜂,国外的么,bitbucket/gitlab其实也都有使用,这里面带来的最大的问题就是网络问题,当然国内的没这个毛病,但比如gitee,不能超过3个协作者(个人账户),coding的话,我个人是很喜欢的,甚至想成为他们的商业用户,但商业用户需要至少5个使用者。(国内好象其他平台也差不多,要想成为商业用户,几乎最少人数都是5人,一年500多我愿意付出,但2500多确实没有太大必要)

 
github/gitlab 当然没什么问题,但偶尔的不能访问也确实有点麻烦,这些都不是重要的。github也尝试过通过Action来进行自动部署,但确实不舒服,连接国内进行部署的时候,一个40多M的jar包。有一次传输上就花了将近10分钟,这种在国外向国内进行传输速度,有时候还是挺抽风的。
 
于是搭建git server的相法就开始了。之前其实也搭过,从16年开始,基本上就是用gogs,当然也不是没遇过问题,比如超过50M时就无法上传之类的。这时候就要改nginx最大允许的post max size了。这次是看到说gitea推出了【包管理(Package Registry)】,然后才决定使用的。
 
然而在使用的时候,就开始遇到各种问题了。比如不能运行在root下,腾讯的轻量默认是root用户嗯,cvm/阿里云的ecs,也是root,但阿里云的轻量,默认居然是admin。有点妖
然后创建git用户,测试su git -c '/usr/local/bin/gitea web'进行测试。到这里都没啥问题,然后我就开始遇到问题
1、用nginx做反向代理 ,毕竟我也不可能一直用ip+port进行访问,然而css/js全部无法访问,检查了很久,才发现原来是默认的配置文件里对css/js等静态文件做了过期时间设置,但因为最早3000端口被 zerotier的UI占用了。这时候他就一直不过期了。所以一直就无法访问(在缓存里?)这个有点麻烦,现在很多路径都是/assets/css/css.css,这种自动生成的格式,所以大部分自动打包的可能路径都是这种,这时候一旦被缓存了,短时间内就一直无法变改。这很纠结
2、ssh 登录,这个才是大坑。其实也是怪我自己,如果我允许port登录,估计早就解决了。比如我可以让root用户通过自定义端口登录,然后git用户就可以通过22端口登录了。(测试过可行,但不太想改默认登录端口,想复用端口,结果就启动不了了,好象非root用户进行的项目,无法使用1024以下端口)
3、最后只能使用docker来进行部署,然后因为我偷懒没使用docker,用了podman。。。默认安装的podman是3.0.4,使用podman-compose的时候有问题。于是又升级到4.2,然后才能正常使用podman-compose。对着官方文档配置 gitea脚本以及 默认的转发(再折腾了1个小时才搞完)
 
先做个笔记,后面看什么时候有空补上详细的,以后重装也能更方便一点

valet 支持多版本的php啦

Valet 支持多版本下的PHP啦 。

要想valet支持多版本PHP,你必须要将valet升级到3.0以上
 
更新方法:
```
This super exciting new feature is now officially released, as a part of Valet 3! To update: 1. Update your global Valet constraint to "^3.0" 2. Run `composer global update laravel/valet` 3. Run `valet install` 4. Party On, Wayne!
```
so easy。如果你在使用mac,那个 phpmon也支持valet3啦 。记得更新哦
如果你已经装过,那么直接brew upgrade phpmon,如果你之前没有装过,支行
```
brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon
```
 
参考:
1、Laravel Valet 3 Released With Multi-Version PHP Support | Laravel News (laravel-news.com)
2、nicoverbruggen/phpmon: Lightweight, native Mac menu bar app that interacts with Laravel Valet. Helps you manage multiple PHP installations, locate config files and more. (github.com)
 

服务器偷懒采用LNMP了。

服务器上曾经偷懒过,比如用宝塔,但如果不想要个界面那就用lnmp会相对方便一点,主要是配置多环境PHP会相对容易 

初始化安装就不谈了,直接说安装另一个版本的PHP吧。
进入 lnmp的目录。运行./install.sh mphp,选择一个和当前PHP不一样的版本。比如我正常是PHP8,但因为用了dcat-admin,只能用PHP7.4了,于是./install.sh mphp,选择php7.4,一路回车。安装完毕。
 
这时候还要改一下vhost的配置,原来conf中,include enable-php.conf,则要改成 include enable-php7.4.conf
 
然后要运行composer u,发现报错,因为composer.json中指定php<8,这时候只能这样运行:/usr/local/php7.4/bin/php /usr/local/bin/composer u,所有的都要指定全路径。
 
再次运行,居然还是报错,发现说少了一个zip组件。OK,重新进入lnmp的目录,再进入src目录。刚才安装的php7.4,会有一个tar.bz的文件存在,tar -xvf php7.4...tar.bz。解压到目录,并进入该目录下的ext/zip目录。运行: /usr/local/php7.4/bin/phpize,然后运行:./configure --with-php-config=/usr/local/php7.4/bin/php-config --with-zip,完事后:make && make install,这时候就完成了,但zip还是没有,因为使用 /usr/local/php7.4/bin/php -m|grep zip,一片空白
 
进入/usr/local/php7.4/etc/,修改php.ini文件,在extension_dir,下增加:extension=zip.so,由于laravel的composer在执行时需要proc_open和exec。等函数,检查 disable_function,删除掉一点程序。
<code>
  [Symfony\Component\Process\Exception\RuntimeException]
  The Process class relies on proc_open, which is not available on your PHP installation.
</code>
 
 
如果你本身enable_phpinfo(lnmp的配置),那你几乎可以把disable_function这一行重新注释起来。
 
至此,新环境搞定。如果是一些其他 插件,比如eacc/apc/opcache,直接在lnmp目录下,运行./addons.sh 即可
 

Tags: lnmp, bt

zerotier 提速

 Zerotier和tailscale一样都是类似创建虚拟网络的一个软件,Tailscale有个不太好的地方就是只能用google账号登录(记不清是我当时这么选的,还是只能用这个登录了。也就导致了我在IOS上无法登录。毕竟登录google账号需要VPN,然后Tailscale如果active,就又要自己创建vpn,结果 就导致关闭了梯子的VPN,真是一个悖论。)

在电脑上使用的时候,两者差不太多,如果使用Tailscale的话,需要每个月登录一次(mac下,否则可能会token过期)。zerotier好象目前还没有遇到。

同时,zerotier可以使用moon节点加速,tailscale好象暂不行,只能通过国外中转。zerotier原来有100个免费的leaf,现在降为50个了,但对普通人说,别说50个,就是10个也足够了。所以,我其实是两个混用的。以防万一哪一个挂掉。

zerotier如果不使用moon节点,速度其实和tailscale差不太多,创建moon节点并连接上后,会发现快了很多。(然而,手机版的zerotier-one不知道怎么启用moon节点)

----如何创建moon节点?网上有很多例子,我是参考的这一篇:zerotier自建moon教程 - 方舟基地 (wnark.com)。如果要看详细的,请直接移步链接。

我取了其中的几个简化的步骤:

XML/HTML代码
  1. 找个好一点的机器 :  
  2. cd /var/lib/zerotier-one  
  3. 生成moon.json模板  
  4. zerotier-idtool initmoon identity.public > moon.json   
  5.   
  6. 修改moon.json模板  
  7. 要记住id之后加入moon服务器全靠他。检查 "id"是否为你vps的10为字符id,可在zerotier网页管理端查看,如果不是说明上一步配置有误。  
  8. vi 编辑 moon.json,修改 “stableEndpoints” 为 VPS 的公网的 IP,以 IPv4 为例,记得带引号:  
  9.   
  10. "stableEndpoints": [ "8.8.8.8/9993" ]  
  11. 生成签名文件  
  12. 用到上一步中的 moon.json, 执行  
  13.   
  14. zerotier-idtool genmoon moon.json  
  15. 执行之后生成 000000xxxx.moon 文件。  
  16.   
  17. 将 moon 节点加入网络  
  18. 在 VPS 的 Zerotier 安装目录下(/var/lib/zerotier-one)建立文件夹 moons.d,将生成的 .moon文件拷贝进去。  
  19. 重启 zerotier,重启电脑。至此,VPS 上(moon 服务器)配置完成。  
  20.   
  21. 客户机连接moon节点  
  22. 其他虚拟局域网中的机器想要连接到 moon 节点的话有两种方法。  
  23.   
  24. 第一种方法就是使用 zerotier-cli orbit 命令。  
  25. 使用之前步骤中 moon.json 文件中的 id 值 (10 位的字符串)分别在客户端机器里执行:  
  26.   
  27. zerotier-cli orbit <id> <id>  
  28. 完成(一般来说这两个id都是相同的)  
  29.   
  30. [root@idv-36f9d5 ~]# zerotier-cli orbit 3ed7c***** 3ed7c*****  
  31. 200 orbit OK  
  32. 第二种方法是需要在 /var/lib/zerotier-one 目录下新建 moons.d 文件夹和 moon 节点一样,将 000000xxxx.moon 文件放到其中,并重启 zerotier。  
直接使用Zerotier-cli orbit id id 会更方便一点。

 

Records:27512345678910»