东拉西扯

张戈博客正式启用全新个性域名: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:支持私有化部署和源阅读无缝对接的语音合成服务

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

中国博客联盟成员站点自动检查机制正式上线

2855 15
之前,已经发过相关文章:Shell+Curl网站健康状态检查脚本,抓出失联站点,现在已经把网站正式搬到了vps服务器,我也可以放开手脚折腾各种功能了。把上次的脚本完善了一下,由于curl存在一定的误杀缺憾,目前还无法采用全自动直接操作数据库屏蔽异常网站的机制。折中考虑了以下,给脚本新增了sendmail发邮件功能,可将异常站点发送到我的邮箱,然后通过我手动点击这些网站去检查对方是否能够正常...
4月25日 · 2014年

分享博客统计中的动态运行天数代码

1242 26
快到博主恋爱纪念日了,本来是打算做一个恋爱时间统计功能来小小的罗曼蒂克一下,类似于 已相恋 **年 **天 **小时 **分 **秒,当我找到让时间差转成年月日时分秒的方法后,感觉用来做博客统计也是不错的!就来分享下,喜欢的博友可以往下看看:一、先来个php版本的:<?php/** * 秒转时间,格式 年 月 日 时 分 秒 * * @author wangyupeng129...
11月7日 · 2021年

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

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

Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

12044 51
导读:毋庸置疑,数据备份是网站可持续性运营中至关重要的一个工作,如果还没有做任何备份机制的网站,建议尽早完善,莫要等到追悔莫及。本文将分享一个安全稳定、快速可靠、花费廉价的备份方案。一、优点分析张戈博客在2年前已经分享过一篇关于网站备份的文章:《Linux/vps本地七天循环备份和七牛远程备份脚本》,今天将再次结合这个脚本,将网站数据通过阿里云内网备份到阿里云OSS。对于阿里云...
5月16日 · 2014年

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

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

SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

16325 74
最近在折腾博客主题,通常来说大多数人认为换主题会影响SEO,实际上只要你把工作都做到位了,是没有任何问题的。比如,换主题后你得仔细检查标题和描述等内容是否发生改变、换主题后是否带来了大量的404页面等。当然,更细微的可能是换主题之后,网站的内链网络也发生了微妙的改变,但是整体的影响较小。总之,张戈博客这次更换主题基本上没有看到明显的SEO影响,反而出现几个新的关键词。好了,题外话到...
12月27日 · 2013年

Tomcat重启脚本For Windows

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

grep无法查找shell传过来的变量?先注意一下文本格式吧!

12698 6
昨天,同事告诉我发现一个诡异的问题,grep无法搜索shell中的变量,着实很惊讶。到他所说的服务器上试了下,还真是不行!大概就是这样一个要求:①、有个文本为userid.txt,里面每一行一个用户id,类似如下:00010003000500070009②、另外还有一个文本为record.txt,里面是所有用户的操作记录,一行一条,并且包含有id,类似如下:...
7月31日 · 2014年

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

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

SendCloud邮件队列状态和已使用额度的Python监控脚本

4179 2
公司最近用上了 SendCloud 的邮件代发服务,于是就有了各种监控需求。比如每天发信额度是不是要超标了或是邮件是否堵塞了等等。最近经常接触 python,所以这次也一样,继续学习使用 python 来完成各种脚本需求。SendCloud 提供了很多对外查询的 API,只要 Get 或 Post 传递用户名和 KEY 即可获得想要的各种数据,比如最简单的【已使用额度】就可以在用户...
6月25日 · 2016年

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

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

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

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

Ghost安装Win7/XP后自动恢复IP的批处理

4827 41
今天维护人员找的我说,最近要推Win7了,暂时桌面云没推广,还是使用手动安装Win7的方式。所以,需要我帮忙写一个脚本,大概功能就是在Ghost Win7之前先导出XP的IP信息,在Ghost完成之后,自动读取这个IP信息用于恢复IP设置。之前其实写过一个XP的,这次是Win7的,其实大同小异了,花了近半小时测试成功了,现在来记录一下。懒得去折腾兼容方法,就写了2个导出IP的脚本和...
操作系统阅读更多
4月5日 · 2016年

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

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

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

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

利用Centos或RedHat的iso镜像搭建本地yum仓库

1429 16
这两天工作是用几台PC机给开发组搭建本地测试环境:CentOS-6.4-x86_64 + ant + svn。为了操作简单及系统稳定,全部系统采用最小化安装方法。又出于拓展考虑,决定给每台测试机建立一个本地yum仓库,方便安装缺失组件,而不再受到依赖性的困扰。下面分享一下利用iso镜像搭建本地yum仓库的简单步骤:一、准备工作下载或拷贝CentOS或RedHat的iso镜像...
11月18日 · 2014年

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

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

详解Linux系统的CPU负载均值

5513 17
上一篇文章的最后,作者提到了文章的参考来源,我特意前往访问了下,发现写得非常不错,特转过来,可以结合阅读,以便更容易理解CPU负载这个概念。你可能对于 Linux 的负载均值(load averages)已有了充分的了解。负载均值在 uptime 或者 top 命令中可以看到,它们可能会显示成这个样子:load average: 0.09, 0.05, 0.01很多人会这样理解负载...
3月2日 · 2014年

启用某些Linux发行版的root帐号

1487 12
跟了我5年多的本本已步入花甲,CPU严重老化,运行Windows异常吃力,于是考虑换成Linux试试。忙活了一天,测试了2个“家用”Linux发行版,一个是深度的Linux Deepin 2013,另一个是雨林木风的StartOS 5.1。在测试过程中也遇到一些有用的经验,现在就一一记录一下。这些发行版和ubuntu一样,root帐号都是停用的,在我安装完后,发现进行一些操作时,提示权限不...
4月29日 · 2014年

教你如何查看Linux的CPU负载

1822 6
记得博主以前被问到CPU负载如何才算高的时候,出过一次糗,具体就不记录了。。。在网上找了一篇比较详细的Linux下的CPU负载算法教程,科普一下。不感兴趣,或看不懂的朋友无视即可,不必浪费时间哈。昨天查看Nagios警报信息,发现其中一台服务器CPU负载过重,机器为CentOS系统。信息如下:2011-2-15 (星期二) 17:50   WARNING - load av...
1月17日 · 2014年

Linux基础知识之xargs命令

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

Linux:sed命令详解

4175 34
1. 简介sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和...
1月23日 · 2014年

Redhat设置NFS挂载的简单步骤

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

Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法

18635 12
最近一直在帮一个购买了张戈博客付费服务的朋友做网站防护,为了简单抵挡一下竞争对手的DDoS攻击,他给网站开启了Incapsula的免费CDN服务。开启CDN之后,我之前给他写的Shell防护脚本也就宣告无效了,因为不管是正常访问还是攻击访问,脚本拿到的IP都是CDN节点的,而我不可能把CDN的节点IP也给禁用了,那就都不能访问了。为了解决这个窘迫,我想到了以前看过的Nginx访问限...
4月29日 · 2015年

Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块

1976 10
昨天在公司微信群,CTO分享了这个消息,对运维来说以后基于TCP协议的后端业务的高可用又多了一个新的选择,实在是棒极了!一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy。这算是一个nginx比较明显的缺憾。不过,在1.90发布后这个认知将得到改写:2015-04-28ngin...
5月20日 · 2015年

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

20271 53
上一篇文章分享了如何开启 Nginx 的缩略图功能,也提到了 Nginx 缩略图在完美替代七牛缩略图或PHP缩略图的同时,还会带来一定的CPU负载消耗。因此,本文就来分享一下如何解决这个实时生成缩略图带来的CPU开销问题。思路很简单,既然你要实时生成,那我就将你生成的缩略图缓存一份好了!在我测试期间发现,Nginx 的缓存也同样可以缓存伪静态的 html 页面,完全可以替代WP-S...
1月28日 · 2015年

zabbix监控在lnmp环境下编译安装小记

4314 9
最近在复习运维常见的监控告警软件的时候,想起了zabbix,于是先用军哥的lnmp一键安装包快速搭建了lnmp环境,然后成功编译安装了zabbix,特地将安装过程和遇到的问题记录在此,以便自己或有需要的人来参考翻阅。由于已有php运行环境,所以只需要编译安装zabbix即可。一、安装依赖组件yum -y install net-snmp net-snmp-devel perl-DB...
3月13日 · 2014年

HTTP加速器varnish安装小记(1)

4028 32
上午共享的那个varnish安装手册,个人看了下,有点不知所云,好吧~看来还是先安装玩玩!苦逼公司服务器没法连外网,不能用什么wget或yum命令直接下载安装,每每看到别人博客贴出的在线安装代码时,总有一股羡慕嫉妒“恨”冒了出来。。。好吧,既然没法上外网,那只能麻烦点通过下载源码来编译安装了!Varnish 3.0.4下载地址: http://repo.varnish-cache....
1月20日 · 2019年

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

3259 13
最近接到了一个需求:通过Nginx代理把现网一个自研代理程序给替换掉,感觉有点意思,也有所收益,简单分享下。需求背景部门的生产环境异常复杂,有部分第三方引入的系统位于特殊网络隔离区域,请求这些系统需要通过2层网络代理,如图所示:中心源系统请求目标系统API的形式各异,我简单收集了下,至少有如下3种:curl --digest -u admin:xxxxxx...
3月3日 · 2015年

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

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

ipvsadm启动报错解决办法,另附ipvsadm详细参数

6296 10
记录ipvsadm 启动报错的解决办法,并附上详细的ipvsadm参数说明报错信息:[root@localhost ~]# service ipvsadm start Clearing the current IPVS table: [确定] Applying IPVS configuration: /etc/init.d/ipvsadm: line 62: /etc/sysconfig/ipvsadm: 没有那个文件或目录...
5月30日 · 2015年

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

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

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

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

实测Nginx服务器开启pagespeed加速效果

11782 21
上周有一个站长问到我一个问题,问fastcgi_cache和pagespeed加速有没有冲突。略微想了下,2个都是比较原生的主,应该不存在兼容问题。至于这个朋友问到这2个机制处理的先后问题,我思考了下。既然fastcgi_cache已经是缓存到本地的文件,那么pagespeed肯定是后处理的。通俗来说,就是当用户访问WEB时,Nginx 应该是先调用 fastcgi缓存,然后再进行page...
2月18日 · 2014年

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

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