在原节点上导出镜像文件执行 vzdump 备份命令
1vzdump 200 --compress zstd --mode stop --storage local
解释:
200:虚拟机/模板 ID;
--compress zstd:使用 zstd 压缩(生成 .vma.zst 文件);
--mode stop:停止虚拟机后再打包(最稳定);
--storage local:输出到 /var/lib/vz/dump/。
执行完会生成三类文件,例如:
1234/var/lib/vz/dump/├── vzdump-qemu-200-2025_11_05-12_30_01.vma.zst├── vzdump-qemu-200-2025_11_05-12_30_01.log└── vzdump-qemu-200-2025_11_05-12_30_01.vma.zst.notes
复制文件到目标节点使用 scp 把文件传到另一台 PVE:
1scp /var/lib/vz/dump/vzdump-qemu-200-2025_11_05-12_30_01.vma.zst ro ...
安装环境首先下载安装下vc和directX
vc
directX
下载好了进行安装
这里要注意的是dX这个是个自解压程序,解压了还要去解压路径找到DXSETUP.exe去安装
安装steamcmd下载安装steamcmd我们下载安装下steamcmd
steamcmd
我们在 C:\Program Files 下新建一个安装目录给steamcmd
把刚才下载的安装包,解压丢到这里面来
配置系统变量为了方便,我们把它加进系统环境变量
搜索环境变量
选中“Path”,点“编辑”
点“新建”
填入路径,然后点“确定”
测试环境变量测试下刚才的添加是否成功
使用管理员模式打开cmd命令行
更新steamcmd我们输入steamcmd,发现正常启动没有报错
并且自动在安装和更新了,说明没问题了
下载安装游戏因为众所众知的原因,steamcmd下载安装需要一点时间,我们耐心等待
出现如下界面就是安装好了
下载幻兽帕鲁服务器文件打开 SteamCMD,输入以下命令登录匿名账户并下载服务器文件:
12login anonymousapp_update 2394010 valid ...
开启RDP打开服务器管理器
本地服务器 - 远程桌面
勾选“允许” - “确定” - “应用” - “确定”
这样就ok啦
SFTP安装openssh服务器搜索powershell并右击以管理员身份运行
执行以下代码开启openssh服务
1Add-WindowsCapability -Online -Name OpenSSH.Server*
设置自动启动,并且查看下设置结果
123Start-Service sshdSet-Service -Name sshd -StartupType 'Automatic'Get-CimInstance -ClassName Win32_Service -Filter "Name = 'sshd'" | Select-Object Name, Status, StartMode
配置SFTP服务器我们开一下隐藏文件
我们打开配置文件 C:\ProgramData\ssh\sshd_config
启用SFTP子系统找到并取消 Subsystem sftp 这行的注释
确 ...
添加接口首先我们要在硬件里添加一个端口给cloudbase-init
先关闭虚拟机,然后如图添加
同理再添加一个cloud-init设备
下载安装给虚拟机开机,通过官方下载地址进行下载
cloudbase-init
打开安装,一直下一步即可
到这里选端口的时候就选我们刚才刚添加好的端口,下面的勾是Windows Server就不要勾
点install以后等一会它自己安装
最后这两个也不要勾选,然后点“finish”完成安装
配置文件在Cloudbase-Init安装路径下的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”中执行以下操作:
在最后面增加以下内容:
123netbios_host_name_compatibility=falsemetadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveServicefirst_logon_behaviour=no
增加配置 ...
上传镜像首先下载一个windows的镜像和驱动的文件到自己的电脑上
windows server2022
virtio驱动
然后在pve节点的local盘-iso镜像,这里点“上传”按钮进行上传
创建虚拟机点击创建点击右上角“创建虚拟机”按钮
常规vmid 是独一无二的
名称看情况写一个可以改
勾选“高级”的话可以选开机自启动,这个就是宿主机开机vm就跟着开机
然后我们点“下一步”
操作系统系统我们选默认的“使用CD/DVD光盘镜像文件”,“ISO镜像”选刚才上传的Windows镜像
右边“类别”和“版本”这里要根据上传的Windows版本去选
并且勾选一下“为VirtIO驱动程序添加额外驱动器”,“ISO镜像“选刚才上传的驱动镜像
这样后面就不用再单独挂载驱动的镜像了
然后点“下一步”
系统系统这里其他都默认即可,记得勾选“Qemu代理”
“添加TPM”这个根据你的Windows版本决定,我这里是WindowsServer2022不需要
继续下一步
磁盘没什么可说的,按需填写即可
CPU“类别”选“host”,这样可以避免虚拟机读不出来cpu型号引发的程序运行问 ...
创建api登陆pve以后,点击左上角数据中心-权限-api令牌,点“添加”按钮
填写内容用户就是你当前登陆的用户,后面自带了
特权分离这里指的是你创建的api可以和你当前的用户权限分离,比如说我这里是使用的root根用户,如果不不勾选的话就是最高权限了,勾选的话等下要去设置一下api的权限
令牌id起一个好理解的id即可
有限期不选的话api就是永久不到期的
备注这里可以注明一下api的用户之类的
这些填好了以后我们点“添加”按钮创建api
记录密钥添加好了以后它会自动弹出来一个令牌密钥
要把这个密钥好好保存,因为后面就不会再显示了
权限管理刚才说如果勾选了特权分离的话,权限就是在这里单独设置
连接内网首先我们通过l2tp VPN登录到内网里,这里要注意一下,MacOS默认不会勾选全局,这里我们选一下全局
连接ipmi并挂载系统镜像我们通过浏览器访问内网网址登录到ipmi,然后打开右下角这个远程窗口
点击右上角的虚拟介质,我们把刚才下载的pve镜像挂载一下
等过一会挂载好了我们就软重启一下
安装pve从挂载启动重启过程中我们按F11进入启动项
选这个 one-shot uefi boot menu
然后选这个 virtual optical drive
图形安装稍等下就进入了pve的设置页面,选择默认选项带GUI界面安装
用户条款这里需要一点时间才会出现界面,用户条款选择“I agree”
硬盘此处如果需要给系统盘做raid,请选择“Options”,这里我直接默认安装了,选择“Next”
国家和时区国家和时区,“china””asia/Shanghai”,点击“Next”
密码设置系统密码(即为root密码),还有邮箱,点击“Next”
网络设置网卡选择(多网卡请规划好使用哪块网卡)
FQDN格式为 nodename.XX 之类
IP地址 ...
原因macos会默认对app或者安装包的应用签名进行一个校验,如果你的app不是正常签名
例如破解版本或者个人开发的,可能就会提示app已损坏
这时候我们只要自己签名一下即可
签名intel cpu的mac在终端中运行以下命令:(name.app就是需要更改签名的程序)
1sudo codesign --force --deep --sign - /Applications/name.app
M cpu的mac123sudo xattr -rd com.apple.quarantine /Applications/name.appcodesign --force --deep --sign - /Applications/name.app
注意事项这里尤其要注意的是 /Applications/name.app 就是我们要签名的app名字
因为Mac是类unix系统,如果app名字里有空格是需要\转译一下的
如果不明白的话,可以直接把app图标拖进终端里会自动生成路径和名字
还有如果提示需要安装Xcode的话我们就安装一下,或者直接运行下面命令安装
1xcod ...
作用之前使用 request.data 获取请求体中的数据。
这个 reqeust.data 的数据怎么来的呢?其实在drf内部是由解析器,根据请求者传入的数据格式 + 请求头来进行处理。
JSONParser
FormParser
MultiPartParser(*)既可以上传文件,也可以上传数据
12345678910111213141516<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="http://127.0.0.1:8000/test/" method="post" enctype="multipart/form-data"> <input type="text" ...
作用限流,限制用户访问频率,例如:用户1分钟最多访问100次 或者 短信验证码一天每天可以发送50次, 防止盗刷。
对于匿名用户,使用用户IP作为唯一标识。
对于登录用户,使用用户ID或名称作为唯一标识。
思路如何限制? 假如10分钟3次
“9123123”:[16:45, 16:43, 16:42]
1.获取当前时间 16:45
2.当前时间 - 10分钟 = 计数开始时间 16:35
3.删除小于计数时间的
4.计算长度 :超过,错误;未超过,访问
使用SimpleRateThrottle直接实现了上面的限流思路,所以我们不继承Throttle而是直接继承SimpleRateThrottle方法。
限流需要记录每次成功访问接口的时间,所以需要缓存,我们这里设置redis为默认缓存并使用。
1234567891011121314151617181920212223242526272829303132333435363738from rest_framework.views import APIViewfrom rest_framework.response import ...

