普通视图

发现新文章,点击刷新页面。
昨天以前Xiobb's Blog
  • ✇Xiobb's Blog
  • 2024,迟来的再见,在这里xiobb
    回首这一年,发生了太多太多。或喜,或悲,时间似乎变快了很多—— 他还真的就变快了。这一年,我过得很摆烂,似乎一半的时光都是虚度的,忽然感到无尽的后悔。不过,7iNet 也取得了一些可喜的成就。从突破500用户,一路到年底突破1400+,逐渐步入正轨。这个小博客,也有了些访客,感谢屏幕前的你,默默关注着我。去年年初有篇文章,好像一直忘了发,那就尘封在那边吧,也许多年后的一天能被我再次发现。他也有令人难忘的时刻,比如年初,温州迎来了十几年以来比较大的一场雪。再看即将度过1/12的2025,还未见一滴雨。希望新的一年,自己不能像去年那么颓废,心想事成,事事顺心—— 但这显然不可能。在此,为2024年画上一个 圆满的 句号。二零二五年一月十八日夜。
     

2024,迟来的再见,在这里

作者 xiobb
2025年1月18日 23:22

回首这一年,
发生了太多太多。
或喜,或悲,
时间似乎
变快了很多
—— 他还真的就变快了。

这一年,
我过得很摆烂,
似乎一半的时光都是虚度的,
忽然感到无尽的后悔。

不过,
7iNet 也取得了一些可喜的成就。
从突破500用户,
一路到年底突破1400+,
逐渐步入正轨。

这个小博客,
也有了些访客,
感谢屏幕前的你,
默默关注着我。

去年年初有篇文章,
好像一直忘了发,
那就尘封在那边吧,
也许多年后的一天能被我再次发现。

他也有令人难忘的时刻,
比如年初,
温州迎来了十几年以来
比较大的一场雪。
再看即将度过1/12的2025,
还未见一滴雨。

希望新的一年,
自己不能像去年那么颓废,
心想事成,事事顺心
—— 但这显然不可能。

在此,
为2024年
画上一个 圆满的 句号。

