脚本由ai编写+人工审查,基本没逻辑问题,代码全开放,如有需求、意见可在本文评论区回复留言
脚本非进程注入,而是采用 DirectX 底层输入接口-DirectInput 方式输入,基本和外设输入一致。运行期间请勿切屏其他软件(虽然我也不知道有啥影响),因为输入是全局的,不用时可以关掉脚本
1、需要安装python环境,当前在测试阶段所以没打包exe,可以根据自身需求修改
2、脚本运行过程中依然需要手动长按前进键,如果不想手动按前进键,可尝试文章末尾的beta版脚本,可开局自动按前进键,但测试时间较少可能有bug
3、建议将输入法开大写锁定或者切换ENG输入法,否则“X”键重开可能会失效导致直接按下回车回到主菜单
PyDirectInput==1.0.4
PyAutoGUI==0.9.54
opencv_python==4.13.0.92pip install pyautogui pydirectinput opencv-python或 将上方requirements.txt保存下来:
pip install -r .\requirements.txt1、需要对特定按键进行截图,如下图:

截图要求:尽可能紧贴着文字,并且保持默认的按钮背景(如“开始竞赛赛事”正常情况下是黑色背景,除非鼠标移动到其他按钮上)。将截图名称修改为restart.png、start_race.png放到脚本相同目录下
2、修改代码区域:
在代码的检测区域修改坐标。我预设的是2k屏幕的坐标,如果不确定可以使用qq截图来确认坐标,选取文字左上角的X Y坐标,并设置区域高度与宽度(向下和向右的边长),建议要比截图大50左右。
3、先选好蓝图进入到有“开始竞赛赛事”按钮的页面,之后再运行脚本,防止在其他页面误触。
# 需手动按住前进键版本,可将前进键改成空格键方便按压
import time
import pyautogui
import pydirectinput
import random
# =================================================
# 提前准备好的 UI 截图文件名
IMG_RESTART = 'restart.png'
IMG_START_RACE = 'start_race.png'
# 扩大检测区域 (左上角X, 左上角Y, 宽度, 高度) (注:建议坐标设定要比截图的坐标大一些,提供容错区域)
RESTART_REGION = (280, 1280, 200, 100)
START_RACE_REGION = (70, 830, 300, 120)
# =================================================
def check_ui(img_name, search_region, conf):
"""封装检测函数,处理异常并返回布尔值"""
try:
pos = pyautogui.locateOnScreen(img_name, region=search_region, confidence=conf)
return True if pos else False
except pyautogui.ImageNotFoundException:
return False
def wait_and_click():
print("🚗 地平线刷点辅助脚本已启动,5秒后开始监测,请切回游戏...")
time.sleep(5)
while True:
# 1. 独立检测“重新开始”
if check_ui(IMG_RESTART, RESTART_REGION, 0.8):
print("🎯 检测到结算界面:按下 X 并 回车...")
time.sleep(0.5 + random.uniform(-0.05, 0.2))
pydirectinput.press('x')
time.sleep(0.5 + random.uniform(-0.05, 0.2))
pydirectinput.press('enter')
time.sleep(5)
continue
# 2. 独立检测“开始竞赛赛事”
if check_ui(IMG_START_RACE, START_RACE_REGION, 0.7):
print("🚀 检测到发车界面:自动回车!")
time.sleep(0.5 + random.uniform(-0.05, 0.3))
pydirectinput.press('enter')
time.sleep(5)
continue
time.sleep(1.5)
if __name__ == "__main__":
wait_and_click()支持开启后自动按压前进键(键位可自行修改),并且可以读取全局快捷键(默认F9开关脚本)。缺点是必须要管理员权限运行脚本,否则脚本虽然没报错但无法读取到全局快捷键。
requirements.txt:
PyDirectInput==1.0.4
PyAutoGUI==0.9.54
opencv_python==4.13.0.92
keyboard==0.13.5main.py
import time
import pyautogui
import pydirectinput
import random
import keyboard
# ================= 配置区 =================
# 提前准备好的 UI 截图文件名
IMG_RESTART = 'restart.png'
IMG_START_RACE = 'start_race.png'
# 检测区域 (左上角X, 左上角Y, 宽度, 高度)
RESTART_REGION = (280, 1280, 200, 100)
START_RACE_REGION = (70, 830, 300, 120)
FORWARD_KEY = 'space' # 前进键,可以自行修改为 'w' 或其他键
HOTKEY = 'f9' # 脚本启停的快捷键
# ================= 状态变量 =================
is_running = False # 脚本默认处于停止状态,按下热键后启动
is_driving = False # 标记当前是否正在按压前进键
def toggle_script():
"""热键触发的回调函数:切换脚本启停状态"""
global is_running, is_driving
is_running = not is_running
if is_running:
print(f"\n▶️ [状态] 脚本已启动!正在监测游戏画面...")
else:
print(f"\n⏸️ [状态] 脚本已暂停!你可以安全地切换到其他窗口。")
# 安全机制:如果在比赛中途暂停脚本,必须释放前进键,否则会一直往前冲
if is_driving:
pydirectinput.keyUp(FORWARD_KEY)
is_driving = False
print("🛑 [安全] 已强制释放前进键。")
def check_ui(img_name, search_region, conf):
"""封装检测函数,处理异常并返回布尔值"""
try:
pos = pyautogui.locateOnScreen(img_name, region=search_region, confidence=conf)
return True if pos else False
except pyautogui.ImageNotFoundException:
return False
def main_loop():
global is_driving
print(f"🚗 地平线全自动刷点脚本已加载。")
print(f"💡 请将输入法切换为纯英文 (ENG) 以防万一。")
print(f"⌨️ 按下 【{HOTKEY.upper()}】 键来 启动/暂停 脚本!\n")
# 注册全局热键
keyboard.add_hotkey(HOTKEY, toggle_script)
while True:
# 如果脚本被暂停,则休眠等待,不执行任何操作
if not is_running:
time.sleep(0.5)
continue
# 1. 检测“重新开始” (比赛结束)
if check_ui(IMG_RESTART, RESTART_REGION, 0.8):
print("🎯 检测到结算界面:准备重新开始...")
# 停止按压前进键
if is_driving:
pydirectinput.keyUp(FORWARD_KEY)
is_driving = False
time.sleep(0.2)
pydirectinput.press('x')
time.sleep(0.5 + random.uniform(-0.05, 0.15))
pydirectinput.press('enter')
# 结算动画较长,休眠防止重复触发
print("⏳ 等待加载下一局...")
time.sleep(5)
continue
# 2. 检测“开始竞赛赛事” (新局开始)
if check_ui(IMG_START_RACE, START_RACE_REGION, 0.7):
print("🚀 检测到发车界面:自动回车!")
time.sleep(0.5 + random.uniform(-0.05, 0.15))
pydirectinput.press('enter')
# 等待几秒钟黑屏/发车倒计时结束
time.sleep(4)
print(f"🏎️ 开始按压前进键 ({FORWARD_KEY}) 跑图...")
pydirectinput.keyDown(FORWARD_KEY)
is_driving = True
# 跑图过程中不需要高频检测,休眠几秒降低CPU占用
time.sleep(5)
continue
# 常规休眠,避免死循环占满单核 CPU
time.sleep(1)
if __name__ == "__main__":
main_loop()
]]>在联想社区论坛上,我的用户名是‘iseon’,我们一直在讨论Miix 2 11的性能问题。似乎这款平板电脑的性能问题源于固件设定的电源限制。我一直试图寻找一种方法来绕过这个电源限制,并认为可能在BIOS设置中。我已经发现了一种解锁BIOS所有高级设置的方法,并进行了一些初步的实验。但遗憾的是,我还没有在解锁的BIOS中找到可以移除电源限制的设置。
所以,如果你只是想提高平板电脑的性能,那么这个BIOS解锁并不能保证你能够做到这一点!尽管如此,隐藏的BIOS高级页面包含了一个巨大的设置列表,可能有一些设置对其他用途很有用——那些想要完全控制平板电脑设置的人可能会想要这样做。我强烈建议只有高级用户继续操作——但我已经用初学者友好的方式编写了这份指南,以便任何感兴趣的人都可以跟随。对于你因操作不当导致设备故障,我概不负责。请谨慎操作,我能保证的只是这在我的平板电脑上有效。
这个BIOS修改不会使你的保修失效,这里所做的任何更改都可以通过加载默认BIOS设置或移除电池重置BIOS来恢复。我在BIOS版本97CN37WW上测试了这个修改,但它可能也适用于97CN39WW(解压缩的BIOS设置页面看起来是一样的)——如果你想尝试其他版本,由你决定,可能会成功,也可能不会。版本97CN39WW增加了一些额外的UEFI安全措施,这可能会阻止你进行此操作——我没有尝试过。它应该适用于i3和i5版本(我使用的是i5)。
在开始之前,这里有一些解锁的BIOS图片(我最近重置了BIOS,所以日期都是错误的):


