东拉西扯

张戈博客正式启用全新个性域名: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运维优化之解决长尾请求(耗时抖动)问题

1月16日 · 2025年

FastTTS:支持私有化部署和源阅读无缝对接的语音合成服务

602 0
概述长话短说,最近发现微软的语音服务莫名扣费了,然后看着国内云服务动辄几千上万的语音合成服务资源包,一阵苦涩。搜了下,发现挺多基于 edge-tts 的白嫖项目,试用了下确实能用,就是和源阅读对接的体验有待提高。因此决定自己封装一个更适合源阅读 APP 的语音合成服务,以下是介绍,有需要的直接拿。项目介绍本项目基于 Edge-TTS 和 FastFlyer 开发框...
8月17日 · 2022年

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DIY一个又有趣又好玩的404页面,降低跳出率

4702 36
中国博客联盟(zgboke.com)已经上线有一段时间了,发现404页面居然还是服务器默认的白底黑字风格,用户体验非常差劲!于是,决定DIY一个404页面。突然想起以前看到的卢松松博客的404,嵌入一个类似于神经猫的游戏,又好玩又能提高用户体验,从而降低跳出率。改了下松哥的404源码,和中国博客联盟搭配的,又有趣又好玩的404页面就新鲜出炉啦! 具体效果:...
11月3日 · 2021年

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

3341 0
在实际业务场景中,APISIX限速太笼统,达不到业务要求,最终,我们自己在limit-count插件基础上进行改造,重新设计一个限速机制,能够针对不同的服务给不同的Consumer设置差异化的访问限速,满足生产环境更精细化的限速需求。...
4月5日 · 2016年

分享一次Linux任务计划crontab不执行的问题排查过程

4014 23
朋友弄了一个小项目,要我帮忙做下Linux系统运维,上线一段时间后,发现项目偶尔会挂掉导致服务不可用。开发朋友一时之间也没空去研究项目奔溃的根因,只好由我这个运维先写一个项目进程自拉起脚本,通过Linux任务计划每分钟检查一下进程是否存在来避免项目挂了没人管的情况。自拉起脚本很简单,随便写几行就搞定了:#!/bin/bashprocesscount=$(pgrep my_app|w...
脚本编程阅读更多
11月8日 · 2015年

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

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

Tomcat重启脚本For Windows

7363 4
Tomcat重启脚本,送给有需要的JSP环境运维同行们~运行环境:XP/windows 2003测试通过,其他环境由于手头上条件限制未测试;脚本功能:在常规调用tomcat自带的关闭/重启脚本中加入假死判断,若出现假死则予以强行Kill掉相关JAVA进程;脚本特点:可在tomcat/Jboss/apache混合平台使用,针对性的只重启tomcat相关进程;注意事项:...
5月7日 · 2017年

分享一个自写的Python远程命令和文件(夹)传输类

8372 37
最近在跟一个自动化发布平台的建设事项,其中Linux系统的远程控制通道则由我独立开发完成,其中涉及到了Linux系统远程命令和文件传输操作。因为之前写Linux系统密码管理系统的时候,用的是Paramiko的SSHClient。所以,我这次依然采用Paramiko来做实现,代码虽短,说起其中的坑,我也是一把辛酸一把泪的填上了。先上完整代码:# -*- coding: utf-8...
8月5日 · 2014年

VPS服务器备份网站到七牛云存储的shell脚本(第二版)

4425 14
上一篇文章发布了备份网站到七牛的第一版,这次应回复要求先公布同步原理及shell源码,让喜欢折腾的人有力可使。其实,这个备份工具的原理非常简单,就是借用了官方的同步工具,配合简单的shell语句即可完成。一、备份原理简介qrsync 是一个根据七牛云存储API实现的简易命令行辅助上传同步工具,支持断点续上传,增量同步,它可将用户本地的某目录的文件同步到七牛云存储中,同步或上传几百GB甚...
11月3日 · 2014年

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

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

巧用echo命令解决Samba批量添加用户难题

6071 19
最近实在太忙,没时间研究和折腾,所以也没有什么可以分享到博客的。果然,个人博客坚持原创太不不容易了。张戈博客上线2年多,从1天多更,到一天1更、一周一更,直到现在2星期可能有一更的节奏。。。好了,废话不说了。翻了翻在工作上的印象笔记,发现还是有一些存货可以分享的。挺久之前,组内新申请了一批开发测试机,需要部署环境。除了一些常见的软件要安装之外,还有一个我之前很少用到的Samba。...
12月20日 · 2013年

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

1130 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. ...
12月23日 · 2013年

Shell下制作自解压安装包,实现脚本的简单加密

5592 1
申明:以下内容大部分搜集于网络,由个人整理成更容易理解的简明教程!一、原理阐述在linux下可以用几个最基本的命令制作一个自解压的程序。其原理是:利用cat 命令可以将两个文件连起来(用>>追加也能达到同样效果),前一个文件是shell脚本,负责执行解压和安装;后一个文件是一个压缩包。把这两个文件通过cat连接成一个新的可执行文件,前面是解压程序,后面是压缩包,当你执行...
6月26日 · 2014年

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

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

