阅读视图
宝塔面板与Bitwarden插件不兼容,登录提示:验证码长度错误 解决方法
秒哒上手:免服务器纯自然语言编写支持前后端的网页项目,自然语言开发成了吗?
梯子/翻墙技巧: 一条命令就可以在服务器上设置一个Firefox/火狐浏览器代理
回国的时候最麻烦就是访问国外的网站:邮箱、油管视频等。在中国大陆,翻墙是违法的,但是好像在上海北京等大城市,可以申请许可,比如一些国际驻公司和政府机构因需要则可以申请绕过大墙网GFW/Great Firewall。
翻墙/建梯子的方式很多种,怕麻烦可以买现成的VPN,自己有服务器的可以建Wireguard等。这里再介绍一种简单的方式。
Docker容器里跑火狐FireFox浏览器
假设你的主机/服务器/VPS里已经装有Docker。只需要把下面的脚本存成一个BASH文件,比如 docker-firefox.sh 然后在命令行下跑:./docker-firefox.sh PASS 其中PASS是密码,这个我们下面要用到,PASS如果不写的话则要把 “-e VNC_PASSWORD=” 那行删掉即可。
#!/bin/bash VNC_PASS=$1 docker run -itd \ --restart always \ --name=firefox \ -p 5800:5800 \ -v $(pwd)/config:/config:rw \ --shm-size 1g \ -e ENABLE_CJK_FONT=1 \ -e VNC_PASSWORD=${VNC_PASS} \ jlesage/firefox
等一会儿,这时候Docker会去拉取这个软件镜像,然后完事即可在浏览器里把你的 域名/IP地址 后加上5800端口, 5800是上面脚本里指定的,也可以改成你想要的端口。
这样跑起来了,你的主机就相当于一个中转/代理,你在国内的时候访问你的主机(如果你主机没被大墙网拉入黑名单的话),那你就可以在浏览器里的内嵌FireFox浏览器里打开其它国外网站了。
使用体验
可能是和我的主机配置有关,总觉得有点卡。不是很流畅。还有就是我想登陆我的GMAIL帐号,被GOOGLE认定有风险,要我改密码,吓得我只能作罢。
试了一下,看了一个油管广告,没有声音,所以通过这个技巧看油管视频是不现实的。
还有就是,目前只支持HTTP,而不支持HTTPS,如果域名开启了HSTS,那只能通过IP来访问HTTP。不过,你可以通过nginx/apache设置一个反代 reverse proxy 来访问HTTPS。
比如以下是在Nginx服务器配置443端口重新转向到这个FireFox代理:
server { listen 443 ssl; server_name domain_name ssl_certificate /root/fullchain.cer; ssl_certificate_key /root/key.key; location / { proxy_pass https://your-server-ip:5800; proxy_ssl_verify off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
这玩意不适合日常工作,但是回国用于救急还是可以的。特别是不想在公共电脑上留下痕迹,只需要用强密码+HTTPS。等不需要用的时候记得把Docker容器删除即可。
docker stop firefox docker rm -f firefox
这个没法支持多用户,也就是说多个用户同时登陆看到的是同一个窗口。
可以使用:docker logs -f firefox 来查看窗口的相关信息:
[init ] container is starting…
[cont-env ] loading container environment variables…
[cont-env ] APP_NAME: loading…
[cont-env ] APP_VERSION: loading…
[cont-env ] DISPLAY: executing…
[cont-env ] DISPLAY: terminated successfully.
[cont-env ] DISPLAY: loading…
[cont-env ] DOCKER_IMAGE_PLATFORM: loading…
[cont-env ] DOCKER_IMAGE_VERSION: loading…
[cont-env ] EGL_LOG_LEVEL: executing…
[cont-env ] EGL_LOG_LEVEL: terminated successfully.
[cont-env ] EGL_LOG_LEVEL: loading…
[cont-env ] GSK_RENDERER: executing…
[cont-env ] GSK_RENDERER: terminated successfully.
[cont-env ] GSK_RENDERER: loading…
[cont-env ] GTK2_RC_FILES: executing…
[cont-env ] GTK2_RC_FILES: terminated successfully.
[cont-env ] GTK2_RC_FILES: not setting variable.
[cont-env ] GTK_THEME: executing…
[cont-env ] GTK_THEME: terminated successfully.
[cont-env ] GTK_THEME: not setting variable.
[cont-env ] HOME: loading…
[cont-env ] LIBGL_DRIVERS_PATH: executing…
[cont-env ] LIBGL_DRIVERS_PATH: terminated successfully.
[cont-env ] LIBGL_DRIVERS_PATH: not setting variable.
[cont-env ] PULSE_CONFIG_PATH: executing…
[cont-env ] PULSE_CONFIG_PATH: terminated successfully.
[cont-env ] PULSE_CONFIG_PATH: not setting variable.
[cont-env ] PULSE_COOKIE: executing…
[cont-env ] PULSE_COOKIE: terminated successfully.
[cont-env ] PULSE_COOKIE: not setting variable.
[cont-env ] PULSE_SERVER: executing…
[cont-env ] PULSE_SERVER: terminated successfully.
[cont-env ] PULSE_SERVER: not setting variable.
[cont-env ] QT_STYLE_OVERRIDE: executing…
[cont-env ] QT_STYLE_OVERRIDE: terminated successfully.
[cont-env ] QT_STYLE_OVERRIDE: not setting variable.
[cont-env ] TAKE_CONFIG_OWNERSHIP: loading…
[cont-env ] XDG_CACHE_HOME: loading…
[cont-env ] XDG_CONFIG_HOME: loading…
[cont-env ] XDG_DATA_HOME: loading…
[cont-env ] XDG_RUNTIME_DIR: loading…
[cont-env ] XDG_STATE_HOME: loading…
[cont-env ] container environment variables initialized.
[cont-secrets] loading container secrets…
[cont-secrets] container secrets loaded.
[cont-init ] executing container initialization scripts…
[cont-init ] 10-certs.sh: executing…
[cont-init ] 10-certs.sh: terminated successfully.
[cont-init ] 10-check-app-niceness.sh: executing…
[cont-init ] 10-check-app-niceness.sh: terminated successfully.
[cont-init ] 10-clean-logmonitor-states.sh: executing…
[cont-init ] 10-clean-logmonitor-states.sh: terminated successfully.
[cont-init ] 10-clean-tmp-dir.sh: executing…
[cont-init ] 10-clean-tmp-dir.sh: terminated successfully.
[cont-init ] 10-fontconfig-cache-dir.sh: executing…
[cont-init ] 10-fontconfig-cache-dir.sh: terminated successfully.
[cont-init ] 10-init-users.sh: executing…
[cont-init ] 10-init-users.sh: terminated successfully.
[cont-init ] 10-nginx.sh: executing…
[cont-init ] 10-nginx.sh: terminated successfully.
[cont-init ] 10-openbox.sh: executing…
[cont-init ] 10-openbox.sh: terminated successfully.
[cont-init ] 10-pkgs-mirror.sh: executing…
[cont-init ] 10-pkgs-mirror.sh: terminated successfully.
[cont-init ] 10-pulse.sh: executing…
[cont-init ] 10-pulse.sh: terminated successfully.
[cont-init ] 10-set-tmp-dir-perms.sh: executing…
[cont-init ] 10-set-tmp-dir-perms.sh: terminated successfully.
[cont-init ] 10-vnc-password.sh: executing…
[cont-init ] 10-vnc-password.sh: creating VNC password file from environment variable…
[cont-init ] 10-vnc-password.sh: terminated successfully.
[cont-init ] 10-web-data.sh: executing…
[cont-init ] 10-web-data.sh: terminated successfully.
[cont-init ] 10-webauth.sh: executing…
[cont-init ] 10-webauth.sh: terminated successfully.
[cont-init ] 10-x11-unix.sh: executing…
[cont-init ] 10-x11-unix.sh: terminated successfully.
[cont-init ] 10-xdg-runtime-dir.sh: executing…
[cont-init ] 10-xdg-runtime-dir.sh: terminated successfully.
[cont-init ] 15-cjk-font.sh: executing…
[cont-init ] 15-cjk-font.sh: installing CJK font…
[cont-init ] 15-cjk-font.sh: fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz
[cont-init ] 15-cjk-font.sh: fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz
[cont-init ] 15-cjk-font.sh: (1/1) Installing font-wqy-zenhei (0.9.45-r3)
[cont-init ] 15-cjk-font.sh: Executing fontconfig-2.15.0-r1.trigger
[cont-init ] 15-cjk-font.sh: Executing mkfontscale-1.2.3-r1.trigger
[cont-init ] 15-cjk-font.sh: OK: 694 MiB in 168 packages
[cont-init ] 15-cjk-font.sh: terminated successfully.
[cont-init ] 15-install-pkgs.sh: executing…
[cont-init ] 15-install-pkgs.sh: terminated successfully.
[cont-init ] 55-check-snd.sh: executing…
[cont-init ] 55-check-snd.sh: sound not supported: device /dev/snd not exposed to the container.
[cont-init ] 55-check-snd.sh: terminated successfully.
[cont-init ] 55-firefox.sh: executing…
[cont-init ] 55-firefox.sh: terminated successfully.
[cont-init ] 56-firefox-set-prefs-from-env.sh: executing…
[cont-init ] 56-firefox-set-prefs-from-env.sh: terminated successfully.
[cont-init ] 85-take-config-ownership.sh: executing…
[cont-init ] 85-take-config-ownership.sh: terminated successfully.
[cont-init ] 89-info.sh: executing…
╭――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――╮
│ │
│ Application: Firefox │
│ Application Version: 135.0-r0 │
│ Docker Image Version: 25.02.2 │
│ Docker Image Platform: linux/amd64 │
│ │
╰――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――╯
有用简单的IT小技巧
英文:Using Docker to Run Firefox as a Proxy: A Simple Solution for Accessing Blocked Websites in China
本文一共 804 个汉字, 你数一下对不对.
相关文章:
- 出租房子的教训: 让中介找人上门换一个水龙头竟然要204英镑! 我老婆在剑桥Bar Hill有一套出租房/Buy to Let,但她不想管理。每次房子出问题需要修理时,中介都会联系我。有房子出租闹心的事情真是多,真的印证了那句话:操着卖白粉的心,挣着卖白菜的钱!每次最怕的就是接到中介的电话,因为一有电话就意味着房子有问题要修/要花钱了。 几天前,中介打电话来说,租户反映厨房水龙头打开时有奇怪的声音,挺吓人的。我当时回复他们说我会找个水管工/Plumber第二天过去看看。但挂了电话后,我联系了我认识的中国装修师傅。他手艺很好,在英国生活了几十年,以前帮我家做过不少装修。不过他这次没时间,也不太愿意接这种小活。 前两年这个师傅给我们家换地板,翻新三个厕所,还有就是阳光房地板,门前加建了个Porch等,最近房子也在重新折腾装修,之后弄完再详细说说。 我懒得在网上(比如 MyBuilder.com)再找其他人,就让中介安排了他们自己的工人。 后来,中介回电说水管工已经在房子里了,并报价修理费为170英镑,加上VAT税后(20%)一共204英镑。如果不修,也要付140英镑的上门费,加税后差不多168英镑。觉得价格有点高,但也只能咬牙同意了。 其实让我不爽的是自己为了省事,最后只能任人宰割。老外只要上门就收钱,我当时虽让中介确认报价,但没问上门费的问题,现在骑虎难下。听说中介找的合同工都比较贵。 那个房子一共让中介找过四五次人修房子(各种问题:上次厨房水管堵了,被收了400多英镑,据说水管工花了三小时通下水道),主要是因为这次我认识的师傅没时间。其实我还认识另一个会修房子的中国人,这样看来,以后可能不会再让中介找人了。 去年冬天,因为恶劣天气,房子顶有一小块掉了,中介找人报价要1800英镑,还好我没同意。后来找了个中国师傅,才花了350英镑,而且当时有Landlord保险还全额报销了。 PS:我发了封邮件给中介小小抱怨了一下。 Hi there,...
- 真正意义上的鼓励优秀作品 – 优秀被错过文章 有奖励啦! 大家都知道我的日报第一项就是 《那些优秀可能被错过的文章》这个算法是通过我自己的认识选出一些比较 好的文章 但是收益却比较低, 那么, 通过 @dailychina 天天回复, 比如: 对于作者来说, 除了心理得到表扬之外 并没啥卵用, 是吧. 而且有些作者经常上榜啊, 于是,...
- 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
- 一行代码修改引起的血案 – (二) 上一篇说到乱改了一行代码引来的错误, 自己也检讨了一下. 以下已经同事同意: 看了XX在群里发的内容 http://coolshell.cn/articles/4576.html,然后到 http://thread.gmane.org/gmane.linux.kernel/1124982/focus=1126216 仔细看了Linus Torvalds发的邮件,受益匪浅,摘了几段内容附在了 < how to fix bug.xls > 中....
- 逻辑题 – 帽子是黑的还是白的? 老婆每天晚上都会打开一个 智力测试的 APP 然后 有一天就问我这么一道智力题. 有三顶白色帽子 两顶黑色帽子. 有三个人被蒙着眼睛 然后随机的被戴上帽子 其中剩下的两顶就放在隔壁屋 每个人只能看到其他两人帽子的颜色 并不知道自己头顶上帽子的颜色. 每个人只有一次猜对的机会 不能互相交谈 已知第一个人看到其他两个人头顶上的颜色是白色...
- 使用AWK来看见证人生成块的速度 每次见证人出块, 媳妇总我说 “又生了”. 每次出块我总会去算一下离上次出块多少时间, 这是可以通过当前块数和上次出块数算出来的. 首先, 我们可以通过 docker logs 来显示很多很多的记录: 有一个脚本 ./run.sh logs是显示最近几条记录 (tail) 我们可以通过管道...
- STEEM API 系列之获取货币转换 STEEMIT 有 SBD, STEEM, STEEM POWER 还有 VESTS这几个概念. 时不时, 我们就需要知道它们之间几个转换关系: 1个STEEM等于多少SBD? 1个SBD 等于多少STEEM? 1个SP等于多少VESTS? 1M的VESTS...
- 测试 Crontab 是否工作的PHP脚本 LINUX 下的 crontab 是用来定时运行 程序任务的工具. 当然你需要简单配置一下 一般是通过 crontab -e 命令 来编辑. 如果你想简单知道 是否配置正确 和任务实际上会被调用的频率 你可以通过下面简单的PHP脚本来实现....
如何静态化Docker容器的IP地址?构建网络实现容器固定IP
Certimate接入宝塔更新宝塔网站证书教程,自动更新证书到所有网站
VPS, 专用服务器和云托管专用服务器: 主要区别和建议
理解VPS、专用服务器和云管理专用服务器
选择合适的托管解决方案可能会让人感到困惑,尤其是在当今可用选项繁多的情况下。其中,虚拟专用服务器(VPS)、专用服务器和云管理专用解决方案各自具有独特的优势。在本文中,我们将深入探讨它们之间的区别,并提供建议,帮助您做出明智的决定。
什么是VPS?
虚拟专用服务器(VPS = Virtual Private Server)是在物理服务器上创建的虚拟化环境。使用VPS托管时,您与其他用户共享物理服务器的资源(CPU、内存、存储)。然而,虚拟化技术确保您获得这些资源的专用部分,相比共享主机,提供了更多的控制、灵活性和性能。
VPS托管非常适合需要可扩展性的中小型项目,而不需要支付专用服务器的高成本。
什么是专用服务器?
专用服务器(Dedicated Server)为您提供一整台物理机器,专供您使用。此设置提供无与伦比的性能、定制性和控制力。没有资源共享,您可以根据特定的工作负载优化服务器,使其适用于高流量网站、大型数据库或有高要求的应用程序。
尽管专用服务器提供顶级性能,但它们的价格较高,并且需要高级的技术知识来进行管理。
什么是云管理专用服务器?
云管理专用服务器(Cloud-Managed Dedicated Servers)将专用硬件的优势与云基础设施的灵活性和便捷性结合起来。例如,许多供应商提供裸金属云解决方案,提供专用的CPU和内存,同时融入云的特性,如快速部署、可扩展性和按需计费。
这些解决方案提供专用服务器的原始计算能力,但消除了传统服务器管理的复杂性。它们非常适合那些希望在性能、可扩展性和易用性之间找到平衡的企业。
关键区别
以下是这些托管解决方案之间的主要区别:
- VPS:共享物理资源,价格实惠,可扩展,适合中等负载的项目。
- 专用服务器:专用物理资源,价格昂贵,高度可定制,适合资源密集型任务。
- 云管理专用服务器:专用物理资源,具有云特性如可扩展性和简化的管理。
建议:什么时候选择哪种?
- VPS托管:最适合创业公司、小型企业或正在发展中的开发者,他们需要一个性价比高且可扩展的解决方案。
- 专用服务器:最适合企业、大型网站或需要不妥协性能和完全服务器控制的应用程序。
- 云管理专用服务器:推荐给那些需要专用服务器的计算能力,但又希望拥有云平台的灵活性和管理简易性的企业。
对比表:VPS vs 专用服务器 vs 云管理专用服务器
特性 | VPS | 专用服务器 | 云管理专用服务器 |
---|---|---|---|
资源分配 | 共享物理服务器和虚拟化资源 | 完全专用的物理服务器 | 完全专用的物理服务器 |
性能 | 中等 | 高 | 高 |
可扩展性 | 良好 | 有限(需要硬件升级) | 优秀 |
成本 | 实惠 | 昂贵 | 中等到昂贵 |
管理 | 需要一定的技术知识 | 需要高级专业知识 | 由提供商管理,更简便 |
最适合 | 中小型项目 | 高流量网站、大型应用 | 需要在性能和灵活性之间找到平衡的企业 |
结论
在选择VPS、专用服务器和云管理专用解决方案时,理解您的项目需求至关重要。如果您刚刚起步,VPS托管是一个不错的选择。对于高性能需求,可以选择专用服务器。若您需要在性能、灵活性和管理简便性之间找到平衡,云管理专用服务器值得考虑。
您可以使用VPS数据库工具比较一些VPS供应商。
英文:VPS vs Dedicated Servers vs Cloud-Managed Dedicated Servers: Key Differences and Recommendations
服务器
本文一共 1103 个汉字, 你数一下对不对.
相关文章:
- 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
- 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
- 推荐英国三文鱼的烹饪方法 Tesco超市里都有卖三文鱼, 我最喜欢的是这种没有被烟熏过的. 产地挪威, 生的. 昨天圣诞节特价, 原价 24 镑, 半价只要 12 镑. 果断买了一盒. 其实我最喜欢生吃, 沾着介末吃, 老婆也很喜欢,...
- 共享主机(Shared Hosting)和VPS主机的比较 共享主机 vs VPS 主机:关键区别 当我开始我的互联网之旅时,我将我的个人网站放在资源有限的共享主机上,后来我学会了管理服务器(Linux),并将我的网站迁移到 VPS 服务器。我开始开发 Web 应用程序和 API,甚至有一些应用程序在专用服务器(Dedicated Server)上运行。 简介 选择合适的主机托管方案对于网站的性能、可扩展性和安全性至关重要。目前流行的两种选择是共享主机(Shared Hosting)和虚拟专用服务器(VPS Hosting)。虽然它们都相对经济实惠,但在资源分配、性能和管理控制方面存在显著差异。本文将深入探讨这些区别,帮助您做出明智的决策。...
- SteemIt 高级定制微信文章列表 RSS/API/阅读器 v2.0 The Advanced Wechat Group Posts Feed/API/Reader v2.0 Abstract: I have added five parameters to the...
- 时代不同, 我儿子10岁就能通过github pages做一个静态网站 今天,我二娃搞了一个网页/网站,他通过 GitHub Pages 完成的,其实不难。几天前,他注册了一个 GitHub 账户(被戏称为全世界最大的“同志网站”——gayhub),取了个 ID,叫做 faceless15748。他说 faceless15 已经被人注册了。 他还自学了 HTML 和 Markdown,并且稍微懂一些 JavaScript...
- 怎么样改变屏幕的显示方向? 只要我在家里办公,我儿子们总能趁我起身(泡茶)一小会儿的功夫去按我的键盘.这不,一会儿不知道怎么回事, 我的屏幕就成这样子了. 后来查了, 发现儿子(更有可能是两个儿子各按到一些键)是碰巧按到 CTRL + ALT + 方向下 键.这得是多小的概率啊. 同理,屏幕方向朝上需要按快捷键 Ctrl + Alt +...
- 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
MySQL参数一键配置脚本: 有效提升数据库性能
我一直是自己租用VPS服务器,然后搭建各种服务,比如博客就是Apache2+MySQL数据库。一般来说就是默认参数,没有去管,不过最近发现MySQL的性能参数都很保守,不能发挥整个服务器的性能。
然后我就网上搜索了一下,根据参数配置建议,用ChatGPT写了以下Python和BASH脚本。只需要在需要优化的服务器上,跑一下该脚本,然后就会显示参数配置,然后直接把参数添加到MySQL数据库配置参数文件上: /etc/mysql/mysql.conf.d/mysqld.cnf
然后运行: service mysql restart 重启MySQL服务器。
运行了几周,发现效果很好,博客反应速度也快了很多,这很大原因是根据了内存增加了MySQL缓存大小。
Python脚本优化MySQL数据库参数
把下面的Python脚本存成 mysql_config.py 然后运行 python3 mysql_config.py
def get_total_ram(): with open('/proc/meminfo', 'r') as f: for line in f: if line.startswith("MemTotal:"): total_ram_kb = int(line.split()[1]) return total_ram_kb * 1024 # 转换为字节(bytes) return 0 # 如果未找到 MemTotal,则返回 0 def calculate_mysql_settings(): # 获取总内存(以字节为单位) total_ram = get_total_ram() # 根据总内存(以字节为单位)计算 MySQL 配置 innodb_buffer_pool_size = int(total_ram * 0.3) # 使用内存的 30% key_buffer_size = min(total_ram * 20 // 100, 512 * 1024 * 1024) # 使用内存的 20%,最大限制为 512MB sort_buffer_size = min(total_ram * 25 // 1000, 4 * 1024 * 1024) # 使用内存的 0.25%,最大限制为 4MB read_rnd_buffer_size = min(total_ram * 625 // 100000, 512 * 1024) # 使用内存的 0.0625%,最大限制为 512KB tmp_table_size = max_heap_table_size = min(total_ram * 5 // 100, 64 * 1024 * 1024) # 使用内存的 5%,最大限制为 64MB join_buffer_size = min(total_ram * 2 // 1000, 4 * 1024 * 1024) # 使用内存的 0.2%,最大限制为 4MB table_open_cache = min(400 + (total_ram // 64), 2000) # 根据内存动态计算,最大限制为 2000 thread_cache_size = min(total_ram * 15 // 1000, 100) # 使用内存的 1.5%,最大限制为 100 innodb_log_buffer_size = min(total_ram * 5 // 100, 16 * 1024 * 1024) # 使用内存的 5%,最大限制为 16MB # 以字节为单位打印配置 print(f"MySQL 配置(基于总内存 {total_ram / (1024 * 1024):.2f} MB):") print("将以下内容添加到 /etc/mysql/mysql.conf.d/mysqld.cnf 的末尾\n") print(f"innodb_buffer_pool_size = {innodb_buffer_pool_size}") print(f"key_buffer_size = {key_buffer_size}") print(f"sort_buffer_size = {sort_buffer_size}") print(f"read_rnd_buffer_size = {read_rnd_buffer_size}") print(f"tmp_table_size = {tmp_table_size}") print(f"max_heap_table_size = {max_heap_table_size}") print(f"join_buffer_size = {join_buffer_size}") print(f"table_open_cache = {table_open_cache}") print(f"thread_cache_size = {thread_cache_size}") print(f"innodb_log_buffer_size = {innodb_log_buffer_size}") # 打印自定义设置 print("expire_logs_days = 3") print("max_binlog_size = 100M") if __name__ == "__main__": calculate_mysql_settings()
会打印出类似以下的配置:
innodb_buffer_pool_size = 626468044 key_buffer_size = 417645363 sort_buffer_size = 4194304 read_rnd_buffer_size = 524288 tmp_table_size = 67108864 max_heap_table_size = 67108864 join_buffer_size = 4176453 table_open_cache = 2000 thread_cache_size = 100 innodb_log_buffer_size = 16777216 expire_logs_days = 3 max_binlog_size = 100M
添加到MySQL的配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf 然后重启数据库即可:service mysql restart
BASH脚本优化MySQL数据库参数
以下是完成同样功能的BASH脚本。
#!/bin/bash # 获取总内存大小(以字节为单位) get_total_ram() { # 从 /proc/meminfo 中提取总内存(以 kB 为单位) total_ram_kb=$(awk '/^MemTotal:/ {print $2}' /proc/meminfo) if [[ -z "$total_ram_kb" ]]; then echo 0 # 如果未找到 MemTotal,则返回 0 else echo $((total_ram_kb * 1024)) # 将 kB 转换为字节 fi } # 根据总内存大小计算 MySQL 配置 calculate_mysql_settings() { # 获取总内存(以字节为单位) total_ram=$(get_total_ram) # 计算 MySQL 配置参数 innodb_buffer_pool_size=$((total_ram * 30 / 100)) # 使用内存的 30% key_buffer_size=$(($((total_ram * 20 / 100)) < $((512 * 1024 * 1024)) ? $((total_ram * 20 / 100)) : $((512 * 1024 * 1024)))) # 使用内存的 20%,最大限制为 512MB sort_buffer_size=$(($((total_ram * 25 / 1000)) < $((4 * 1024 * 1024)) ? $((total_ram * 25 / 1000)) : $((4 * 1024 * 1024)))) # 使用内存的 0.25%,最大限制为 4MB read_rnd_buffer_size=$(($((total_ram * 625 / 100000)) < $((512 * 1024)) ? $((total_ram * 625 / 100000)) : $((512 * 1024)))) # 使用内存的 0.0625%,最大限制为 512KB tmp_table_size=$((total_ram * 5 / 100 < 64 * 1024 * 1024 ? total_ram * 5 / 100 : 64 * 1024 * 1024)) # 使用内存的 5%,最大限制为 64MB max_heap_table_size=$tmp_table_size # 临时表大小等于最大堆表大小 join_buffer_size=$(($((total_ram * 2 / 1000)) < $((4 * 1024 * 1024)) ? $((total_ram * 2 / 1000)) : $((4 * 1024 * 1024)))) # 使用内存的 0.2%,最大限制为 4MB table_open_cache=$(($((400 + total_ram / 64)) < 2000 ? $((400 + total_ram / 64)) : 2000)) # 根据内存动态计算,最大限制为 2000 thread_cache_size=$(($((total_ram * 15 / 1000)) < 100 ? $((total_ram * 15 / 1000)) : 100)) # 使用内存的 1.5%,最大限制为 100 innodb_log_buffer_size=$(($((total_ram * 5 / 100)) < $((16 * 1024 * 1024)) ? $((total_ram * 5 / 100)) : $((16 * 1024 * 1024)))) # 使用内存的 5%,最大限制为 16MB # 打印配置(以字节为单位) echo "MySQL 配置(基于总内存 $((total_ram / (1024 * 1024))) MB):" echo "将以下内容添加到 /etc/mysql/mysql.conf.d/mysqld.cnf 的末尾" echo echo "innodb_buffer_pool_size = $innodb_buffer_pool_size" echo "key_buffer_size = $key_buffer_size" echo "sort_buffer_size = $sort_buffer_size" echo "read_rnd_buffer_size = $read_rnd_buffer_size" echo "tmp_table_size = $tmp_table_size" echo "max_heap_table_size = $max_heap_table_size" echo "join_buffer_size = $join_buffer_size" echo "table_open_cache = $table_open_cache" echo "thread_cache_size = $thread_cache_size" echo "innodb_log_buffer_size = $innodb_log_buffer_size" echo echo "expire_logs_days = 3" # 日志过期天数设置为 3 天 echo "max_binlog_size = 100M" # 最大二进制日志大小设置为 100M } # 主函数调用 calculate_mysql_settings
需要注意的是,我在脚本后面加入了一些我自定义的配置,根据需求自行修改即可。在配置文件里,后面定义的会覆盖前面的,这就是为什么要添加到文件尾的原因。
其中最关键的配置 innodb_buffer_pool_size 我设置为使用当前内存的30%,如果服务器只有数据库/博客这个功能,可以适当的提高比例,比如60%-80%。
英文:Python/Bash Script to Print the Optimized Parameters for MySQL Servers
运维/DevOps
- MySQL参数一键配置脚本: 有效提升数据库性能
- 把 MySQL 中的 MyISAM 表格转换成 InnoDB 的PHP小工具
- 通过 MySQLTuner 来检查数据库配置
- 升级到 PHP 5.5 之后内置 OpCache 加速缓存
- VPS低配置服务器优化的一些方法
- 如何在 Linux 下 列出最耗资源的进程 (BASH 脚本)
- 在LINUX下循环备份的方法
- 更改Wordpress博客全站的评论名称
- 几条Wordpress 博客 有用的 SQL 语句

相关文章:
- 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
- 一张图告诉你北京的雾霾有多严重 一北京的朋友朋友圈发的: 左上为全新口罩;右上为全新口罩本周一到周五每天室外戴20分钟左右;左下为全新口罩今早室外+公交车戴一个半小时;右下为全新口罩今早开车戴一小时左右. 还有这图 空气污染 – 红色的是严重的.中国,尤其是华北地区,是全球最红的地区,没有”之一”. 本文一共 113 个汉字, 你数一下对不对. 一张图告诉你北京的雾霾有多严重. (AMP 移动加速版本) 赞赏我的几个理由. ¥...
- 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
- 穷举算法的应用 – 去除EXCEL文件中的保护 EXCEL 是可以用密码来保护的. 比如 这个EXCEL 就用了密码保护. 打开EXCEL文件 你会注意到 无法编辑 无法查看宏(VBA)的代码. 去除保护很简单 第一步先编辑宏 VBA 把下面的VBA代码拷贝到VBA编辑器里 并按下F5运行 1...
- 谈谈 Utopian 成立公司 就在刚刚 Utopian 的老板 @elear 在 帖子和 discord 上宣布在 意大利成立 Utopian 公司. 可喜可贺! 这开始只是 Steem 上的一个小项目,...
- 步步高多媒体学生电脑 汇编程序设计 – 1 英文同步 90年代后期步步高生产的软驱一号(又称步步高多媒体学生电脑)和98型学生电脑都带了软驱,一按电源件, 都从软盘启动(98型可以从内置的电子盘启动) 步步高提供了直接在学习机上写汇编开发的工具 BASM. BASM 可以用来写 6502 汇编,并可以编译成 CMD 小型可执行程序 不支持 EXC 程序. CMD...
- 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
- 舍得给员工培训的公司是好公司 最近出差比较多, 很多人问我都干嘛去. 各种开会, 各种培训. 公司从剑桥一个软件公司请了一个专业的软件专家来做软件工程上的顾问. 我是 R&D 研发经理, 所以很自然的就要和他经常讨论, 然后目标是把当前公司的软件开发流程给完善, 提高, 把以前做的不对的得整对了. 培训的内容很多, 让我觉得以前公司完全就是在瞎搞, 什么...
Mac使用rsync实现本地文件夹同步到服务器,提交编译好的静态站点,增量提交网站
Alist如何添加Ubuntu服务器的文件夹,给服务器添加上传SFTP的账号并授予访问权限
宝塔Nginx反代上游服务器不支持HTTP3,如何启用HTTP3
宝塔如何开启HTTP3,启用HTTP3使用QUIC进行高性能传输
使用Certimate部署Google证书,免费通配符证书申请
Linux 服务器大量向外发包问题排查
最近杜老师的一台云服务器,向外大量发送流量,不断的建立 TCP 连接,目标地址是美国一个 IP,估计被当成肉鸡了,比较悲惨,今天杜老师聊一下如何处理这个问题!
问题排查
1 | sar -n DEV 2 10 |
注意:在服务器运行上面命令,确认了出现大量发包的问题。
问题处理
开始之前,先清除 eth0 所有队列规则:
1 | tc qdisc del dev eth0 root 2> /dev/null > /dev/null |
定义顶层队列规则,指定 default 类别编号:
1 | tc qdisc add dev eth0 root handle 1: htb default 20 |
查看状态:
1 | yum install -y tcpdump |
找到大量的 IP 地址,可以将异常 IP 加入到/etc/hosts.deny,或者防火墙设置下。之后安装个 nethogs:
1 | yum -y install epel-release |
处理结果
找到大量发包进程,之后 kill 掉,排查下这个进程是什么程序,文件路径在哪,删除掉异常的文件。
目前的问题解决了,观察一段时间,看看问题是否还会发生,防火墙将公网 IP 进行了访问限制,只允许指定 IP 访问,增加安全。
命令扩展
nethogs 的选项如下:
选项 | 作用 |
---|---|
V | 显示版本信息,注意是大写字母 V |
d | 延迟更新刷新速率,秒为单位。默认为 1 |
t | 跟踪模式 |
p | 混合模式 |
设备 | 要监视的设备名称,默认为 eth0 |
nethogs 运行时,按键效果如下:
按键 | 效果 |
---|---|
q | 退出 |
m | 总数、当前使用情况模式之间切换 |
Ubuntu 如何挂载 OSS
对象存储 OSS 是阿里云提供的海量、安全、可靠的云存储服务。OSS 具有与平台无关的 API 接口,可在任何应用、任何时间、任何地点存储和访问任意类型的数据。
挂载步骤
1 | wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_ubuntu18.04_amd64.deb |
注意:第一步的下载地址可以自行搜索,或者在评论去留言找杜老师索取,文中的版本支持 Ubuntu18.04+。
命令注释
第三步的 Bucket/AccessKey ID/AccessKey Secret 需要根据实际值修改;
第五步的目录名称可自定义;
第六步的 EndPoint 需要根据实际值修改;
使用开机自启脚本实现自动挂载。
愿你不要成为运维讲师
很多同学对我的经历很好奇,想着如何可以变成像我一样的人。每听到这些时,我有一些骄傲,也有一些悲伤。但我打心里想说的,如果你有选择,愿你不要成为运维讲师!
自我介绍
我叫杜朋,一个普通的云计算运维讲师,在 14 年正式的步入这个行业,截止到目前已经入行 6 年了。而在这六年里,据不完全统计我已经带领 2000 余人步入运维的大家庭。我是一个地地道道的东北人,祖籍在黑龙江,小时候在吉林长大,现在家在辽宁。东北的语言特色被我展现的淋漓尽致:平翘不分。课堂上还会经常出一些笑话,但这并不影响我成为一名严肃的老师:
我的骄傲
除了日常的授课外,我不断的提升自己,包括学历以及技术,每天都感觉时间不够用。但为了保证可以随时和一线技术接轨,这些努力是值得的。身为老师,都该具备一种能力:不管多复杂的东西,都可以用浅显易懂的语言解释的明明白白。很高兴我具备这种能力,所以大家都叫我杜老师,当然叫我 CJ 老师的更多,我至今弄不懂 CJ 是什么意思,及他们为什么要这么称呼我,CJ 可能是纯洁的意思吧,确实跟我挺贴切的:
我的悲伤
我特别享受那种一开始学生脸上充满疑惑,经过我的讲解之后如醍醐灌顶的那种感觉,直拍大腿大呼:原来是这样啊!改变和改造并不是一个意思,明显一名老师的工作是后者。但总会有一些人他们不能被改造,圆木可以做成牙签,但牙签就只能是牙签了,每每看到这种底子太差的同学我都很心疼,因为他们不管多么努力,都无法获得理应获取的成绩。我不希望任何人的付出没有回报,哪怕只有一点。所以身为一名老师,我们只能竭尽自己的全力来帮助他们。你们无法体会一个熬夜为学生解答问题的老师,还要在空余时间不断地提升自己:
高级运维工程师的升级打怪路线
运维在前期是一个很苦逼的工作,可能干着修电脑掐网线的活!时间也碎片化,各种零碎琐事围绕着你,很难体现个人价值,渐渐对行业很迷茫。这些枯燥无味工作的确使人匮乏,从技术层面讲这些其实是基本功,对后期的运维工作会无形中带来一定帮助。所以前期要保持积极向上的心态,持续学习。在未来某一天,相信会回报给你的!根据杜老师多年的运维工作经验,分享下高级运维工程师学习路线。
初级
系统基础:刚开始阶段需要熟悉 Linux/Windows 操作系统安装,目录结构、启动流程等等;
系统管理:主要学习 Linux 类系统,生产环境基本都在字符界面完成工作,所以要掌握常用几十个基本管理命令,包括用户管理、磁盘分区、软件管理、文件权限、文本处理、进程管理、性能分析工具等等;
网络基础:OSI 和 TCP/IP 模型一定要熟悉。基本的交换机、路由器概念及实现原理需要知道;
脚本基础:掌握 Shell 的基本语法结构,能编写简单的脚本即可。
中级
网络服务:最常用的网络服务一定得会部署,比如 vsftpd/NFS/Samba/DNS/DHCP 等。代码版本管理系统可以学习下主流的 SVN 或者 Git,能部署和简单使用就可以了。经常在服务器之间传输数据,所以要会使用:rsync 或者 scp。数据同步:inotify 或者 sersync。重复性的工作,可写成脚本定时去运行,所以得会配置 Linux 下的定时任务服务 crond;
网站服务:每个公司基本都有网站,能够让网站跑起来,就需要搭建网站服务平台了。如果是用 PHP 语言开发的,通常要搭建 LAMP/LNMP 网站平台。如果是 Java 语言开发,通常用 Tomcat 运行项目,为了提高访问速度,可以使用 Nginx 反向代理 Tomcat,Nginx 处理静态页,Tomcat 处理动态页,实现动静分离。不只是会部署这么简单,还需要知道 HTTP 协议工作原理和简单的性能调优;
SQL 数据库:数据库选择 MySQL,它是世界上使用最广泛的开源数据库。要会一些简单的 SQL 语句、用户管理、常用存储引擎、数据库备份与恢复。还需要会主从复制、性能优化、主流集群方案:MHA/MGR 等。NoSQL 这么流行当然少不了,学一下 Redis/MongoDB 这两个就好了;
网络安全:安全非常重要,不要等到系统被入侵了,再做安全策略!所以,一台服务器上线后应马上做安全访问控制策略,比如使用 iptables 限制只允许信任源 IP 访问,关闭一些无用的服务和端口。一些常见的攻击类型一定得知道,比如 CC/DDoS/ARP 等;
监控系统:监控必不可少,它是及时发现问题和追溯问题的救命稻草。可以选择学习主流的 Zabbix 开源监控系统,功能丰富,能满足基本的监控需求。监控点包括基本服务器资源、接口状态、服务性能、PV/UV 以及日志等方面。也可以弄个仪表盘展示几个实时关键数据,比如 Grafana 会非常炫酷;
脚本编程进阶:Shell 脚本是 Linux 自动完成工作的利器,必须熟练编写,所以得进一步学习函数、数组、信号、发邮件等。文本处理三剑客得玩六,Linux 下文本处理就指望它们了;
高级脚本开发:Shell 脚本只能完成一些基本的任务,要完成更复杂些的任务,比如多进程等,需要学高级语言了。Python 是运维领域中使用最多的语言,简单易用!此阶段掌握基础就够了,例如基本语法结构、文件对象操作、函数、迭代对象、异常处理、数据库编程等。
高级
网站静态缓存:用户老喊着访问网站慢,看看服务器资源还很富裕啊!网站访问慢也许不是服务器资源饱和导致,影响因素很多,例如网络、转发层数等等。对于网络,存在南北通信问题,之间访问会慢,这个可使用 CDN 解决,同时缓存静态页面,尽可能将请求拦截在最上层响应,减少后端请求、响应时间。如果不使用 CDN,也可以使用 Squid/Varnish/Nginx 缓存服务实现静态页面缓存,放到流量的入口处;
集群:单台服务器的资源终究有限,抵抗高访问量肯定是无法支撑的,解决此问题最关键的技术就是采用负载均衡器,水平扩展多台 Web 服务器,同时对外提供服务,这样就成倍扩展性能了。负载均衡主流开源技术有 LVS/HAProxy/Nginx。一定要熟悉一两个!网站服务器性能瓶颈解决了,数据库则更为关键,还是采用集群,就拿 MySQL 来说吧,可以一主多从架构,在基础上实现读写分离,主负责写,多个从负责读,从库可以水平扩展,前面再来个四层负载均衡器,妥妥承载千万级 PV!高可用软件也得会,避免单点利器主流的有 Keepalived/Heartbeat 等。网站图片咋这么多!NFS 共享存储支撑不过了,处理很慢,好弄!上分布式文件系统,并行处理任务,无单点高可靠高性能等特性,主流的有 FastDFS/MFS/HDFS/Ceph/GFS 等。初期的话建议学习下 FastDFS,可以满足中小规模需求;
虚拟化和容器:硬件服务器资源利用率很低,甚是浪费!可以把空闲较多的服务器虚拟化,弄成很多个虚拟机,每个虚拟机就是一个完整的操作系统,可很大程度提高资源利用率,建议学习开源的 KVM+OpenStack。虚拟机作为基础平台还可以,但是应用业务弹性伸缩也太重量了吧!启动好几分钟,文件又这么大,快速扩展太费劲了!好说,上容器吧,容器主要特点是快速部署和环境隔离。一个服务封装到镜像中,分分钟钟可创建几百个容器。主流的容器技术非 Docker 莫属了。当然,生产环境单机 Docker 多数情况下是无法满足业务需求的,可以部署 Kubernetes/Swarm 集群化管理容器,形成一个较大的资源池,集中管理,为基础架构提供有力的支撑;
自动运维:重复工作不但提高不了效率,价值也得不到体现。一切运维工作的标准化,例如环境版本、目录结构、操作系统统一。在标准化基础上才能更方便的自动化,点点鼠标或者敲几个命令即可完成一项复杂的工作任务。因此所有操作尽可能自动化,减少人为失误,提高工作效率。主流服务器集中管理工具 Ansible/SaltStack,这两个选任意一个就行。持续集成工具杜老师推荐 Jenkins;
脚本开发进阶:可再深入学习下 Python 开发,掌握面向对象编程。最好也掌学习一个网站框架开发网站,如 Django/Flask,主要用来开发运维管理系统,将一些复杂流程写到平台中,然后集成集中管理工具,可打造一个属于运维自己的管理平台;
日志分析系统:日志也很重要,定期分析发现潜在隐患,提炼有价值的东西。开源的一套日志系统 ELK,学会部署使用,给开发者提供日志查看需求;
性能优化:只会部署是远远不够的,性能优化能最大化的提升服务承载量。这块也是比较难的,也是高薪的关键点之一,为了钱也得下点功夫学习啊!可从硬件、操作系统、软件和架构等层面维度展开思考。
总结
杜老师对高级运维工程师需要掌握的工具做个表格:
类型 | 名称 |
---|---|
文本处理 | grep/sed/awk |
数据传输 | rsync/scp/inodify/sersync |
进程管理 | Supervisor |
性能分析 | top/free/df/iftop/iostat/vmstat/dstat/sar/sysdig |
网络服务 | vsftp/NFS/Samba/DNS/DHCP/Postfix |
网站服务 | Apache/Nginx/Tomcat/JBoss/resin |
SQL 数据库 | MySQL/MariaDB |
NoSQL 数据库 | Redis/MongoDB |
消息队列 | RabbitMQ/ActiveMQ |
版本管理 | SVN/Git |
静态缓存 | Squid/Varnish/Nginx |
负载均衡 | LVS/HAProxy/Nginx |
HA 高可用 | Keepalived/Heartbeat/DRBD |
集中管理工具 | Ansible/SaltStack/Chef/Puppet |
虚拟化云平台 | KVM/Xen/Docker/Kubernetes/Openstack/CloudStack |
自动装机 | Kickstart/Cobbler |
抓包分析 | tcpdump/Wireshark |
持续集成 | Jenkins/GitLab |
MySQL 数据库代理 | Altas/Cobar/MyCat |
压测 | ab/fio/sysbench/mysqlslap |
安全检查 | chkrootkit/rkhunter |
日志系统 | ELK |
监控 | Zabbix/Cacti/Nagios/Grafana |
通过dd命令测试硬盘读写速度/性能
要使用 dd 命令测试磁盘速度,可以写入一个临时文件并测量写入和读取速度。以下是一些示例:
测试写入速度
此命令将 1GB 文件写入磁盘,并提供写入速度:
dd if=/dev/zero of=testfile bs=1G count=1 oflag=dsync
- if=/dev/zero 使用空字节源。
- of=testfile 指定输出文件。
- bs=1G 设置块大小为 1 GB。
- count=1 指定只写入一个块。
- oflag=dsync 确保数据实际写入磁盘,从而提供更准确的速度测量。
示例输出:
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.58025 s, 679 MB/s
测试读取速度
首先,清除文件系统缓存/Cache以避免缓存影响:
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
然后,将文件读回:
dd if=testfile of=/dev/null bs=1G count=1
- if=testfile 从刚写入的文件读取。
- of=/dev/null 丢弃输出,以确保仅测试读取速度。
清理
测试完成后,删除临时文件:
rm testfile
这些命令提供了近似的磁盘速度,但对于更准确的结果,建议使用专用的基准工具,如 fio 或 hdparm。
英文:How to Use dd Command to Test the Hard Disk Speed?
本文一共 234 个汉字, 你数一下对不对.
相关文章:
- 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
- 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
- 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
- 比特币钱包线上和线下有啥区别? 我玩比特币比较晚, 最近1比特币能到1900多英镑, 真是吓人. 之前有一个线下的比特币钱包, 最近又在 CoinBase 开了一个线上的比特币钱包. 线上和线下的比特币钱包都是一长串的字母数字组合, 很像随机字符串 比如: 1J88t5UAgKBHhMgzkyH9bpY5mPdCYAe5XQ 这个明显是唯一的, 可以在 BlockChain 上查到所有交易记录和余额:...
- Naked 红酒 前几天在网上订车票加了1镑钱让送票上门,然后发现了一张 nakedwines 的优惠,买100镑红酒减 60 镑.然后就果断订了12瓶. 在提交订单的时候没看仔细点了一个确定,后来才知道那个是答应每个月成为会员,需要交会费 20 镑钱,然后好处就是每次买酒的时候能享受更大的优惠 (25% – 50%), 并且每个月都会送你一瓶红酒.后来我第一时间就发邮件取消了,但是可能已经下单了,所以第一次还是多送了我一瓶红酒,还有两个漂亮的杯子. 这样算下来, 13瓶红酒(2011, 2012年)+两个杯子,一共花了...
- GoPro运动相机可以拿来做什么? 自从新年打折入了GoPro Hero+运动相机以来, 也没怎么用上, 基本上是几天的热性就和其它电子产品一样被冷落到一旁. GoPro运动相机可以拿来做什么, 主要的几个用途是: GoPro 不太适合拍人像 拍孩子孩子容易动, 特别容易就糊了, GoPRO的摄像参数可以调的很少, 所以不要期望有大光圈能背景虚化, 唯一能拍的可能是大长腿, GoPro是广角镜头, 能拍出细长的身段和大长腿,...
- C++ 编程练习题 – 最多水容器 (递归) 题意: 给定一个数组, 每个数值代表柱子的高度, 那么求出这些柱子最多可以装多少水. 水的体积由较短的长度乘以两个柱子的距离. 上面的图的输入为 . 蓝色区域最可以装水为49. 最简单的方法就是暴力穷举, 那么复杂度为 O(n^2) , 需要穷举n*(n-1)/2对高度. 可以用递归来实现, 但是递归需要额外O(n)...
- 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...
判断服务器的硬盘类型: 是否是固态硬盘/NVMe
拿到服务器,想看是否是固态硬盘(SSD/NVMe),可以用以下几种方法,还有另一种方法是使用“dd”命令来测试硬盘的读写速度。
检查磁盘类型:SSD(固态硬盘)
要检查 VPN 服务器上的磁盘是否为 SSD固态硬盘,您可以根据操作系统使用以下方法之一:
Linux
在 Linux 上,您可以使用以下命令检查磁盘是否为 SSD:
方法 1:使用 lsblk
lsblk -d -o name,rota
示例输出:
NAME ROTA
loop0 1
loop1 1
loop2 1
loop3 1
sda 1
ROTA 列显示设备是否为旋转式(1)或非旋转式(0)。
如果 ROTA 为 0,则设备可能是 SSD。
方法 2:使用 cat 查看 /sys/block
cat /sys/block/sdX/queue/rotational
将 sdX 替换为您的实际磁盘(例如,sda、sdb)。
如果输出为 0,则该磁盘为 SSD/固态硬盘。如果为 1,则为 HDD。
方法 3:使用 lsblk 的 -D 选项(用于丢弃/Discord功能)
lsblk -D
示例输出:
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
loop0 0 4K 4G 0
loop1 0 4K 4G 0
loop2 0 4K 4G 0
loop3 0 4K 4G 0
sda 0 32K 2G 0
├─sda1 0 32K 2G 0
├─sda14 0 32K 2G 0
├─sda15 0 32K 2G 0
└─sda16 0 32K 2G 0
SSDs 通常支持“丢弃”功能,因此在“DISC-GRAN”列中有非零值通常表示具有 SSD 功能。
Windows
如果您使用基于 Windows 的 VPN 服务器,可以使用 PowerShell 检查磁盘类型:
MacOS
在 MacOS 上,您可以使用 diskutil:diskutil info diskX | grep "Solid State"
将 diskX 替换为实际磁盘标识符(例如 disk0)。
如果磁盘为 SSD,它将显示“Solid State: Yes”。
这些方法中的每一种都可以帮助您确定 VPN 服务器上的磁盘类型。
检查磁盘类型:NVMe SSD
上述方法也适用于 Linux、Windows 和 MacOS 上的 NVMe/Non-Volatile Memory Express(非易失性存储器标准)驱动器,但在文件路径和命令输出方面存在一些差异:
Linux
在 Linux 上,NVMe 驱动器通常显示为 /dev/nvme0n1、/dev/nvme1n1 等。以下是针对 NVMe 调整的方法:
方法1:使用 lsblk
lsblk -d -o name,rota
NVMe 驱动器通常会显示 ROTA 为 0,表示非旋转(SSD)。
方法2:使用 /sys/block
cat /sys/block/nvme0n1/queue/rotational
将 nvme0n1 替换为您的 NVMe 设备。
输出应为 0 表示 NVMe 驱动器。
方法3:使用 nvme 工具
如果您安装了 nvme CLI 工具,还可以检查驱动器信息:
nvme list
您可以在 Ubuntu 上安装 nvme-cli 包,例如:
sudo apt install nvme-cli
这将显示所有 NVMe 设备的详细信息,包括型号、容量和序列号,有助于识别它是否为 NVMe SSD。
Windows
在 Windows 上,PowerShell 命令也可以识别 NVMe 驱动器:
Get-PhysicalDisk | Select-Object -Property DeviceID, MediaType, Model
在输出中,MediaType 显示为 SSD 表示 NVMe 驱动器。Model 字段可以帮助确认驱动器是否基于 NVMe。
示例输出:
DeviceID MediaType Model -------- --------- ----- 1 HDD Elements 25A3 2 HDD Elements 25A3 0 SSD MZVL22T0HBLB-00BMV SAMSUNG
macOS
在 macOS 上,diskutil 命令对 NVMe 驱动器也适用:
diskutil info diskX | grep "Solid State"
将 diskX 替换为 NVMe 磁盘标识符(例如 disk0)。如果是 SSD,您将看到“Solid State: Yes”,并且可以通过制造商提供的附加信息确认是否为 NVMe。
英文:How to Check Hard Disk Type (NVMe SSD) on Servers/VMs?
本文一共 689 个汉字, 你数一下对不对.
相关文章:
- 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
- LOGO 海龟作画 系列 一 之 给孩子最好的编程启蒙语言 – Logo Turtle Graphics – Series 1 – Best Introductory Programming for Kids I think the LOGO turtle graphic is the best introductory programming language for the kids....
- WordPress 更新服务站点列表 当你发表一篇博文的时候, wordpress 会自动把文章提交到几个更新服务站点里 当然提交的越多 文章被第一时间推送更新可能性就越大. 在设置 – 撰写 – 更新服务里 每一行就是一个站点推送地址. http://rpc.pingomatic.com/ http://api.moreover.com/RPC2 http://api.my.yahoo.com/RPC2 http://api.my.yahoo.com/rss/ping...
- 英国硬盘数据恢复失败的经验和教训 上一周, 不小心触碰了机箱后面的电源线, 接触不良, 结果机器再也开不起来了. 显示 Invalid Disk, Replace. 大概就是主硬盘MBR区坏了. 我以为是接触不良, 于是反复插把硬盘卡槽好几次, 机器认不出, 硬盘也没声音, 于是便网上搜索了一个剑桥评价最高的 硬盘数据恢复公司...
- 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
- 在波场上最简单的被动收入: 质押TRX投票见证人获取奖励(年化4.8%)! 波场上最简单的被动收入: Stake & Earn 质押获取收益 在波场(Tron)区块链上获得被动收入(TRX)的方法很简单, 如下只要3步: 质押或锁定 TRX. 需要14天才能解锁(质押模型v2.0). 您可以在 tronlink 钱包(Chrome 扩展程序)或 tron-cli...
- 国内现在的外卖真是又快又便宜 这次回国感触最深的就是国内的外卖。第一天去颐和园回到我姐家5-6点很累,不想出门,所以就在家点了外卖。手机微信小程序(美团)选了支付下单,半小时内就送到了。 一开门,就见外卖小哥的一只手把食物送了过来,人的正脸都没见到,外卖小哥转身就走,走太快在拐角处还差点滑倒了。 我姐说,现在平台算法优化很厉害,送晚了,平台会罚钱,所以外卖小哥争分夺秒一刻也不敢多逗留。 撇开外卖食物是否干净健康,中国现在的外卖真是又快又便宜,比如那天和我姐一起去北京的环球影城,在回家的路上(坐地铁7号钱坐一个小时到菜市口站),我姐快到家的时候点了两碗粥,到家一会儿就送到了,你猜多钱?也才19元。19元也就2英镑多一些,在英国都不够小费的。 在国内真是幸福,怪不得国内房子的厨房大多不大,我姐二环2居室,厨房真是一点点,只够一人进去的,两人在厨房就很挤了。我估计是国内(打工)人吃饭大多外卖/餐馆,一年下厨房的次数估计一个手就能数过来。 望京小腰-这店名取得真不错。 本文一共 398 个汉字, 你数一下对不对. 国内现在的外卖真是又快又便宜. (AMP 移动加速版本) 赞赏我的几个理由. ¥...
- 和孩子到英国Suffolk进行复活节Easter Egg Hunt 去年复活节刚好因为疫情 只能待在家里, 于是在院子里和家里藏好复活节Egg然后孩子找蛋. 前年去了到 Beth Chatto 花园找复活节彩蛋 今年疫情好转, 政府允许在室外活动, 于是驱车到了Suffolk进行复活节Easter Egg Hunt. 地址是: The Rotunda,...
Certimate上手:自搭建开源SSL证书申请续期平台,自动部署证书到服务器
20 个 IT 运维必知的指标
在运维实际工作中,常用的 20 个关键指标可以帮助我们全面评估和优化系统性能。这些指标涵盖了系统性能等多个方面,对于全面评估和优化 IT 运维和 Linux 运维工作至关重要。
响应时间
指标说明:用户发起请求到系统返回响应的时间,是评估系统性能和用户体验重要指标。
参考阈值:一般应控制在几百毫秒到数秒间,具体取决于应用类型和用户期望。
Error Rate 错误率
指标说明:系统处理请求时发生错误百分比,用于评估系统的稳定性和可靠性。
参考阈值:低于 1%错误率通常是良好的,具体取决于应用业务和服务级别协议。
Throughput 吞吐量
指标说明:单位时间内系统处理请求数,反映系统处理能力和资源利用率。
参考阈值:根据应用的负载和性能要求进行优化,通常是希望吞吐量越高越好。
Availability 可用性
指标说明:在一定时间范围内系统正常运行的百分比,衡量系统的持久性和稳定性。
参考阈值:高可用性通常要求在 99%以上,具体取决于应用的业务需求。
CPU 使用率
指标说明:CPU 运行在非空闲状态的时间占比,反映 CPU 的繁忙程度。
参考阈值:合理控制 CPU 使用率,避免过载。
内存利用
指标说明:系统内存使用情况,包括已使用和空闲内存。
参考阈值:保持合理的内存利用率,避免内存溢出。
磁盘读写
指标说明:磁盘的读写速度和效率,影响数据访问性能。
参考阈值:根据应用需求优化磁盘性能。
网络延迟
指标说明:数据在网络传输过程的延迟时间,影响系统的通信和数据交互。
参考阈值:低于几十毫秒网络延迟通常是良好的,但具体取决于应用的实时性要求。
Concurrent Connections 并发连接数
指标说明:同一时刻系统处理的并发连接数,用于评估系统并发能力。
参考阈值:根据系统类型和业务需求确定合适并发连接数。
Database Response Time 数据库响应时间
指标说明:数据库处理查询请求的时间,直接影响应用的数据库交互性能。
参考阈值:通常应控制在几百毫秒到数秒间,具体取决于数据库负载和查询复杂度。
Security Incident Rate 安全事件率
指标说明:某一时间段内发生安全事件数量,用于评估系统的安全性和受攻击风险。
参考阈值:低于 1%安全事件率通常是良好的,具体取决于系统的安全需求。
日志分析时间
指标说明:系统日志分析平均时间,用于评估日志监控和故障排查的效率。
参考阈值:高效日志分析通常应在分钟级别完成,具体取决系统规模和日志量。
资源利用效率
指标说明:资源使用率与提供服务关系,评估系统对资源的有效利用程度。
参考阈值:较高资源利用效率表示系统有效利用资源,具体的标准根据系统类型和业务需求而异。
Scheduled Task Accuracy 定时任务准确性
指标说明:定时任务执行的准确性,用于评估系统计划任务的可靠性。
参考阈值:较高的准确性表明系统能够按照预定计划执行任务,通常维持在 95%以上。
Durability 持久性
指标说明:系统数据的持久性,即数据在面对故障时的保持能力,用于评估系统的数据安全性。
参考阈值:高持久性表明系统能够有效保护数据,通常应达到 99%以上。
故障恢复时间
指标说明:系统从故障发生到完全恢复所需平均时间,用于评估系统可恢复性。
参考阈值:较短的 MTTR 表示系统能够快速从故障中恢复,具体标准根据业务需求而异。
平均故障间隔时间
指标说明:系统在连续运行中平均经历故障间隔时间,用于评估系统的稳定性。
参考阈值:较长的 MTBF 表示系统较为稳定,具体标准根据业务需求而异。
安全漏洞修复时间
指标说明:发现安全漏洞后系统修复的平均时间,用于评估系统对安全威胁的应对速度。
参考阈值:较短的修复时间有助于降低安全风险,通常在几天到一周之间。
User Satisfaction 用户满意度
指标说明:用户对系统满意度,通过用户反馈和调查评估系统的用户体验。
参考阈值:高用户满意度是系统成功的关键,通常维持在 90%以上。
自动化采纳率
指标说明:系统运维和部署过程中自动化工具和流程采纳程度,用于评估系统运维效率。
参考阈值:较高自动化采纳率表示系统运维更加高效,通常在 70%以上。
如何将原版不蒜子busuanzi的数据迁移到自搭建不蒜子上
自搭建不蒜子busuanzi从2.8之前版本升级数据方案教程
HTTPSOK上手:省心的通配符SSL证书申请,自动化部署证书
获得最新Apache服务器访问记录的脚本
apache 服务器将访问请求记录在 /var/log/apache2 中,因此我们可以分析这个日志文件来找出最后的几个请求。
下面解析 apache2 服务器日志,并逐行打印请求。它基于 BASH 命令:tail 和 awk。
#!/bin/bash NUMBER_OF_REQUESTS=50 LOG_FILES_PREFIX=/var/log/apache2/access tail -n $NUMBER_OF_REQUESTS $LOG_FILES_PREFIX* | awk -F'"' ' # 确保 IP 地址、请求和用户代理字段存在 $1 ~ /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ && $2 ~ /^(GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH)/ && $6 != "" { split($1, part1, " ") ip = part1[1] split($2, request, " ") method = request[1] path = request[2] user_agent = $6 print ip, path, user_agent } '
示例输出(每行包含 IP 地址、URI/URL 和用户代理字符串):
有了它,我们可以集成到 BASH 脚本中,当 CPU 平均负载较高时发送电子邮件通知,以帮助我们了解导致峰值的原因。
英文:How to Get the Last Requests to Apache2 Server?
本文一共 198 个汉字, 你数一下对不对.
相关文章:
- 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
- 在币圈第一次被骗1355 USDT(1000英镑)的惨痛经历(Wirex) 今天回家,在帮媳妇干活的时候,收到一邮件,手机上打开,以为是来自Wirex的,要我验证手机号,我想也没想,就打开验证了,然后不到2分钟,里面的钱就被转走了。 手机上打开没细看,电脑上打开该邮件 其实很容易发现是诈骗邮件的。因为邮件不是来自于官方,而且我的姓名前是加了一些乱码。一眼假。只不过当时在干活,也没多想,才被骗。 损失1355 USDT(1000多英镑),因为在Wirex上有X-Account,我锁定了XX个大饼,还好锁定了(30天才能解锁),后怕啊,不然全被搞走了,真得上天台了。 X-Account帐号锁定解锁需要30天,骗子马上启动解锁了。但钱还在,我立马联系客服,客服回得也挺快(以前不太重要的邮件就得好几天才回),客服立马把我的帐号锁定了,然后进行调查。 庆幸当初为了高1%的利息锁定币30天,要不然今天估计就全丢了。 Wirex通过手机短信就可以把钱搞走,而且登陆/更改资料都需要SMS验证码,实在是不合理,我要改回我手机号,则需要向骗子手机要验证码。虽然我开通了更为安全2FA二维码验证,但是貌似一个手机SMS验证码就可以关闭。 这个假期本来很完美,结果因这事搞得很不愉快。惨痛的教训,就当学费了。骗子不得好死。 Wirex客服这次回得挺快: I am truly sorry you...
- 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
- HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
- 英国博士毕业答辩是怎样一个过程? 坛子发了篇 “欧洲博士毕业答辩是怎样一个过程?” 但是英国不太一样, 请听我细细道来. 我是2006年9月开始博士课程的, 当时很不容易 争取到免学费, 第二第三年学费免不免得看研究进度. 确定导师 如果你是中规中矩的进去 一般院里会给你安排个一导, 也可能是你跟着导师, 导师有钱, 这时候有钱给你生活费的就是一导, 一般至少需要2个导师,...
- WordPress 最简单的过滤垃圾评论的方法 WordPress 很多垃圾评论都是由程序直接调用访问 wp_comments.php 造成的. 所以我们可以在 functions.php 文件里加入以下代码 新增一个过滤 简单的检查是否是直接调用. 1 2 3 4 5 6...
- 穷举算法的应用 – 去除EXCEL文件中的保护 EXCEL 是可以用密码来保护的. 比如 这个EXCEL 就用了密码保护. 打开EXCEL文件 你会注意到 无法编辑 无法查看宏(VBA)的代码. 去除保护很简单 第一步先编辑宏 VBA 把下面的VBA代码拷贝到VBA编辑器里 并按下F5运行 1...
- 在LINUX下循环备份的方法 备份是我们常需要做的事, 你可以在服务器上有一个文件夹专门用于存放备份.然后定期删除(可以是一个脚本定期执行),这样就比较麻烦,因为如果你想每次删除比较旧的备份, 你就得对备份进行时间倒序. 其实可以完全利用LINUX下的 date命令来生成想要的文件名用于备份.比如你想保留过去的 24 小时备份,那么,你可以用: 1 2 H=`date +"%H"` ls > backup_$H #...
宝塔如何单独给一个网站设置nginx缓存目录,延长和持久化图床缓存
因为我的图床的请求和流量费用比较高,且有安全风险,所以我一般是服务器反代了我的图床。但是我发现即使我反代了我的图床,我的图床请求量和流量每天还是挺高。一开始我以为是有一些没有缓存,比较冷门的图还被第一次访问,但是用了好几个月还是每天几万请求。后来我意识到一件事情:可能缓存没
使用Docker搭建Umami统计,显示近一年的pv、uv数据的API搭建
因为百度统计使用unload导致浏览器报错和一系列性能问题,并且去广告插件之类的对百度统计都有屏蔽,导致无法获取真实的数据,所以决定之下还是选择了自搭建umami。这也是向访客隐私迈出的一大步,也就是说在未来我的博客将不会将访客数据传输给第三方,避免了潜在的隐私风险。
宝塔journalctl占用大量CPU解决方法
之前宝塔一直有一个问题困扰着我,那就是每次我进入宝塔面板,journalctl的占用CPU就会飙升。并且每次刷新,journalctl就会创建一个进程两个同时开始高强度运行。当我多次进入首页,我就可以看到有七八个journalctl进程在运行。
使用 CapRover WebHook 获得类 Vercel 部署体验
我在开发前端应用的时候,基本上使用的都是 Vercel ,究其原因,主要是以下几个点:
- Vercel 可以方便的与 Github 整合,提供简单易用的部署方式:写完代码,测试完成后推送到 Github ,就会自动部署到线上。对于小型项目来说,可以简化部署的流程。
- Vercel 提供了自定义域名和自动配置的 SSL,提供了简单的配置方式:在现在 SSL 成为标配的模式下,在 Vercel 你只需要把域名解析到 Vercel ,并在你的 Project 当中绑定域名,就会自动完成域名绑定和 SSL 申请和续期。
- Vercel 提供了 FaaS 环境:写应用的时候,很多时候不只有前端的需求,这个时候, Vercel 自身的提供的 FaaS 环境可以帮助你完成基本逻辑的编写。
但 Vercel 毕竟是以前端为主,且函数运行时长也有限制,对于一些比较重的场景下,Vercel 还是不太够用。刚好最近我把服务部署从传统的 LAMP 换成了 Docker Based PaaS,我使用的 CapRover 提供了类似的体验。
使用 Cap Rover 你能获得的体验:
- 上传代码后,自动部署到 Production
- 绑定域名后,自动配置 SSL 证书,且可以配置其他域名转发到主域名
具体操作步骤见下:
安装 CapRover
CapRover 的安装我就不再赘述,跟随官方的说明安装即可。
绑定根域名
当你登录 CapRover 时,CapRover 会让你绑定一个泛域名解析,你可以根据自己的需要,绑定一个二级或者三级域名,然后在 DNS 解析一个 *
到这个服务器上。这样后续部署的服务就会自动解析一个 服务名.你的域名
,用于服务的初步访问(类似于 xxx.vercel.app
)。

上传代码至 GitHub
在 Github 上创建一个代码仓库,并把你自己的项目部署上去。如果你有已经写好的 Dockerfile,可以一并上传上去。如果没有的话,则可以选择参考 CapRover 提供的 Sample App ,里面提供了常见语言的部署参考。
创建容器并配置环境
完成代码上传后,你可以进入到 CapRover 后台,创建一个新的 App。这里可以输入你喜欢的名字,方便后续查找即可。

创建完成后,点击下方列表中的应用名称,进入应用的配置页面,并切换至 Deployment 页面。

在这个页面,可以找到 Method 3 : Deploy From GitHub/ Bitbucket/Gitlab,填写你的仓库信息、分支名、用户名。密码你可以选择直接使用你的密码,也可以选择创建一个 Personal Access Token ,或者是在仓库里配置一个 Deploy SSH key 均可。

配置完成后,会自动给你生成一个 Webhook 地址,复制这个 Webhook 地址。

配置 Github 上的 WebHook
复制上方的 Webhook 地址,并进入到 Github 你的仓库 – Settings – webhooks 页面,新增一个 Webhook。

粘贴你刚刚复制的 URL,Content Type 选择 application JSON,并在下方选择触发部署的时机。

点击报错。
等待自动部署
接下来你就可以通过提交代码,来让其自动完成部署,从而享受类似于 Vercel 的推送即部署的体验~。