我们将使用Rufus将Ubuntu ISO放到USB驱动器上,下载链接:Rufus下载链接





进入现有的终端窗口(或打开一个新的终端窗口),执行‘apt-get update’并安装Ghex应用程序(我们将需要它来编辑一些UEFI BIOS变量),在所有提示中都回答“是”:
sudo -i
apt-get update
apt-get install ghex接下来,在终端窗口中输入以下内容(你可以输入部分目录名并按Tab键自动补全,特别是文件名,只需输入‘OilSetup-’并按TAB键,你将得到正确的文件)。
ghex /sys/firmware/efi/efivars/OilSetup-88d1911c-ab4a-4335-9e9a-26be9081acc3


现在执行文件->保存并关闭应用程序,你就完成了BIOS的编辑!恭喜!
关闭计算机,拔掉USB驱动器,再次按住电源+音量上键启动计算机,进入BIOS,你将在BIOS启动屏幕上找到两个新的红色页面!太棒了!高级页面包含许多与电源、热管理、芯片组功能等相关的设置。主页面包含一些常规设置,类似于默认存在的主页面。在更改高级设置时要非常小心,特别是处理器电源屏幕上的自定义TDP设置——我发现这个特定设置会使平板电脑无法启动(到目前为止我更改的其他设置没有使平板电脑无法启动)。
如果你更改了某些设置并且平板电脑无法启动,你需要打开后盖并将电池从主板上拔下(小圆形电池和主电池都要拔下),这将重置BIOS,你可能需要使用Windows救援USB驱动器来使你的Windows安装再次可启动。如果你打算进行实验,请提前制作Windows/Linux恢复USB。
如果你已经解锁了BIOS并尝试了设置,请发表评论分享你的发现!
转载结束
]]>DD重装本质上是利用Linux的指令来进行硬盘擦写填充文件。
菜鸟编程:Linux dd 命令用于读取、转换并输出数据。dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
本文使用Github开源项目 reinstall ,并将云电脑系统重装为Windows 10 LTSC 2021。
一键重装脚本 English 项目介绍
- 支持安装 16 种常见 Linux 发行版
- 支持用官方原版 iso 安装 Windows,并且脚本会自动查找 iso 和驱动
- 支持任意方向重装,也就是支持 Linux to Linux、Linux to Win、Win to Win、Win to Linux
- 专门适配低配小鸡,解决内存过少导致无法进行网络安装
- 自动判断动静态 IPv4 / IPv6,无需填写 IP / 掩码 / 网关
- 支持 ARM,支持 BIOS、EFI 引导,原系统支持 LVM、BTRFS
- 不含第三方自制包,所有资源均实时从源站点获得
- 有很多注释移动云电脑切记需要下载好远程软件在数据盘,并保证软件打开就可以使用,否则在无鼠标驱动下安装远程控制软件相当困难
天翼云电脑实测无需远程,重装系统后仍然可以在官方客户端键鼠操控,也无需强制数据盘
打开设置 - 更新与安全 - Windows安全中心,点击左侧病毒与威胁防护,将选项全部关闭。
如使用天翼云电脑,系统可能预装火绒等杀毒软件,直接退出杀毒软件即可。
使用快捷键Win+X,选择 Windows Powershell(管理员)打开即可

