网站建设

百度站内搜索全新改版:WordPress生成通用行业模板数据的php脚本

网站建设

关于网站图标favicon.ico那点事儿,你造吗?

网站建设

申请域名邮箱,为空间减轻压力

WEB应用

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

网站建设

让WordPress RSS/Feed订阅数据延迟发布,附RSS技巧集锦

网站建设

响应式+扁平化FrontOpen2主题的圆角样式分享

网站建设

七牛&又拍云CDN云存储节省GET次数的小技巧

1月20日 · 2019年

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

11
最近接到了一个需求:通过 Nginx 代理把现网一个自研代理程序给替换掉,感觉有点意思,也有所收益,简单分享下。 需求背景 部门的生产环境异常复杂,有部分第三方引入的系统位于特殊网络隔离区域,请求这些系统需要通过 2 层网络代理,如图所示: 中心源系统请求目标系统 API 的形式各异,我简单收集了下,至少有如下 3 种: curl --digest -u admin:xxxxxx 'http://10.xxx.xxx.xxx:8080/foo/boo?Id=123456789&vId=1234' curl -d '{"eventId": 20171116, "timestamp": 123456, "caller": "XXP", "version": "1.0", "interface": {"interfaceName": "XXPVC", "para": {"detail": {"owner": "xxxxxxx"}}}, "password": "xxxxxx",…
11月29日 · 2018年

Linux运维基础技能: 接入层与网络基础

17
本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创、张戈博客整理分享,如有勘误请在博客留言。 希望对需要学习、面试 Linux 运维的同学有所帮助。 MSS 与 MTU 的区别,默认大小各是多少? 标准以太网接口缺省的 MTU(最大传输单元)为 1500 字节,是最大帧 1518 减去源宿的 MAC、FCS 后最大的 IP packet 大小; MTU 减去 20 字节 IP 包头减去 20 字节 TCP…
9月28日 · 2015年

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

252
张戈博客很久以前分享过一个CC 攻击的防御脚本,写得不怎么样,不过被 51CTO 意外转载了。博客从此走上了经常被人拿来练手的不归之路。 当然,还是有不少朋友在生产环境使用,并且会留言询问相关问题。根据这些问题的需求,我花了一些时间重新写了一个比较满意的轻量级 CC 攻击防御脚本,我给它取了一个比较形象的名字:CCKiller,译为 CC 终结者。 一、功能申明 分享之前我必须先申明一下,众所周知,DDoS 攻击指的是分布式拒绝服务。而 CC 攻击只是 DDoS 攻击的一种,本文所阐述的 CC 攻击,指的是单个 IP 达到我们设定好的阈值并发请求,而非海量 IP 的低并发攻击!对于个人低配服务器,除了使用 CDN 来防护,至少我是没有想到如何抵挡海量 IP 攻击的!因为每个 IP 都模拟正常的用户浏览器请求,并不会触发防御阈值,同时来 1000 个,甚至上万个,个人低配服务器的带宽在第一时间就会被占满,就无法继续提供服务了。 当然,用脚本也是无法防御 DDoS 大流量攻击的,因为所有机房的防御带宽是有限的,当攻击的流量超过了机房的防御带宽,要么机房把你的服务器 IP 拉黑洞,要么就一起死。因此,如果你的服务器正遭受大流量攻击,比如几十 G…
10月20日 · 2014年

WordPress免插件生成完整站点地图(sitemap.xml)的php代码

164
前言:站点地图(sitemap.xml)的作用,相信站长们都有所了解,我就不献宝了。而免插件生成 sitemap.xml,网络上也早就有了纯代码生成的方法。 一直以来,张戈博客都是用 DX-SEO 这个很好用的中文 SEO 插件生成的 sitemap。今天整理电脑文件时,看到了以前收藏的生成 sitemap.xml 的 php 脚本,就随手打开看了看,发现这个代码只能生成主页和文章页的 sitemap。果断百度了一下,发现网上分享的都大同小异,只有首页和文章页。感觉有点缺憾,反正今天也是闲着,就动手改造了一番,让这个代码更加完善,可以同时生成首页、文章、单页面、分类和标签的 sitemap! 一、PHP 代码 <?php require('./wp-blog-header.php'); header("Content-type: text/xml"); header('HTTP/1.1 200 OK'); $posts_to_show = 1000; echo '<?xml version="1.0" encoding="UTF-8"?>'; echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">' ?> <!--…
1月7日 · 2015年

