在自己的笔记本上弄了个 CakePHP + Nginx 的组合,做了基本设置。
由于 80 端口已经被 Apache 占用,因此我指定 Nginx 监听 81 端口。
首先记得安装 Nginx 和 PHP5-FPM 模块:
1
|
|
然后记得编辑 /etc/php/fpm/php.ini
,并设置 cgi.fix_pathinfo=0
,接着重启 php-fpm
。
在自己的笔记本上弄了个 CakePHP + Nginx 的组合,做了基本设置。
由于 80 端口已经被 Apache 占用,因此我指定 Nginx 监听 81 端口。
首先记得安装 Nginx 和 PHP5-FPM 模块:
1
|
|
然后记得编辑 /etc/php/fpm/php.ini
,并设置 cgi.fix_pathinfo=0
,接着重启 php-fpm
。
忙了一段时间,总算又有空写总结了。今天总结一下用 varnish 做负载均衡。
常用的负载均衡方式有 LVS
、Nginx
、HAProxy
等等,其实 varnish 作为一个反向代理软件,也可以起到负载均衡的作用。在 varnish 的官方 wiki 上有详细的介绍:https://www.varnish-cache.org/trac/wiki/LoadBalancing 。我们来看看如何设置。
长久以来,我的工作平台是 Ubuntu ,而我用来管理 redis 的工具是 redis-commander。
之前我由于做了 redis 的主从备份,开启了本地的 6379 端口和 6380 端口作为 redis 的两个实例,前者作为主机,后者是从机。并且在 redis-commander 的管理界面上分别添加了 6379 和 6380 的 0 号数据库。后来为了提高机器的性能,我关闭了 6380 的实例,并删除了这个实例在 redis-commander 的 tree-view 中对应的分支。结果后来再进入 redis-commander 的时候,左边的实例管理 tree-view 消失了,检查控制台输出时,发现提示是无法连接到 6380 端口。
为什么我已经删掉了对应的分支,但是 redis-commander 还是会请求 6380 端口呢?
有几天没写博客了,最近这几天一直在看文档学习。 PHP 、Python 、Ruby 的各种微框架都在看—— Flask 、Sinatra 、 Padrino 、Silex 、Slim 、 Limonade 、 Flight,还有一个最近比较火的 Laravel 4 。看了这么多,却不知道自己能用上的能有多少,如此多的微框架,真正用起来的时候,还是要自己造轮子。用了很多年的 CakePHP ,还是感觉这个东西最好用,估计我这一辈子就和 CakePHP 一起活了,呵呵。
内置事件机制的编程语言不多,而绝大部分编程语言都是靠观察者设计模式来实现这一机制的。而引入事件机制的目的之一,就是要解耦,让代码能够更加容易维护,让一个对象只做自己该做的事情,不要去做别的对象应该做的事情。
现在 CakePHP 中的 Controller 和 Model 中,都有 getEventManager()
方法,这就相当于观察者模式中的被观察者
,而我们自己编写的事件就是观察者
。在别的地方编写代码注册事件之后,在一个地方进行事件的广播,从而调用所有的观察者方法。
花了两天时间,看了关于 git 的资料,稍微整理一下,挖个坑先。
首先在 ubuntu 上更新 git 的源。
1 2 3 4 5 |
|
花了一个下午的时间学习了 bootstrap ,用的版本是 2.3.2 ,暂时不用 bs3 还是想保守一点先用 2.x 这个比较成熟的框架做点东西出来。
今天的成果就是一个页面 bootstrap 速查卡。写得很简陋,列出了一些平常开发时会用到的元素,方便以后开发的时候可以很快就能利用起来。
更详细的文档可以在 http://www.bootcss.com/scaffolding.html 查到。
今天花了很多时间在学习 bootstrap 上,有些心得暂时来不及写了。过几天时间补上。
Have a nice day!
继续上次的话题。
由于 varnish 是处于 web 服务器之前的位置,所以 varnish 实际上可以看作是一个 reverse proxy 的服务器。后端的代码要获取客户端 IP 地址的话,如果不做设置,获取的实际上是 varnish 服务器的 IP 地址。比如在 PHP 中经常使用到的 $_SERVER['REMOTE_ADDR']
这个变量,如果没有 varnish 做代理,就是正确的客户端 IP ;如果在 varnish 之后使用的话,只能获得 varnish 服务器的 IP 地址。所以,我们得对 varnish 做一点特殊的处理。
还好 varnish 的配置文件里已经给我们默认写出了这段代码,我们只需要在自己的代码中 copy 过来即可。直接在 vcl_recv
这里补充就行。
前天安装配置了 varnish ,但是在生产环境下,还是有很多更复杂的情况会出现,有时候还是得多考虑一下可能会发生的问题,自己模拟一下,找到解决的办法。测试代码是用 CakePHP2.3.8 编写的,代码如下:
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 |
|
在 Ubuntu 下安装 varnish 很简单,直接用 apt-get 安装即可。
1 2 3 4 5 6 |
|
默认版本是 3.0.2 ,挺新的,现在 varnish 的最新 dev 版本是 3.0.4 ,这个版本足够用了。