复制以下脚本,并粘贴到Powershell终端内(右键终端界面即可粘贴)
certutil -urlcache -f -split https://github.299993.xyz/https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat注:这里的脚本使用了Github加速源。如以后该加速源关闭,将无法正常执行脚本,可使用Github原链接,可能需要加速器。
备用链接
国内加速源
certutil -urlcache -f -split https://jihulab.com/bin456789/reinstall/-/raw/main/reinstall.bat
国外(Github原链接)
certutil -urlcache -f -split https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat执行完成
复制以下脚本,并粘贴到Powershell终端内(右键终端界面即可粘贴)
这里要安装的为Windows 10 LTSC 2021系统,稳定且性能占用较低。如有其他系统需求,可以在https://drive.massgrave.dev/网站查找所需镜像。
./reinstall.bat windows --iso='https://drive.massgrave.dev/zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso' --image-name='Windows 10 Enterprise LTSC 2021'期间会出现软件安装的窗口,无需理会,等待其自动安装和配置。
当最后几行出现下面内容时则为初期准备完成,可以重启安装:
***** INFO *****
windows
Username: administrator
Password: 123@@@
Reboot to start the installation.
You can run this command to reboot:
shutdown /r /t 0
PS C:\Users\Administrator>
在Powershell内输入以下指令,重启系统进入Linux子系统,开始自动DD重装。
shutdown /r /t 0系统重启后,无需任何操作,一直等待或者关闭云电脑客户端放后台慢慢装即可。花费时间取决于网速和硬盘读写速度,如云电脑为机械硬盘可能会慢一些。
由于我这个天翼云电脑带宽只有50M,因此下载速度特别慢,前前后后需要30到50分钟左右。
全程为脚本自动操作,请勿手动介入,可能会打断脚本。一直等待到系统开机输入密码阶段才算安装完成。

注:天翼云电脑在重装后还是原系统卸载系统软件,都不影响在官方客户端的控制使用(截至2024/7/30是可行的)。但偶尔会出现弹窗显示异常提醒建议重启,点以后再说即可。

在Linux系统部署完成后,自动重启到Windows安装中。全程无需手动操作,也不要去介入操作,会打断进程。

安装完成后自动开机,默认开机密码:123@@@

移动云电脑需要开机后用键盘打开远程软件,进行远程连接后才能控制。
使用快捷键 Win+E 打开此电脑,方向键选择D盘,并选择Todesk_lite.exe,回车键打开软件进行远程连接。
天翼云电脑可直接用官方客户端控制。

天翼云电脑可在修改分辨率手动全盘。重装后无法进行自适应分辨率、硬盘映射等等功能,有需要可使用原系统。
刚安装好的系统分辨率不对,可以手动在桌面-右键-显示设置,手动调整分辨率为1920x1080即可。
激活推荐使用HEU-KMS,可参考我前面的文章 安利个Windows激活工具 HEU-KMS
最便捷的文件传输方式可使用第三方远程控制软件,进行文件传输;也可以提供各种网盘进行传输。官方客户端文件传输能力失效。
仔细研究了一下ecloud的驱动相关,按自己需求整理出了适用于官方客户端的驱动优化
修复以下问题:
需下载以下链接内三个文件(经fiddler抓包后未发现上报连接,但不排除定时上报。程序已精简过,去除其他服务如远程录屏、打印等服务)
https://yanhy.lanzouj.com/b033zndfuj
密码:5k43
先创建好文件夹,在C:\Program Files (x86)\ctyun\clink(也不一定要指定位置,这是原系统安装路径,为确保不出错还是推荐本路径)
解压后,将64文件夹放到clink目录内,如下图

打开64文件夹,右键点击以管理员身份运行来打开clink_agent.exe和clink_cb_helper.exe。运行后没任何反应,但可以通过任务管理器看到已经在运行了。注:如不使用管理员身份运行,则在一些系统中可能因为没权限导致无法使用部分功能。