VPS服务器备份网站文件和数据库到七牛云存储的shell脚本工具

4805 33
一直想写一篇关于网站本地备份和远程备份的文章,相关草稿其实在6.12号就写好了,一直因为没有测试环境,没发布出来。时间久了,也就忘了,回头找个时间测试下再发布好了。今天分享的工具也和备份有关,而且是远程备份,这个工具算是我的无聊之作吧,虽说WordPress已经有wp2pcs这类备份插件了。相信折腾VPS的站长会喜欢我这个工具的,因为它不会常驻占用资源。一、工具档案工具名称:Bac...
操作系统阅读更多
3月10日 · 2014年

Windows 7下获取System权限

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

详解Linux运维工程师必备技能

3466 1
本人是Linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧。说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。我就大概列出这几方面,这样入门就基本没问题了。Linux系统如果是学习可以选用Redhat或CentOS,特别是CentOS在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄...
1月17日 · 2014年

Linux基础知识之xargs命令

4834 18
昨天在给服务器做年终“大扫除”整理时,发现有个目录下因为文件过多而删除失败,最终使用xargs才搞定,于是顺便来记录下。在执行某些命令时,当Linux某个目录下文件过多就会因为“参数列表过长”而报错无法执行。比如,我要清空/var/spool/clientmqueue/下的庞大数量的临时文件,如果直接执行 rm  -f  *,有时就会会出现“参数列表过长”的错误提示,因为linux下一般的...
1月14日 · 2014年

Linux系统chmod误操作目录权限恢复方法

