东拉西扯

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Linux系统最大文件打开数优化,解决Too many open files报错

1499 3
这是一个Linux系统常见的故障,网络上也能轻易的找到解决办法,我也只是在工作中遇到了这个问题,所以在博客记录下,以备不时之需。一、报错截图:图为resin的报错日志,很明显提示了Too many open files:  二、临时解决临时的解决办法很简单,先执行ulimit -n 65535,然后重启resin即可。Ps:请注意启动环境是否生效:...
9月4日 · 2015年

WordPress集成多种站内搜索、百度嵌入式搜索,并伪静态化的方法

2013 37
分享前,先吐槽一下:最近阿里云爆出了云盾误删除ECS文件,最后只能用回滚来解决的坑爹玩意儿。刚听到这个消息后,连忙看了下自己的ECS,没发现有明显的异常。这2天慢慢的发现近期修改的一些代码都被还原了,比如明明去掉了评论审核后的通知功能,今天一个朋友QQ告诉我收到的邮件中的文章地址不对,我看了网友的截图,就知道是评论的审核通知邮件。看了下代码,果然之前的注释都去掉了。又比如,我明明屏蔽了某插...
脚本编程阅读更多
6月16日 · 2017年

Python远程控制模块paramiko遇到的问题及解决记录

5851 17
最近一直在开发自动化运维发布平台,底层命令行、文件通道主要基于paramiko模块,使用过程中遇到各种各样的问题,本文主要用于收集问题及解决记录,以备后续使用。一、Error reading SSH protocol banner连接错误这个关键词,在百度、谷歌一搜一大把的提问,也有少部分给出了解决方案,但是最终都无法解决,我经过不断尝试和解读paramiko源码,终于搞定了这个问题,在此...
11月8日 · 2015年

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

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

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

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

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

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

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

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

Shell脚本的简单排错法及调试程序bashdb

9440 32
Jboss的研究稍有卡壳,那就来点基础教程好了。与众多脚本语言一样,Shell脚本在执行时出错是很常见的,最简单的原因无外乎脚本在编写的过程中出现了语法错误或者不小心输错了命令等。找出脚本中的错误是很重要的能力。比如,我经常不小心会把echo命令写成了ehco,那么执行就会出现下面这种情况:[root@localhost ~]# sh testtest: line 2: ehco:...
12月27日 · 2013年

Tomcat重启脚本For Windows

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

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

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

[不定期更新]简单的shell脚本练习实例

1596 24
此文将整理一些简单实用、有趣易学的shell练习脚本,希望可以帮到一些想学习shell的初学者。张戈也会在闲暇时间不定期更新此文,对已有实例进行改进和注释,增强可读性和易懂性。当然我也会不定期的添加更多简单、有趣且实用的shell练习脚本,帮助一些有需要的入门学习者。一、编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息。原文代码为:#!/bin/bas...
12月17日 · 2013年

身份切换脚本,免登入切换权限的利器