经多次测试,核心服务程序为必须运行项,否则其他程序无法正常工作,;服务程序则为跟着客户端窗口调整分辨率、剪贴板同步、文件拖拽传输等功能。
音频驱动直接双击安装即可

随意解压一个位置,打开文件夹后,选择 qxldod.inf 文件,右键-安装。安装后没有弹窗,但如果第一次安装屏幕会闪烁并修改分辨率为很低的一个状态。
如果前面有安装了守护程序,只需要缩放一下官方客户端窗口,即可自动调整云电脑分辨率大小。
如果不使用守护程序,只安装驱动,可以手动在桌面-右键-显示设置,手动调整“显示器1”的分辨率为1920x1080即可,可以修复双重鼠标指针。(单独安装除了修复双重鼠标指针好像意义不大,经过测试这个驱动貌似就是配合守护程序调整分辨率使用)
当云电脑DD重装后,会失去一些便利的特性,但是同时也有一些好处。使用全新系统,省去官方定制系统臃肿的性能占用和一堆无用的软件,删除官方监控后门,甚至部分云电脑可以重装后直接变成不休眠(天翼云还是会休眠),能更好的由自己控制。
本文部分内容摘抄自该博主(https://kui.li/989.html),如有版权问题请留言,会及时处理
补充:移动云电脑家庭版操作较麻烦,可以参考这篇文章获得更多移动云电脑相关内容:https://www.yuque.com/scynull/cloud/ikxva5t32sii3lrn
本文到此结束,如有更多感兴趣的话题可以关注本博客,不定期更新~
]]>截图版本:42.0.4

可能听名字有人有点耳熟,但是对这个软件本体很陌生,那么切换一种UI,就眼熟很多了
在软件右上角 三条横 的设置中,选择“经典界面”,即可打开

眼熟了吗?
没错,作者至今一直在更新,更新在微信公众号和Github上
如何还原到新版本界面:删除同目录下的Set.ini,再重新打开软件即可恢复

Github: https://github.com/zbezj/HEU_KMS_Activator/releases/
公众号:《更新:HEU KMS Activator v42.0.4》
附图:公众号获取方式
打开软件后,什么都不需要做(记得同意使用协议),点 开始 按钮即可开始自动激活。如检测到电脑上没安装Office则会自动跳过。

点击按钮后,软件下方会出现进度条,静静等待即可(个人经验约1-5分钟,可不联网)。
激活完成后,会弹窗结果。演示机未安装Office因此显示只有Windows激活结果。可重复激活,不担心掉激活或者覆盖等。

Windows:打开系统设置 - 更新与安全 - 激活,即可看到激活结果。演示机使用精简的win10系统,因此激活部分有bug可忽略。

Office:随便打开个软件如word,点左上角文件 - 左下角账户,可以看到右侧产品已激活且显示激活的版本

到此,简单的激活方法就结束了,软件可以继续收藏吃灰或者直接删除~
KMS激活续期:在一些特殊条件下,会触发KMS激活方式。KMS的激活有180天的期限,因此要在一开始激活时勾选KMS自动续期。如激活完成后才发现是KMS激活,可以勾选后进行第二次激活。部分杀毒软件在KMS自动续期补丁安装时报毒,可以手动加白名单或者信任列表即可。
Office的盗版Banner警告:有时候在部分版本的Office软件内,打开时会在上方弹出一个Banner显示类似于“你可能是盗版的受害者”。此时可以打开HEU-KMS软件,然后选择最后一栏。

在Office R2V/管理工具部分,选择Office版本,下方选择Fix_banner项,然后点击开始,等待修复完毕即可。

更换Windows版本:有时候安装时手快点成了家庭版,但是家庭版阉割了很多东西(如Hyper-v、组策略管理器等),可以用HEU-KMS来转换Windows版本。
打开软件,选择“其他”栏,选择左上角的“更改Windows10/11版本”。在下拉框中,选择你想修改的版本。

通常比较受欢迎的是ProfessonalWorkstation(专业工作站)版本,此处的演示机系统也是专业工作站版本(人均工作站(bushi))。选择完成后,点击右侧花瓣图表,点击确定按钮开始转换。为方便演示,这里选择专业版来转换。

转换成功后,会有弹窗提醒并要求重启计算机,一些改动也即将发生。

如果此时打开设置查看系统版本,会发现已经转换成功,但尚未激活。重启后重新进行激活即可完成。(点击确定按钮并不会强制重启,可以保存好文件后手动点击重启)

其他玩法还有很多,如至今半死不活的数字激活(一些曾经数字激活的电脑上还留着TPM信息,重装后仍然可以数字激活)、KMS激活(手动强制使用KMS激活)、OEM激活(模拟品牌电脑的操作)等,还能自建激活服务器,可以自行研究研究,对我来说这玩意就是在u盘里面吃灰,装完系统后第一个走过场然后继续吃灰的实用小工具

本文到此结束,希望这篇文章有帮到你~
]]>本文部分内容来源于 什么值得买:每天一个群晖小tip 篇三十四:五步操作将群晖RAID1阵列降级为Basic模式
首先要拔掉一块硬盘,破坏Raid1的阵列,群晖会提示存储池降级,并有个“堪用”警示。


