Hello World - 默认分类
type: channel
link: https://blog.olio.fun/index.php/category/default/
description: 只是一个默认分类
items: SpringBoot 接口签名校验实践
items: 识别代理工具流量特征：从SSR、V2Ray、Clash到Trojan
items: Centos linux命令
items: linux运维巡检脚本
items: linux脚本经典案例
items: linux渗透常用命令
items: JumpServer环境搭建
items: Typecho博客部署

SpringBoot 接口签名校验实践
type: item
date: 2024-03-11T10:10:00+00:00
description: SpringBoot 接口签名校验实践[1概念][开放接口]开放接口是指不需要登录凭证就允许被第三方系统调用的接口。为了防止开放接口被恶意调用，开放接口一般都需要验签才能被调用。提供开放接口的系统下面统一简称为"原系统"。[验签]验签是指第三方系统在调用接口之前，需要按照原系统的规则根据所有请求参数生成一个签名（字符串），在调用接口时携带该签名。原系统会验证签名的有效性，只有签名验证有效才能正常调用接口，否则请求会被驳回。[2接口验签调用流程][1. 约定签名算法]第三方系统作为调用方，需要与原系统协商约定签名算法（下面以SHA256withRSA签名算法为例）。同时约定一个名称（callerID），以便在原系统中来唯一标识调用方系统。[2. 颁发非对称密钥对]签名算法约定后之后，原系统会为每一个调用方系统专门生成一个专属的非对称密钥对（RSA密钥对）。私钥颁发给调用方系统，公钥由原系统持有。注意，调用方系统需要保管好私钥（存到调用方系统的后端）。因为对于原系统而言，调用方系统是消息的发送方，其持有的私钥唯一标识了它的身份是原系统受信任的调用方。调用方系统的私钥一旦泄露，调用方对原系统毫无信任可言。[3. 生成请求参数签名]签名算法约定后之后，生成签名的原理如下（活动图）。为了确保生成签名的处理细节与原系统的验签逻辑是匹配的，原系统一般都提供jar包或者代码片段给调用方来生成签名，否则可能会因为一些处理细节不一致导致生成的签名是无效的。[4. 请求携带签名调用]路径参数中放入约定好的callerID，请求头中放入调用方自己生成的签名[3代码设计][1. 签名配置类]相关的自定义yml配置如下。RSA的公钥和私钥可以使用hutool的SecureUtil工具类来生成，注意公钥和私钥是base64编码后的字符串定义一个配置类来存储上述相关的自定义yml配置 `import cn.hutool.crypto.asymmetric.SignAlgorithm; import lombok.Data; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Map; /** * 签名的相关配置 */ @Data @ConditionalOnProperty(value = "secure.signature.enable", havingValue = "true") // 根据条件注入bean @Component @ConfigurationProperties("secure.signature") public class SignatureProps { private Boolean enable; private Map<String, KeyPairProps> keyPair; @Data public static class KeyPairProps { private SignAlgorithm algorithm; private String publicKeyPath; private String publicKey; private String privateKeyPath; private String privateKey; } } `[2. 签名管理类]定义一个管理类，持有上述配置，并暴露生成签名和校验签名的方法。注意，生成的签名是将字节数组进行十六进制编码后的字符串，验签时需要将签名字符串进行十六进制解码成字节数组 `import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.util.HexUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.asymmetric.Sign; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.stereotype.Component; import org.springframework.util.Objec…

识别代理工具流量特征：从SSR、V2Ray、Clash到Trojan
type: item
date: 2024-03-11T10:05:26+00:00
description: 识别代理工具流量特征：从SSR、V2Ray、Clash到Trojan1概述在今天的互联网世界中，代理工具的使用旨在绕过网络审查、保护隐私、提供更安全的网络通信，而其中一些代理工具，如ShadowsocksR（SSR）、V2Ray、Clash和Trojan等，由于其高度定制化和加密特性而备受欢迎。然而，对于一些网络管理员和监管机构来说，他们可能希望能够识别这些代理工具的流量特征，以便监控或限制其使用。本文将介绍如何更加深入地识别这些代理工具的流量特征。 2深度包检测深度包检测是一种常见的用于识别代理工具流量特征的方法。这种方法侧重于对网络数据包的内容进行详细分析，尤其是检测一些特定的加密协议或自定义协议。 ShadowsocksR（SSR）：SSR通常使用自定义的混淆协议来隐藏流量。识别SSR流量的方法包括检测一些特定的标志或数据包格式，但这通常需要深度包检测技术来实现。例如，SSR的数据包中可能包含Base64编码，通过分析数据包的Base64编码是否遵循SSR的特定模式，可以更准确地识别SSR流量。V2Ray：V2Ray也使用自定义协议，其流量特点包括一些特定的数据包结构和加密方式。通过检测这些特征，可以辨别V2Ray流量。例如，V2Ray的数据包通常以VMess协议进行通信，可以识别VMess数据包的特征字段，如alterId等，来确认V2Ray的存在。3特定的流量模式不同的代理工具通常会展现出独特的流量模式，包括数据包大小、通信模式以及流量特点。 Clash：Clash是一种代理工具，它允许用户配置多种代理协议，包括HTTP、SOCKS、VMess等。通过观察流量的目标端口和通信模式，可以推测出Clash的可能存在。例如，如果流量以HTTP协议进行通信，那么可能是Clash的迹象。Trojan：Trojan代理工具也有一些流量特征，例如使用的自定义协议和端口，以及加密方式。这些特点可以被用于识别Trojan流量。举例来说，Trojan通常使用自定义的密码加密流量，通过检测流量中的特定密码标识，可以确定Trojan的存在。4端口扫描代理工具通常使用非标准端口进行通信，而不是常见的HTTP或HTTPS端口。因此，监控非常用端口的流量可能有助于识别这些代理工具。端口号：ShadowsocksR、V2Ray和Trojan等代理工具通常会使用自定义端口号，而不是常见的80或443端口。监控端口号的活动可以帮助识别代理工具的流量。例如，如果网络上的非标准端口出现了大量传输数据的活动，那么可能存在代理工具的使用。5行为分析行为分析是一种重要的方法，它关注的是网络中终端和流量的行为特征，而不仅仅是数据包的结构或端口号。以下是关于行为分析在识别代理工具流量特征中的方法：数据传输频率：代理工具通常被用于加速网络访问或绕过审查。因此，它们可能在相对短的时间内传输大量数据。通过检测网络中数据传输频率异常高的终端，可以怀疑可能存在代理工具的使用。这种高频率传输数据的行为可能是识别代理工具的一个关键指标。响应时间：代理工具的特点之一是快速响应。在网络通信中，代理工具通常能够更快地建立连接和传输数据。通过监测终端的响应时间，可以检测到网络中是否存在代理工具。如果某个终端在建立连接和传输数据时的响应时间明显较短，可能是代理工具的存在信号。目标端口扫描：代理工具通常会在不同的端口上建立连接，以绕过网络防火墙或审查。通过监测终端对不同端口的连接行为，可以检测出代理工具的存在。代理工具可能会尝试多个端口，以找到一个可以正常工作的通道。数据流模式：代理工具通常会呈现出独特的数据流模式，这些模式可能与正常的网络通信模式有所不同。行为分析可以涵盖这些不同之处，以检测代理工具的存在。通过观察数据流的模式，可以识别出异常的、可能是代理工具引起的数据流。活动时间：代理工具的使用可能会在某些时间段内更为活跃，因此监控终端的活动时间可以帮助确定代理工具的存在。如果某个终端在非常规的时间段内产生大量的网络活动，这可能是代理工具的使用的迹象。非标准协议：代理工具通常使用非标准的或自定义协议进行通信。通过分析终端的通信协议，可以检测出非常见的协议，这可能是代理工具的存在迹象。需要指出的是，行为分析是一项综合性工作，需要对网络流量和终端行为有深入的理解。同时，正常的网络活动也可能具有类似的特点，因此需要与其他方法结合使用，以提高识别的准确性。6流量统计通过统计网络流量，特别关注未知流量来源或流量模式不规律的情况，也可以用来识别代理工具的流量特征。 不规律的流量模式：一些代理工具的流量模式可能会显得不规律，特别是当它们用于突破网络审查时。通过检测这种不规律的流量模式，可以识别代理工具的存在。例如，如果网络上出现了突然增加的不规律流量，可能需要进一步调查其来源并识别是否有代理工具的参与…

Centos linux命令
type: item
date: 2024-03-11T10:03:07+00:00
description: Linux 快速换源yum install -y wget ＃必备工具 ＃使用之前请确保已经安装wget，如未安装请执行下面一条命令来安装 ＃备份原来的源 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bk ＃下载阿里源 cd /etc/yum.repos.d wget -nc http://mirrors.aliyun.com/repo/Centos-7.repo ＃更改阿里yum源为默认源 sudo mv Centos-7.repo CentOS-Base.repo ＃更新本地yum缓存 # 全部清除 sudo yum clean all # 更新列表 sudo yum list # 缓存yum包信息到本机，提高搜索速度 sudo yum makecache网卡配置错误Cannot find a valid baseurl for repo: base/7/x86_64# 解决办法： # 修改网卡配置文件： vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 # (注意：如果显示打开的是新文件，可能你的网卡的文件不叫ifcfg-eno16777736 ，有的叫ens33，你就使用命令“vi /etc/sysconfig/network-scripts/ifcfg-ens33”，来打开网卡配置文件) # 将onboot修改为“yes” #重启网络服务： service network restart #再使用安装Vim的命令： yum -y install vim* #就可以安装了。yum安装出现另一个程序被锁定Another app is currently holding the yum lock; waiting for it to exit 这句话的意思就是有一个应用程序正在锁定yum，等待退出。# 解决办法： # 1、杀死这个应用程序 #命令： kill -s 9 56722 #kill 的用法： #kill [信号代码] 进程ID #注：信号代码可以省略；我们常用的信号代码是 -s 9 ，表示强制终止； #56722是这个进程的ID # 2、强制关掉yum进程，并重新运行yum rm -f /var/run/yum.pid #注：强制删除：rm -f #解释：强制删除文件： /var/run/yum.pid Centos防火墙相关命令#永久关闭防火墙 systemctl disable firewalld #y systemctl enable firewalld #查看防火墙状态 systemctl status firewalld #关闭防火墙 systemctl stop firewalld #打开防火墙 systemctl start firewalldCentos查看自启动服务#查看自启动的服务 systemctl list-unit-filesCentos hostname相关命令#查看当前主机名 hostname #方法一：命令永久修改主机名 hostnamectl set-hostname 主机名 #方法二 通过修改文件 #修改文件 vi /etc/hostname #添加主机名 Slave01 vi /etc/sysconfig/network #添加IP和hostname对应关系 10.238.162.33 Slave01 #重启reboot生效 #方法三 临时修改主机名 hostname Slave01

linux运维巡检脚本
type: item
date: 2024-03-11T10:01:00+00:00
description: 报告以邮件发送到邮箱 在log下生成巡检报告。#!/bin/bash #主机信息每日巡检 IPADDR=$(ifconfig eth0|grep 'inet addr'|awk -F '[ :]' '{print $13}') #环境变量PATH没设好，在cron里执行时有很多命令会找不到 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin source /etc/profile [ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本！" && exit 1 centosVersion=$(awk '{print $(NF-1)}' /etc/redhat-release) VERSION="2020-03-16" #日志相关 PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'` [ -f $PROGPATH ] && PROGPATH="." LOGPATH="$PROGPATH/log" [ -e $LOGPATH ] || mkdir $LOGPATH RESULTFILE="$LOGPATH/HostDailyCheck-$IPADDR-`date +%Y%m%d`.txt" #定义报表的全局变量 report_DateTime="" #日期 ok report_Hostname="" #主机名 ok report_OSRelease="" #发行版本 ok report_Kernel="" #内核 ok report_Language="" #语言/编码 ok report_LastReboot="" #最近启动时间 ok report_Uptime="" #运行时间（天） ok report_CPUs="" #CPU数量 ok report_CPUType="" #CPU类型 ok report_Arch="" #CPU架构 ok report_MemTotal="" #内存总容量(MB) ok report_MemFree="" #内存剩余(MB) ok report_MemUsedPercent="" #内存使用率% ok report_DiskTotal="" #硬盘总容量(GB) ok report_DiskFree="" #硬盘剩余(GB) ok report_DiskUsedPercent="" #硬盘使用率% ok report_InodeTotal="" #Inode总量 ok report_InodeFree="" #Inode剩余 ok report_InodeUsedPercent="" #Inode使用率 ok report_IP="" #IP地址 ok report_MAC="" #MAC地址 ok report_Gateway="" #默认网关 ok report_DNS="" #DNS ok report_Listen="" #监听 ok report_Selinux="" #Selinux ok report_Firewall="" #防火墙 ok report_USERs="" #用户 ok report_USEREmptyPassword="" #空密码用户 ok report_USERTheSameUID="" #相同ID的用户 ok report_PasswordExpiry="" #密码过期（天） ok report_RootUser="" #root用户 ok report_Sudoers="" #sudo授权 ok report_SSHAuthorized="" #SSH信任主机 ok report_SSHDProtocolVersion="" #SSH协议版本 ok report_SSHDPermitRootLogin="" #允许root远程登录 ok report_DefunctProsess="" #僵尸进程数量 ok report_SelfInitiatedService="" #自启动服务数量 ok report_SelfInitiatedProgram="" #自启动程序数量 ok report_RuningService="" #运行中服务数 ok report_Crontab="" #计划任务数 ok report_Syslog="" #日志服务 ok report_SNMP="" #SNMP OK report_NTP="" #NTP ok report_JDK="" #JDK版本 ok function version(){ echo "" echo ""…

