Mac OS X 10.9.2 更新openssl

 

下面就说下如何升级到最新的1.0.1g 

1. 打开终端,输入which openssl 

如果显示的是“/usr/local/bin/openssl”则做第二步,如果显示的是“opt/local/bin/openssl”则做第三步 

2. 去openssl官网下载源码:http://www.openssl.org/source/ 

下载openssl-1.0.1g.tar.gz,将解压后的openssl-1.0.1g改名为openssl然后放入用户文件夹的根目录

2.1 打开终端 

输入

如果你是32位系统的mac,那么输入 

如果你是64位系统的mac,那么输入 

2.2 确认你有装上command line tools(为了有c compiler),check的办法很简单,终端里面输入

如果有的话,那么输入make 

2.3 编译完成后,输入make test 

2.4 如果没有问题,那么输入sudo make install

2.5 输入openssl version检查是否为1.0.1g 

3. 显示/opt/local/bin/openssl说明你没有用系统的openssl,而是用了macport的版本。

这样就很简单了,直接在终端里输入 

升级完了以后输入openssl version检查是否为1.0.1g

如果找不到openssl命令则手动加入软链接

执行之后 再来 openssl version

发表在 操作系统相关 | 标签为 , | 留下评论

10个超级有用、必须收藏的PHP代码样例

作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用它开发过大型软件项目,也一定多少了解它的语法。

  尽管PHP经常被人诟病,被人贬低,被人当玩笑开,事实证明,PHP是全世界网站开发中使用率最高的编程语言。PHP最大的缺点是太简单,语法不严谨,框架体系很弱,但这也是它最大的优点,一个有点编程背景的普通人,只需要学习PHP半天时间,就可以上手开始开发web应用了。

网上有人总结几种编程语言的特点,我觉得也挺有道理的:

PHP 就是: Quick and Dirty
Java 就是: Beauty and Slowly
Ruby 就是: Quick and Beauty
python 就是: Quick and Simple

在PHP的流行普及中,网上总结出了很多实用的PHP代码片段,这些代码片段在当你遇到类似的问题时,粘贴过去就可以使用,非常的高效,非常的省时省力。将这些程序员前辈总结出的优秀代码放到自己的知识库中,是一个善于学习的程序员的好习惯。

 一、黑名单过滤

 二、随机颜色生成器

 三、从网络下载文件

 四、Alexa/Google Page Rank

 五、强制下载文件

 六、通过Email显示用户的Gravatar头像

 七、通过cURL获取RSS订阅数

 八、时间差异计算函数

 九、裁剪图片

 十、检查网站是否宕机

发表在 BS架构后台语言 | 标签为 , | 留下评论

如何在阿里云通过He.net添加IPV6的支持

尽管在 2010 左右 IPV6 就开始刷存在感了,但是直到美帝把 IPV4 的资源都分配完了,IPV6 依旧没有获得很好的支持。

但是最近在开发者的圈子里,IPV6 开始怒刷存在感,因为苹果现在开始需要每一个 APP 都支持 IPV6-Only 环境下的使用。我觉得这是一件好事,如果不好好推动一把, IPV6 的体验始终不会跟上去。所以,如果苹果不推,那么迟早谷歌也会强推 IPV6。

阿里云CentOS

默认的阿里云CentOS系统是没有启用IPv6地址的

编辑文件,/etc/modprobe.d/disable_ipv6.conf,将其中的三行都注释掉

个别系统是存在放dist.conf文件中

编辑文件,/etc/sysconfig/network,将其中的 NETWORKING_IPV6=no 改为 NETWORKING_IPV6=yes, 如果没有该配置可忽略。

重启系统,以让更改生效。系统重启后,运行 ifconfig 命令,可以看到IPv6的地址

IPv6-Only