1、使用ssh登陆群晖并获取root账户;
sudo -i2、输入命令,查看当前分区;
cat /proc/mdstat
3、根据数字大小确认需要处理的分区状态,由于我的硬盘为4TB大小,根据容量大概可以确认这里为md2分区,然后执行下列命令;
mdadm --grow --raid-devices=1 --force /dev/md2
出现 raid_disks for /dev/*** set to 1 即为降级成功
命令解析;
mdadm:这是一个用于管理软件 RAID 阵列的 Linux 实用程序。
--grow:这个选项用于修改现有的 RAID 阵列,比如更改设备数量、布局或其他属性。
--raid-devices=1:这个选项指定 RAID 阵列应该具有的新设备数量。在当前情况下,将其设置为 1,这实际上意味着将 RAID 阵列缩小为单个设备,即降级为Basic模式。
--force:这个选项用于强制应用更改,即使这些更改可能是危险的或不受支持的。使用 --force 应该非常小心,因为它可能导致数据丢失或损坏。
/dev/md5:这是尝试修改的 RAID 设备的路径。md5 通常指的是系统中的第五个软件 RAID 阵列。
md0/1 通常为群晖的系统分区。回到群晖DSM后,无需刷新网页即可看到阵列类型变成了Basic,并且状态为良好

操作完成后,记得关闭SSH确保网络安全。插回刚刚的硬盘,重新初始化并创建存储池、存储空间即可使用。

如果刷入其他系统如Los后再刷回MIUI,有概率出现“查找手机存储损坏”导致无法开启查找手机,更严重者出现“检查设备安全信息出错”而无法登陆小米账号,从而被迫变成账号锁黑机。网上查找了一下,最后通过9008线刷方式解决
个人推荐一个很好的小米ROM网站,提供全部线刷包、卡刷包及国行、全球包
地址:https://xiaomirom.com/
参考文章:https://www.hu60.cn/q.php/bbs.topic.98330.html?showBot=1
使用Bandizip或者其他压缩软件进行解压,需要解压两层,最后得到以下文件夹:
如需要解决“查找手机存储损坏”等问题,需要进入 images 文件夹,打开 rawprogram0.xml 文件,搜索 persist ,在同一行左侧的 filename="" 修改为 filename="persist.img" ,保存
还是在XiaomiRom网站下载,米5的话推荐下载2018版本,注意不要勾选全部删除并lock,这样会导致手机BL锁重新锁定
地址:https://xiaomirom.com/download-xiaomi-flash-tool-miflash/
下载完打开软件,选择路径 刷机包解压路径/images ,提示未找到脚本确定即可,9008刷机不需要线刷脚本
社区内有很多方法能进,如果手机有解锁bl的话,可以用 fastboot oem edl 进入9008,否则需要拆机短接(工程线未尝试过,由于自己的米5经常拆机,所以一分钟就可以解决,没去魔改线材)
先插上手机端的typec防止不方便用力插入;电脑端usb拔出;镊子等短接右侧触点(此时需要关机,原贴说拔电池,其实不需要);短接保持,插入电脑端usb,听到设备接入声音即可松开短接;查看设备管理器是否有9008端口设备,如果有即可开始刷机;
图片来自贴吧:https://tieba.baidu.com/p/5077676617
在miflash内点击加载设备,选中设备,点击刷机即可开始,需要等待3分钟左右也可能更快
刷机结束后会显示finish,此时断开usb,手机先不急装后盖,长按电源键开机(可能需要10秒,因为要长按重启退出9008),等待3到5分钟开机进系统后,如果不提示“查找存储损坏”之类的即可正常联网登陆使用
在查看了不少地方的经验,看到有人说可以在小米云退出查找设备,再次联网即可重新登录账号。不确定是否有用,在开机之前我先退出了小米云查找设备,然后再开机,一切正常,重新登录账号即可使用
来源:https://web.vip.miui.com/page/info/mio/mio/detail?postId=3862195 评论区
]]>近期需要搭建个简易的小型网站,原想着用服务器面板解决,但是网站程序要求苛刻(如使用PHP函数、安装模块、资源性能分配等),环视了一圈服务器面板也没有找到中意的,不是限制太多就是自身占用过大,因此决定自己搭建配置LNMP三件套来部署网站程序,以达到最佳性能与最小损耗...
上期文章: Debian10系统下LNMP三件套安装与配置——Nginx与初始环境篇
本文将使用手动安装MySQL的方式来介绍流程。
MySQL社区版官网下载地址: MySQL Community Downloads
进入网站,选择系统版本(以本文Debian 10.2为例):

接下来直接点击第一行的 DEB Bundle 右侧下载按钮进入下载页面,无需注册登录账户,直接点击最下方"No thanks, just start my download."即可获取到下载链接,也可以右键复制该超链接,进入SSH使用wegt下载该链接
MySQL 8.9.29下载直链:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-server_8.0.29-1debian10_amd64.deb-bundle.tar新建文件夹并将下载的tar包移动进去,因为解压会解压出大量依赖与组件包:
mkdir mysql && cd mysql
tar -xvf mysql-server_8.0.29-1debian10_amd64.deb-bundle.tar
rm mysql-server_8.0.29-1debian10_amd64.deb-bundle.tar之后可以在目录里面看到一堆MySQL相关的软件包:

注意:MySQL手动安装软件包是需要顺序的,否则会报错提醒MySQL-xxx未安装(顺序不一定完全一致,此处为个人经验)
dpkg -i mysql-common_8.0.29-1debian10_amd64.deb
apt install libmecab2 libnuma1
dpkg -i mysql-community-server-core_8.0.29-1debian10_amd64.deb
dpkg -i mysql-community-client-plugins_8.0.29-1debian10_amd64.deb
dpkg -i mysql-community-client-core_8.0.29-1debian10_amd64.deb
dpkg -i mysql-community-client_8.0.29-1debian10_amd64.deb
dpkg -i mysql-client_8.0.29-1debian10_amd64.deb
dpkg -i mysql-community-server_8.0.29-1debian10_amd64.deb安装完最后一个软件包后,会自动弹出配置窗口,一般情况下第一个页面是需要设置root密码,输入后回车;第二个页面为确认密码,重新输入一次;第三页选择Use Strong Password Encryption (RECOMMENDED)

最后查看版本号,如果输出正常即为安装成功
mysql -V类似输出:mysql Ver 8.0.29 for Linux on x86_64 (MySQL Community Server - GPL)
在一些平台上,MySQL进程名一般为
mysqld,但是在Debian 10系统环境下,暂不知道是版本问题还是环境问题,这里使用的进程名字是mysql
设置开机启动,并手动启动mysql,最后查看运行状态,如无报错即为运行正常
systemctl enable mysql
systemctl start mysql
systemctl status mysql执行以下命令,执行 MySQL 安全性操作并设置密码(如果前面有设置的话,这步里面设置密码环节可以跳过)
mysql_secure_installation输入指令后,根据下面流程进行配置:
y 并按 Enter 开始相关配置选择密码验证策略强度,建议选择高强度的密码验证策略。输入 2 并回车
y 移除匿名用户y 禁止root远程登录y 删除即可y 即可以下为测试环境下的配置流程图:
有关数据库的操作与用户的增删,本文不再详细描述。
]]>平时用的win服务器一般都是使用winserver2016、2019等,它们都有个共同特点:桌面图形化操作。好处显而易见,操作上手非常容易。但是弊端也是有的,相对linux来说,win的桌面等服务占用了太多性能资源,今天就来尝试一下“终端”版WinServer2016...
先下载WinServer的系统镜像或者准备一个镜像u盘、光盘以安装到物理机上
推荐镜像下载链接:https://msdn.itellyou.cn/
载入WinServer系统安装光盘,此处使用server2019版本

产品密钥可稍后再填写,选择“我没有产品密钥”,或者直接网上搜索一个填入(如果无法复制,推荐暂时不填写)
Windows Server 2019 Datacenter Retail:
[Key]:RC4VN-4GQBW-WYPTV-3BD66-FVXR6第三步选择系统版本,此处选择数据中心不带桌面版(标准版也一样)

第四步选择同意条款即可
第五步选择自定义安装,然后选择默认盘安装即可

点击下一步后即可开始安装系统

此版本系统因为比较轻量,因此安装很快,等待结束重启即可(重启后因安装所需可能还会重启一两次是正常情况)

正常启动后,会显示出这样的界面,与正常windows安装一致,都需要设置新密码(且新装的WinServer默认不会打开RDP远程服务,后面会将如何开启)

使用键盘选择确定,输入新密码并确认密码(注意切换中英文,默认中文输入法)

之后会进行短暂的用户设置,然后...就进入了主界面————windows的cmd窗口

(如果不慎把窗口关闭了,测试了一下win+r之类的快捷键并不能调出来,因此我选择最快的重启大法)

此时,可以输入cmd所支持各种指令,如tree指令,可以列举出目录全部文件

或者使用taskmgr指令打开任务管理器(突然就图形化了起来)

虽然说是有一部分图形化的内容,但是因为少了如explorer资源管理器之类的窗口,使得整体系统占用减少了很多,我分配的2g内存虚拟机待机仅占用500MB左右。(正常版本WinServer在MemReduce等软件配合下也可以清理很多内存,但是原系统待机占用却将近1GB)
以上部分为安装、使用WinServer系统无桌面版本的基本内容。
在每个WinServer系统新装的情况下都是默认不开启远程选项的,因此如果不是装服务商默认的镜像,还需要用户手动去服务器后台连接VNC手动打开远程连接
在一般的WinServer桌面体验版系统中,开启远程管理服务只需三步:
此电脑右键属性-高级系统设置-远程标签页勾选允许连远程连接到此计算机在WinServer2016或者更低版本还出现过因网络级用户身份验证无法从本地远程连接的情况,需要将仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议)(N)取消勾选即可
在很多情况下还需要手动开启防火墙端口,可以在上面三步做完后进行以下操作:
打开开始菜单-找到Windows管理工具-高级安全Windows Defender防火墙,打开后选左上角的入站规则,然后点击右侧的新建规则...,依次选择 端口-TCP-特定本地端口:3389-允许连接-全选(域、专业...)-名称:RDP远程-完成
此时便可以在本地输入服务器ip进行远程连接管理。
本文演示的WinServer系统无桌面版本开启RDP远程也是同理,只不过没有了可视化的界面,需要手动输入指令来修改。如果VNC等控制台无法复制粘贴指令,可以手动输入部分指令然后按Tab键,cmd会自动填充大量指令(单引号内的内容也可以按Tab键填充,双引号内需要手动输入)
指令如下:(空格代表分行,每条指令都要完整输入)
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\' -name 'fDenyTSconnections' -Value 0
New-NetFirewallRule -DisplayName "rdp" -Direction Inbound -LocalPort 3389 -Protocol tcp -Action Allow
New-NetFirewallRule -DisplayName "rdp" -Direction Inbound -LocalPort 3389 -Protocol udp -Action Allow
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\' -name "UserAuthentication" -Value 0指令解释:
仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议)(N)(一般在WinServer2016及更低版本会出现勾选后无法连接的情况,取消勾选后即可正常连接)正常连接后如下图

到此,WinServer无桌面版基本配置完成
低占用的系统、win的运行环境可以给很多占用较大且无需频繁操作的应用程序提供了很大的好处,正如很多仅依赖cmd即可运行的程序。
虽然说是无桌面版本,但基本的图形操作界面还是有的,同时也可以安装其他软件,虽然处理文件等是略不方便,但是比起长期占用的性能来说,能让自己所需的应用得到更好的运行才是作为一个服务器应该有的,毕竟服务器不是个人电脑,操作体验并不是服务器应有的追求。
经常为了在linux跑编译去安装虚拟机或者wsl,但其都有共同特征,即虚拟环境...为了更稳定的生产力以及学习linux,我找到了Fedora...
为搭建个正常的linux环境,我之前曾尝试了debian系的ubuntu、deepin、raspbian(PC版)、kali等,但因为都是同一系列的,总感觉操作有些乏味,于是找上了红帽系的系统,而Fedora正是红帽系广受欢迎的社区发行版系统,因此准备将其安装为第二系统。
这个系统使用体验不错,之前在搞服务器的时候用过centos,曾了解过yum软件包管理器等,但红帽系的系统操作还需学习,正好是个机会,写在博客上记录自己从安装双系统到优化fedora的日常使用。
安装完成后的截图:
因为日常开发还是windows系统,因此我选择从win来安装双系统。
因为考虑到可能日用,基本功能要有,所以这边选择工作站workstation版本下载。

在下载镜像的同时,打开分区软件(如diskgunius),为Fedora系统腾出一些空间(推荐60-80GB),将腾出的空间融为一块,且不创建新分区(后续Fedroa安装时会自动分配)(此文在fedroa系统下所写,因此无法提供截图)
下面操作步骤为回忆内容,至于为啥这么熟练,因为第一次分区分小了,重装了N次...
下载完毕后我选择使用u盘来安装(手头刚好有闲置u盘,其他的方法暂时不考虑),使用ultraiso将镜像写入到u盘,随后插入u盘,重启电脑,并按住F12不放(华为荣耀笔记本是F12选择启动设备,其他电脑自行查询),选择USB启动即可。
进入grub选择页后,直接选择默认的第一条进入即可,会进入到体验版系统,并会弹出系统安装引导软件。
选择中文、时区后,第三个选择硬盘需慎重。一般电脑内仅一块硬盘,选择默认硬盘后下方勾选自定义,再点左上角完成,会进入自定义分区页面
进入自定义分区页面后,确保下面显示空余空间为几十个GB而不是只有MB大小,如果是MB,可能分区的时候自动创建分区了,在下面列表找到目标分区后点下面的“-”号即可删除分区,小心不要把其他有重要数据的分区或者win系统分区删除了;如果是正常的几十GB,直接选择上面自动分区即可,无需多余操作,最后返回到主页面就可以开始安装系统了。
安装完成后,点击重启后拔出u盘,再次开机会自动引导到linux的grub启动,正常情况下grub启动项前两个分别是正常启动入口和恢复安全紧急模式入口,第三个引导项则是win的启动入口。(在fedora下,引导项无需且严重不推荐手动修改,系统会通过脚本自动找到可启动的linux内核,如果有安装多个版本,可以在系统内卸载旧内核版本,而不应该直接修改grub)
系统默认的grub可以说是非常简陋的了,因此在后面优化操作体验的时候会提到修改启动页面主题部门...
按照我个人的linux使用习惯,一般情况下没有国内优化的系统开箱第一件事就是换源了,不知道是不是错觉,没有换源总感觉装依赖都特别慢...
红帽系系统感觉换源还挺复杂的(之前给centos换源也是头疼了半天),这边就总结一下快捷指令吧,如果有特殊需要请做好备份
sudo sed -e 's|^metalink=|#metalink=|g' \
-e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://mirrors.ustc.edu.cn/fedora|g' \
-i.bak \
/etc/yum.repos.d/fedora.repo \
/etc/yum.repos.d/fedora-modular.repo \
/etc/yum.repos.d/fedora-updates.repo \
/etc/yum.repos.d/fedora-updates-modular.repo中科大源帮助文档:https://mirrors.ustc.edu.cn/help/fedora.html
换源后输入sudo dnf makecache即可产生软件包缓存,随后即可yum update(yum、dnf都是软件包管理器)
换源后速度明显提升不少(截图来自fedora系统内置截图软件)(圆角好评
在这波更新后,浏览器、文件管理区、应用商店等众多软件都需要重新打开以生效新版本(至少我这个系统版本是这样,而且印象里内核还有个更新

应用商店打开速度也快了起来,软件包也能加载出来

一般在大型更新后,我是习惯输入sudo yum clean all来清理更新产生的缓存(原因是因为之前翻目录发现缓存cache目录占用特别大,查了一下发现很多软件包缓存),效果如图:

在较大更新或者应用商店明示你要更新内核时,更新完经常会留下旧内核,这时候就需要手动清理了(也可以不理会,就是开机引导时会有脚本把全部内核启动项给仍到grub,会显得不好看)
查看当前内核版本 uname -r
我这里提示版本为“5.14.10-300.fc35.x86_64”
查看系统内安装的内核相关包 rpm -qa | grep kernel
明显可以看出同一个包(如kernel-core)有两个不同的版本,再根据上面查到的当前内核版本,可以确定要卸载的包:
kernel-headers-5.14.9-300.fc35.x86_64
kernel-core-5.14.10-300.fc35.x86_64(旧版本需卸载)
kernel-modules-5.14.10-300.fc35.x86_64(旧版本需卸载)
kernel-5.14.10-300.fc35.x86_64(旧版本需卸载)
libreport-plugin-kerneloops-2.15.2-6.fc35.x86_64
abrt-addon-kerneloops-2.14.6-9.fc35.x86_64
kernel-modules-extra-5.14.10-300.fc35.x86_64(旧版本需卸载)
kernel-core-5.14.17-301.fc35.x86_64
kernel-modules-5.14.17-301.fc35.x86_64
kernel-5.14.17-301.fc35.x86_64
kernel-modules-extra-5.14.17-301.fc35.x86_64接下来,输入 sudo yum remove kernel-5.14.10-300.fc35.x86_64等手动移除这四个旧版本即可(-core可能无法移除,可重启后尝试)
最后输入reboot重启即可
至此,fedora已经安装完毕,且软件包等更新完成,可正常使用。想要了解更多玩法,欢迎继续关注本博客!
]]>偶然发现个开源的js项目,部署到服务器上玩玩~
该项目名为 lifeRestart ,开源在github,源码主要为JS编写,可同时运行在本地控制台、网页上。
以下为控制台截图:
由于本项目为js项目,依赖于Node运行,因此先在服务器安装上NodeJS与npm:
sudo apt install nodejs
sudo apt install npm如果报错找不到该软件包,请先执行sudo apt update 与 sudo apt upgrade
安装完后输入node -v即可查看安装版本,验证是否安装成功
如果出现的版本号为14版本以下的旧版本,可能运行不了项目,请输入sudo apt autoremove nodejs来卸载旧版本node,然后跟着下面的教程安装最新版node:
去 node官网 找到最新版后,选择Linux 二进制文件 (x64) 或者选择自己平台的下载,复制下载链接,然后进入ssh。
先新建文件夹为node(个人习惯,不想把目录搞的很乱),再使用wget将node下载下来并解压,下载链接与安装包名不一定一致,自行变通:
mkdir node
cd node
wget https://npm.taobao.org/mirrors/node/v16.10.0/node-v16.10.0-linux-x64.tar.xz
tar –xvf node-v16.10.0-linux-x64.tar.xz再将解压后的重命名,然后移动到要长期存放的地方,个人推荐在usr文件夹下创建,以下教程就是在usr下创建个soft,防止目录管理起来乱:
mv node-v16.10.0-linux-x64 node
mkdir /usr/soft
mv node /usr/soft/node最后一步,将node添加到系统环境变量:
sudo nano /etc/profile
在文档最下面回车一行,并添加:
export NODE_HOME=/usr/soft/node (此处填Node所在路径)(注释不要复制!)
export PATH=$NODE_HOME/bin:$PATH
然后输入source /etc/profile刷新环境变量,再输入node -v确认版本
如果是用上述链接下载,应该是显示 v16.10.0

至此,node算是安装完成(如果在其他地方输入node -v没有反应,可以重新输入source /etc/profile来刷新,或者重启后也可以全局刷新)
运行环境安装完成后,还需要有个能在服务器上持续运行该项目的环境,否则ssh连接一旦断开项目将会被终止。如果服务器已经安装了VNC或者Xrdp,可无视下面的安装,直接远程连接后到部署项目步骤即可。
为了让项目在服务器持续运行且不需要值守,只需要使用Screen软件包即可:
sudo apt install screen安装后可输入screen -v查看版本来验证是否安装成功。
附:Screen使用方法简要总结(指令区分大小写!)
xxxx的新窗口并进入xxxx的窗口,如果没有这个名字的窗口会显示There is no screen to be resumed matching xxxx.xxxx的窗口,如果没有这个窗口会自动创建新窗口且名字为xxxx114514.test 1919810.test,进入窗口时需要输入screen -r 11451423333.Name中的23333,如 kill 9 23333,不能输入窗口名)1、先创建一个窗口用于专门跑项目:
screen -S lifeRestart2、根据github文档,首先需要下载项目包:
git clone https://github.com/VickScarlet/lifeRestart.git lifeRestart
cd lifeRestart
3、进入文件夹后,先安装依赖(如果服务器是第一次安装node环境,可能会安装久一些):
npm install
4、启动本地服务器:
npm run dev
5、开放端口8080
各服务商开放端口的方法自行百度,如果是使用宝塔面板的,可以在宝塔后台-安全-添加放行端口,手动添加8080即可(暂时没找到哪里可以改端口,待我琢磨一下...)
6、连接网页
在浏览器输入
http://服务器ip地址:8080/view/index.html