linux脚本经典案例
type: item
date: 2024-03-11T10:00:51+00:00
description: 1）编写 hello world 脚本#!/bin/bash #编写hello world脚本 echo "Hello World!"2）通过位置变量创建 Linux 系统账户及密码#!/bin/bash #通过位置变量创建 Linux 系统账户及密码 #$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 useradd "$1" echo "$2" | passwd ‐‐stdin "$1"3）备份日志#!/bin/bash #每周 5 使用 tar 命令备份/var/log 下的所有日志文件 #vim /root/logbak.sh #编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖 #注意 date 命令需要使用反引号括起来,反引号在键盘<tab>键上面 tar -czf log-`date +%Y%m%d`.tar.gz /var/log crontab ‐e #编写计划任务,执行备份脚本 00 03 * * 5 /root/logbak.sh4）一键部署 LNMP(RPM 包版本)#!/bin/bash #一键部署 LNMP(RPM 包版本)# 使用 yum 安装部署 LNMP,需要提前配置好 yum 源,否则该脚本会失败# 本脚本使用于 centos7.2 或 RHEL7.2 yum ‐y install httpd yum ‐y install mariadb mariadb‐devel mariadb‐server yum ‐y install php php‐mysql systemctl start httpd mariadb systemctl enable httpd mariadb5）监控内存和磁盘容量，小于给定值时报警#!/bin/bash #实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员 #提取根分区剩余空间 disk_size=$(df / | awk '/\//{print $4}') #提取内存剩余空间 mem_size=$(free | awk '/Mem/{print $4}') while :do #注意内存和磁盘提取的空间大小都是以 Kb 为单位 if [ $disk_size -le 512000 -a $mem_size -le 1024000 ] then mail ‐s "Warning" root <<EOF Insufficient resources,资源不足 EOF fi done6）猜数字游戏#!/bin/bash #脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了, #猜小了或猜大了,直至用户猜对脚本结束。 #RANDOM 为系统自带的系统变量,值为 0‐32767的随机数 #使用取余算法将随机数变为 1‐100 的随机数 num=$[RANDOM%100+1] echo "$num" #使用 read 提示用户猜数字#使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小于等于) while : do read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai if [ $cai -eq $num ] then echo "恭喜,猜对了" exit elif [ $cai -gt $num ] then echo "Oops,猜大了" else echo "Oops,猜小了" fi done7）检测本机当前用户是否为超级管理员, 如果是管理员, 则使用 yum 安装 vsftpd, 如果不是, 则提示您非管理员 (使用字串对比版本)#!/bin/bash #检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不 #是,则提示您非管理员(使用字串对比版本) if [ $USER == "root" ] then yum ‐y install vsftpd else echo "您不是管理员,没有权限安装软件" fi8）检测本机当前用户是否为超级管理员, 如果是管理员, 则使用 yum 安装 vsftpd, 如果不是, 则提示您非管理员 (使用 UID 数字对比版本)#!/bin/bash #检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用 UID 数字对比版本) if [ $UID -eq 0 ]; then yum ‐y install vsftpd else echo "您不是管理员,没有权限安装软件" fi9）编写脚本: 提…