WordPress发布文章自动同步到新浪微博(带特色图片)

257
WordPress 发博客后自动同步到新浪微博,这是我从无主题博客看到的方法,一直沿用至今。感觉对博客宣传和提升“逼格”都有显著的作用: 一、老版代码 先来看一下无主题博客分享的代码: function post_to_sina_weibo($post_ID) { if (wp_is_post_revision($post_ID)) return; //修订版本(更新)不发微博 $get_post_info = get_post($post_ID); $get_post_centent = get_post($post_ID)->post_content; $get_post_title = get_post($post_ID)->post_title; if ($get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish') { $appkey='3838258703'; $username='微博用户名'; $userpassword='微博密码'; $request = new WP_Http;…
9月10日 · 2016年

分享张戈博客自用的仿百度打赏功能

109
分享前,我必须承认文章打赏功能,在大部分网站只是一个鸡肋、花哨的功能,食之无味,弃之可惜。但是,大部分站长为了丰富网站的各个方面,也是乐此不疲的折腾了这个然并卵的功能。 好了,我先不管它有没有用,先分享出来,想必还是有不少站长乐于折腾的。 一、百度打赏 经常关注百度站长平台的朋友应该都知道百度推出过一个打赏的组件,目测主要是为了推广百度钱包,直到现在还处于内侧状态。张戈博客试着申请了下就通过了。 它的原理很简单,就是在百度站长那设定打赏二维码图片(或百度钱包账号),然后在网站插入一段 js 代码,js 会在页面生成一个赏的按钮,点击后就弹出带有二维码的打赏页面了。 张戈博客还是在使用 https 的时候就用过这个玩意,还利用七牛对百度打赏进行了 https 化。但是有 2 个弊端,驱使着我自己 DIY 一个: 1、使用百度打赏之后,打开博客网页经常会弹出一个连接超时的提示,甚是烦人; 2、百度打赏由于是实时调用百度在线资源,感觉点击后延迟很明显,给人迟钝的感觉。 二、DIY 版本 知道了它的原理,自己就可以 DIY 一个更丰富、灵活的打赏组件了! Ps:具体效果以及和原版打赏的对比,可点击本文底部的打赏按钮和本站【关于页面】的打赏按钮。 ①、js 代码 /*! * 仿百度打赏的博客打赏组件 * Date: 2016-09-10 11:00 * http://zhang.ge/5110.html…
脚本编程阅读更多
3月4日 · 2014年

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

40
今天维护人员找的我说,最近要推 Win7 了,暂时桌面云没推广,还是使用手动安装 Win7 的方式。所以,需要我帮忙写一个脚本,大概功能就是在 Ghost Win7 之前先导出 XP 的 IP 信息,在 Ghost 完成之后,自动读取这个 IP 信息用于恢复 IP 设置。 之前其实写过一个 XP 的,这次是 Win7 的,其实大同小异了,花了近半小时测试成功了,现在来记录一下。 懒得去折腾兼容方法,就写了 2 个导出 IP 的脚本和一个 IP 恢复脚本,用于 Ghost远程安装Win7 后自动恢复 IP 设置的。(繁体环境) 1、导出 WinXP…
12月17日 · 2013年

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

1
分享一个我曾经写过的功能代码:工具身份切换脚本,主要用于脚本执行期间其他身份(如 administrator 等)的切换,从而获取到所需权限。 使用说明: 1.将下面的代码保存为 bat 脚本,如 switch.bat,其中的【你要加权执行的外部程序或脚本】需要根据实际情况修改成你将要执行的文件路径 2.在你切换前启动的脚本中加入 call “%~dp0switch.bat” (%~dp0 表示同一目录) 3.你可以将【你要加权执行的外部程序或脚本】修改成一个变量,比如%0 或%1 ,%0 表示切换本身脚本的执行身份,而%1 则表示切换参数 1 的身份 Ps:%1 详解,若下面的代码你修改成【runas /user:administrator “%1” >nul】,则可以使用call “%~dp0switch.bat” other.bat 来切换 other.bat 的执行身份。 @echo off color 3f mode con…
11月3日 · 2014年

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

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

Linux下的mongodb服务脚本,以备不时之需

8
前些天,一位开发同事找到我,说他测试环境的 mongodb 经常挂掉,要我写一个监控或复活的脚本。我觉得很奇怪,测试环境又没啥负载,经常挂掉肯定有非常规原因。 跑过去看了一下日志,发现存在 stop 记录,我就纳闷了,没人操作他还会自己 stop。这明显不是挂掉了,于是到 history 中看了下同事的启动命令: /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/data/mongodb.log --logappend & 原来如此!因为他没有用 nohup 启动,所以只要他的终端离线或者关闭,mongodb 就会自动退出了!解决办法很简单,如下启动即可: nohup /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/data/mongodb.log --logappend >/dev/null 2>&1 & 这样敲命令也着实苦逼,所以从网上找了一个 mongodb 服务脚本就舒服多了: #!/bin/sh # #mongod - Startup script for…
6月16日 · 2017年

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

14
最近一直在开发自动化运维发布平台,底层命令行、文件通道主要基于 paramiko 模块,使用过程中遇到各种各样的问题,本文主要用于收集问题及解决记录,以备后续使用。 一、Error reading SSH protocol banner 连接错误 这个关键词,在百度、谷歌一搜一大把的提问,也有少部分给出了解决方案,但是最终都无法解决,我经过不断尝试和解读 paramiko 源码,终于搞定了这个问题,在此记录分享下。 1、具体报错信息: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "build/bdist.linux-x86_64/egg/paramiko/client.py", line 307, in connect File "build/bdist.linux-x86_64/egg/paramiko/transport.py", line 465, in start_client…
12月23日 · 2013年

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

1
申明:以下内容大部分搜集于网络,由个人整理成更容易理解的简明教程! 一、原理阐述 在 linux 下可以用几个最基本的命令制作一个自解压的程序。其原理是:利用 cat 命令可以将两个文件连起来(用>>追加也能达到同样效果),前一个文件是 shell 脚本,负责执行解压和安装;后一个文件是一个压缩包。 把这两个文件通过 cat 连接成一个新的可执行文件,前面是解压程序,后面是压缩包,当你执行这个自解压文件时,会先执行前面的 shell 脚本,利用 tail -n 取得后面的压缩包内容并往下执行解压和调用动作。这样就具有自动解压和安装的功能了。这里比较重要的命令是 tail -n 将后多少行(也就是压缩文件的内容)进行解压。 如此一来,也实现了内容的简单加密,使用 cat 合并两个文件之后,你再用 cat 去获取得到的内容会发现都是乱码,而且只要 shell 脚本行数和解压路径不知道,一时半会也很难找到源代码(当然,应该可以通过 history 来查看。) 二、程序执行逻辑 执行程序中的 shell 脚本代码 把程序后面的部分进行解压 执行源码安装和部署脚本 退出程序…
操作系统阅读更多
3月2日 · 2014年

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

12
跟了我 5 年多的本本已步入花甲,CPU 严重老化,运行 Windows 异常吃力,于是考虑换成 Linux 试试。忙活了一天,测试了 2 个“家用”Linux 发行版,一个是深度的 Linux Deepin 2013,另一个是雨林木风的 StartOS 5.1。在测试过程中也遇到一些有用的经验,现在就一一记录一下。 这些发行版和 ubuntu 一样,root 帐号都是停用的,在我安装完后,发现进行一些操作时,提示权限不足。其实我知道可以使用 sudo 来临时获取 root 权限,但是毕竟想一劳永逸,于是就尝试启用 root 帐号。 试了下,发现这些 linux 要启用 root 帐号其实很简单,如下操作即可: 1. 右键桌面,选择在终端中打开,然后如图执行: sudo passwd root…
7月24日 · 2014年

Linux下用dd命令测试硬盘的读写速度

17
这也是一个老方法了,只是今天用到了,就过来记录下。总觉得公司服务器磁盘不给力,有时候 vim 编辑的时候都会卡顿,IO 经常 90%+,很纳闷,就测试了一下磁盘的读写速度。 一、测试写速度: time dd if=/dev/zero of=/tmp/test bs=8k count=1000000 测试结果:565 MB/s 二、测试读速度: time dd if=/tmp/test of=/dev/null bs=8k 测试结果:4.7GB/s 三、测试读写速度: time dd if=/tmp/test of=/var/test bs=64k 测试结果:387MB/s 四、参数说明 ①、time 有计时作用,dd 用于复制,从 if 读出,写到 of; ②、if=/dev/zero…
4月5日 · 2016年

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

23
朋友弄了一个小项目,要我帮忙做下 Linux 系统运维,上线一段时间后,发现项目偶尔会挂掉导致服务不可用。开发朋友一时之间也没空去研究项目奔溃的根因,只好由我这个运维先写一个项目进程自拉起脚本,通过 Linux 任务计划每分钟检查一下进程是否存在来避免项目挂了没人管的情况。 自拉起脚本很简单,随便写几行就搞定了: #!/bin/bash processcount=$(pgrep my_app|wc -l) cd $(cd $(dirname $0) && pwd) if [[ 0 -eq $processcount ]] then echo "[ $(date) ] : my_app is down, start it!" | tee -ai…
1月23日 · 2014年

如何确保NFS服务安全

4
上一篇博文《Redhat 设置 NFS 挂载的简单步骤》,其中摘录了一段 nfs 中 fuser 的使用,索性将其全部发出,以供参考。 对于 NFS 的安全问题,我们是不能掉以轻心的。那么我们如何确保它的安全呢?这里我们首先我们需要分析一下它的不安全性。看看在那些方面体现了它的不安全。NFS 服务安全性分析:不安全性主要体现于以下 4 个方面: 1、新手对 NFS 的访问控制机制难于做到得心应手,控制目标的精确性难以实现 2、NFS 没有真正的用户验证机制,而只有对 RPC/Mount 请求的过程验证机制 3、较早的 NFS 可以使未授权用户获得有效的文件句柄 4、在 RPC 远程调用中,一个 SUID 的程序就具有超级用户权限. 加强 NFS 服务安全的方法: 1、合理的设定/etc/exports**享出去的目录,最好能使用 anonuid,anongid 以使 MOUNT…
1月13日 · 2014年

事实证明Linux永远是NO.1

2
嗨,我正在写一个简单的程序,我要让这个程序打印出一个整数。 #include <stdio.h>    int main() {        int linux = 701;        printf(“%d”, linux);        return 0;    }   够简单吧。真的吗? 我把它存成了 code.c 现在我编译并运行它: $ gcc code.c && ./a.out   糟糕!,编译失败,出现了下面的错误信息: code.c: In function ‘main’:    code.c:4:6: error: expected identifier or ‘(’ before numeric constant     int linux = 701;         ^   这是一个在线编译这段代码的链接:http://ideone.com/kQCmVL 困惑 !! 在谷歌上搜索这个错误——得到的信息是这种错误需要对代码进行预处理。 于是,我在编译时带上了-E 参数,它能让编译在预处理后停止: $ gcc -E code.c   预处理过的 main()函数代码显示如下: int main() {   …
3月24日 · 2014年

Linux:10个实用的网络和监控命令

13
本文列出了 10 个基础的每个 Linux 用户都应该知道的网络和监控命令。网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看 linux 服务器 ip 地址,管理服务器网络配置,通过 telnet 和 ethernet 建立与 linux 之间的网络链接,查看 linux 的服务器信息等。下面让我们看看在 Linux 下的网络和监控命令的使用。 1. hostname hostname 没有选项,显示主机名字 hostname –d…
WEB应用阅读更多
8月13日 · 2016年

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

web
47
某日,组内后台开发找到我,问我们的 WEB 服务器超时设置是多少。他反馈的问题是,有一个 VLAN 切换任务 cgi 接口经常返回 504 网关超时错误,要我分析解决下。 我问了一下,得知这个请求遇到网络设备对象较多的时候,需要小半个小时才能完成,也就是要用到长连接才行。 老规矩,从开发那拿到接口地址,得到接入层服务器 IP,是一台 Haproxy 代理,看了一下 Haproxy 的超时设置: # 设置成功连接到一台服务器的最长等待时间,默认单位是毫秒,新版本的 haproxy 使用 timeout connect 替代,该参数向后兼容 contimeout 3600 # 设置连接客户端发送数据时的成功连接最长等待时间,默认单位是毫秒,新版本 haproxy 使用 timeout client 替代。该参数向后兼容 clitimeout 3600 # 设置服务器端回应客户度数据发送的最长等待时间,默认单位是毫秒,新版本…
5月30日 · 2015年

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

115
张戈博客不久前分享过 Nginx 开启缓存为 WordPress 加速的教程,其中分享了 2 种缓存模式:代理模式和本地模式。我一直以为单个 ngx_cache_purge 缓存模块只支持 proxy 代理模式,结果热心的网友回复,其实这个模块也是支持本地缓存的,而且 WordPress 还有配套的插件! 看来还是我孤陋寡闻了! 我像发现了新大陆一般,立马进入折腾状态,幸不辱命,已经成功部署!最爽的是可以通过插件来自动清理文章的对应缓存,解决了前文清理缓存的历史遗留问题。 一、添加模块 本文分享的 Nginx 缓存需要额外编译 ngx_cache_purge 模块。至于下载模块、重新编译以及平滑升级前文已经分享过了,本文就不再赘述了。不会的朋友可以参考前文: 为网站开启 Nginx 缓存加速,支持 html 伪静态页面 Ps:需要重新编译 Nginx,在原有的编译参数上新增一个 ngx_cache_purge 模块,比如: –add-module=../ngx_cache_purge-2.3 不清楚怎么重新编译和平滑升级的的请参考前文进行操作。 二、Nginx 配置 要用这个缓存功能,建议重新弄一个 server 模块(替换之前的),如下代码是张戈博客目前正在使用的规则(已删除了我自定义的伪静态规则,避免混淆视听): ####################################################################################################…
5月18日 · 2014年

nginx配置文件参数详解

32
这年头原创技术博文真心难写,不可能每天都有灵感,也不可能每天都出问题。而且技术教程也非常全面,不管是百度一下,你就知道,还是谷歌一把,你就找到,基本要啥有啥,只有你想得到,没有你搜不到。。。如果突然发现搜不到了,那恭喜你,你又可以来个原创研究项目了! 之所以开篇吐槽这么多,也是因为张戈今天确实没东西写,又不想转载, 就来点伪原创吧!主要是更换域名之后,确实需要很长一段时间的原创文章来取得搜索引擎的信任!比如,大前天完全转载的《10 个超有趣的 Linux 命令》,百度就完全视而不见,而前天完全原创的《百度开放适配&360 移动适配专用 Sitemap 格式转换工具》一文,则在个把小时就被百度给收了,原创才是真正的王道! 好了,废话说太多咯,终于可以来伪原创了,但出于对 CC 协议的尊重,来源还是必须要保留滴! 以下内容来自:运维与架构,原文地址:http://www.nginx.cn/76.html 感觉很详细,就转过来 MARK 一下,以便后面查看。 #运行用户 user nobody; #启动进程,通常设置成和 cpu 的数量相等 worker_processes 1; #全局错误日志及 PID 文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid…
12月2日 · 2015年

PHP7.0正式版编译安装升级及WordPress问题解决分享

30
盼望以久的 PHP 7.0 正式版,终于在今天发布了! 官方给出的新特性如下: PHP 7.0.0 comes with new version of the Zend Engine with features such as (incomplete list): Improved performance: PHP 7 is up to twice as fast as PHP 5.6 Consistent 64-bit…
3月13日 · 2014年

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

32
上午共享的那个varnish 安装手册,个人看了下,有点不知所云,好吧~看来还是先安装玩玩! 苦逼公司服务器没法连外网,不能用什么 wget 或 yum 命令直接下载安装,每每看到别人博客贴出的在线安装代码时,总有一股羡慕嫉妒“恨”冒了出来。。。好吧,既然没法上外网,那只能麻烦点通过下载源码来编译安装了! Varnish 3.0.4 下载地址: http://repo.varnish-cache.org/source/varnish-3.0.4.tar.gz 开始安装: tar zxvf varnish-3.0.4.tar.gz cd varnish-3.0.4 ./configure --prefix=/usr/local/src/varnish/ make && make install 发现到第三步时,报如下错误: checking for PCRE... no configure: error: Package requirements (libpcre) were not met:…
12月24日 · 2014年

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

14
今天,产品那边发来需求,说有个 APP 的 IOS 版本下载包需要新增 https 协议,在景安购买了免费的 SSL 证书。当我往 nginx 上新增 ssl 时,发现服务器上的 nginx 居然没编译 SSL 模块! 看了下旧版本 nginx 的 configure 选项: linux-gz215:# /usr/local/sbin/nginx -V nginx version: nginx/1.0.11 built by gcc 4.1.2 20070115 (prerelease) (SUSE Linux)…