1385 1
分享一个我曾经写过的功能代码:工具身份切换脚本,主要用于脚本执行期间其他身份(如administrator等)的切换,从而获取到所需权限。使用说明:1.将下面的代码保存为bat脚本,如switch.bat,其中的【你要加权执行的外部程序或脚本】需要根据实际情况修改成你将要执行的文件路径2.在你切换前启动的脚本中加入 call "%~dp0switch.bat" (%~dp0表示...
操作系统阅读更多
12月18日 · 2013年

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

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

解决ping域名时出现“TTL传输中过期”的问题

11125 14
昨天下午,RTX群里面公司负责游戏运营的MM发来求助:我还真是孤陋寡闻,以前还真没见过这个问题,赶紧度了度,很快就帮MM解决了问题。 解决办法也很简单:方法①、 关闭所有浏览器,右键点击“网络邻居”,选择“属性”,在“本地连接”上点击右键,选择“修复”即可。方法②、在DOS窗口下(如果是XP,点击屏幕左下角的“开始”,“运行”,输入“cmd”回车)输入:ip...
3月8日 · 2014年

Linux:awk命令详解

9942 27
简单使用:awk :对于文件中一行行的独处来执行操作 。awk -F :\'{print $1,$4}\'   :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 。AWK命令介绍awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息 1. 调用awk...
4月4日 · 2014年

Linux优化方法收集与整理

1465 15
之前一直有博主要求整理下VPS主机优化方法,那么如果你是VPS主机(Linux),可以尝试一下了,尤其是linux系统的内核参数优化。一、增加SWAP分区VPS(Virtual Private Server 虚拟专用服务器)技术,将一部服务器分割成多个虚拟专享服务器的优质服务。每个VPS都可分配独立公网IP地址、独立操作系统、独立超大空间、独立内存、独立执行程序和独立系统配置等。下...
12月19日 · 2013年

分享一个Linux无法创建文件夹,但是目录权限却显示正常的问题和解决

7573 0
今天发现一个疑难杂症:发现批量发布一个新版本程序时,发现有一台没有成功。亲自登陆上去看了下,发现原来是发布帐号在某个目录下创建目录失败了!人工 touch 试了下,发现提示没有权限。然后 ls -l 看了下,发现一切正常:[root@10.12.212.132:/data/TNM2/release]# ll 36240-rw-r--r-- 1 publish user...
6月16日 · 2014年

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

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

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

7123 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...
2月10日 · 2014年

国内外流行的Linux发行版

653 12
近年来,Linux开始获得越来越多的关注,那你知道国内外流行的Linux版本都有哪些吗?本文中整理了五大Linux发行版,他们分别是RedHat、SUSE、Debian、ubuntu、Gentoo,一起来看看吧。Linux长时间以来都是极客圈子内的玩物,大众对其知之甚少,但谁都无法否认其重要性。近年来,Linux开始获得越来越多的关注,那你知道国内外流行的Linux版本都有哪些吗?一起来看看网...
6月12日 · 2014年

解决Centos下vsftp无法上传文件的问题,附vsftp配置详解

29944 22
重量网络最近买了一个腾讯云的VPS,一直在折腾着,偶然请我帮忙敲几行命令解决一些小问题。这不,今天他通过yum在线安装了一个vsftp后,发现不太会用,就按照网上的教程东搞西搞。最后发现无法上传文件了,就给我操作了一把。用SecureCRT远程登录后,我做了如下检查:①、打开了vsftp配置文件(/etc/vsftpd/vsftpd.conf)检查write_enable状...
12月12日 · 2015年

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

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

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

6203 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: 没有那个文件或目录...
9月22日 · 2014年

http加速器Varnish的vcl配置小记(lnmp环境)

1094 2
在以前的公司曾安装过Varnish,可惜还没摸热就离职了,这次接着倒腾了下Varnish,并搭建成功,特来记录下,以备后用。一、测试环境系统版本:CentOS 6.4 x64WEB环境:Nginx+PHP+MySQLVarnish:3.0工作原理:简单的说,在本次测试中,Varnish将来自80的请求转发到后端的nginx8080端口,当匹配到请求是jpg、css、...
8月13日 · 2016年

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

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

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

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

惊现Haproxy重复添加X-Forwarded-For问题(附官方解决办法)

4928 7
最近在配置Haproxy代理的时候发现一个很有意思的事情:Haproxy在代理http请求会无脑加一个X-Forwarded-For(后文简称XFF),而不是将自身的IP地址加到已存在的XFF列表之后,WTF!还有这种神操作?确认无误之后,我到Haproxy的github开了一个issue反馈了这个BUG(issue地址),最终了解到了Haproxy就是这样设计的,并得到了解决方案,而且这个is...
1月20日 · 2019年

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

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

PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法

5298 4
最近在折腾网站XSS漏洞修复的时候,当我把XSS漏洞和谐成功之后,360扫描送来了一个"彩蛋": 本以为又是360误报,结果点击看了下,还真能打开PHPinfo:PHP彩蛋我也是第一次听说,貌似老一辈的程序员们都知道,因为PHP是由黑客语言发展而来,所以各方面都透露着放荡不羁的极客精神!一、如何触发PHP彩蛋?我们只要在运行PHP的服务器上,在域名后面输入...
11月7日 · 2021年

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

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

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

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

解决网站404页面返回200状态码问题

7019 14
好久没打理博客,突然收到CDN流量预警,发现平均每天40G流量消耗!what?就现在这个访问量,不存在的。看了下CDN日志发现有小人一直在请求博客页面,其中被请求最多的就是CCkiller防御工具那个文章地址。呵呵,我就写一个简单的防御小工具,惹着你啦?实际上我用了CDN,也并没有安装这个工具,所以想试探、想测试效果的麻烦自己去安装使用,攻击我博客毫无意义,挂了又能怎么样?废话就扯...
4月29日 · 2015年

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

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

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

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