linux渗透常用命令
type: item
date: 2024-03-11T10:00:11+00:00
description: 系统信息arch #显示机器的处理器架构(1) uname -m #显示机器的处理器架构(2) uname -r #显示正在使用的内核版本 dmidecode -q #显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda #罗列一个磁盘的架构特性 hdparm -tT /dev/sda #在磁盘上执行测试性读取操作 cat /proc/cpuinfo #显示CPU info的信息 cat /proc/interrupts #显示中断 cat /proc/meminfo #校验内存使用 cat /proc/swaps #显示哪些swap被使用 cat /proc/version #显示内核的版本 cat /proc/net/dev #显示网络适配器及统计 cat /proc/mounts #显示已加载的文件系统 lspci -tv #罗列PCI设备 lsusb -tv #显示USB设备date 显示系统日期cal 2007 #显示2007年的日历表 date 041217002007.00 #设置日期和时间 - 月日时分年.秒 clock -w #将时间修改保存到 BIOS关机 (系统的关机、重启以及登出 )shutdown -h now #关闭系统(1) init 0 #关闭系统(2) telinit 0 #关闭系统(3) shutdown -h hours:minutes & #按预定时间关闭系统 shutdown -c #取消按预定时间关闭系统 shutdown -r now #重启(1) reboot #重启(2) logout #注销文件和目录cd /home #进入 '/ home' 目录' cd .. #返回上一级目录 cd ../.. #返回上两级目录 cd #进入个人的主目录 cd ~user1 #进入个人的主目录 cd - #返回上次所在的目录 pwd #显示工作路径 ls #查看目录中的文件 ls -F #查看目录中的文件 ls -l #显示文件和目录的详细资料 ls -a #显示隐藏文件 ls *[0-9]* #显示包含数字的文件名和目录名 tree #显示文件和目录由根目录开始的树形结构(1) lstree #显示文件和目录由根目录开始的树形结构(2) mkdir dir1 #创建一个叫做 'dir1' 的目录' mkdir dir1 dir2 #同时创建两个目录 mkdir -p /tmp/dir1/dir2 #创建一个目录树 rm -f file1 #删除一个叫做 'file1' 的文件' rmdir dir1 #删除一个叫做 'dir1' 的目录' rm -rf dir1 #删除一个叫做 'dir1' 的目录并同时删除其内容 rm -rf dir1 dir2 #同时删除两个目录及它们的内容 mv dir1 new_dir #重命名/移动 一个目录 cp file1 file2 #复制一个文件 cp dir/* . #复制一个目录下的所有文件到当前工作目录 cp -a /tmp/dir1 . #复制一个目录到当前工作目录 cp -a dir1 dir2 #复制一个目录 ln -s file1 lnk1 #创建一个指向文件或目录的软链接 ln file1 lnk1 #创建一个指向文件或目录的物理链接 touch -t 0712250000 file1 #修改一个文件或目录的时间戳 - (YYMMDDhhmm) file file1 outputs the mime type of the file as text iconv -l #列出已知的编码 iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)文件搜索find / -name file1 #从 '/' 开始进入根文件系统搜索文件和目录 find / -user user1 #搜索属于用户 'user1' 的文件和目录…

