东拉西扯

张戈博客正式启用全新个性域名: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开发过程中遇到的问题记录

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

另类SEO分享:利用JS封装iframe躲过搜索引擎的抓取

1238 60
前言:很多博友不仔细看完内容就直接认为用iframe不好之类的云云,而实际上本文就是教你在必须使用iframe的时候,该如何躲过搜索引擎的抓取,避免不利于SEO的情况!那么,何为“必须要用iframe的时候”?我举个简单的例子:一些主题分享网站,很多时候会使用iframe框架调用主题作者的网站来做主题演示,这时候就会产生大量的iframe框架,那么本文的方法就可以派上用场了!导读:...
11月18日 · 2014年

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

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

Windows下获取网络连线实际名称,加强IP类设置脚本的兼容性

3091 1
在之前的工作中,由于分区域管理,TCP设置有差异,所以编写过很多关于IP切换的脚本,作为大批量电脑维护的脚本,最重要的就是兼容性,可不能就测试的那几台电脑通过了,然后发布给同事使用的时候,出现各种状况!其中比较难解决的问题就是获取网络连线的实际名称,大部分人使用的IP设置脚本都是将【本地连接】写死在代码中,可实际上并不是所有电脑都叫本地连接;比如有的用户电脑可能升级了网卡驱动,或者更换了网...
脚本编程阅读更多
1月2日 · 2017年

利用腾讯云COS云对象存储定时远程备份网站

7729 81
导读:2个月前,张戈博客分享了一篇Python+Shell定时备份网站到阿里云OSS的教程,已经有非常多的站长朋友用上了,反馈还不错,也有不少朋友提出了很多优化建议,比如上传完成后能否删除本地压缩包之类的,本文将继续分享另一种云端备份方案。一、优点分析内网传输:和阿里云OSS一样,腾讯云COS同样支持内网和外网文件传输,对于腾讯云服务器,使用内网传输绝对是最快、最稳定的备...
12月23日 · 2013年

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

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

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

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

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

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

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

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

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

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

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

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

桌面白屏(Active故障)修复批处理

4289 1
一年前我在做用户系统维护服务工作时发现AD域环境下,AD用户桌面经常会出现壁纸无法显示,ActiveDesktop桌面损坏之类的故障,当时从前人心得里学到的方法就是登入管理员,然后删除用户配置目录(%userprofile%),然后重新登入之后用户桌面就能正常了如此确实能修复这白屏故障桌面,但是用户的所有事设置均被重置,加大了维护工作量,这不是做维护愿意看到的,于是左查右查,我终于找到了症...
12月17日 · 2013年

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

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

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

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

Llinux文件目录权限及chmod命令简析

874 10
这些天,在互推联盟群(344134224 )遇到几例关于WP升级失败以及FTP账号登陆的问题。最终发现都是主机的目录权限设置存在问题。比如,博友【PPT分享网】提出,能否让2个账号都能访问同一个FTP目录,其实只要使用chmod对目录赋相应的权限即可。本文整理了关于Linux目录权限的一些基础知识,希望可以帮助一些刚接触Linux的朋友,比如使用VPS的博友等。 ...
3月27日 · 2015年

linux/scp命令报“bash: scp: command not found lost connection”错误的解决办法

1299 3
这两天接到的任务是给JAVA开发项目组部署【JAVA+MySQL主从+Redis主从】运行环境。部署过程中大问题倒没有,小问题却不少,因此也涨了不少经验值。后续有时间我会一一整理记录下来,沉淀而不忘分享。今天,装完一台redis,并配置好redis.conf后,想偷懒直接用scp传到另一台redis,省去全部重新编辑的麻烦。结果一执行就出现下面这个错误:bash: scp: c...
8月6日 · 2016年

Linux系统 df 命令显示异常、分区丢失问题解决

11953 21
本文记录2种因 /etc/mtab 文件异常导致 df 命令显示异常、分区丢失问题的解决过程,以备后用。一、根目录丢失前些日子,同事在RTX群里问大家,有台服务器执行 df -h 看不到根目录,该如何解决?[[email protected]:~]# df -hFilesystem Size Used Avail Use% Mounted onudev...
8月7日 · 2014年

Linux系统yum命令安装软件时保留(下载)rpm包