IPv6-Only 意味着网络下只能连接上 IPv6 地址,没有 IPV4 的存在,这也就意味着 DNS 缓存服务器也必须是 IPv6 地址,只能连接上支持 IPv6 的服务器。如果要解析一个域名,域名本身及其所属的根域名的 DNS 服务器也必须统统支持 IPv6。

  1. 域名所属的根域名的 DNS 服务器 支持 IPv6
  2. 域名使用的 DNS 解析和 DNS 服务器 支持 IPv6
  3. 服务器 支持 IPV6,并拥有 IPV6 ip 资源
  4. 服务器系统和 Web 软件 支持 IPV6

域名和 DNS 服务

顶级域名的 IPV6 支持报告 中,我们可以看到截止本文发布,仅 98.1% 的顶级域名都已经支持 IPV6 的解析了。像:com、net、biz、cloud、top 都是支持的。

然后是 DNS 服务器了,国外的例如 CloudFlare、NS1、Rage53、DNSimple、Rage4 等,国内的 DnsPod、百度云加速、sDNS 都已经支持了。 不过截止本文发布,阿里云 DNS、Cloudxns 还不支持 IPV6-Only。

DNS 解析 IPV6,对应的是 AAAA 记录。 IPV4 对应的是 A 记录。

服务器支持 IPV6

目前,国外的 DigitalOcean、Vultr、Linode 都是默认分配 IPV6 IP 的,很多一些 VPS 品牌甚至会赠送一个段的 IPV6 资源。而在国内目前看来,无论是 阿里云、青云、腾讯云 还是其他,都并没有很好的 IPV6 支持。

如果我们的网站或应用托管在阿里云或者其他云上,那么要让其支持 IPV6-Only,那么目前有两种可行的方案就是:

  1. 服务器在第三层(网络层)使用隧道传输来曲线支持 IPV6
  2. HTTP Proxy ,让支持 IPV6 的服务器做反向代理,将 AAAA 记录解析到代理服务器上
  3. 使用 CDN 缓存,像 CloudFlare 这样的 CDN 只要使用就可以支持 IPV6

不过,上述的三种,都有一定缺陷,其中第一种缺陷最少,几乎原生;而反代受限于反代服务器的延时,而且建设成本也挺高的;CDN 缓存么,像 Cloudflare 在国内速度并不理想

隧道传输支持 IPV6

这里介绍使用 Hurricane Electric Free IPv6 Tunnel Broker 来拓展服务器支持 IPV6.Tunnel Broker 相当于建立在网络层(第三层)上的代理,需要你的服务器的操作系统支持,而且服务器必须要有一个固定的 IPv4 地址。

一、注册,https://www.tunnelbroker.net/ 记得,别忘了验证邮箱
二、创建隧道,https://www.tunnelbroker.net/new_tunnel.php
三、IPv4 Endpoint (Your side): 输入服务器的 IP ; Available Tunnel Servers: 这里选择一个延时最低的地域。经过测试亚洲的 香港、新加坡、日本 国内访问还都挺糟糕的。 推荐 Fremont。
四、点击 Create Tunnel 就创建好了,

在 HE 哪里,点击 Example Configurations,然后选择自己的系统,这里以 CentOS 为例。

五、重新编译nginx加入 --with-ipv6 的支持,这时nginx就可以配置ipv6的地址了

 

发表在 应用工具软件 | 标签为 , | 留下评论

在Windows中使用Cygwin编译Redis 3.x

1. 安装Cygwin

从Cygwin官网下载安装程序,下载完成后双击开始Cygwin进行安装。一直点击下一步,直到出现软件包管理界面,如下:

在输入框中依次输入gcc、make,在Devel类型中选择合适的软件包,点击左侧的“Skip”,即可选中要安装的软件包

另外,还可以安装wget(用来下载Redis源代码),vi编辑器

2.Redis编译

2.1 打开Cygwin,从地址 http://download.redis.io/redis-stable.tar.gz下载Redis最新的稳定版本,使用wget下载,

命令如下:

2.2 Redis源码下载完成后,使用tar命令进行解压,命令如下:

2.3 解压完成后,修改/usr/include/netinet/tcp.h文件,在文件开始的注释后加入以下宏定义