JumpServer环境搭建
type: item
date: 2024-03-11T09:59:04+00:00
description: 环境初始化# 1.环境准备，关闭防火墙服务 [root@teach_jumpserver-]iptables -F [root@teach jumpserver-]systemctl disable firewalld [root@teach_jumpserver-]systemctl stop firewalld [root@teach jumpserver-]getenforce Disabled # 2.配置yum源，准备好阿里云的yum源，以及epel源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum cleann all #清空原有的yum缓存 yum makecache #生成新的yum缓存，便于加速软件下载 # 3.安装系统初始化所需的软件 yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel gcc # 4.安装jumpserver运行所需的依赖环境 yum -y install git python-pip gcc automake autoconf python-devel vim sshpass lrzsz readline-devel zlib zlib-devel # 5.修改系统的字符集，改为是中文的 localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 export LC_ALL=zh_CN.UTF-8 #把修改字符集的命令，写入全局配置文件 echo 'LANG="zh_CN.UTF-8"'> /etc/locale.conf # 6,检查系统编码 locale部署数据库mysql 5.6# 1.获取mysg15.6的软件包 # wget https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-5.6.49-1.el7.x86_64.rpm-bundle.tar mkdir /teach_jmp cd /teach jmp/ wget https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-5.6.49-1.el7.x86_64.rpm-bundle.tar # 2.解压缩该mysql压缩包 mkdir mysql_rpm tar -xf MySoL-5.6.49-1.el7.x86_64.rpm-bundle.tar -C ./mysql_rpm/ # 3,使用yum命令，安装一系列的rpm包 cd mysql rpm/ 1s yum localinstall ./* # 4.安装完毕后，检查mysg1的配置文件，做如下的修改 [root@teach jumpserver mysql_rpm]#cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid # # include all files from the config directory # !includedir /etc/…