二零二五年一月十八日夜。

  • ✇Xiobb's Blog
  • 表炸了,怎么办?——记一次Virtualizor主控to_master表损坏xiobb
    多灾多难的美国灵车,多灾多难的7iNet😂这次处理了差不多一个小时,剪贴板太多东西了,当时截的图都没有了. 下面配图会很少,有也是聊天记录里面复制出来的,见谅~事先声明:这张表对于系统运行来说,我认为关系不大,所以最后是通过重建方式恢复的. 剧透一下,MYI文件整个丢了,也许把MYD文件复制回去能够恢复数据(?),反正我没试.在没有日志和备份的情况下成功!1 发现问题灵车日常cpu起飞,按照惯例,我准备强制重启进入系统查占用,封机,一气呵成。结果,这次出了点意外。登录Virtualizor时,我得到了一个报错:Could not make the Query. SELECT * FROM to_master Array ( [0] => HY000 [1] => 1017 [2] => Can't find file: 'to_master' (errno: 2) )灾难,开始了。2 分析问题进入/usr/local/emps/var/mysql/virtualizor目录下,观察到to_master表异常:可以看到to_master没有和其他
     

表炸了,怎么办?——记一次Virtualizor主控to_master表损坏

作者 xiobb
2024年12月27日 20:34

多灾多难的美国灵车,多灾多难的7iNet😂
这次处理了差不多一个小时,剪贴板太多东西了,当时截的图都没有了. 下面配图会很少,有也是聊天记录里面复制出来的,见谅~
事先声明:这张表对于系统运行来说,我认为关系不大,所以最后是通过重建方式恢复的. 剧透一下,MYI文件整个丢了,也许把MYD文件复制回去能够恢复数据(?),反正我没试.
在没有日志和备份的情况下成功!

1 发现问题

灵车日常cpu起飞,按照惯例,我准备强制重启进入系统查占用,封机,一气呵成。
结果,这次出了点意外。登录Virtualizor时,我得到了一个报错:

Could not make the Query.
SELECT * FROM to_master
Array
(
    [0] => HY000
    [1] => 1017
    [2] => Can't find file: 'to_master' (errno: 2)
)

灾难,开始了。

2 分析问题

进入/usr/local/emps/var/mysql/virtualizor目录下,观察到to_master表异常:
9d667c169606c88bcf62c26eb44bb658
可以看到to_master没有和其他表一样有MYI索引文件,MYD文件结尾多了一个_19cb. 想必它发生了什么,但是我看不懂
不管了,硬着头皮上!

3 解决问题

① 命令行REPAIR TABLE,失败

什么情况?遇事不决,ctrl+a,拖出去bing一下!
搜到了一篇相关的文章:https://mellowhost.com/blog/could-not-make-the-query-virtualizor-error.html#:~:text=To%20solve%20this%2C%20we%20need%20to%20repair%20the,repair%20the%20table%3A%20Now%20the%20virtualizor%20shall%20work.
报错不一样,抱着试试的心态,我尝试进命令行repair了一下,不出意外,不行。

这里有一点,获取数据库密码的方式在这篇文章里有:

grep dbpass /usr/local/virtualizor/universal.php

记住他,待会要考.

② 官方文档repair database工具,失败

文档地址:https://www.virtualizor.com/docs/admin/repair-database/.
对于目前的情况来说,无效。不过在提前备份数据(mysqldump导出sql文件)时,他抛出了其他报错:task表同样出现了一些问题. 不过好消息是,这张表通过方法一成功解决了.

③ 重建表,成功

摆烂,只要能恢复服务,不择手段. 首先,我们需要找到安装的sql文件. 找这玩意花了我好长时间... virtualizor的安装程序install.php是ioncube加密的,我也不知道怎么解.
通过下载安装脚本(http://files.virtualizor.com/install.sh),找到服务器上的安装日志文件,幸运的是没有自动删除.
image
在日志文件中不断搜索,就能找到virtualizor本体的压缩包,(话说我当时在那边研究emps.tar.gz😂真是傻啊),里面就能找到virtualizor.sql了.
定位到to_master处,得到建表语句:
image

CREATE TABLE `to_master` (
  `tables` varchar(100) NOT NULL DEFAULT '',
  `columns` varchar(100) NOT NULL DEFAULT '',
  `id` varchar(32) NOT NULL DEFAULT '0',
  `unique_column` varchar(100) NOT NULL DEFAULT '',
  `value` MEDIUMTEXT,
  UNIQUE KEY `tables` (`tables`,`columns`,`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

先到/usr/local/emps/var/mysql/virtualizor目录下,把to_master有关的文件删除掉: rm to_master*
进入命令行,把表drop掉后执行建表语句.

尝试登录virtualizor后台,发现成功登录,事件告一段落.
关于方法三中提到的zip文件和sql文件,下载地址:https://drive.imxb.de/Blog-Resources/241227-%E8%A1%A8%E7%82%B8%E4%BA%86%EF%BC%8C%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F%E2%80%94%E2%80%94%E8%AE%B0%E4%B8%80%E6%AC%A1Virtualizor%E4%B8%BB%E6%8E%A7to_master%E8%A1%A8%E6%8D%9F%E5%9D%8F%E4%BF%AE%E5%A4%8D

  • ✇Xiobb's Blog
  • 换妈生boot计划——记一次iKuai引导分区丢失xiobb
    1 什么事?起初,没有人意识到这是一场灾难 一个客户突然在群里问 黑龙江(出问题的区域)怎么了?我当时以为没啥事 甚至还来了一句 “你自己机子炸了 别上来就整个区”.... 还好多看了一眼,发现ikuai虚拟机uptime不对。连接到机器内发现,这是什么,我引导呢????? 2 排查问题刚开始我也不知道什么问题,上网随便搜了一篇文章,复制一份vhdx,开工!先ls看了看有什么分区,结果找遍了都没找到/boot/grub.死马当活马医了,上winpe看看,指望dg能给我读出ext分区来. 果然,dg没有让我失望!打开找了找,数据都还在,不过还是没看到boot. 不过有两个“未格式化”的分区引起了我的注意!好在服务器上有好几份其他项目的ikuai,随便挂载了一个看看,果不其然在分区0中发现了boot文件夹。还我妈生boot分区!!!接下来,就是尝试解决了.3 解决问题① 克隆boot至原盘,失败先将能用的ikuai中的boot分区,通过克隆分区功能直接克隆至原先的磁盘,尝试引导. 系统选单出来了,就这么简单地成功了..... 吗?——事情没有这么简单!等了一会之后,加载网卡驱动之前,系统自
     

换妈生boot计划——记一次iKuai引导分区丢失

作者 xiobb
2024年12月26日 22:52

1 什么事?

起初,没有人意识到这是一场灾难 一个客户突然在群里问 黑龙江(出问题的区域)怎么了?
image
我当时以为没啥事 甚至还来了一句 “你自己机子炸了 别上来就整个区”.... 还好多看了一眼,发现ikuai虚拟机uptime不对。
连接到机器内发现,这是什么,我引导呢?????
image

2 排查问题

刚开始我也不知道什么问题,上网随便搜了一篇文章,复制一份vhdx,开工!先ls看了看有什么分区,结果找遍了都没找到/boot/grub.
死马当活马医了,上winpe看看,指望dg能给我读出ext分区来. 果然,dg没有让我失望!打开找了找,数据都还在,不过还是没看到boot. 不过有两个“未格式化”的分区引起了我的注意!
fff0cbd87cf8a6acde15c62ff485929c
好在服务器上有好几份其他项目的ikuai,随便挂载了一个看看,果不其然在分区0中发现了boot文件夹。还我妈生boot分区!!!
接下来,就是尝试解决了.

3 解决问题

① 克隆boot至原盘,失败

9a5713385f39e1512bab47409b990f57
先将能用的ikuai中的boot分区,通过克隆分区功能直接克隆至原先的磁盘,尝试引导. 系统选单出来了,就这么简单地成功了..... 吗?
——事情没有这么简单!

等了一会之后,加载网卡驱动之前,系统自动重启了. 看来这个方法是不奏效了.

② BOOTICE重建GRUB引导,失败

我不知道我当时在想什么,这明显不可行啊.
23e28541b18ba64aa433a2de636f22de

③ 克隆数据分区至可用系统,成功

既然换boot不可行,那就反过来试试,没想到就这么成功了!
有两个分区,都是带数据的. 一个是主分区2,一个是扩展分区下面的逻辑分区4,都需要克隆.
克隆完成后,重启,成功引导,数据全在,完美解决.

另外...

解决此问题共花费31分钟.
同样是事后回顾,随便写写水一水,毕竟上次更新是8月了.

  • ✇Xiobb's Blog
  • 在IPv6 Only的VPS上安装PVE8xiobb
    1. 为什么这么做?“本站目前所在的网站服务器机房网络十分有九分的不稳定、性能长期过剩,且发生过硬盘损坏事件。出于成本、安全和稳定性等方面的考虑,我们正在对网站服务器迁移至新的服务器。”↑ 这是马上就要出现的迁移维护提示页面中的第一句话。翻译就是 我没钱了,我要换服务器 于是买了一台100多年付的IPv6 Only 堪萨斯垃圾场的机器。(为什么还不迁移?原因是正在进行稳定性测试,跑了两个VM和两个CT,环境大概好了,但是堪萨斯回国挺差的,需要找一台v4机器转发过去(正好cdn对v6回源支持一半)。ipv4转发问题还没处理好。)24.8.19 ↑ 又换了,那台机子有点卡,不是很接受那个速度()为什么装pve?不想直接装上amh和网站环境,方便我整其他活。好了好了,话题扯远了,回到正题。这台机子装pve我折腾了很久,因为网卡没有ipv4地址,很多脚本都不能用,如下:我试过一键虚拟化项目的pve安装脚本,可惜没有对ipv6 only进行适配,使用他提供的任何一个脚本都会导致机器断网。DD系统,使用5k哥的脚本1keydd的devdeskos(我印象里基于pve)模板,不行,脚本不知道为什么半
     

在IPv6 Only的VPS上安装PVE8

作者 xiobb
2024年8月11日 21:26

1. 为什么这么做?

“本站目前所在的网站服务器机房网络十分有九分的不稳定、性能长期过剩,且发生过硬盘损坏事件。出于成本、安全和稳定性等方面的考虑,我们正在对网站服务器迁移至新的服务器。”

↑ 这是马上就要出现的迁移维护提示页面中的第一句话。翻译就是 我没钱了,我要换服务器 于是买了一台100多年付的IPv6 Only 堪萨斯垃圾场的机器。(为什么还不迁移?原因是正在进行稳定性测试,跑了两个VM和两个CT,环境大概好了,但是堪萨斯回国挺差的,需要找一台v4机器转发过去(正好cdn对v6回源支持一半)。ipv4转发问题还没处理好。)

24.8.19 ↑ 又换了,那台机子有点卡,不是很接受那个速度()

为什么装pve?不想直接装上amh和网站环境,方便我整其他活。

好了好了,话题扯远了,回到正题。这台机子装pve我折腾了很久,因为网卡没有ipv4地址,很多脚本都不能用,如下:

我试过一键虚拟化项目的pve安装脚本,可惜没有对ipv6 only进行适配,使用他提供的任何一个脚本都会导致机器断网。

DD系统,使用5k哥的脚本1keydd的devdeskos(我印象里基于pve)模板,不行,脚本不知道为什么半天没动静。

官方文档是只有英文版的,啃起来说难倒是不难,但是整合了一下自己踩过的坑和nat网络配置,希望能帮到我自己,还有正在读文章的你。

2. 准备

  • 一台IPv6 Only的VPS
  • Debian 12系统
  • 学习 vim 编辑器的基本用法
  • 脑子、手

下文中ipv6地址均使用 [::1] 举例,操作时记得换成自己真实的ipv6地址,一般都是网卡上的。

安装一些必要的组件:

apt update
apt install vim wget sudo -y

3. 安装

设置主机名、Hosts

设置主机名

下面主机名以 mypve 为例,你想设置什么就设成什么。首先设置一下主机名:

hostnamectl set-hostname mypve

设置hosts

编辑hosts vi /etc/hosts,在最后添加这一行内容:

::1   mypve.proxmox.com mypve

安装pve

添加pve官方源并更新

# 添加源
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg 

# 更新
apt update && apt full-upgrade

安装pve内核

apt install proxmox-default-kernel -y
systemctl reboot

安装pve包

apt install proxmox-ve postfix open-iscsi chrony -y

Note:

  • 在此期间,会出现Postfix的配置页面,选择Local Only
  • Postfix还会出现配置邮箱域名,下面就是你的主机名+.proxmox.com,比如mypve.proxmox.com,直接OK就完事了。

精简优化

稍稍优化一下PVE的占用。

删除Debian内核

apt remove linux-image-amd64 'linux-image-6.1*' -y
update-grub

删除软件包

如果不是双系统,那么可以直接删除os-prober软件包。

apt remove os-prober -y

服务精简

单节点pve,用不着的服务,统统关掉!这里不多解释了,参考了下面参考文章里的第二个文章,那边有一些解释。

systemctl stop pve-ha-lrm.service 
systemctl stop pve-ha-crm.service 
systemctl disable pve-ha-lrm.service 
systemctl disable pve-ha-crm.service
systemctl stop pvescheduler.service
systemctl disable pvescheduler.service
systemctl stop spiceproxy.service 
systemctl disable spiceproxy.service

定时删除内存缓存

同上。

TEMP_CRON=$(mktemp)
sudo crontab -l > $TEMP_CRON
echo "*/5 * * * * echo 1 > /proc/sys/vm/drop_caches" >> $TEMP_CRON
echo "*/5 * * * * sleep 60; echo 2 > /proc/sys/vm/drop_caches" >> $TEMP_CRON
echo "*/5 * * * * sleep 120; echo 3 > /proc/sys/vm/drop_caches" >> $TEMP_CRON
echo "*/5 * * * * sleep 180; fstrim -av" >> $TEMP_CRON
sudo crontab $TEMP_CRON
rm $TEMP_CRON

其他配置

开启BBR

cat >>/etc/sysctl.conf << EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

sysctl -p

修改描述符限制

echo 'fs.file-max = 65535' >> /etc/sysctl.conf
echo '* soft nofile 65535' >> /etc/security/limits.conf
echo '* hard nofile 65535' >> /etc/security/limits.conf
echo 'ulimit -SHn 65535' >> /etc/profile

接下来,最好reboot重启一下,继续下面的操作。

4. 配置NAT网络

配置网络

注: 网卡配置只有桥接eth0(如果有多个v6 可以用vmbr0来配置ipv6公网 ,然后内网nat warp v4出口) 我这台机器没有多个ipv6,ipv6 nat也没啥意义,就没有整。

开启v4、v6转发

编辑/etc/modprobe.d/local.confvi /etc/modprobe.d/local.conf,添加或修改这一行内容:

options ipv6 disable=0

编辑/etc/modulesvi /etc/modules,添加如下内容(对的,就一个ipv6):

ipv6

接着通过ip a看一下ip在哪个网卡上,一般都是eth0,下面就拿eth0举例了。如果不是eth0,下面的eth0(8、9行)全部换成你的网卡名称。

编辑/etc/sysctl.confvi /etc/sysctl.conf,添加如下内容到文档底部:

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv6.conf.eth0.autoconf=0
net.ipv6.conf.eth0.accept_ra=2
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.proxy_ndp=1
net.ipv6.conf.all.proxy_ndp=1

编辑网卡配置

下面是重点,必须三思而后行,稍有失误就有很大可能导致机器断网。

建议先备份一次原先的网卡配置,如果炸了进vnc还原后再进行操作就可以了:cp /etc/network/interfaces /etc/network/interfaces.bak

网卡配置文件所在位置从上面你应该就看出来了:/etc/network/interfaces

懒了,自行对比一下内容吧:

我的原先配置如下:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet6 static
        accept_ra 0
        address 2604:abc0:XXXX:XXXX:0000:0000:XXXX:XXXX
        netmask 64


post-up /sbin/ip -r route add 2604:abc0:XXX:XXX::X dev eth0
post-up /sbin/ip -r route add default via 2604:abc0:XXX:XXX::X

编辑后:

# The loopback network interface
auto lo
iface lo inet loopback
iface eth0 inet manual
auto vmbr0
iface vmbr0 inet6 static
        accept_ra 0
        address 2604:abc0:XXXX:XXXX:0000:0000:XXXX:XXXX
        netmask 64
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
auto vmbr1
iface vmbr1 inet static
        address  10.10.10.1/24
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -j MASQUERADE

post-up /sbin/ip -r route add 2604:abc0:XXX:XXX::X dev eth0
post-up /sbin/ip -r route add default via 2604:abc0:XXX:XXX::X

编辑完成后,执行下面命令锁定文件,pve8会将其覆盖!

chattr +i /etc/network/interfaces

重启机器,能联网,就是完工了。

开小鸡的时候,选择STATIC(静态ip),ip填10.10.10.XX/24,网关10.10.10.1就可以了,小鸡和母鸡通信理所应当就是10.10.10.1。

安装Warp

由于我的vps只有ipv6网络,无法访问ipv4网络,故配置完网卡后安装一下warp,提供v4网络连接。

我使用的是fscarmen的脚本:

wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh

选择添加IPv4出口,我用的是warp+,这篇文章主要讲pve,就不多说了,配置起来很简单的。

结束,pve的安装和配置至此已经完成。说实话我刚刚好像忘了些什么,但是往上翻了一下翻回来又不知道什么忘掉了,重新看了一下都差不多了,就这样吧。第二天更新:想起来要给网络配置加只读权限了。

pve是前天装好的,全靠回忆,因此没有截图,不过印象还是挺深的。

5. 参考文章

  • ✇Xiobb's Blog
  • Apache+PHP完美性能调优笔记xiobb
    为了追求极致的网站速度,但是又由于环境受限,我无法使用OpenLightSpeed、Nginx等web服务器替代Apache,因此只能在现有环境下想想怎么才能优化。注:本文仅作笔记,可能结构比较乱,望各位理解。1 未提到的Google PageSpeed: 已专门写过文章: https://www.imxb.de/new_archives/27.shtml。Varnish: AMH自带,因为我有其他中转服务,更改一下上游端口即可直接经过Varnish缓存服务。APCu: AMH自带,直接安装即可。PHP插件 OPCache:PHP8(我使用php8.3)开始支持JIT加速。PHP.ini:分配内存等配置项全部翻倍,超时时间给长一些这些是在写文章就已经做好的了,并且没多大记下来的必要(操作比较简单),便一笔带过。我使用的是AMH面板,配置目录在/usr/local/apache-2.4/conf。2 MPM配置提升多处理模块默认给的配置较低,也许是年代比较久,对于目前的服务器配置性能往往是过剩的。MPM配置文件在conf/extra/httpd-mpm.conf中,首先对其进行备份。只需
     

Apache+PHP完美性能调优笔记

作者 xiobb
2024年6月21日 16:48

为了追求极致的网站速度,但是又由于环境受限,我无法使用OpenLightSpeed、Nginx等web服务器替代Apache,因此只能在现有环境下想想怎么才能优化。注:本文仅作笔记,可能结构比较乱,望各位理解。

1 未提到的

  1. Google PageSpeed: 已专门写过文章: https://www.imxb.de/new_archives/27.shtml
  2. Varnish: AMH自带,因为我有其他中转服务,更改一下上游端口即可直接经过Varnish缓存服务。
  3. APCu: AMH自带,直接安装即可。
  4. PHP插件 OPCache:PHP8(我使用php8.3)开始支持JIT加速。
  5. PHP.ini:分配内存等配置项全部翻倍,超时时间给长一些

这些是在写文章就已经做好的了,并且没多大记下来的必要(操作比较简单),便一笔带过。

我使用的是AMH面板,配置目录在/usr/local/apache-2.4/conf

2 MPM配置提升

多处理模块默认给的配置较低,也许是年代比较久,对于目前的服务器配置性能往往是过剩的。

MPM配置文件在conf/extra/httpd-mpm.conf中,首先对其进行备份。

只需修改三处配置,其他的都是别的系统(如WinNT OS/2 NetWare)的,我的Linux服务器用不到这些,当然你可以删除,我这里以防万一就不删了。下面给出我的原始配置文件:

#
# Server-Pool Management (MPM specific)
# 

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
# Note that this is the default PidFile for most MPMs.
#
<IfModule !mpm_netware_module>
    PidFile "logs/httpd.pid"
</IfModule>

#
# Only one of the below sections will be relevant on your
# installed httpd.  Use "apachectl -l" to find out the
# active mpm.
#

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_worker_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250 
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>

# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_event_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>

# NetWare MPM
# ThreadStackSize: Stack size allocated for each worker thread
# StartThreads: Number of worker threads launched at server startup
# MinSpareThreads: Minimum number of idle threads, to handle request spikes
# MaxSpareThreads: Maximum number of idle threads
# MaxThreads: Maximum number of worker threads alive at the same time
# MaxConnectionsPerChild: Maximum  number of connections a thread serves. It
#                         is recommended that the default value of 0 be set
#                         for this directive on NetWare.  This will allow the
#                         thread to continue to service requests indefinitely.
<IfModule mpm_netware_module>
    ThreadStackSize      65536
    StartThreads           250
    MinSpareThreads         25
    MaxSpareThreads        250
    MaxThreads            1000
    MaxConnectionsPerChild   0
</IfModule>

# OS/2 MPM
# StartServers: Number of server processes to maintain
# MinSpareThreads: Minimum number of idle threads per process, 
#                  to handle request spikes
# MaxSpareThreads: Maximum number of idle threads per process
# MaxConnectionsPerChild: Maximum number of connections per server process
<IfModule mpm_mpmt_os2_module>
    StartServers             2
    MinSpareThreads          5
    MaxSpareThreads         10
    MaxConnectionsPerChild   0
</IfModule>

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxConnectionsPerChild: maximum number of connections a server process serves
<IfModule mpm_winnt_module>
    ThreadsPerChild        150
    MaxConnectionsPerChild   0
</IfModule>

# The maximum number of free Kbytes that every allocator is allowed
# to hold without calling free(). In threaded MPMs, every thread has its own
# allocator. When not set, or when set to zero, the threshold will be set to
# unlimited.
<IfModule !mpm_netware_module>
    MaxMemFree            2048
</IfModule>
<IfModule mpm_netware_module>
    MaxMemFree             100
</IfModule>

这是修改后的,给StartServers之类的配置全部提升了:

#
# Server-Pool Management (MPM specific)
# 

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
# Note that this is the default PidFile for most MPMs.
#
<IfModule !mpm_netware_module>
    PidFile "logs/httpd.pid"
</IfModule>

#
# Only one of the below sections will be relevant on your
# installed httpd.  Use "apachectl -l" to find out the
# active mpm.
#

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_prefork_module>
    StartServers             50
    MinSpareServers          15
    MaxSpareServers         30
    MaxRequestWorkers      250
    MaxConnectionsPerChild   4000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_worker_module>
    StartServers             30
    MinSpareThreads         85
    MaxSpareThreads        300 
    ThreadsPerChild         30
    MaxRequestWorkers      500
    MaxConnectionsPerChild   2000
</IfModule>

# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_event_module>
    StartServers             30
    MinSpareThreads         85
    MaxSpareThreads        300
    ThreadsPerChild         30
    MaxRequestWorkers      500
    MaxConnectionsPerChild   2000
</IfModule>

# NetWare MPM
# ThreadStackSize: Stack size allocated for each worker thread
# StartThreads: Number of worker threads launched at server startup
# MinSpareThreads: Minimum number of idle threads, to handle request spikes
# MaxSpareThreads: Maximum number of idle threads
# MaxThreads: Maximum number of worker threads alive at the same time
# MaxConnectionsPerChild: Maximum  number of connections a thread serves. It
#                         is recommended that the default value of 0 be set
#                         for this directive on NetWare.  This will allow the
#                         thread to continue to service requests indefinitely.
<IfModule mpm_netware_module>
    ThreadStackSize      65536
    StartThreads           250
    MinSpareThreads         25
    MaxSpareThreads        250
    MaxThreads            1000
    MaxConnectionsPerChild   0
</IfModule>

# OS/2 MPM
# StartServers: Number of server processes to maintain
# MinSpareThreads: Minimum number of idle threads per process, 
#                  to handle request spikes
# MaxSpareThreads: Maximum number of idle threads per process
# MaxConnectionsPerChild: Maximum number of connections per server process
<IfModule mpm_mpmt_os2_module>
    StartServers             2
    MinSpareThreads          5
    MaxSpareThreads         10
    MaxConnectionsPerChild   0
</IfModule>

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxConnectionsPerChild: maximum number of connections a server process serves
<IfModule mpm_winnt_module>
    ThreadsPerChild        150
    MaxConnectionsPerChild   0
</IfModule>

# The maximum number of free Kbytes that every allocator is allowed
# to hold without calling free(). In threaded MPMs, every thread has its own
# allocator. When not set, or when set to zero, the threshold will be set to
# unlimited.
<IfModule !mpm_netware_module>
    MaxMemFree            2048
</IfModule>
<IfModule mpm_netware_module>
    MaxMemFree             100
</IfModule>

保存,前往面板重启Web服务。理论上,目前Apache的并发性能应该提升了一个档次。

性能测试

此处使用apache benchmark进行测试。

在进行1、2节优化后

image-20240621164327445

已经差不多利用了服务器的全部性能了(12核cpu),进行测试由于提供的数值太大,耗时太长,后面还是取消了,不知这样是否有参考价值,以后会注意一些(第一次用这玩意测嘛)

image-20240621164601839

总之,这一个小站,自己访问下来,速度不错,也懒得管那么多了,就这样吧。

优化还是得有的,生活在于折腾~ 以后慢慢更新啦~

  • ✇Xiobb's Blog
  • 给AMH环境中的Apache安装Google PageSpeedxiobb
    前言在OpenLightSpeed的官网中,有这么一张与Nginx、Apache对比的图片:由于已经习惯使用Apache的.htaccess来编写伪静态,Nginx实在是不适合我。AMH也没对OpenLightSpeed做适配。于是我就在想,能不能把Apache的性能优化到极致呢?上网搜索,整理如下:安装前往https://www.modpagespeed.com/doc/download,复制对应系统链接。我使用的是Debian12,下载mod_pagespeed 64-bit .deb (Debian/Ubuntu)。在电脑上使用7-zip解包,在data.tar.\usr\lib\apache2\modules\中可以看到两个so,我使用的是Apache 2.4.59,将mod_pagespeed_ap24.so复制出来。打开sftp窗口,定位到/usr/local/apache-2.4目录,这里存放着Apache的所有文件。将提取的mod_pagespeed_ap24.so复制到modules文件夹内。接着打开conf目录,新建一个pagespeed.conf文件,写入内容Lo
     

给AMH环境中的Apache安装Google PageSpeed

作者 xiobb
2024年6月15日 11:01

前言

在OpenLightSpeed的官网中,有这么一张与Nginx、Apache对比的图片:

5b85e17a366979e42fb333380e324b0a

由于已经习惯使用Apache的.htaccess来编写伪静态,Nginx实在是不适合我。AMH也没对OpenLightSpeed做适配。

于是我就在想,能不能把Apache的性能优化到极致呢?

上网搜索,整理如下:

安装

前往https://www.modpagespeed.com/doc/download,复制对应系统链接。我使用的是Debian12,下载mod_pagespeed 64-bit .deb (Debian/Ubuntu)。

在电脑上使用7-zip解包,在data.tar.\usr\lib\apache2\modules\中可以看到两个so,我使用的是Apache 2.4.59,将mod_pagespeed_ap24.so复制出来。

打开sftp窗口,定位到/usr/local/apache-2.4目录,这里存放着Apache的所有文件。

将提取的mod_pagespeed_ap24.so复制到modules文件夹内。

接着打开conf目录,新建一个pagespeed.conf文件,写入内容

LoadModule pagespeed_module /usr/local/apache-2.4/modules/mod_pagespeed_ap24.so
<IfModule pagespeed_module>
    ModPagespeed on
    ModPagespeedInheritVHostConfig on
    AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
    ModPagespeedFileCachePath            "/var/cache/mod_pagespeed/"
    ModPagespeedFileCacheInodeLimit        500000
    ModPagespeedAvoidRenamingIntrospectiveJavascript on
    ModPagespeedEnableFilters collapse_whitespace
    <Location /mod_pagespeed_beacon>
          SetHandler mod_pagespeed_beacon
    </Location>
    <Location /mod_pagespeed_statistics>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler mod_pagespeed_statistics
    </Location>
    ModPagespeedMessageBufferSize 100000

    <Location /mod_pagespeed_message>
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler mod_pagespeed_message
    </Location>
</IfModule>

4053693753adceb1f678f8ef0c181a72

接下来需要更改httpd.conf,建议先做个备份。

在httpd中添加对pagespeed.conf的引用,保存文件,在AMH面板中重启环境Apache。

92ea09541dffaa5feabeb83c175ca1b9

bfeb64058fdd83fd79f885f32288548f

打开网站,发现可以识别到PageSpeed插件,并且出现相关header头(部分页面可能不会显示,也许是没经过PageSpeed处理),即为安装成功。

02f239c7572665d9e17aefb6a394bb79

至此,PageSpeed安装完毕。

  • ✇Xiobb's Blog
  • 免费、低价SSL整理xiobb
    近日,萌咖停止出售30块钱的AlphaSSL野卡,故整理一下免费、收费的SSL。直接用Excel了,挺方便的(免费付费付费便宜的少之又少了,没有必要做表格,费劲。目前最便宜的是腾讯的WoTrus(ecc签Sectigo),一年通配符,用券89,不用券99。原帖地址:https://hostloc.com/thread-1313138-1-1.html
     

免费、低价SSL整理

作者 xiobb
2024年6月8日 21:25

近日,萌咖停止出售30块钱的AlphaSSL野卡,故整理一下免费、收费的SSL。

直接用Excel了,挺方便的(

免费

0f84b1041d55a7da787588b10435530a

付费

付费便宜的少之又少了,没有必要做表格,费劲。

目前最便宜的是腾讯的WoTrus(ecc签Sectigo),一年通配符,用券89,不用券99。原帖地址:https://hostloc.com/thread-1313138-1-1.html

  • ✇Xiobb's Blog
  • 水星无线网卡驱动无法安装的解决办法xiobb
    1 正文这台笔记本,每年总有几个月会时不时断网,实在是难受。每到这种时候,我都会选择拿出usb无线网卡。这东西已经近一年没拿出来用过了,驱动也还没装。当时重装使用的是windows10不忘初心的精简版,不知道阉割了什么,直接打开安装程序会出现报错,无法继续安装。但是我并没有安装过它啊?于是我便上网搜了一下,找到了一个“歪门邪道”的解决办法。右击Setupinstall.exe,点开Properties,切换到Compatibility选项卡,点击Run compatibility troubleshooter。出现Select troubleshooting option,选择Try recommend settings。系统自动选择了Windows 8的兼容性,反正是成功安装了,并能正常使用。说实话,真的很离谱。。完.2 题外话似乎tplink跟他用的是同一个驱动,以前装过tplink的是可以直接在这个无线网卡上用的,那个拿去给别人用了..理论上同样的问题可以用同样的解决办法。
     

水星无线网卡驱动无法安装的解决办法

作者 xiobb
2024年6月8日 09:18

1 正文

这台笔记本,每年总有几个月会时不时断网,实在是难受。每到这种时候,我都会选择拿出usb无线网卡。这东西已经近一年没拿出来用过了,驱动也还没装。

当时重装使用的是windows10不忘初心的精简版,不知道阉割了什么,直接打开安装程序会出现报错,无法继续安装。

8d488ad8220acd936d54a718b5350271

但是我并没有安装过它啊?于是我便上网搜了一下,找到了一个“歪门邪道”的解决办法。

  1. 右击Setupinstall.exe,点开Properties,切换到Compatibility选项卡,点击Run compatibility troubleshooter。

image

  1. 出现Select troubleshooting option,选择Try recommend settings。

image

系统自动选择了Windows 8的兼容性,反正是成功安装了,并能正常使用。说实话,真的很离谱。。

63d25a58f3b3fe0d0e886032b2206267

09aa506a1b81f77e7eea2b32ad72db42

完.

2 题外话

似乎tplink跟他用的是同一个驱动,以前装过tplink的是可以直接在这个无线网卡上用的,那个拿去给别人用了..

理论上同样的问题可以用同样的解决办法。

  • ✇Xiobb's Blog
  • 一次以失败告终的的雷池逆向xiobb
    起因又是一个周末,太闲了,于是我便突发奇想,想去试试自己破解一下雷池。这是一篇回忆,浏览器已经关掉了,所以大部分内容只好口述一下。声明:如有侵权,请联系我删除。1 动数据库了解各容器的用途在服务器上输入docker ps,发现存在大量容器,于是我便在官网中翻了翻,果真找到一张对应容器用途的表格。关于表格的来源地址:https://waf-ce.chaitin.cn/docs/about/framework寻找用户和密码于是,我决定对postgres下手。那么,它的用户名和密码在哪里?我没有使用过postgres,于是上网搜了搜,说是用户名是postgres,但是经测试无效(雷池可能把这个用户删除了)。为什么这么说?因为我在尝试查询密码(docker exec -it safeline-pg psql -U postgres)的时候返回了报错。于是,我在网上搜呀搜,发现了雷池的compose.yaml所在位置:/data/safeline/compose.yaml,cat一下,可以看到用户名是safeline-ce,密码存储在一个环境变量中。这个变量是在容器内的,也许是我眼睛不好,并没有
     

一次以失败告终的的雷池逆向

作者 xiobb
2024年5月25日 17:09

起因

又是一个周末,太闲了,
于是我便突发奇想,想去试试自己破解一下雷池。这是一篇回忆,浏览器已经关掉了,所以大部分内容只好口述一下。

声明:如有侵权,请联系我删除。

1 动数据库

了解各容器的用途

在服务器上输入docker ps,发现存在大量容器,于是我便在官网中翻了翻,果真找到一张对应容器用途的表格。

image

关于表格的来源地址:https://waf-ce.chaitin.cn/docs/about/framework

image

寻找用户和密码

于是,我决定对postgres下手。那么,它的用户名和密码在哪里?

我没有使用过postgres,于是上网搜了搜,说是用户名是postgres,但是经测试无效(雷池可能把这个用户删除了)。为什么这么说?因为我在尝试查询密码(docker exec -it safeline-pg psql -U postgres)的时候返回了报错。

于是,我在网上搜呀搜,发现了雷池的compose.yaml所在位置:/data/safeline/compose.yaml,cat一下,可以看到用户名是safeline-ce,密码存储在一个环境变量中。

image

这个变量是在容器内的,也许是我眼睛不好,并没有在compose.yaml中找到密码。于是,我决定通过一些“歪门邪道”的方法....

直接进入这个postgresql的容器,来获取这个变量:

docker exec -it safeline-pg sh
echo ${POSTGRES_PASSWORD}

image

当然也是十分顺利地获取到了密码。接下来,便可以使用Navicat Premium连接到5432端口的数据库了。

一些小插曲

在使用ssh隧道时,我发现转发到服务器localhost:5432并不能建立连接,经过一些搜索,发现得通过容器内网ip连接。不出意外,ip都是172.22.222.2。

ssh隧道like this:

image

我使用的是navicat premium 16,由于postgresql版本比较高,需要对一个dll文件做一个改动,否则无法连接上数据库。

下面将那篇文章地址贴上:https://blog.csdn.net/zxp3817100/article/details/134822475

我知道csdn很难用,但他确实有点用

连接成功,能做什么?

数据库中可以看到一个safeline-ce的库,里面就是雷池的所有数据。

image

我没有在里面看到什么有价值的内容,但是mgt_options表里面似乎可以看到一些关于webhook、syslog的配置,我没有测试过可不可以用,反正面板里都是需要专业版的。

mgt_website表中可以看到添加的所有网站,在这里我发现了一个好玩的东西:这里的upstreams引起了我的注意。这里的上游服务器是保存了一个array的,于是我给他加了两个上游,并刷新网站页面,发现成功。

reqdpv

虽然第二个上游是disabled状态,但是确实有我添加的第二个上游(81端口),并且多出一个负载调度算法。

不过这个功能对我来说用处不大,于是我决定更进一步,f12看到license->valid返回false,于是我试着能否逆向雷池主程序...

2 逆向程序

附上f12接口返回数据的图:

image

经过寻找,确定面板api大概率存在于safeline-mgt容器中的/app/mgt文件,于是我将它复制到static文件夹中,通过面板直接将他下载下来。

cp /app/mgt /app/static/mgt

下载地址即为:https://ip:port/mgt

下载下来的文件只有8M,在hexed.it打开后,发现了UPX字样,于是我猜测程序被upx压缩了,因此看不出任何有用的信息。

image

不过这也是可逆的,下面贴上命令(在Debian 12环境下操作的):

apt install upx-ucl
upx -d mgt

果真,脱壳后大小来到了将近24M。

结局

可惜,我没有程序逆向的经验,将他导入到IDA中面对着那么多的function和汇编代码,我不知所措。

a13a45f3ceaa13af49aa06db55fec996

a32531bf23682b2139bae16e25c72b18

因此,折腾到这里,实在不知道该怎么办了,遂放弃。不过,我也得到了许多经验,还是值得的。

  • ✇Xiobb's Blog
  • 对Typecho的又一次魔改:强制替换所有jsdeliver为镜像地址xiobb
    在使用Typecho时,难免会遇到有些模板或插件使用了cdn.jsdelivr.net的地址,但是这也会导致他在国内加载奇慢,甚至加载失败,影响使用体验。当然,此方法适用于几乎一切php程序,也可以用于替换gravatar等国内不方便使用的程序为镜像源。提一嘴,我前段时间自己建了一个gravatar镜像站:https://tencent.com.kg/avatar这里使用的jsdeliver镜像源是:jsd.cdn.zzko.cn。上代码前台注意⚠️原始地址的空格请注意去掉 因为我网站会自动替换掉地址index.php我将一些与文章无关的魔改删除了,因此可能看起来比较别扭。但是他能用,那就不管了。如果想知道我改了什么,可以看看其他文章。<?php /** * Typecho Blog Platform * * @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org) * @license GNU General Public License 2.0 * @version $Id:
     

对Typecho的又一次魔改:强制替换所有jsdeliver为镜像地址

作者 xiobb
2024年5月17日 22:38

在使用Typecho时,难免会遇到有些模板或插件使用了cdn.jsdelivr.net的地址,但是这也会导致他在国内加载奇慢,甚至加载失败,影响使用体验。
当然,此方法适用于几乎一切php程序,也可以用于替换gravatar等国内不方便使用的程序为镜像源。

提一嘴,我前段时间自己建了一个gravatar镜像站:https://tencent.com.kg/avatar

这里使用的jsdeliver镜像源是:jsd.cdn.zzko.cn。

上代码

前台

注意⚠️原始地址的空格请注意去掉 因为我网站会自动替换掉地址

index.php

我将一些与文章无关的魔改删除了,因此可能看起来比较别扭。但是他能用,那就不管了。
如果想知道我改了什么,可以看看其他文章。

<?php
/**
 * Typecho Blog Platform
 *
 * @copyright  Copyright (c) 2008 Typecho team (http://www.typecho.org)
 * @license    GNU General Public License 2.0
 * @version    $Id: index.php 1153 2009-07-02 10:53:22Z magike.net $
 */
// 开始加入缓冲区
ob_start();

/** 载入配置支持 */
if (!defined('__TYPECHO_ROOT_DIR__') && !@include_once 'config.inc.php') {
    file_exists('./install.php') ? header('Location: install.php') : print ('Missing Config File');
    exit;
}

/** 初始化组件 */
\Widget\Init::alloc();

/** 注册一个初始化插件 */
\Typecho\Plugin::factory('index.php')->begin();

/** 开始路由分发 */
\Typecho\Router::dispatch();

/** 注册一个结束插件 */
\Typecho\Plugin::factory('index.php')->end();

// 获取输出缓冲区的内容
$output = ob_get_contents();

// 清空缓冲
ob_end_clean();

// 压缩
$compressedOutput = compressHtml($output);

// 输出压缩后的代码
echo $compressedOutput;

function compressHtml($html)
{
    $compressedHtml = str_replace('https://cdn.jsdelivr .net/', 'https://jsd.cdn.zzko.cn/', $html);

    return $compressedHtml;
}

后台

admin/header.php

我也忘了有没有修改,看着办就是了。

<?php
if (!defined('__TYPECHO_ADMIN__')) {
    exit;
}

// 开始加入缓冲区
ob_start();

$header = '<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'normalize.css', true) . '">
<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'grid.css', true) . '">
<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'style.css', true) . '">';

/** 注册一个初始化插件 */
$header = \Typecho\Plugin::factory('admin/header.php')->header($header);

?><!DOCTYPE HTML>
<html>
    <head>
        <meta charset="<?php $options->charset(); ?>">
        <meta name="renderer" content="webkit">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title><?php _e('%s - %s - Powered by Typecho', $menu->title, $options->title); ?></title>
        <meta name="robots" content="noindex, nofollow">
        <?php echo $header; ?>
    </head>
    <body<?php if (isset($bodyClass)) {echo ' class="' . $bodyClass . '"';} ?>>

admin/footer.php

同上。

<?php if(!defined('__TYPECHO_ADMIN__')) exit; ?>
<?php \Typecho\Plugin::factory('admin/footer.php')->begin(); ?>
    </body>
</html>
<?php
/** 注册一个结束插件 */
\Typecho\Plugin::factory('admin/footer.php')->end();

// 获取输出缓冲区的内容
$output = ob_get_contents();

// 清空缓冲
ob_end_clean();

// 压缩
$compressedOutput = compressHtml($output);

// 输出压缩后的代码
echo $compressedOutput;

function compressHtml($html)
{
// 后台防止出错+数据量不大 不卡 就不压缩了,只做替换处理。
    $compressedHtml = str_replace('https://cdn.jsdelivr .net', 'https://jsd.cdn.zzko.cn/', $html);

    return $compressedHtml;
}

题外话

休息一下,回忆录暂时先不写了,无聊还是会来写几句的,但不会集中精力在这上面.

  • ✇Xiobb's Blog
  • (未完工) 回忆我与7iNetxiobb
    [scode type="lblue"]还没写完,可以等等再来看,有空就会写一写。配首上山岗,烘托一下情感(?)这首歌是我2022年在上网课期间听到的,感觉还是挺适合这篇文章的。[hplayer][Music server="netease" id="2079091006" type="song"/][/hplayer][/scode]我希望能将各种难忘的时光都记录下来,写几篇文章,添加标签“回忆录”。我知道这是一个浩大的工程,但是我希望这些走过的时光能留下足迹。另:本系列文章不允许转载,请您知晓。简要介绍 Intro相信一些朋友初来乍到,并不知道7iNet是个神马东西。它就是一个idc平台,从2018年7月1日运营到现在,从手动开通到swapidc 使用过市面上的各类idc财务系统,最后发展为自研平台,获得600+名用户的认可。它的网站是:idc.i45s.com。没错,在这个博客的域名下。但是这个博客是我的个人博客,不会过多提到这个网站。(这篇文章除外)不是夸张,只是陈述事实,可惜他不为人知。600+是网站后台数据,看看这寥寥无几的qq群人数...在这期间,我也了解了许多,因此我希
     

(未完工) 回忆我与7iNet

作者 xiobb
2024年5月9日 21:58

[scode type="lblue"]

还没写完,可以等等再来看,有空就会写一写。

配首上山岗,烘托一下情感(?)这首歌是我2022年在上网课期间听到的,感觉还是挺适合这篇文章的。

[hplayer]
[Music server="netease" id="2079091006" type="song"/]
[/hplayer]

[/scode]

我希望能将各种难忘的时光都记录下来,写几篇文章,添加标签“回忆录”。我知道这是一个浩大的工程,但是我希望这些走过的时光能留下足迹。

另:本系列文章不允许转载,请您知晓。

简要介绍 Intro

相信一些朋友初来乍到,并不知道7iNet是个神马东西。它就是一个idc平台,从2018年7月1日运营到现在,从手动开通到swapidc 使用过市面上的各类idc财务系统,最后发展为自研平台,获得600+名用户的认可。它的网站是:idc.i45s.com。
没错,在这个博客的域名下。但是这个博客是我的个人博客,不会过多提到这个网站。(这篇文章除外)
不是夸张,只是陈述事实,可惜他不为人知。
600+是网站后台数据,看看这寥寥无几的qq群人数...
7C858A4A-75C6-47D9-8E45-B95C55234E5B
在这期间,我也了解了许多,因此我希望把它们记录下来。
早期的一些记忆似乎已经模糊了,所以文章里面的一些内容可能与真实情况有所出入。

梦の开始 Founded

2018年的夏天,已经过去近6年了,但是它却是无数人无比怀念的那段时光,而且注定不凡。那时,出现了很多神作,现在也时常被人翻出来回味。

是的,7iNet 也在这期间诞生了。那是一个暑假的开始,也是我玩网络以来的一个至关重要的转折点。它给我带来了许多,也认识了很多朋友(这里有一个提到了我的!https://www.mcouo.com/19.html <-去看看)。不过也让我失去了许多,也经历了许多令人难受的事情。希望在此记录下一部分,未来还可以回味这一段曲折的时光。

事实上,很多事件我已很难再回忆起来了,实在可惜。包括当年建的QQ群,现在仅剩下寥寥几张截图了,当时也被萌城黑白处理了,现在看来,是真的黯淡无光了。

下面是原先的群的一些图片,希望可以勾起老朋友们的一点回忆~

6D3EAD31-2227-49C5-B7F6-423B5914ADFF
BCB4D4F1-B21B-4853-86A7-D323F9834E9D
98BE795F-C226-47A9-9F50-0637CB56CE86

这里图片确实有点多 后面尽量减少一些。

发展 Development

早期·积攒经验

那会,自己做IDC还是很热门的(直至现在也是),XX云、XX互联、XX数据、XXIDC,层出不穷。然而,大多也已不复存在。我似乎更多地都在感慨时间,但它确实流逝的太快了些。

不过,这并无大碍。这篇文章没有一个钉死的主题,我更希望能像与读者,也就是你,对话一样,自然,想到什么就讲什么,也算是写给自己的公开的信吧。

我从小对计算机便有很大兴趣,也便参与了进来,建立了自己的群(当初还没有网站+坏/换了手机电脑+封群,这段记忆碎片几乎无法找到任何图片了)。当初很多人以自己的网名建idc,当时我网名是yellowface,于是取名YF云。很长一段时间内,我都是使用这个名字的,直到2021年,它才被换掉。

当时,以共享虚拟主机为主,2019开始销售虚拟主机,使用vhms和swapidc作为财务平台。但是,这一时期用户数从未超过5,大多数时候还是在聊天。

这里,我也认识了许多朋友(2018~2019),但此时认识的朋友大多已无法再联系到了,消失在茫茫人海中。不知远方的你,是否读到了这篇文章,是否能够想起我?下面标题斜体文字为认识时原名,没有就说明没有变化,也有可能是失联了。

Rockings71 (老赵头laozhao)

这位是很早以前在我视频底下评论说要加qq的,也是他把我带到了qq这个网络世界里。

在此之前,我几乎没有怎么使用过qq。

他人我还是可以联系到的,但是似乎没有什么共同话题了?说实话,他似乎与“yf云”也没什么联系。但是,他确实是这段时光必不可少的一部分。没有他,就不会有今天的我,今天的这个网站。因此,在此不多赘述,以后可能会在其他相关的回忆文章中提到他。

ZDWX-Hermit-四糸乃

一位自称中国台湾的网友,他曾经让我了解到了鲶鱼CMS、鲶鱼Blog。顺带一嘴,这套程序的作者已经去世,再也无法等到更新,实在令人惋惜。这套程序我曾经也使用过一段时间,是非常好用的,但是似乎用户相比其他程序少了些。就连作者的离开,也没多少人知道。

...... 由于交往时间不长,我已经没能留下什么印象了。不过,在我的印象中一直有这么一个人。

后面,很长一段时间内,我们都没有再联系了。个人介绍的b站用户,可以搜到,无ip属地,说明已经很久没有登陆;youtube搜不到对应的用户了。我再看到他的QQ个性签名,似乎改成了“此人已死”。但是真是假,无从考证。

萌城 (长城memz)

不再过多赘述 (偷懒一下),想知道的可以去看另一视角:https://www.mcouo.com/19.html

题外话·学会建站

2019年,我终于学会了建站。当时甚至还用index.txt作为首页过,后来学会使用现成的源码搭建了,还记得我第一个搭建的正常能使用的网站是DiscuzX。
接着一段时间,我又跑去折腾博客了,也会了一点点html。FloatSheep(Hajeekn/SuperLove)也是这时候认识的。那时候,我也差不多是跟着他一起折腾博客,因此有时候使用的模板还是一样的:https://blog.hesiy.cn/posts/blogging-memories/
后面可能也会单独拿出来讲一讲。
后来,我又试着搭建了SWAPIDC VHMS WHMCS。

暂停运营

2020年至2021年初,我都没有再运营过,但是一直在群里聊天。这是休息,也是为后面的复出做足了准备。
说实话,这段时间其实在折腾博客。虽然博客是2019年开始搞的,但真正活跃的时候便是这段时间。这时,我已经大致了解如何建站了,不然怎么说为后面的复出做足了准备呢?

复出·渐有起色

2021年,我再次重拾这个项目。而这一次,我便没有暂停 (长时间的),并且有很大起色。
此时,我通过三木ccccc_(现名)认识了九尘,并且几年来一直有再联系。但是由于一些原因,现在已经不再联系,也不愿再回忆。因此,本文将不再提到他。
此时,魔方财务出现了。我花0.1买了两个授权,搭建了第一个正经的IDC平台。在此之前,我跟着九尘使用雪花idc系统第一次对接上了七星云的挂机宝。
话说回来,七星的挂机宝质量真差,现在不知道怎么样了。
但是刚开始用魔方还是没有什么人,倒是从新云群里认识了Tony666mc惨めです,用户活动平台开始从QQ转向纸飞机...
打住!在中间,有一件更重要的事情——自研之路。

自研平台的探索之路

那会写了一个第一个idc平台,十分潦草,基本就是个邮件代发功能,并且在家里云上运行。
这一份保存的非常完整,可以给各位看看截图:
image

image

接着,用户交流平台主要在纸飞机,逐渐开始有用户注册了。这段时间内,我的开发能力也提升了不少,开发出了多个版本的“MoonCloud”。我的第一个具有自动开通功能的程序也在此时出现了。不过这段时间几乎都是公益状态。

展望 Prospect

当然,人也不能一直停留在过去,回忆的差不多了,是时候想想未来了。

...

另外,本文全靠回忆,很多内容可能不太准确,还请老朋友们指出。

  • ✇Xiobb's Blog
  • 在IPv6 Only的VPS上安装PVE8xiobb
    1. 为什么这么做?“本站目前所在的网站服务器机房网络十分有九分的不稳定、性能长期过剩,且发生过硬盘损坏事件。出于成本、安全和稳定性等方面的考虑,我们正在对网站服务器迁移至新的服务器。”↑ 这是马上就要出现的迁移维护提示页面中的第一句话。翻译就是 我没钱了,我要换服务器 于是买了一台100多年付的IPv6 Only 堪萨斯垃圾场的机器。(为什么还不迁移?原因是正在进行稳定性测试,跑了两个VM和两个CT,环境大概好了,但是堪萨斯回国挺差的,需要找一台v4机器转发过去(正好cdn对v6回源支持一半)。ipv4转发问题还没处理好。)24.8.19 ↑ 又换了,那台机子有点卡,不是很接受那个速度()为什么装pve?不想直接装上amh和网站环境,方便我整其他活。好了好了,话题扯远了,回到正题。这台机子装pve我折腾了很久,因为网卡没有ipv4地址,很多脚本都不能用,如下:我试过一键虚拟化项目的pve安装脚本,可惜没有对ipv6 only进行适配,使用他提供的任何一个脚本都会导致机器断网。DD系统,使用5k哥的脚本1keydd的devdeskos(我印象里基于pve)模板,不行,脚本不知道为什么半
     

在IPv6 Only的VPS上安装PVE8

作者 xiobb
2024年8月11日 21:26

1. 为什么这么做?

“本站目前所在的网站服务器机房网络十分有九分的不稳定、性能长期过剩,且发生过硬盘损坏事件。出于成本、安全和稳定性等方面的考虑,我们正在对网站服务器迁移至新的服务器。”

↑ 这是马上就要出现的迁移维护提示页面中的第一句话。翻译就是 我没钱了,我要换服务器 于是买了一台100多年付的IPv6 Only 堪萨斯垃圾场的机器。(为什么还不迁移?原因是正在进行稳定性测试,跑了两个VM和两个CT,环境大概好了,但是堪萨斯回国挺差的,需要找一台v4机器转发过去(正好cdn对v6回源支持一半)。ipv4转发问题还没处理好。)

24.8.19 ↑ 又换了,那台机子有点卡,不是很接受那个速度()

为什么装pve?不想直接装上amh和网站环境,方便我整其他活。

好了好了,话题扯远了,回到正题。这台机子装pve我折腾了很久,因为网卡没有ipv4地址,很多脚本都不能用,如下:

我试过一键虚拟化项目的pve安装脚本,可惜没有对ipv6 only进行适配,使用他提供的任何一个脚本都会导致机器断网。

DD系统,使用5k哥的脚本1keydd的devdeskos(我印象里基于pve)模板,不行,脚本不知道为什么半天没动静。

官方文档是只有英文版的,啃起来说难倒是不难,但是整合了一下自己踩过的坑和nat网络配置,希望能帮到我自己,还有正在读文章的你。

2. 准备

  • 一台IPv6 Only的VPS
  • Debian 12系统
  • 学习 vim 编辑器的基本用法
  • 脑子、手

下文中ipv6地址均使用 [::1] 举例,操作时记得换成自己真实的ipv6地址,一般都是网卡上的。

安装一些必要的组件:

apt update
apt install vim wget sudo -y

3. 安装

设置主机名、Hosts

设置主机名

下面主机名以 mypve 为例,你想设置什么就设成什么。首先设置一下主机名:

hostnamectl set-hostname mypve

设置hosts

编辑hosts vi /etc/hosts,在最后添加这一行内容:

::1   mypve.proxmox.com mypve

安装pve

添加pve官方源并更新

# 添加源
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg 

# 更新
apt update && apt full-upgrade

安装pve内核

apt install proxmox-default-kernel -y
systemctl reboot

安装pve包

apt install proxmox-ve postfix open-iscsi chrony -y

Note:

  • 在此期间,会出现Postfix的配置页面,选择Local Only
  • Postfix还会出现配置邮箱域名,下面就是你的主机名+.proxmox.com,比如mypve.proxmox.com,直接OK就完事了。

精简优化

稍稍优化一下PVE的占用。

删除Debian内核

apt remove linux-image-amd64 'linux-image-6.1*' -y
update-grub

删除软件包

如果不是双系统,那么可以直接删除os-prober软件包。

apt remove os-prober -y

服务精简

单节点pve,用不着的服务,统统关掉!这里不多解释了,参考了下面参考文章里的第二个文章,那边有一些解释。

systemctl stop pve-ha-lrm.service 
systemctl stop pve-ha-crm.service 
systemctl disable pve-ha-lrm.service 
systemctl disable pve-ha-crm.service
systemctl stop pvescheduler.service
systemctl disable pvescheduler.service
systemctl stop spiceproxy.service 
systemctl disable spiceproxy.service

定时删除内存缓存

同上。

TEMP_CRON=$(mktemp)
sudo crontab -l > $TEMP_CRON
echo "*/5 * * * * echo 1 > /proc/sys/vm/drop_caches" >> $TEMP_CRON
echo "*/5 * * * * sleep 60; echo 2 > /proc/sys/vm/drop_caches" >> $TEMP_CRON
echo "*/5 * * * * sleep 120; echo 3 > /proc/sys/vm/drop_caches" >> $TEMP_CRON
echo "*/5 * * * * sleep 180; fstrim -av" >> $TEMP_CRON
sudo crontab $TEMP_CRON
rm $TEMP_CRON

其他配置

开启BBR

cat >>/etc/sysctl.conf << EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

sysctl -p

修改描述符限制

echo 'fs.file-max = 65535' >> /etc/sysctl.conf
echo '* soft nofile 65535' >> /etc/security/limits.conf
echo '* hard nofile 65535' >> /etc/security/limits.conf
echo 'ulimit -SHn 65535' >> /etc/profile

接下来,最好reboot重启一下,继续下面的操作。

4. 配置NAT网络

配置网络

注: 网卡配置只有桥接eth0(如果有多个v6 可以用vmbr0来配置ipv6公网 ,然后内网nat warp v4出口) 我这台机器没有多个ipv6,ipv6 nat也没啥意义,就没有整。

开启v4、v6转发

编辑/etc/modprobe.d/local.confvi /etc/modprobe.d/local.conf,添加或修改这一行内容:

options ipv6 disable=0

编辑/etc/modulesvi /etc/modules,添加如下内容(对的,就一个ipv6):

ipv6

接着通过ip a看一下ip在哪个网卡上,一般都是eth0,下面就拿eth0举例了。如果不是eth0,下面的eth0(8、9行)全部换成你的网卡名称。

编辑/etc/sysctl.confvi /etc/sysctl.conf,添加如下内容到文档底部:

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv6.conf.eth0.autoconf=0
net.ipv6.conf.eth0.accept_ra=2
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.proxy_ndp=1
net.ipv6.conf.all.proxy_ndp=1

编辑网卡配置

下面是重点,必须三思而后行,稍有失误就有很大可能导致机器断网。

建议先备份一次原先的网卡配置,如果炸了进vnc还原后再进行操作就可以了:cp /etc/network/interfaces /etc/network/interfaces.bak

网卡配置文件所在位置从上面你应该就看出来了:/etc/network/interfaces

懒了,自行对比一下内容吧:

我的原先配置如下:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet6 static
        accept_ra 0
        address 2604:abc0:XXXX:XXXX:0000:0000:XXXX:XXXX
        netmask 64


post-up /sbin/ip -r route add 2604:abc0:XXX:XXX::X dev eth0
post-up /sbin/ip -r route add default via 2604:abc0:XXX:XXX::X

编辑后:

# The loopback network interface
auto lo
iface lo inet loopback
iface eth0 inet manual
auto vmbr0
iface vmbr0 inet6 static
        accept_ra 0
        address 2604:abc0:XXXX:XXXX:0000:0000:XXXX:XXXX
        netmask 64
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
auto vmbr1
iface vmbr1 inet static
        address  10.10.10.1/24
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -j MASQUERADE

post-up /sbin/ip -r route add 2604:abc0:XXX:XXX::X dev eth0
post-up /sbin/ip -r route add default via 2604:abc0:XXX:XXX::X

编辑完成后,执行下面命令锁定文件,pve8会将其覆盖!

chattr +i /etc/network/interfaces

重启机器,能联网,就是完工了。

开小鸡的时候,选择STATIC(静态ip),ip填10.10.10.XX/24,网关10.10.10.1就可以了,小鸡和母鸡通信理所应当就是10.10.10.1。

安装Warp

由于我的vps只有ipv6网络,无法访问ipv4网络,故配置完网卡后安装一下warp,提供v4网络连接。

我使用的是fscarmen的脚本:

wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh

选择添加IPv4出口,我用的是warp+,这篇文章主要讲pve,就不多说了,配置起来很简单的。

结束,pve的安装和配置至此已经完成。说实话我刚刚好像忘了些什么,但是往上翻了一下翻回来又不知道什么忘掉了,重新看了一下都差不多了,就这样吧。第二天更新:想起来要给网络配置加只读权限了。

pve是前天装好的,全靠回忆,因此没有截图,不过印象还是挺深的。

5. 参考文章

  • ✇Xiobb's Blog
  • Apache+PHP完美性能调优笔记xiobb
    为了追求极致的网站速度,但是又由于环境受限,我无法使用OpenLightSpeed、Nginx等web服务器替代Apache,因此只能在现有环境下想想怎么才能优化。注:本文仅作笔记,可能结构比较乱,望各位理解。1 未提到的Google PageSpeed: 已专门写过文章: https://www.i45s.com/new_archives/27.shtml。Varnish: AMH自带,因为我有其他中转服务,更改一下上游端口即可直接经过Varnish缓存服务。APCu: AMH自带,直接安装即可。PHP插件 OPCache:PHP8(我使用php8.3)开始支持JIT加速。PHP.ini:分配内存等配置项全部翻倍,超时时间给长一些这些是在写文章就已经做好的了,并且没多大记下来的必要(操作比较简单),便一笔带过。我使用的是AMH面板,配置目录在/usr/local/apache-2.4/conf。2 MPM配置提升多处理模块默认给的配置较低,也许是年代比较久,对于目前的服务器配置性能往往是过剩的。MPM配置文件在conf/extra/httpd-mpm.conf中,首先对其进行备份。只
     

Apache+PHP完美性能调优笔记

作者 xiobb
2024年6月21日 16:48

为了追求极致的网站速度,但是又由于环境受限,我无法使用OpenLightSpeed、Nginx等web服务器替代Apache,因此只能在现有环境下想想怎么才能优化。注:本文仅作笔记,可能结构比较乱,望各位理解。

1 未提到的

  1. Google PageSpeed: 已专门写过文章: https://www.i45s.com/new_archives/27.shtml
  2. Varnish: AMH自带,因为我有其他中转服务,更改一下上游端口即可直接经过Varnish缓存服务。
  3. APCu: AMH自带,直接安装即可。
  4. PHP插件 OPCache:PHP8(我使用php8.3)开始支持JIT加速。
  5. PHP.ini:分配内存等配置项全部翻倍,超时时间给长一些

这些是在写文章就已经做好的了,并且没多大记下来的必要(操作比较简单),便一笔带过。

我使用的是AMH面板,配置目录在/usr/local/apache-2.4/conf

2 MPM配置提升

多处理模块默认给的配置较低,也许是年代比较久,对于目前的服务器配置性能往往是过剩的。

MPM配置文件在conf/extra/httpd-mpm.conf中,首先对其进行备份。

只需修改三处配置,其他的都是别的系统(如WinNT OS/2 NetWare)的,我的Linux服务器用不到这些,当然你可以删除,我这里以防万一就不删了。下面给出我的原始配置文件:

#
# Server-Pool Management (MPM specific)
# 

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
# Note that this is the default PidFile for most MPMs.
#
<IfModule !mpm_netware_module>
    PidFile "logs/httpd.pid"
</IfModule>

#
# Only one of the below sections will be relevant on your
# installed httpd.  Use "apachectl -l" to find out the
# active mpm.
#

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_worker_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250 
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>

# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_event_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>

# NetWare MPM
# ThreadStackSize: Stack size allocated for each worker thread
# StartThreads: Number of worker threads launched at server startup
# MinSpareThreads: Minimum number of idle threads, to handle request spikes
# MaxSpareThreads: Maximum number of idle threads
# MaxThreads: Maximum number of worker threads alive at the same time
# MaxConnectionsPerChild: Maximum  number of connections a thread serves. It
#                         is recommended that the default value of 0 be set
#                         for this directive on NetWare.  This will allow the
#                         thread to continue to service requests indefinitely.
<IfModule mpm_netware_module>
    ThreadStackSize      65536
    StartThreads           250
    MinSpareThreads         25
    MaxSpareThreads        250
    MaxThreads            1000
    MaxConnectionsPerChild   0
</IfModule>

# OS/2 MPM
# StartServers: Number of server processes to maintain
# MinSpareThreads: Minimum number of idle threads per process, 
#                  to handle request spikes
# MaxSpareThreads: Maximum number of idle threads per process
# MaxConnectionsPerChild: Maximum number of connections per server process
<IfModule mpm_mpmt_os2_module>
    StartServers             2
    MinSpareThreads          5
    MaxSpareThreads         10
    MaxConnectionsPerChild   0
</IfModule>

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxConnectionsPerChild: maximum number of connections a server process serves
<IfModule mpm_winnt_module>
    ThreadsPerChild        150
    MaxConnectionsPerChild   0
</IfModule>

# The maximum number of free Kbytes that every allocator is allowed
# to hold without calling free(). In threaded MPMs, every thread has its own
# allocator. When not set, or when set to zero, the threshold will be set to
# unlimited.
<IfModule !mpm_netware_module>
    MaxMemFree            2048
</IfModule>
<IfModule mpm_netware_module>
    MaxMemFree             100
</IfModule>

这是修改后的,给StartServers之类的配置全部提升了:

#
# Server-Pool Management (MPM specific)
# 

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
# Note that this is the default PidFile for most MPMs.
#
<IfModule !mpm_netware_module>
    PidFile "logs/httpd.pid"
</IfModule>

#
# Only one of the below sections will be relevant on your
# installed httpd.  Use "apachectl -l" to find out the
# active mpm.
#

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_prefork_module>
    StartServers             50
    MinSpareServers          15
    MaxSpareServers         30
    MaxRequestWorkers      250
    MaxConnectionsPerChild   4000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_worker_module>
    StartServers             30
    MinSpareThreads         85
    MaxSpareThreads        300 
    ThreadsPerChild         30
    MaxRequestWorkers      500
    MaxConnectionsPerChild   2000
</IfModule>

# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_event_module>
    StartServers             30
    MinSpareThreads         85
    MaxSpareThreads        300
    ThreadsPerChild         30
    MaxRequestWorkers      500
    MaxConnectionsPerChild   2000
</IfModule>

# NetWare MPM
# ThreadStackSize: Stack size allocated for each worker thread
# StartThreads: Number of worker threads launched at server startup
# MinSpareThreads: Minimum number of idle threads, to handle request spikes
# MaxSpareThreads: Maximum number of idle threads
# MaxThreads: Maximum number of worker threads alive at the same time
# MaxConnectionsPerChild: Maximum  number of connections a thread serves. It
#                         is recommended that the default value of 0 be set
#                         for this directive on NetWare.  This will allow the
#                         thread to continue to service requests indefinitely.
<IfModule mpm_netware_module>
    ThreadStackSize      65536
    StartThreads           250
    MinSpareThreads         25
    MaxSpareThreads        250
    MaxThreads            1000
    MaxConnectionsPerChild   0
</IfModule>

# OS/2 MPM
# StartServers: Number of server processes to maintain
# MinSpareThreads: Minimum number of idle threads per process, 
#                  to handle request spikes
# MaxSpareThreads: Maximum number of idle threads per process
# MaxConnectionsPerChild: Maximum number of connections per server process
<IfModule mpm_mpmt_os2_module>
    StartServers             2
    MinSpareThreads          5
    MaxSpareThreads         10
    MaxConnectionsPerChild   0
</IfModule>

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxConnectionsPerChild: maximum number of connections a server process serves
<IfModule mpm_winnt_module>
    ThreadsPerChild        150
    MaxConnectionsPerChild   0
</IfModule>

# The maximum number of free Kbytes that every allocator is allowed
# to hold without calling free(). In threaded MPMs, every thread has its own
# allocator. When not set, or when set to zero, the threshold will be set to
# unlimited.
<IfModule !mpm_netware_module>
    MaxMemFree            2048
</IfModule>
<IfModule mpm_netware_module>
    MaxMemFree             100
</IfModule>

保存,前往面板重启Web服务。理论上,目前Apache的并发性能应该提升了一个档次。

性能测试

此处使用apache benchmark进行测试。

在进行1、2节优化后

image-20240621164327445

已经差不多利用了服务器的全部性能了(12核cpu),进行测试由于提供的数值太大,耗时太长,后面还是取消了,不知这样是否有参考价值,以后会注意一些(第一次用这玩意测嘛)

image-20240621164601839

总之,这一个小站,自己访问下来,速度不错,也懒得管那么多了,就这样吧。

优化还是得有的,生活在于折腾~ 以后慢慢更新啦~

  • ✇Xiobb's Blog
  • 给AMH环境中的Apache安装Google PageSpeedxiobb
    前言在OpenLightSpeed的官网中,有这么一张与Nginx、Apache对比的图片:由于已经习惯使用Apache的.htaccess来编写伪静态,Nginx实在是不适合我。AMH也没对OpenLightSpeed做适配。于是我就在想,能不能把Apache的性能优化到极致呢?上网搜索,整理如下:安装前往https://www.modpagespeed.com/doc/download,复制对应系统链接。我使用的是Debian12,下载mod_pagespeed 64-bit .deb (Debian/Ubuntu)。在电脑上使用7-zip解包,在data.tar.\usr\lib\apache2\modules\中可以看到两个so,我使用的是Apache 2.4.59,将mod_pagespeed_ap24.so复制出来。打开sftp窗口,定位到/usr/local/apache-2.4目录,这里存放着Apache的所有文件。将提取的mod_pagespeed_ap24.so复制到modules文件夹内。接着打开conf目录,新建一个pagespeed.conf文件,写入内容Lo
     

给AMH环境中的Apache安装Google PageSpeed

作者 xiobb
2024年6月15日 11:01

前言

在OpenLightSpeed的官网中,有这么一张与Nginx、Apache对比的图片:

5b85e17a366979e42fb333380e324b0a

由于已经习惯使用Apache的.htaccess来编写伪静态,Nginx实在是不适合我。AMH也没对OpenLightSpeed做适配。

于是我就在想,能不能把Apache的性能优化到极致呢?

上网搜索,整理如下:

安装

前往https://www.modpagespeed.com/doc/download,复制对应系统链接。我使用的是Debian12,下载mod_pagespeed 64-bit .deb (Debian/Ubuntu)。

在电脑上使用7-zip解包,在data.tar.\usr\lib\apache2\modules\中可以看到两个so,我使用的是Apache 2.4.59,将mod_pagespeed_ap24.so复制出来。

打开sftp窗口,定位到/usr/local/apache-2.4目录,这里存放着Apache的所有文件。

将提取的mod_pagespeed_ap24.so复制到modules文件夹内。

接着打开conf目录,新建一个pagespeed.conf文件,写入内容

LoadModule pagespeed_module /usr/local/apache-2.4/modules/mod_pagespeed_ap24.so
<IfModule pagespeed_module>
    ModPagespeed on
    ModPagespeedInheritVHostConfig on
    AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
    ModPagespeedFileCachePath            "/var/cache/mod_pagespeed/"
    ModPagespeedFileCacheInodeLimit        500000
    ModPagespeedAvoidRenamingIntrospectiveJavascript on
    ModPagespeedEnableFilters collapse_whitespace
    <Location /mod_pagespeed_beacon>
          SetHandler mod_pagespeed_beacon
    </Location>
    <Location /mod_pagespeed_statistics>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler mod_pagespeed_statistics
    </Location>
    ModPagespeedMessageBufferSize 100000

    <Location /mod_pagespeed_message>
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler mod_pagespeed_message
    </Location>
</IfModule>

4053693753adceb1f678f8ef0c181a72

接下来需要更改httpd.conf,建议先做个备份。

在httpd中添加对pagespeed.conf的引用,保存文件,在AMH面板中重启环境Apache。

92ea09541dffaa5feabeb83c175ca1b9

bfeb64058fdd83fd79f885f32288548f

打开网站,发现可以识别到PageSpeed插件,并且出现相关header头(部分页面可能不会显示,也许是没经过PageSpeed处理),即为安装成功。

02f239c7572665d9e17aefb6a394bb79

至此,PageSpeed安装完毕。

  • ✇Xiobb's Blog
  • 免费、低价SSL整理xiobb
    近日,萌咖停止出售30块钱的AlphaSSL野卡,故整理一下免费、收费的SSL。直接用Excel了,挺方便的(免费付费付费便宜的少之又少了,没有必要做表格,费劲。目前最便宜的是腾讯的WoTrus(ecc签Sectigo),一年通配符,用券89,不用券99。原帖地址:https://hostloc.com/thread-1313138-1-1.html
     

免费、低价SSL整理

作者 xiobb
2024年6月8日 21:25

近日,萌咖停止出售30块钱的AlphaSSL野卡,故整理一下免费、收费的SSL。

直接用Excel了,挺方便的(

免费

0f84b1041d55a7da787588b10435530a

付费

付费便宜的少之又少了,没有必要做表格,费劲。

目前最便宜的是腾讯的WoTrus(ecc签Sectigo),一年通配符,用券89,不用券99。原帖地址:https://hostloc.com/thread-1313138-1-1.html

  • ✇Xiobb's Blog
  • 水星无线网卡驱动无法安装的解决办法xiobb
    1 正文这台笔记本,每年总有几个月会时不时断网,实在是难受。每到这种时候,我都会选择拿出usb无线网卡。这东西已经近一年没拿出来用过了,驱动也还没装。当时重装使用的是windows10不忘初心的精简版,不知道阉割了什么,直接打开安装程序会出现报错,无法继续安装。但是我并没有安装过它啊?于是我便上网搜了一下,找到了一个“歪门邪道”的解决办法。右击Setupinstall.exe,点开Properties,切换到Compatibility选项卡,点击Run compatibility troubleshooter。出现Select troubleshooting option,选择Try recommend settings。系统自动选择了Windows 8的兼容性,反正是成功安装了,并能正常使用。说实话,真的很离谱。。完.2 题外话似乎tplink跟他用的是同一个驱动,以前装过tplink的是可以直接在这个无线网卡上用的,那个拿去给别人用了..理论上同样的问题可以用同样的解决办法。
     

水星无线网卡驱动无法安装的解决办法

作者 xiobb
2024年6月8日 09:18

1 正文

这台笔记本,每年总有几个月会时不时断网,实在是难受。每到这种时候,我都会选择拿出usb无线网卡。这东西已经近一年没拿出来用过了,驱动也还没装。

当时重装使用的是windows10不忘初心的精简版,不知道阉割了什么,直接打开安装程序会出现报错,无法继续安装。

8d488ad8220acd936d54a718b5350271

但是我并没有安装过它啊?于是我便上网搜了一下,找到了一个“歪门邪道”的解决办法。

  1. 右击Setupinstall.exe,点开Properties,切换到Compatibility选项卡,点击Run compatibility troubleshooter。

image

  1. 出现Select troubleshooting option,选择Try recommend settings。

image

系统自动选择了Windows 8的兼容性,反正是成功安装了,并能正常使用。说实话,真的很离谱。。

63d25a58f3b3fe0d0e886032b2206267

09aa506a1b81f77e7eea2b32ad72db42

完.

2 题外话

似乎tplink跟他用的是同一个驱动,以前装过tplink的是可以直接在这个无线网卡上用的,那个拿去给别人用了..

理论上同样的问题可以用同样的解决办法。

  • ✇Xiobb's Blog
  • 一次以失败告终的的雷池逆向xiobb
    起因又是一个周末,太闲了,于是我便突发奇想,想去试试自己破解一下雷池。这是一篇回忆,浏览器已经关掉了,所以大部分内容只好口述一下。声明:如有侵权,请联系我删除。1 动数据库了解各容器的用途在服务器上输入docker ps,发现存在大量容器,于是我便在官网中翻了翻,果真找到一张对应容器用途的表格。关于表格的来源地址:https://waf-ce.chaitin.cn/docs/about/framework寻找用户和密码于是,我决定对postgres下手。那么,它的用户名和密码在哪里?我没有使用过postgres,于是上网搜了搜,说是用户名是postgres,但是经测试无效(雷池可能把这个用户删除了)。为什么这么说?因为我在尝试查询密码(docker exec -it safeline-pg psql -U postgres)的时候返回了报错。于是,我在网上搜呀搜,发现了雷池的compose.yaml所在位置:/data/safeline/compose.yaml,cat一下,可以看到用户名是safeline-ce,密码存储在一个环境变量中。这个变量是在容器内的,也许是我眼睛不好,并没有
     

一次以失败告终的的雷池逆向

作者 xiobb
2024年5月25日 17:09

起因

又是一个周末,太闲了,
于是我便突发奇想,想去试试自己破解一下雷池。这是一篇回忆,浏览器已经关掉了,所以大部分内容只好口述一下。

声明:如有侵权,请联系我删除。

1 动数据库

了解各容器的用途

在服务器上输入docker ps,发现存在大量容器,于是我便在官网中翻了翻,果真找到一张对应容器用途的表格。

image

关于表格的来源地址:https://waf-ce.chaitin.cn/docs/about/framework

image

寻找用户和密码

于是,我决定对postgres下手。那么,它的用户名和密码在哪里?

我没有使用过postgres,于是上网搜了搜,说是用户名是postgres,但是经测试无效(雷池可能把这个用户删除了)。为什么这么说?因为我在尝试查询密码(docker exec -it safeline-pg psql -U postgres)的时候返回了报错。

于是,我在网上搜呀搜,发现了雷池的compose.yaml所在位置:/data/safeline/compose.yaml,cat一下,可以看到用户名是safeline-ce,密码存储在一个环境变量中。

image

这个变量是在容器内的,也许是我眼睛不好,并没有在compose.yaml中找到密码。于是,我决定通过一些“歪门邪道”的方法....

直接进入这个postgresql的容器,来获取这个变量:

docker exec -it safeline-pg sh
echo ${POSTGRES_PASSWORD}

image

当然也是十分顺利地获取到了密码。接下来,便可以使用Navicat Premium连接到5432端口的数据库了。

一些小插曲

在使用ssh隧道时,我发现转发到服务器localhost:5432并不能建立连接,经过一些搜索,发现得通过容器内网ip连接。不出意外,ip都是172.22.222.2。

ssh隧道like this:

image

我使用的是navicat premium 16,由于postgresql版本比较高,需要对一个dll文件做一个改动,否则无法连接上数据库。

下面将那篇文章地址贴上:https://blog.csdn.net/zxp3817100/article/details/134822475

我知道csdn很难用,但他确实有点用

连接成功,能做什么?

数据库中可以看到一个safeline-ce的库,里面就是雷池的所有数据。

image

我没有在里面看到什么有价值的内容,但是mgt_options表里面似乎可以看到一些关于webhook、syslog的配置,我没有测试过可不可以用,反正面板里都是需要专业版的。

mgt_website表中可以看到添加的所有网站,在这里我发现了一个好玩的东西:这里的upstreams引起了我的注意。这里的上游服务器是保存了一个array的,于是我给他加了两个上游,并刷新网站页面,发现成功。

reqdpv

虽然第二个上游是disabled状态,但是确实有我添加的第二个上游(81端口),并且多出一个负载调度算法。

不过这个功能对我来说用处不大,于是我决定更进一步,f12看到license->valid返回false,于是我试着能否逆向雷池主程序...

2 逆向程序

附上f12接口返回数据的图:

image

经过寻找,确定面板api大概率存在于safeline-mgt容器中的/app/mgt文件,于是我将它复制到static文件夹中,通过面板直接将他下载下来。

cp /app/mgt /app/static/mgt

下载地址即为:https://ip:port/mgt

下载下来的文件只有8M,在hexed.it打开后,发现了UPX字样,于是我猜测程序被upx压缩了,因此看不出任何有用的信息。

image

不过这也是可逆的,下面贴上命令(在Debian 12环境下操作的):

apt install upx-ucl
upx -d mgt

果真,脱壳后大小来到了将近24M。

结局

可惜,我没有程序逆向的经验,将他导入到IDA中面对着那么多的function和汇编代码,我不知所措。

a13a45f3ceaa13af49aa06db55fec996

a32531bf23682b2139bae16e25c72b18

因此,折腾到这里,实在不知道该怎么办了,遂放弃。不过,我也得到了许多经验,还是值得的。

  • ✇Xiobb's Blog
  • 对Typecho的又一次魔改:强制替换所有jsdeliver为镜像地址xiobb
    在使用Typecho时,难免会遇到有些模板或插件使用了cdn.jsdelivr.net的地址,但是这也会导致他在国内加载奇慢,甚至加载失败,影响使用体验。当然,此方法适用于几乎一切php程序,也可以用于替换gravatar等国内不方便使用的程序为镜像源。提一嘴,我前段时间自己建了一个gravatar镜像站:https://tencent.com.kg/avatar这里使用的jsdeliver镜像源是:jsd.cdn.zzko.cn。上代码前台注意⚠️原始地址的空格请注意去掉 因为我网站会自动替换掉地址index.php我将一些与文章无关的魔改删除了,因此可能看起来比较别扭。但是他能用,那就不管了。如果想知道我改了什么,可以看看其他文章。<?php /** * Typecho Blog Platform * * @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org) * @license GNU General Public License 2.0 * @version $Id:
     

对Typecho的又一次魔改:强制替换所有jsdeliver为镜像地址

作者 xiobb
2024年5月17日 22:38

在使用Typecho时,难免会遇到有些模板或插件使用了cdn.jsdelivr.net的地址,但是这也会导致他在国内加载奇慢,甚至加载失败,影响使用体验。
当然,此方法适用于几乎一切php程序,也可以用于替换gravatar等国内不方便使用的程序为镜像源。

提一嘴,我前段时间自己建了一个gravatar镜像站:https://tencent.com.kg/avatar

这里使用的jsdeliver镜像源是:jsd.cdn.zzko.cn。

上代码

前台

注意⚠️原始地址的空格请注意去掉 因为我网站会自动替换掉地址

index.php

我将一些与文章无关的魔改删除了,因此可能看起来比较别扭。但是他能用,那就不管了。
如果想知道我改了什么,可以看看其他文章。

<?php
/**
 * Typecho Blog Platform
 *
 * @copyright  Copyright (c) 2008 Typecho team (http://www.typecho.org)
 * @license    GNU General Public License 2.0
 * @version    $Id: index.php 1153 2009-07-02 10:53:22Z magike.net $
 */
// 开始加入缓冲区
ob_start();

/** 载入配置支持 */
if (!defined('__TYPECHO_ROOT_DIR__') && !@include_once 'config.inc.php') {
    file_exists('./install.php') ? header('Location: install.php') : print ('Missing Config File');
    exit;
}

/** 初始化组件 */
\Widget\Init::alloc();

/** 注册一个初始化插件 */
\Typecho\Plugin::factory('index.php')->begin();

/** 开始路由分发 */
\Typecho\Router::dispatch();

/** 注册一个结束插件 */
\Typecho\Plugin::factory('index.php')->end();

// 获取输出缓冲区的内容
$output = ob_get_contents();

// 清空缓冲
ob_end_clean();

// 压缩
$compressedOutput = compressHtml($output);

// 输出压缩后的代码
echo $compressedOutput;

function compressHtml($html)
{
    $compressedHtml = str_replace('https://cdn.jsdelivr .net/', 'https://jsd.cdn.zzko.cn/', $html);

    return $compressedHtml;
}

后台

admin/header.php

我也忘了有没有修改,看着办就是了。

<?php
if (!defined('__TYPECHO_ADMIN__')) {
    exit;
}

// 开始加入缓冲区
ob_start();

$header = '<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'normalize.css', true) . '">
<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'grid.css', true) . '">
<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'style.css', true) . '">';

/** 注册一个初始化插件 */
$header = \Typecho\Plugin::factory('admin/header.php')->header($header);

?><!DOCTYPE HTML>
<html>
    <head>
        <meta charset="<?php $options->charset(); ?>">
        <meta name="renderer" content="webkit">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title><?php _e('%s - %s - Powered by Typecho', $menu->title, $options->title); ?></title>
        <meta name="robots" content="noindex, nofollow">
        <?php echo $header; ?>
    </head>
    <body<?php if (isset($bodyClass)) {echo ' class="' . $bodyClass . '"';} ?>>

admin/footer.php

同上。

<?php if(!defined('__TYPECHO_ADMIN__')) exit; ?>
<?php \Typecho\Plugin::factory('admin/footer.php')->begin(); ?>
    </body>
</html>
<?php
/** 注册一个结束插件 */
\Typecho\Plugin::factory('admin/footer.php')->end();

// 获取输出缓冲区的内容
$output = ob_get_contents();

// 清空缓冲
ob_end_clean();

// 压缩
$compressedOutput = compressHtml($output);

// 输出压缩后的代码
echo $compressedOutput;

function compressHtml($html)
{
// 后台防止出错+数据量不大 不卡 就不压缩了,只做替换处理。
    $compressedHtml = str_replace('https://cdn.jsdelivr .net', 'https://jsd.cdn.zzko.cn/', $html);

    return $compressedHtml;
}

题外话

休息一下,回忆录暂时先不写了,无聊还是会来写几句的,但不会集中精力在这上面.

  • ✇Xiobb's Blog
  • (未完工) 回忆我与7iNetxiobb
    [scode type="lblue"]还没写完,可以等等再来看,有空就会写一写。配首上山岗,烘托一下情感(?)这首歌是我2022年在上网课期间听到的,感觉还是挺适合这篇文章的。[hplayer][Music server="netease" id="2079091006" type="song"/][/hplayer][/scode]我希望能将各种难忘的时光都记录下来,写几篇文章,添加标签“回忆录”。我知道这是一个浩大的工程,但是我希望这些走过的时光能留下足迹。另:本系列文章不允许转载,请您知晓。简要介绍 Intro相信一些朋友初来乍到,并不知道7iNet是个神马东西。它就是一个idc平台,从2018年7月1日运营到现在,从手动开通到swapidc 使用过市面上的各类idc财务系统,最后发展为自研平台,获得600+名用户的认可。它的网站是:idc.i45s.com。没错,在这个博客的域名下。但是这个博客是我的个人博客,不会过多提到这个网站。(这篇文章除外)不是夸张,只是陈述事实,可惜他不为人知。600+是网站后台数据,看看这寥寥无几的qq群人数...在这期间,我也了解了许多,因此我希
     

(未完工) 回忆我与7iNet

作者 xiobb
2024年5月9日 21:58

[scode type="lblue"]

还没写完,可以等等再来看,有空就会写一写。

配首上山岗,烘托一下情感(?)这首歌是我2022年在上网课期间听到的,感觉还是挺适合这篇文章的。

[hplayer]
[Music server="netease" id="2079091006" type="song"/]
[/hplayer]

[/scode]

我希望能将各种难忘的时光都记录下来,写几篇文章,添加标签“回忆录”。我知道这是一个浩大的工程,但是我希望这些走过的时光能留下足迹。

另:本系列文章不允许转载,请您知晓。

简要介绍 Intro

相信一些朋友初来乍到,并不知道7iNet是个神马东西。它就是一个idc平台,从2018年7月1日运营到现在,从手动开通到swapidc 使用过市面上的各类idc财务系统,最后发展为自研平台,获得600+名用户的认可。它的网站是:idc.i45s.com。
没错,在这个博客的域名下。但是这个博客是我的个人博客,不会过多提到这个网站。(这篇文章除外)
不是夸张,只是陈述事实,可惜他不为人知。
600+是网站后台数据,看看这寥寥无几的qq群人数...
7C858A4A-75C6-47D9-8E45-B95C55234E5B
在这期间,我也了解了许多,因此我希望把它们记录下来。
早期的一些记忆似乎已经模糊了,所以文章里面的一些内容可能与真实情况有所出入。

梦の开始 Founded

2018年的夏天,已经过去近6年了,但是它却是无数人无比怀念的那段时光,而且注定不凡。那时,出现了很多神作,现在也时常被人翻出来回味。

是的,7iNet 也在这期间诞生了。那是一个暑假的开始,也是我玩网络以来的一个至关重要的转折点。它给我带来了许多,也认识了很多朋友(这里有一个提到了我的!https://www.mcouo.com/19.html <-去看看)。不过也让我失去了许多,也经历了许多令人难受的事情。希望在此记录下一部分,未来还可以回味这一段曲折的时光。

事实上,很多事件我已很难再回忆起来了,实在可惜。包括当年建的QQ群,现在仅剩下寥寥几张截图了,当时也被萌城黑白处理了,现在看来,是真的黯淡无光了。

下面是原先的群的一些图片,希望可以勾起老朋友们的一点回忆~

6D3EAD31-2227-49C5-B7F6-423B5914ADFF
BCB4D4F1-B21B-4853-86A7-D323F9834E9D
98BE795F-C226-47A9-9F50-0637CB56CE86

这里图片确实有点多 后面尽量减少一些。

发展 Development

早期·积攒经验

那会,自己做IDC还是很热门的(直至现在也是),XX云、XX互联、XX数据、XXIDC,层出不穷。然而,大多也已不复存在。我似乎更多地都在感慨时间,但它确实流逝的太快了些。

不过,这并无大碍。这篇文章没有一个钉死的主题,我更希望能像与读者,也就是你,对话一样,自然,想到什么就讲什么,也算是写给自己的公开的信吧。

我从小对计算机便有很大兴趣,也便参与了进来,建立了自己的群(当初还没有网站+坏/换了手机电脑+封群,这段记忆碎片几乎无法找到任何图片了)。当初很多人以自己的网名建idc,当时我网名是yellowface,于是取名YF云。很长一段时间内,我都是使用这个名字的,直到2021年,它才被换掉。

当时,以共享虚拟主机为主,2019开始销售虚拟主机,使用vhms和swapidc作为财务平台。但是,这一时期用户数从未超过5,大多数时候还是在聊天。

这里,我也认识了许多朋友(2018~2019),但此时认识的朋友大多已无法再联系到了,消失在茫茫人海中。不知远方的你,是否读到了这篇文章,是否能够想起我?下面标题斜体文字为认识时原名,没有就说明没有变化,也有可能是失联了。

Rockings71 (老赵头laozhao)

这位是很早以前在我视频底下评论说要加qq的,也是他把我带到了qq这个网络世界里。

在此之前,我几乎没有怎么使用过qq。

他人我还是可以联系到的,但是似乎没有什么共同话题了?说实话,他似乎与“yf云”也没什么联系。但是,他确实是这段时光必不可少的一部分。没有他,就不会有今天的我,今天的这个网站。因此,在此不多赘述,以后可能会在其他相关的回忆文章中提到他。

ZDWX-Hermit-四糸乃

一位自称中国台湾的网友,他曾经让我了解到了鲶鱼CMS、鲶鱼Blog。顺带一嘴,这套程序的作者已经去世,再也无法等到更新,实在令人惋惜。这套程序我曾经也使用过一段时间,是非常好用的,但是似乎用户相比其他程序少了些。就连作者的离开,也没多少人知道。

...... 由于交往时间不长,我已经没能留下什么印象了。不过,在我的印象中一直有这么一个人。

后面,很长一段时间内,我们都没有再联系了。个人介绍的b站用户,可以搜到,无ip属地,说明已经很久没有登陆;youtube搜不到对应的用户了。我再看到他的QQ个性签名,似乎改成了“此人已死”。但是真是假,无从考证。

萌城 (长城memz)

不再过多赘述 (偷懒一下),想知道的可以去看另一视角:https://www.mcouo.com/19.html

题外话·学会建站

2019年,我终于学会了建站。当时甚至还用index.txt作为首页过,后来学会使用现成的源码搭建了,还记得我第一个搭建的正常能使用的网站是DiscuzX。
接着一段时间,我又跑去折腾博客了,也会了一点点html。FloatSheep(Hajeekn/SuperLove)也是这时候认识的。那时候,我也差不多是跟着他一起折腾博客,因此有时候使用的模板还是一样的:https://blog.hesiy.cn/posts/blogging-memories/
后面可能也会单独拿出来讲一讲。
后来,我又试着搭建了SWAPIDC VHMS WHMCS。

暂停运营

2020年至2021年初,我都没有再运营过,但是一直在群里聊天。这是休息,也是为后面的复出做足了准备。
说实话,这段时间其实在折腾博客。虽然博客是2019年开始搞的,但真正活跃的时候便是这段时间。这时,我已经大致了解如何建站了,不然怎么说为后面的复出做足了准备呢?

复出·渐有起色

2021年,我再次重拾这个项目。而这一次,我便没有暂停 (长时间的),并且有很大起色。
此时,我通过三木ccccc_(现名)认识了九尘,并且几年来一直有再联系。但是由于一些原因,现在已经不再联系,也不愿再回忆。因此,本文将不再提到他。
此时,魔方财务出现了。我花0.1买了两个授权,搭建了第一个正经的IDC平台。在此之前,我跟着九尘使用雪花idc系统第一次对接上了七星云的挂机宝。
话说回来,七星的挂机宝质量真差,现在不知道怎么样了。
但是刚开始用魔方还是没有什么人,倒是从新云群里认识了Tony666mc惨めです,用户活动平台开始从QQ转向纸飞机...
打住!在中间,有一件更重要的事情——自研之路。

自研平台的探索之路

那会写了一个第一个idc平台,十分潦草,基本就是个邮件代发功能,并且在家里云上运行。
这一份保存的非常完整,可以给各位看看截图:
image

image

接着,用户交流平台主要在纸飞机,逐渐开始有用户注册了。这段时间内,我的开发能力也提升了不少,开发出了多个版本的“MoonCloud”。我的第一个具有自动开通功能的程序也在此时出现了。不过这段时间几乎都是公益状态。

展望 Prospect

当然,人也不能一直停留在过去,回忆的差不多了,是时候想想未来了。

...

另外,本文全靠回忆,很多内容可能不太准确,还请老朋友们指出。

  • ✇Xiobb's Blog
  • 记一次网站服务器被入侵...xiobb
    前情提要在几十天前,我在home文件夹下发现了一个名为winlin的文件夹,并且查询到了对应的用户. (图片无法找到,但下面可以看到这位老熟人)并且是一个正常的用户,不过一直没有登录的记录,因此我没有管他.但此时,一场灾难悄悄来临...发现异常4月27日(上周六),为了后期操作方便,我安装了gnome桌面和xrdp,但是在用户列表里面,我发现了两个异常的用户:jc、winlin.这个jc将自己的家目录放在/linux-base,明显是有意隐藏着什么. 下面可以看到最后登录时间为当天.经检查,这个用户已经创建了二十多天.在终端输入last命令,发现该用户频繁登录我的服务器,并且是一个江西的家宽代理ip,可以查询到是傀儡机.并且,htop中报告了高负载进程,后期查毒发现确实存在病毒.但是为什么先前没有发现这些东西呢?是不是急眼了,开始撕票了?/jc/6.elf: Unix.Dropper.Mirai-7139232-0 FOUND /jc/6.elf: Removed. /jc/5.elf: Unix.Trojan.Mirai-6981158-0 FOUND /jc/5.elf: Remo
     

记一次网站服务器被入侵...

作者 xiobb
2024年4月30日 21:37

前情提要

在几十天前,我在home文件夹下发现了一个名为winlin的文件夹,并且查询到了对应的用户.
(图片无法找到,但下面可以看到这位老熟人)
并且是一个正常的用户,不过一直没有登录的记录,因此我没有管他.
但此时,一场灾难悄悄来临...

发现异常

4月27日(上周六),为了后期操作方便,我安装了gnome桌面和xrdp,但是在用户列表里面,我发现了两个异常的用户:jc、winlin.
这个jc将自己的家目录放在/linux-base,明显是有意隐藏着什么. 下面可以看到最后登录时间为当天.
https://data.i45s.com/pic//i/2024/04/30/z2w101.png
经检查,这个用户已经创建了二十多天.
在终端输入last命令,发现该用户频繁登录我的服务器,并且是一个江西的家宽代理ip,可以查询到是傀儡机.
https://data.i45s.com/pic//i/2024/04/30/z2vyd8.png
https://data.i45s.com/pic//i/2024/04/30/z3pjlg.png
并且,htop中报告了高负载进程,后期查毒发现确实存在病毒.
https://data.i45s.com/pic//i/2024/04/30/z4ltbb.jpg
https://data.i45s.com/pic//i/2024/04/30/z4oq1m.jpg
但是为什么先前没有发现这些东西呢?是不是急眼了,开始撕票了?

/jc/6.elf: Unix.Dropper.Mirai-7139232-0 FOUND
/jc/6.elf: Removed.
/jc/5.elf: Unix.Trojan.Mirai-6981158-0 FOUND
/jc/5.elf: Removed.
/jc/3.elf: Unix.Trojan.Mirai-7640640-0 FOUND
/jc/3.elf: Removed.
/jc/2.elf: Unix.Dropper.Mirai-7540662-0 FOUND
/jc/2.elf: Removed.

更多异常出现

此时我晚上回到家里了,发现网站已经不能正常打开...
但是,此时一切进程都无法正常启动。网站为了绕过北岸使用了frp,但是现在启动即killed. halt reboot命令也无法使用.
https://data.i45s.com/pic//i/2024/04/30/z5se51.png
在服务器控制台操作硬重启后,恢复正常,但控制台会话不可正常输入,无法正确识别任何键盘信号,并且发现开机后一大串的不明报错,似乎在试图循环停止我的docker容器等服务.
所幸,ssh可以正常使用,frp也可以正常启动。我将服务恢复后,提醒用户保存数据,在今天(4月30日)晚上开始重装系统.

措施

我将系统从RockyLinux 9.3 更换到了 Debian 12,并且开始密钥登录,关闭密码登录和没有用处的端口.
事件至此,告一段落,数据完好无损(但是尚不清楚是否泄露).

教训

  1. 切记,无论使用任何系统,都是有被入侵的风险的。我从Windows系统更换到RockyLinux后,便没有过多关注系统安全方面的问题.
  2. 数据备份,不仅要本地,还需要异地备份。我原先只做了本地备份,如果机器被删库,那么这个备份相当于无效备份.
  3. 建议在条件允许的情况下,优先使用ssh的密钥登录,其次才是密码。甚至可以不开放任何端口,在内网连接服务器.
  4. 关注新出现的漏洞,及时发现,及时处理。如近期的xz-utils后门事件,我第一时间查询了xz版本为5.2.5,说明不是xz造成的入侵。不过可惜,最后还是没有防住这次攻击.

最后,祝愿各位不会有同款遭遇?

  • ✇Xiobb's Blog
  • 从A到Zxiobb
    Aadmin.xunhupay.com虎皮椒的管理面板,idc使用的支付接口,时不时会上来看几眼。ant.designReact的一个组件库,非常有名,非常好用 我也正在用它开发项目,因此经常打开。最新版gpu占用真的太高了吧?Bbilibili.com懂得都懂,不需要解释Ccloud.tencent.com腾讯云,目前网站服务器还在腾讯上,2026.12到期,正价续费也很便宜,很快乐!Ddns.he.net以前使用的dns服务,ttl最低300,不支持分线路,但仍然还算不错。现在已经换成华为云了。dynadot.com我的网站域名注册商,挺好用的 是国外商家,但是支持支付宝。Eelement.eleme.cn饿了么的ElementUI,Vue2的组件库,仍然经常有使用到,我的一些小项目可能会使用vue2+elementui。Ffree.172839.xyz不愧是我(( 是23年10月的一个项目,使用vue2+antdesign1Ggithub.com全球最大的同性交流网站Hhostloc.commjj懂得都懂Iidc.i45s.com不愧是我*2i45s.com不愧是我*3ip138
     

从A到Z

作者 xiobb
2024年4月20日 19:40

A

admin.xunhupay.com

虎皮椒的管理面板,idc使用的支付接口,时不时会上来看几眼。

ant.design

React的一个组件库,非常有名,非常好用 我也正在用它开发项目,因此经常打开。最新版gpu占用真的太高了吧?

B

bilibili.com

懂得都懂,不需要解释

C

cloud.tencent.com

腾讯云,目前网站服务器还在腾讯上,2026.12到期,正价续费也很便宜,很快乐!

D

dns.he.net

以前使用的dns服务,ttl最低300,不支持分线路,但仍然还算不错。现在已经换成华为云了。

dynadot.com

我的网站域名注册商,挺好用的 是国外商家,但是支持支付宝。

E

element.eleme.cn

饿了么的ElementUI,Vue2的组件库,仍然经常有使用到,我的一些小项目可能会使用vue2+elementui。

F

free.172839.xyz

不愧是我(( 是23年10月的一个项目,使用vue2+antdesign1

G

github.com

全球最大的同性交流网站

H

hostloc.com

mjj懂得都懂

I

idc.i45s.com

不愧是我*2

i45s.com

不愧是我*3

ip138.com

查询ip用的

J

json.cn

可以检查json是否正确,还是很好用的

jsjiami.com

加密js用的,就是有点卡

K

kangle.cccyun.cn

这是kangle一键脚本

L

localhost:5173

vite默认的调试端口(npm run dev)

M

myssl.com

查询ssl状态还是不错的

mdui.org

mdui1还挺好看的,mdui2却没那么好看了

N

浏览器没有任何有用的网址推荐...

O

openfrp.net

一个frp网站

P

preview.tabler.io

挺好看的一个ui

procomponents.ant.design

antdesign的procomponents,挺好用的,看着也高级(

Q

quyu.net

很多冷门后缀,但是从来没用过这个平台

R

rainyun.com

雨云

S

superbed.cn

一个不错的图床,2019的图片都还保存着。

T

typecho.org

不错的博客程序,现在正在用

tool.lu/timestamp/

转换时间戳不错

U

没有任何推荐

V

vercel.com

存储静态文件很不错,可以自选hk节点 速度很快

W

who.cx

whois查询网站,很简洁

wztf121.com

看看台风到哪里了 停不停课?

X

没有任何推荐

Y

没有任何推荐

Z

zeptomail.zoho.com.cn

Zeptomail

❌
❌