2.4 接下来修改redis-stable/src/Makefile文件,找到

2.5 然后进入redis所在目录下的deps目录,执行make命令

2.6 进入到redis所在目录,执行make命令

执行完成之后,Redis就编译完成了

2.7 测试Redis是否编译完成

在Cygwin窗口中输入 redis-server.exe 命令,启动Redis Server

发表在 应用工具软件 | 标签为 , | 留下评论

如何安装php7的event扩展

最近api系统遇到了高并发的瓶颈,想通过workerman重构。在看workerman文档时发现这么一句话:

Event扩展不是必须的,当业务需要支撑上万并发连接时,推荐安装Event,能够支持巨大的并发连接。如果业务并发连接比较低,例如1000并发连接,则可以不用安装。

如果无法安装Event扩展,可以用libevent扩展代替,注意目前libevent扩展不支持php7,php7用户只能使用Event扩展。

业务的服务器是php7以上,所以不能考虑libevent了,只能安装event扩展了。

以下是我的安装步骤:

1、安装libevent库,并非libevent扩展。

到 http://libevent.org/ 官网上下载最新稳定版,也可以在命令行执行

拿到包以后解压安装即可

测试是否安装成功

提示如下则表示安装成功

1

1、安装event扩展。

到php官方下载event扩展的最新稳定包 https://pecl.php.net/package/event,也可以在命令行执行

拿到包手解压安装即可

最后提示下图则表示安装成功

2

最后在php.ini中加入

重启php-fpm即可

注意:

我在重启php-fpm的时候提示

[14-Dec-2016 10:51:25] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/event.so’ – libevent_openssl-2.0.so.5: cannot open shared object file: No such file or directory in Unknown on line 0
<br />
<b>Warning</b>: PHP Startup: Unable to load dynamic library ‘/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/event.so’ – libevent_openssl-2.0.so.5: cannot open shared object file: No such file or directory in <b>Unknown</b> on line <b>0</b><br />
[14-Dec-2016 10:51:26] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful

表示系统未找到 libevent_openssl-2.0.so.5,这时需要将 /usr/lib加入到ld.so.conf中

再次重启php-fpm即可

3

如果重启 fpm 还是报错,例如:

说明你系统中的 lib64可能存在 libevent 模块,造成冲突了,可以通过命令

来检查 lib64目录是否有 libevent 文件

如果存在文件则删除后重新编译 event 扩展即可

大功告成~

发表在 操作系统相关 | 标签为 , | 一条评论

php获取url的301/302后url

方法一:

在php获取http头部信息上,php有个自带的函数get_headers(),我以前也是用这个的,听说效率在win上不咋地,再加上最近研究百度url无果,写了cURL获取重定向url的php代码来折腾。
以前我是用get_headers来获取跳转后的url

方法二:

CURL是需要设置curl_setopt 和curl_getinfo才可以获取 Location:重定向

 

发表在 BS架构后台语言 | 标签为 , , , | 留下评论

Web性能压力测试工具之ApacheBench(ab)详解

网站性能压力测试是性能调优过程中必不可少的一环。只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题。Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网站访问压力测试。

ApacheBench命令原理:

ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。

ApacheBench参数说明

ApacheBench用法详解:

Linux系统,一般安装好Apache后可以直接执行;

如果是Win系统下,打开cmd命令行窗口,cd到apache安装目录的bin目录下;

-n后面的4000代表总共发出4000个请求;-c后面的1000表示采用1000个并发(模拟1000个人同时访问),后面的网址表示测试的目标URL。

稍等一会得到类似如下显示结果:

1477394743-7533-ab

结果分析:

总结:在远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大),建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。如果只有单独的一台服务器,可以直接本地测试,比远程测试效果要准确。

发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

ab批量压测脚本

[前言]:

ab(Apache benchmark)是一款常用的压力测试工具。简单易用。然而与hp load runner比起来就不那么顺手了。ab的命令行一次只能支持一次测试。相要批量执行不同的测试方式,并自动对指标进行分析,那么单靠手工运行ab,一定会累到像狗一样趴下。好了,问题来了,批量模式怎么实现,那就要靠我们强大的shell了。

测试的同学,让我来解放你的双手。全新的ab压力测试工具ab-test-tools.sh闪亮登场!! ^_^

[脚本说明]:
本脚本支持ab大多常用参数,如果你需要更多参数,可以通过修改本脚本,加入你想要的即可。本脚本的特色:

  1. 批量测试。注意,并不是简单的批量测试,你可以定测测试轮数,间隔时间。
  2. 阶梯并发增长定制测试,如并发从100到1000,每轮测5次等。
  3. 支持ab的post file模式,你只要在参数-P | –postfile中带上你的数据文件即可。
  4. 即时指标分析显示,本shell可以将ab中常用的指示即时分析出来,测试完成后即进告知你结果。

脚本说明:

命令格式:

ab-test-tools.sh

-N|–count 总请求数,缺省 : 5w
-C|–clients 并发数, 缺省 : 100
-R|–rounds 测试次数, 缺省 : 10 次
-S|-sleeptime 间隔时间, 缺省 : 10 秒
-I|–min 最小并发数, 缺省: 0
-X|–max 最大并发数,缺省: 0
-J|–step 次递增并发数
-R|–runtime 总体运行时间,设置此项时最大请求数为5w
-P|–postfile post数据文件路径
-U|–url 测试地址

[脚本代码]:

[测试示例]:

./ab_test_tool.sh -N2000 -R 2 -I 100 -X 1000 -J 100 -S 5 -U http://www.zzstudio.net/

1477394529-7156-Jtso2RWiGNPuVqGhdeUS2A

[注意事项]:

  • 每次测试结果以“yymmddhhiiss.out”存放在脚本所在目录,因此请保持脚本目录可写。
  • ab的所有输出结果均可在.out中查到。测试结果只是展示部份指标,需要详细的可以在.out文件中查看
  • 查看使用帮助可使用-h/–help。
  • linux终端默认1024限制,如需大于此数,请使用管理员执行:”ulimit -n 655350″
  • 本脚本未经时间检验,如有BUG,请及进反馈。
发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

CentOS下安装Composer

1、将composer.phar下载到项目中

使用curl -sS https://getcomposer.org/installer | php下载Composer 的二进制文件,是一个 PHAR 包(PHP 的归档)

2、可以通过 –install-dir 选项指定 Composer 的安装目录(它可以是一个绝对或相对路径):

3、如果把composer.phar放在系统的 PATH 目录中,就能在全局访问composer.phar。 在类Unix系统中,你甚至可以在使用时不加 php 前缀。可以执行这些命令让 composer 在你的系统中进行全局调用:

或添加别名

现在只需要运行 composer 命令就可以使用 Composer 而不需要输入 php composer.phar。

4、检查 Composer 是否正常工作,只需要通过 php 来执行 PHAR:php composer.phar这将返回给你一个可执行的命令列表。

1477386721-4699-2834acc6b5e55eb5c9ea14cebff8
1477386721-2486-d42abf698245063b5bb5c8eab8f8
1477386721-9879-ad6eca6aeb0484cb39dbb7fd3c48
发表在 应用工具软件 | 标签为 | 留下评论

Linux系统下安装rz/sz命令及使用说明

对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令。今天,我们就简单的讲解一下如何安装和使用rz、sz命令。

1.软件安装

(1)编译安装

root 账号登陆后,依次执行以下命令:

上面安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下,现在我们并不能直接使用,下面创建软链接,并命名为rz/sz:

(2)yum安装

root 账号登陆后执行以下命令:

2.使用说明

sz命令发送文件到本地:

rz命令本地上传文件到服务器:

执行该命令后,在弹出框中选择要上传的文件即可。

说明:打开SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录。

发表在 操作系统相关 | 标签为 , | 留下评论