Typecho博客部署
type: item
date: 2024-03-06T06:21:04+00:00
description: 安装1Panel服务器运维管理面板项目：https://github.com/1Panel-dev/1Panel这个面板项目，基本都是容器化部署，这个我比较喜欢用来做一些中间件的部署，像数据库、配置中心、kafka等！部署网站不是很推荐，因为这个证书申请需要账号。部署：curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh安装宝塔服务器运维管理面板这个面板项目部署不是容器化部署，是直接安装在系统里面的，部署网站非常方便，还支持免费申请证书，不需要账号！部署yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec宝塔面板安装完后，直接在应用商店安装 LNMP 四件套。部署typecho本次部署博客使用的是 typecho 框架和宝塔面板官网：https://typecho.org/从官网下载完压缩包之后，先在宝塔面板的网站选项中添加网站，输入域名等，然后直接在/www/wwwroot/域名/解压typecho如果是在云服务器中一定要开放各个服务的端口，否则在外网无法访问。之后就是访问typecho页面完成初始化设置，建立一个新的数据库用户和数据库专门负责typecho。选择主题在Github上搜 typecho 可以搜到很多主题nexmoe：https://github.com/theme-nexmoe/typecho-theme-nexmoeCuckoo：https://github.com/bhaoo/Cuckoo我选择的是Cuckoo，Cuckoo的后台页面做的不错，而且官方文档写的也很详细，部署起来很方便。也可以多试试别的主题，选择适合自己的一款。安装主题也很简单，在typecho文件中进入/usr/themes，把下载的主题压缩包直接上传到这个目录解压即可，然后进入typecho后台启用主题。关于主题的更多操作，多看官方文档即可。