1254 8
部门刚上线了一个新系统,发现一个BUG,于是开发直接上机器调试,他认为是文件目录权限不够的问题,于是想用chmod -R 777 先给这个程序目录全部权限试试。结果,那家伙手一抖命令敲成了:chmod 777 -R /*而且想都不想就回车了,然后弹出一堆 /proc/*** 没权限更改目录权限的错误提示,我一看就冷了一大截。。。里面让他ctrl +C 终止命令。不出所想,系...
1月14日 · 2015年

Linux系统监控、诊断工具之top命令详解

1226 6
暂时没有写作灵感,就整理一些Linux基础知识好了,方便自己查阅,同时也是温故而知新嘛~!在张戈博客,同样很有用的知识性博文还有以下几篇,也许你也会比较感兴趣:详解Linux系统的CPU负载均值教你如何查看Linux的CPU负载Linux服务器的进程查看命令详解Llinux文件目录权限及chmod命令简析Linux系统内存监控、性能诊断工具vmstat命...
9月3日 · 2016年

Linux系统LVM逻辑卷创建过程以及自动化脚本

7135 27
最近在上海新建机房的时候,给了我2台M2机型服务器,在做初始化的时候发现有一堆磁盘:[root@Centos64:~]# fdisk -l | grep \'300.1 GB\' | sortDisk /dev/sda: 300.1 GB, 300069052416 bytesDisk /dev/sdb: 300.1 GB, 300069052416 bytesDisk /dev/sdc: 3...
6月16日 · 2014年

解决SecureCRT的vim中为下划线而无高亮问题,附最佳护眼配色方案。

11586 23
今天第一天上班,发现新公司也是用的最熟悉的SecureCRT终端。领到自己的办公电脑后,第一件事就是下载并安装了SecureCRT 7.1。并设置了以前最喜欢的配色(下文会有介绍)。公司的web软件用的是rensin,以前还真没怎么接触过,仔细拜读了前辈写的超级精简的一套部署教程,发现完全可以写一个懒人脚本一键搞定,于是动手写脚本,顺便进一步熟悉下resin。写了一半发现以前熟悉的...
1月14日 · 2014年

Linux基础知识之文件隐藏属性

5715 0
这几天温习下Linux基础知识,基础里面较为薄弱的知识点我会在这里记录一下,以便回头查看Linux下的文件除了权限属性,还有一些隐藏属性,必须使用lsattr来显示,如下所示:[root@localhost ~]# lsattr test ------------- test结果中第一列是13个短横杆,其中每一个横杆都是一个属性,如果当前位置上设置了该属性就会显示相...
11月18日 · 2014年

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

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

Redhat设置NFS挂载的简单步骤

7553 0
初识nfs还是在测试lvs负载均衡的时候,为了保证代码的一致性,将一台Realserver作为nfs服务器,而其他Realserver均以nfs将代码挂载过来。这样就保证了代码的一致性,但也是由很大隐患的,一旦那台Realserver宕机,那就全军覆没了...好了,废话不多说,进入nfs挂载简单步骤。一、安装nfs一般redhat是默认安装了nfs服务的,如果非默认安装且取消勾选nfs的话...
WEB应用阅读更多
3月3日 · 2015年

Apache/Nginx伪静态规则匹配http://出现的问题与解决

1371 8
这个问题不知道有没有人遇到过,反正度娘和谷姐都没能帮到我!困扰了我挺长时间了,今天偶尔将代码放到Apache服务器下测试时,意外解决了!问题是这样的,我搭建了一个网站icon图标抓取的API接口,正常情况下对象的传参是通过$_GET[\'url\']获取的,因此常规获取图标的地址应该是:http://domain.com/?url=zhang.ge或http://domai...
12月24日 · 2014年

Nginx在线服务状态下平滑升级或新增模块的详细操作记录

16633 13
今天,产品那边发来需求,说有个APP的IOS版本下载包需要新增https协议,在景安购买了免费的SSL证书。当我往nginx上新增ssl时,发现服务器上的nginx居然没编译SSL模块!看了下旧版本nginx的configure选项:linux-gz215:# /usr/local/sbin/nginx -Vnginx version: nginx/1.0.11built by...
7月7日 · 2019年

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

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

Nginx内容替换模块http_substitutions_filter_module及实用案例分享

2731 28
说到Nginx的内容替换功能,大部分人应该都听说过Nginx内置的的subs_filter替换模块,但是这个模块有个缺憾,就是只能替换一次,而且还不支持正则表达式,这就有些鸡肋了。不过,我们可以集成一个第三方的替换模块:ngx_http_substitutions_filter_module,来实现我们的各种需求。经过测试,这个模块至少有如下实用功能:①、支持多次替换②...
8月13日 · 2016年

修改Apache的超时设置,解决长连接请求超时问题

5122 47
某日,组内后台开发找到我,问我们的WEB服务器超时设置是多少。他反馈的问题是,有一个VLAN切换任务cgi接口经常返回504网关超时错误,要我分析解决下。我问了一下,得知这个请求遇到网络设备对象较多的时候,需要小半个小时才能完成,也就是要用到长连接才行。老规矩,从开发那拿到接口地址,得到接入层服务器IP,是一台Haproxy代理,看了一下Haproxy的超时设置:# 设置成功连...
11月11日 · 2016年

解决Nginx配置http2不生效,谷歌浏览器仍然采用http1.1协议问题

3110 30
昨天一个网友通过QQ联系我,说按照我博客之前分享的http2配置教程不能生效,想请我帮忙看看。经过测试,使用谷歌浏览器访问他的测试站点,确实没有开启http2,但他的配置和编译参数都正确的,这有点奇怪了。不过昨天太忙就没有继续帮他分析,他只好将服务器账号和密码都留言给了我。今天中午我抽空在他服务器重新编译测试了一把,才发现原来是这么一个梗!他在编译Nginx之前,使用的是yum...
11月7日 · 2021年

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

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

php平滑重启nginx,彻底清除WordPress的静态缓存

6965 9
每一次分享技术文章,都是基于自己的痛点,基于自己的需求。这次也一样,所以分享具体方法之前,我先说一下我这次的需求与痛点:一、需求痛点在博客集成了代码版缓存功能之后,为了方便在前台清理页面缓存,我特意写了ajax清理缓存的功能(相关文章)。这个功能写好之后确实可以正常工作。但是,为了让网站加载速度提升到极致,我还在nginx里面加了类似于WP Super Cache的mod_rewr...
5月10日 · 2015年

为WordPress开启Nginx缩略图功能,七牛从此陌路

5283 31
张戈博客曾分享过不少关于七牛云存储的一些经验技巧,对七牛感兴趣或者遇到相关问题的朋友可以看一看以前的相关文章: 七牛&又拍云CDN云存储节省GET次数的小技巧 WordPress简单代码开启七牛CDN及集成七牛缩略图的方法 浅谈网站使用七牛云存储之后的robots.txt该如何设置? Linux/vps本地七天循环备份和七牛远程备份脚本前段时间,百度云加...
5月2日 · 2019年

分享一个Nginx反向代理的另类应用案例

6924 37
博客前面分享了一篇《分享一个Nginx正向代理的另类应用案例》,时隔不久,身为救火队员、万金油的博主又再一次接到了一个另「W」类「T」需「F」求:场景和上次有些类似,也是部门引进的第三方应用,部署在各个网络区域,从OA办公区域无法直接访问。目前,运营人员都需要登陆Windows跳板机,才能打开这些应用的WEB控制台。既不方便,而且还有一定Windows服务器的维护工作量,于是找到我们团队...
3月18日 · 2022年

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

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

libmemcached编译安装报错解决记录

4385 27
我负责的几个公司内部网站,仅集成了php原生memcache组件,不支持memcached分片存储的自动容灾方案,近期出现过几例因memcache服务器故障引起WEB爆卡的尴尬事,所以接到了一个给现网php集成memcached模块的需求。内部的个别系统有多老、多难用我就不吐槽了,slackware、suse用过的人都知道。。。不说了,总之老老实实的编译安装吧。memcached这...