东拉西扯

张戈博客正式启用全新个性域名:zhang.ge

Docker

Nexus3最佳实践系列:搭建Docker私有仓库

Docker

零门槛!基于Docker快速部署ES集群

网站建设

分享张戈博客的WordPress优化方案,缓解国内云服务器配置低下的问题

Docker

Docker新手入门实战教程

Docker

基于Docker部署ceph分布式文件系统(Luminous版本)

东拉西扯

浅谈个人博客网站or屌丝vps服务器暴露真实IP的危险性

WEB应用

APISIX插件开发之精细化限速插件

网站建设

如何正确配置CDN高速缓存,避免越用越慢的尴尬

WEB应用

APISIX插件开发之Kong网关HMAC鉴权插件(附客户端SDK)

WEB应用

APISIX运维优化之解决长尾请求(耗时抖动)问题

8月17日 · 2022年

gRPC开发过程中遇到的问题记录

1779 0
最近我在改造手头负责的一个HTTP Restful API服务,集成对gRPC协议(在鹅厂叫tRPC,是gRPC的本土衍生版本)的支持。由于是从0学习这个协议,因此也踩了不少坑,这里用一篇文章来记录下,希望可以帮助到同样从0学习gRPC的朋友。列表参数赋值老的Rest接口中,大量用到了列表参数,看了下pb协议,给这个参数定义如下:message Foo { rep...
8月3日 · 2022年

SQLAlchemy因密码含有@符号连接MySQL失败

2131 0
最近新来的实习生小伙子在重构一个我入职时开发的老系统,这个系统之前用的是Python twisted框架开发的,这次重构希望可以换到FastAPI,也就是我上一篇文章分享的Flyer开发框架。小伙子很给力,花了几天自学了下FastAPI和Flyer就开始开发了,结果用Flyer框架的时候,连接MySQL报错如下:sqlalchemy.exc.OperationalError: (...
6月17日 · 2022年

Flyer:基于FastAPI的轻量级API开发框架

2161 0
概述我们经常会听到“不会开发的运维不是个好运维”,确实在运维工作当中,娴熟的开发经验能让运维工作如鱼得水,事半功倍!高级的运维除了需要精通Shell脚本编程之外,最好还需要掌握一门高级语言,比如Python、Golang、PHP、Lua等。高级语言除了可以解决一些更复杂的运维场景,还可以帮助我们更好的理解业务,做好业务运维,毕竟知己知彼才能百战不殆。经常看到很多运维同学写接口通常...
3月18日 · 2022年

APISIX高级路由之301/302跳转配置

2399 0
我们这有个内部网站同时支持2个域名访问,最近因升级需求希望统一到一个域名,即老域名做一个301跳转到新域名。这个在Nginx直接配置一个if逻辑,判断是老的host并跳转到新的域名即可。那这个Case在APISIX里面应该怎么配置呢?看了下APISIX文档,发现有两种跳转插件:redirect和response-rewrite,前者只能跳转uri不包含协议主机部分,后者可以通过修改返回头...
3月1日 · 2022年

解决paramiko使用invoke_shell交互式命令超时问题

3497 0
最近手头有个业务是基于Apache Karaf开发的,运行在K8S里面,跑了一堆的bundle,偶尔里面挂一两个bundle容器是没什么感知的,但是业务可能会局部异常。要推动业务优化的话,周期就会拉得很长,因此先弄个定时拨测来监控下bundle是不是都在正常运行的。看了下要查看Karaf里面的bundle需要ssh进去执行bundle list命令,因此基于之前的经验利用Python p...
2月25日 · 2022年

分享一个APISIX网关返回502的典型案例

1327 0
APISIX为了提高性能,默认会打开keepalived特性,预设会话保持时长为60s,我们在部署网关的时候也保留了这个优化特性,恰好我的上游服务基于Gunicorn+FastAPI开发框架,也开启了keepalived,会话保持默认设置为5s。这样就有问题了:网关和上游服务建立连接后60s内,新请求会继续复用这个连接,但是上游却在5s后主动关闭了连接,因为网关将新请求转发给上游时,才发现连接已经被关闭了,因此就出现了上述报错。...
12月23日 · 2021年

解决百度搜索出现安全中心提醒

1219 0
自从博客几乎断更之后,就已经很少关注SEO了。昨天机缘巧合在百度搜了下“zhang.ge”这个国外线路域名的时候,居然发现有如下提示:纳尼?还有这种事情?但是搜索“zhangge.net”却没有,看起来应该是误报。点击打开会有如下提示:看到有个“申请解封”按钮,就点过去,填写表单提交了下:结果,没等多久,大概之后个把小时就收到了百度发来的审核通过的...
12月12日 · 2021年

APISIX运维优化之解决长尾请求(耗时抖动)问题

2397 0
自从APISIX网关推广使用以来,在我们部门已经有很多生产业务接入使用。有一天被拉进了一个问题群,被告知APISIX网关性能有问题,整体表现还不如之前的ZUUL网关。纳尼?APISIX性能再怎么不济也不至于比ZUUL差吧?废话少说,直接上手弄了个串行请求对比测试了一下生产环境的APISIX网关和ZUUL网关,结果大跌眼镜!正常情况下,APISIX的耗时都优于ZUUL网关,但是AP...
11月14日 · 2021年

APISIX运维优化之配置文件自动化生成方案

3017 0
Configmap的方式来配置APISIX。最开始我们就采用 Configmap的方式在腾讯云TKE上部署APISIX,当网络区域越开越多时,每个TKE集群都需要去定义一套config.yaml对应的Configmap,管理非常繁琐。因此,这里我们利用Python的Jinja2插件来自动化渲染APISIX的配置文件,整体非常方便!...
5月12日 · 2014年

分享张戈博客的在线影音源代码

908 74
记得以前写过一篇《给博客添加网络电视页面》的文章,后来张戈将音乐电台和网络电视综合了一下, 成为了现在的在线影音。此页面用到了iframe框架,所以张戈用 js 封装处理了下,避免不利于SEO的情况(如何封装的?)近期,有朋友私信或留言给张戈,想要我分享一下张戈博客的在线影音的源码。而我却一直因为其他事情耽搁了,现在空了点,就来分享下。其实,我最开始是从在线...
3月18日 · 2014年

玛思阁新增视频教程分类

2358 22
近期一直在折腾博客代码,想完善互推联盟的方方面面,感觉略累,可能还是反响不够热烈吧,激情稍有消退。个人还有2个目标没完成:一是在互推联盟iframe模块中加入文字以及评论模块,取消底部公告模块;二是让互推联盟页面支持手机主题。。。以上两条打算利用这周双休时间来完善,但今天有另外比较重要的事情要做,那就是——给博客加上一个视频教程分类,在自己学习的同时也分享给有需要的...
5月30日 · 2015年

Nginx开启fastcgi_cache缓存加速,支持html伪静态页面

8158 124
张戈博客不久前分享过Nginx开启缓存为WordPress加速的教程,其中分享了2种缓存模式:代理模式和本地模式。我一直以为单个 ngx_cache_purge 缓存模块只支持proxy代理模式,结果热心的网友回复,其实这个模块也是支持本地缓存的,而且WordPress还有配套的插件!看来还是我孤陋寡闻了!我像发现了新大陆一般,立马进入折腾状态,幸不辱命,已经成功部署!最爽...
脚本编程阅读更多
6月26日 · 2014年

Linux操作系统DNS解析(nameserver)监控脚本

7548 20
一、起因昨天,开发组兄弟发现resin日志出现不少支付宝业务报错信息,用户用支付宝购买了产品,钱到账后公司系统却未返回支付成功状态!这还得了?用户明明支付成功了,结果却显示未到账!!!必须赶紧解决,用户投诉是小,用户流失就大了!仔细分析日志后,发现是解析支付宝接口域名(mapi.alipay.com)时出现延时,导致获取不到支付成功的返回信息!检查发现OpenSUSE的name...
12月17日 · 2013年

结合VBS,实现批处理自动以管理员身份执行

1743 0
这是我在百度回答知友时写的,用于自动以管理员身份执行命令或程序→百度原址批处理代码,功能:自动以管理员身份执行test.exe:start admin.vbs runas /user:administrator test.exeadmin.vbs 代码(延时是为了成功传值给bat命令,确保成功)dim wsh set wsh=WScript.CreateObje...
12月20日 · 2013年

批处理判断第一个硬盘的最后一个分区并进入

840 0
参考批处理之家写给百度知友的。→百度问答原址@echo off echo 批处理初始工作目录为%cd%,开始切换... for /f "tokens=3 delims==" %%i in (\'Wmic Path Win32_LogicalDiskToPartition^|find /i "Disk #0"\') do call :check %%i echo. ...
11月3日 · 2014年

VPS/Linux系统防CC攻击带白名单过滤功能的Shell脚本

745 4
最新更新:张戈博客已推出功能更强大的轻量级CC攻击防御脚本工具CCKiller==>传送门根据我个人VPS需求,并参考了余洪春前辈的《自动甄别黑白名单的iptables安全脚本》,编写如下Shell代码。脚本名称:自动拉黑CC攻击者IP的Shell脚本功能说明:通过netstat -an命令统计出当前请求并发大于100的IP,然后将不在白名单的IP自动加入DROP规则...
7月21日 · 2014年

nginx日志切割及7天前的历史日志删除脚本

7058 16
上次写到《服务器日志备份超节省空间的思路》,压缩后磁盘占用由93%降到了62%,效果还是不错的!为什么不直接删除呢?其实是因为这些日志涉及到支付等重要业务,保存半年以上也算是保守的做法。今早,又发现几例磁盘空间报警,占用率都在90%+,关键居然是根分区!这要是日志突然暴涨,把根分区撑爆了,那就可以体验到“菊花一紧”的快感了吧?索性利用CRT的全局命令把磁盘空间占用率超过75%的服务...
11月8日 · 2015年

分享一个入门级可控多线程shell脚本方案

5816 12
说到shell可控多线程,网上分享的大部分是管道控制的方案。这种方案,张戈博客也曾经实战并分享过一次:《Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点》,感兴趣的朋友可以看看。下面张戈博客再分享另一种更容易理解的入门级可控多线程shell脚本方案:任务切割、各个击破。先来 1 段场景描述:某日,在鹅厂接到了这个任务,需要在Linux服务器中,对几...
8月31日 · 2014年

Linux/vps本地七天循环备份和七牛远程备份脚本

9769 45
博客前些时间分享过一次vps远程备份到七牛的工具,全傻瓜式交互操作,但也有一个很大的缺憾,那就是不够灵活,在无人干预的情况下,无法完成对多个站点的远程备份设置。这次博客搬家到vps后,张戈花了点时间完善了下,实现了多站点,多数据库的本地七天循环备份和同步备份至七牛云存储的脚本。一、类型说明①、七天循环备份受服务器空间制约,我们不可能在VPS上每天都备份一份新的网站数据,...
11月5日 · 2014年

Linux系统防CC攻击自动拉黑IP增强版Shell脚本

27048 53
最新更新:张戈博客已推出功能更强大的轻量级CC攻击防御脚本工具CCKiller==>传送门前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护。前天写的Sh...
8月22日 · 2014年

Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点

6373 12
一开始搭建中国博客联盟,既有博友提醒我,做网址大全这类网站维护很麻烦,需要大量的精力去Debug一些已夭折的网站,更是拿松哥的博客大全举例。当然,我也是深以为然。前些时间,看到梦轩丽人的boke123网址大全的维护记录,好像是纯手工检查,张戈实在是佩服的五体投地,太有毅力了。现在博客联盟也收录的博客也已破200了,全部来自自主提交,不管你是草博还是名博,张戈不会强买强卖。由于大部分都是建站...
5月16日 · 2014年

百度开放适配&360移动适配专用Sitemap格式转换工具

8151 52
此工具可将标准版的sitemap.xml转换成电脑版—移动版的对应关系sitemap,用于百度开放适配&360移动适配的文件提交。工具用批处理制作,仅起到批量转换的辅助功效,免去手动制作的麻烦!可以用于移动适配的提交测试!张戈不会php,而shell又不能普遍适用,所以只能挑了自己比较拿手的批处理来制作这个辅助工具!因为批处理的局限性,做出来的工具只能用于尝鲜测试使用!或长期不更新的CMS企业网站来提交移动适配sitemap。另外,响应式站点亦无需提交适配!...
操作系统阅读更多
12月30日 · 2013年

Linux终端:用cat命令查看不可见字符

854 1
时常,某个程序或软件并没有语法错误,并且你检查它的相关内容也确实没有发现问题。这是因为你用普通文本编辑器软件来查看的时候,有许多字符没有显示出来,但在终端使用cat命令可以很容易地检测出是否存在这些字符。首先,我们创建一个简单的文本文件,写入一些特殊字符。打开终端,运行命令:printf \'testing\012\011\011testing\014\010\012more tes...
11月18日 · 2014年

Linux系统crontab备份数据库执行不成功?可能是百分号%在作怪!

4063 4
之前博客分享过一篇《Linux/vps本地七天循环备份和七牛远程备份脚本》,我自己也一直在用。某天检查备份的时候,突然发现数据库的备份的压缩包是空的!看了下crontab的日志,发现有如下错误:Access denied for user \'dbuser\'@\'localhost\' to database \'db\' when using LOCK TABLES原来,我在计划任务中备份...
5月15日 · 2014年

10个超有趣的Linux命令

4225 23
本文展示了10个有趣的Linux动态命令,这些命令和实用功能无关,仅供娱乐!看完此文,你会对Linux有个全新的认识,谁说IT男就没有屌丝娱乐的一面呢?还等什么,就让我们开始看文章吧~看完之后记得亲自尝试一下哦!Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了。在这些大量的有用的命令和脚本中,你会发现有少部 分命令工具不那么有用的——如果你不愿意说是完...
4月6日 · 2017年

远程桌面报错解决:No Remote Desktop License Servers Available

8633 26
用户发来反馈,使用部门Windows跳板机报错:The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license.Please contact the server administrator,最后发现是微软RDP远程桌面套件的一个BUG,可通过安装微软补丁或修改注册表来解决,本文简单记录分享下解决过程......
1月29日 · 2015年

CVE-2015-0235:Linux glibc高危漏洞的检测及修复方法

1139 13
这几天复习运维知识,也没怎么关注业界新闻,可等我一关注,又“捅娄子”了,Linux继上次CVE-2014-6271漏洞爆发以来,再次爆发一个严重漏洞:CVE-2015-0235-Linux glibc高危漏洞,正在使用Linux系统的个人或企业,看到消息请立即修复!下面是我转载的检测和修复方法,我个人服务器Centos 6.5已成功修复:一、漏洞概述2015/01/28...
12月12日 · 2015年

解决Linux修改密码报PAM authentication failed错误

11508 25
最近接到一个运维开发任务,需要开发一个帐号管理系统,对手头三千多台Linux服务器的root帐号进行批量系统的管理,实现定期修改root为随机密码并加密存储,并向运维管理WEB前台提供密码查询解密接口等功能。刚开始,我基于php+ssh2_exec开发了一套雏形。基本功能都实现了,结果老大说这里的运维就我稍微会点php,后面可不好维护。本来也被我说服了,因为写都写好了,难道要重构?...
9月29日 · 2014年

Linux网络实时流量监测工具iftop的安装使用

7520 1
概述:网络管理是基础运维中一个很重要的工作,在看似平静的网络运行中,其实暗流汹涌,要保证业务系统稳定运行,网络运维者必须要了解网络的流量状态、各个网段的使用情形,带宽的利用率、网络是否存在瓶颈等,同时,当网络发生故障时,必须能够及时发现问题,迅速定位问题,进而解决问题,这就需要一些网络监测工具的辅助,本节将介绍一款小巧但功能很强大的网络实时流量监测工具iftop。一、iftop概述ifto...
8月27日 · 2014年

Linux系统date命令无法修改或同步时间的解决办法

7315 7
今天,在站长交流群里面,又一个站长抱怨服务器每星期都必须手动重启一次,否则QQ登陆功能无法使用,原因是服务器时间快了5分钟以上,腾讯服务器拒绝提供API服务。本以为只要加一个简单的linux时间同步任务计划即可,结果我拿到root后,发现并不是那么一回事。在我正确添加了ntpdate 任务计划之后,手动执行了时间同步命令,发现时间依然没有变化。手动执行 date -s 16:00:...
3月10日 · 2014年

Windows 7下获取System权限

1266 45
公司推Win7了,作为IT部门,铁定是先行测试的小白鼠。于是先给我们安装了Win7工作环境。一直以来,除了服务器,普通办公PC的管理员都是被桌面运维部收管的,其他IT部门使用的都是普通AD账号。对于我这样喜欢折腾测试软件的人来说,没有管理员权限是很痛苦的一件事情!还未推广Win7时,我就用了这个获取System权限的办法,变相的取得管理员权限,而网域监测系统却不会报警。废话不多说,直接上菜...
5月7日 · 2016年

升级CentOS6.5内核,开启Nginx的fastopen和reuseport特性

1703 29
前面,张戈博客在折腾Nginx的SSL优化时,注意到前人在Nginx的listen配置中,添加了 fastopen=3 reuseport 这2个参数。于是脑补了下,原来是启用Nginx对TCP_FASTOPEN和TCP_SO_REUSEPORT新特性的支持,至于有什么好处,请自行脑补下-->传送门一、必要环境当我依葫芦画瓢也添加这2个参数时,报错了:nginx: [em...
WEB应用阅读更多
3月17日 · 2018年

网站集成打字震动特效JS代码改进版

1063 37
这又是一个拖欠了很久的分享,很早就有朋友留言问评论打字炫彩、震动特效怎么实现的。这功能其实网上早就有人分享N遍了,有点搜索技巧和DIY能力的站长同学也早就实现了。这里还是继续分享一下我这边的一些改进,也许有朋友可以用得到。简单的改进:1、移动端关闭震动,移动端震动会显得很卡;2、添加震动开关,方便不喜欢的朋友进行关闭,采用Cookie记忆同一个浏览器点击关闭一次即可。P...
5月2日 · 2016年

WordPress启用memcached动态缓存以及报错解决

19397 87
张戈博客目前用的是Nginx的fastcgi缓存方案,属于纯净态缓存模式,所以前台登录态什么的基本都没了。如果要兼顾前台登录态,又想速度快,有没有解决方案?之前在分享张戈博客优化方案时提到,要实现网站轻度缓存,方案还是有的,比如 DB Cache Reloaded、Redis、memcached等。最近恰好遇到一个数据缓存需求,因此尝试了下memcached方案,下面简单分享下我的...
2月3日 · 2018年

小网站最简单实用的动静分离优化方案

11928 45
很久没写文章了,博客已经长草了,今天挤点时间分享一些小干货,也是回应一下不少站长朋友的留言问题。有不少站长朋友问张戈博客的静态文件为啥是另外一个域名?有啥好处?如何实现?其实这算是一种动静分离的做法,不过我这里用了偷懒的办法实现,而非彻底的动静分离,不过最终效果的区别并不大。先啰嗦一下动静分离的概念和好处。一、动静分离我们的网站简单来说分为2种数据...
11月7日 · 2021年

APISIX插件开发之Kong网关HMAC鉴权插件(附客户端SDK)

1456 0
在决定全面铺开使用APISIX之前,Kong网关在我们的生产环境已经试用了将近一年,因此存在大量的生产环境API接口使用的是Kong HMAC鉴权。此次迁移到APISIX网关,为了减少客户端的改造工作,我们决定将Kong网关的HMAC鉴权插件移植到APISIX,同时将Kong的HMAC认证作为后续API接口的统一鉴权方案。...
2月18日 · 2014年

LVS中采用Jboss作为RealServer的配置要点

737 6
 博客建站已过2个月了,大部分文章总是在记录博客的折腾史,估计大部分喜欢折腾的博主都有这样的时期吧!现在博客基本算是定型稳定,是时候写点与主题相关的博文了,否则,不知道的还以为我这是WP折腾博客呢!这几天,老大发新年任务了,把新技术的研究就交给了我,其中又一项就是Jboss的集群。说实话,对于Jboss,我真的谈不上熟练,因为长期都在管理Tomcat平台。揽到这个任务,我倒也非常高兴,终于可以...
12月8日 · 2015年

升级Nginx1.9.5以上版本,开启博客网站http2.0时代

7158 18
最近给张戈博客全站开启了https,所以对这块关注比较多。昨天脑补的时候发现http2.0只支持SSL加密的网站,即https。于是心血来潮,给张戈博客开启了http 2.0,尝尝鲜。查了下资料,发现Nginx不久前发布的 1.9.5版本支持http2.0,而1.8.x时代只是对SPDY进行了支持。一直用的1.62稳定版,此次为了测试http2.0,直接进行了版本跳跃,升级到了1.9.5版...
5月23日 · 2014年

菜鸟教程:Ngnix安装详解

4516 9
今天,不知道写什么,就找来一篇很详细的Nginx安装教程,“滥竽充数”了,另外后面附上马哥关于nginx讲解的核心视频教程。Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рам...
7月7日 · 2019年

CloudFlare边缘计算Workers尝鲜初探:博客跳转中间页

2841 42
4月27日,有幸参加了由Aftership组织、CloudFlare的大牛孟鑫主讲的《CloudFlare 最新边缘API,打造无服务器(Serverless)架构》课程,感觉收获颇丰。因为这个课程非常接地气,大部分内容都在实战,而不像有些分享一味的讲理论、拼PPT,听得云里雾里,分享的时候是一个样子,真正你去尝试的时候却是另外的样子,duang~,当然,还有一个原因就是张戈博客目前也在用Clo...
6月17日 · 2022年

Flyer:基于FastAPI的轻量级API开发框架

2161 0
概述我们经常会听到“不会开发的运维不是个好运维”,确实在运维工作当中,娴熟的开发经验能让运维工作如鱼得水,事半功倍!高级的运维除了需要精通Shell脚本编程之外,最好还需要掌握一门高级语言,比如Python、Golang、PHP、Lua等。高级语言除了可以解决一些更复杂的运维场景,还可以帮助我们更好的理解业务,做好业务运维,毕竟知己知彼才能百战不殆。经常看到很多运维同学写接口通常...
2月24日 · 2018年

Haproxy进阶管理:命令行控制后端节点上下线

1286 11
很多业务系统都用到了Haproxy这个高性能反向代理负载均衡器。在日常运维当中,Haproxy后端节点的上(接入)、下(剔除)线操作绝对是家常便饭,而且人工重启的时候经常有胆颤心惊的感觉。下面分享一种命令行操作Haproxy后端节点平滑上下线的技巧。一、新增配置Haproxy自带了一个非常实用的管理页面,我们可以在harpxoy.cfg新增如下配置,开启Haproxy监控管理页面功...
7月22日 · 2015年

Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问

5188 9
这是我上一家公司的案例总结,发现躺在草稿箱好几个月了,今天得空就整理发布一下。先说一下开发那边提来的2个case:①、同一个域名需要反向代理到前台和后台(不同机器和端口);②、需要采用IP+端口的模式,嵌入到APP作为DNS污染后的备选方案。对于第①个问题,很好解决:通过区分二级目录来反代不同的节点即可,所以代码类似如下:server { li...
2月25日 · 2022年

分享一个APISIX网关返回502的典型案例

1327 0
APISIX为了提高性能,默认会打开keepalived特性,预设会话保持时长为60s,我们在部署网关的时候也保留了这个优化特性,恰好我的上游服务基于Gunicorn+FastAPI开发框架,也开启了keepalived,会话保持默认设置为5s。这样就有问题了:网关和上游服务建立连接后60s内,新请求会继续复用这个连接,但是上游却在5s后主动关闭了连接,因为网关将新请求转发给上游时,才发现连接已经被关闭了,因此就出现了上述报错。...