8804 4
昨天在部署zabbix监控的时候,遇到一个问题:监控服务器处于无外网状态,在线安装不可用。而某些依赖包度娘或谷姐搜索起来也挺呛人的!于是想到一个办法,利用有外网的服务器的yum命令来安装这些软件,并自动保留安装包即可。于是就有了以下的转载教程:一、让yum命令下载RPM包,而不安装。yum是一个优秀的软件获取与系统更新的工具,主要应用于redhat系列的发行版本上。但是这样一个优秀...
3月22日 · 2014年

Linux:mv 命令的10个实用例子

5698 18
当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。本文中总结了十个Linux mv 命令的实例,希望能给大家带来一些帮助。熟悉了复制命令,下一个相关的命令就是 mv 命令。当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。初识 mv 命令mv 命令是一个与cp类似的命令,但是它并非创建文件或目录...
3月2日 · 2014年

给已安装的Linux新增Swap交换分区

906 28
跟了我5年多的本本已步入花甲,CPU严重老化,运行Windows异常吃力,于是考虑换成Linux试试。忙活了一天,测试了2个“家用”Linux发行版,一个是深度的Linux Deepin 2013,另一个是雨林木风的StartOS 5.1。在测试过程中也遇到一些有用的经验,现在就一一记录一下。这是在安装完StartOS后进行的记录,因为是安装在以前的C盘,就没继续分区来新增挂载点,直接挂了...
3月18日 · 2015年

解决mstsc无法连接问题:由于没有远程桌面授权服务器可以提供许可证…

2811 3
最近一直很忙很忙,完全没时间打理博客,回家后基本上就是洗洗睡的节奏,我之前真的从未想过,我会有回到家不想碰电脑的情况。。。不但不想碰电脑,而且失眠症也消失无遗,因为实在是太疲劳了,总算是有了些好处。这几天实际上也有一些可以记录的工作经验,无奈一直没有头绪也没时间,刚好趁着今天午休间隔,先整理出一小部分好了,不然博客就真废了。。。一、故障案例①今天上午在给测试组的IIS新增https...
5月15日 · 2014年

10个超有趣的Linux命令

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

Linux系统编译安装Redis以及主从复制配置小记

770 6
Redis的安装配置很简单,而且很早之前就装过Redis,可这几天再次安装时居然又遗忘了一些细节,看来好记性不如烂笔头,还是在博客记录一下比较好,至少不用总是抱度娘大腿了。今天编译安装了几次,发现居然没在prefix指定目录生成文件??看了半天结果发现PREFIX我用了小写字母。。。看来还是得记录一次正确的操作步骤,免得再次出现这种窘迫。一、选择版本前往官方网站:h...
10月15日 · 2014年

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

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

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

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

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

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

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

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

借助PageSpeed,为Nginx网站服务器提速

4082 8
网站加载速度越快,访客互动性、留住率和转换率就越高,这早已不是什么秘密。网站每延迟100毫秒,亚马逊的销售额就会减少1%;延迟增加500毫秒,这意味着谷歌的流量和收入就会减少20%。要是有一个办法可以为你的网站服务器提速,又不必升级到功能更强大的服务器,就没有理由不试一试这个办法。我在本教程中将介绍如何优化Nginx网站服务器,以提升其性能。虽然Nginx网站服务器本身已俨然成为运行速度最...
4月24日 · 2016年

Nginx网站使用CDN之后禁止用户真实IP访问的方法

12402 54
做过面向公网WEB运维的苦逼们肯定见识过各种恶意扫描、拉取、注入等图谋不轨行为吧?对于直接对外的WEB服务器,我们可以直接通过 iptables 、 Nginx 的deny指令或者是程序来ban掉这些恶意请求。而对于套了一层 CDN 或代理的网站,这些方法可能就失效了。尤其是个人网站,可能就一台VPS,然后套一个免费的CDN就行走在互联网了。并不是每个CDN都能精准的拦截各种恶意请求的,更...
9月25日 · 2014年

服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

2478 67
我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(YisouSpider)(最新补充:宜搜蜘蛛已被UC神马搜索收购!所以本文已去掉宜搜蜘蛛的禁封!==>相关文章)。最近张戈发现nginx日志中出现了好多宜搜等垃圾的抓取记录,于是整理收集了网络上各种禁止垃圾蜘蛛...
2月27日 · 2014年

解决Tomcat数据连接池无法释放

9128 12
近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会再次出现无法登录的情况。今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。简单分析了一...
9月10日 · 2015年

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

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

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

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

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

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

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

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

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

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