wordpress的nginx rewrite规则

由于godaddy不稳定和龟速,终于把博客搬到自己的VPS上,并且换了一套皮 :) ,最近日子过得比较快,可能因为事情比较多的缘故,最近两个月写的代码,超过我过去半年的写的代码的总和 :(
废话少说,直接上wordpress Nginx的rewrite规则,我的博客版本是2.8.5,一切正常,其他的不敢保证

if (-d $request_filename){
rewrite ^/(.*)([^/])$ $1$2/ permanent;
}
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}

第一条在很多Nginx主机上是默认就可以进行301 move的,意思是:如果请求的是目录,那么将请求rewrite到这个目录里面,不加这一条可能会导致二级或者三级目录无法访问,比如请求地址是http://www.abc.com/abc, abc是一个目录,abc中有一个index.html页面,还有一个名为style的目录,index.html 引用style中的css,js等文件,并且引用方式为相对地址,类似这样的结构:<script type=“text/javascript” src=”style/lib/jquery.js></script>,那么除index.html能被请求到之外,index.html中引用的所有文件的请求,都将是404

后面三条网上到处都是,如果你不是跟我一样,在Web根目录下放一些jquery,mysql之类的手册,后面三条就足够使用。包括你使用伪静态化

VPS上安装Centos的几个错误解决

error: C++ compiler cannot create executables….

安装相关开发包:

  • yum install gcc gcc-c++ gcc-g77 autoconf automake flex bison bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel

Debian:

  • apt-get install gcc g++ build-essential

VPS为了保证效率和最小化安装,很多东西都没有所以出现上面的错误,有个偷懒的方法就是:

  • yum groupinstall ‘Development Tools’

这样和我们本地安装时勾选development tools的效果是一样的,什么编辑器啊,make,automake之类的都有了。

configure: error: *** libmcrypt was not found

安装libmcypt时,用默认的./configure && make && make install后,在下一步安装mcrypt会出现上面的错误,并不是libmcypt 没有安装好,而是没有加到默认的path中,做个软连接即可:

  • ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

编译PHP带上–with-xmlpr参数时出现:configure: error: XML configuration could not be found 错误

  • yum -y install libxml2 libxml2-devel

Notice: Following unknown configure options were used:

  • –enable-fastcgi
  • –enable-force-cgi-redirect
  • –enable-discard-path

php 5.3.0 发现在默认状态下,已经开始支持 fastcgi了,不用再费劲再写配置参数了,如果写了,会提示如上错误信息

undefined reference to libiconv_open错误

打开Makefile大约在85行的EXTRA_LIBS = ….. -lcrypt 在最后加上 -liconv,例如:EXTRA_LIBS = ….. -lcrypt -liconv然后重新再次 make 即可

《企业应用架构模式》笔记一

企业应用

  • 定义:  企业应用一般都涉及到持久化数据。
  • 企业应用一般都涉及大量数据
  • 企业应用还涉及很多人同时访问
  • 企业应用还涉及大量操作数据的用户界面屏幕。
  • 企业应用很少独立存在,通常需要与散布在企业周围的其他企业应用集成。(技术多样化,协议多样化)

可伸缩性:

  • 响应时间
  • 响应性
  • 等待时间
  • 吞吐率
  • 负载
  • 负载敏度
  • 效率

领域逻辑组织方式:

  • 1.事务脚本
  • 2.领域模型
  • 3.表模块

服务层:

  • 表现逻辑和领域逻辑之间的交互完全通过服务层,就像应用程序API一样。
  • 如果确实需要,使用最小化的服务层

映射到关系数据库:

  • 1. 为查询语句返回的每一行产生一个它的实例,种种行数据入口就行是面向对象方式来看待数据。
  • 2.许多环境提供记录集,这种表和数据行的一种通用数据结构,用来模拟数据库的表格属性。
  • 如果使用记录集,对于数据库的每个表只需要一个对象来管理。

并发:

  • 解决方案有两个,一个是隔离,一个是不变性
  • 隔离是学习操作系统分配内存的方式,让一个单元只允许一个进程访问
  • 只有共享数据可以被修改的情况下并发问题才会出现。

事务属性:

  • 1.原子性  在事务里面所有的动作要么全部完成,要么全部回滚
  • 2.一致性  在事务开始和结束的时候,所有的资源要保持一致
  • 3.隔离性  在事务完成之后,他的结果对于其他事务才是可见的
  • 4.持久性  已提交的事务必须是可持久性的,即任何崩溃都是可以保存下来的

事务资源:

  • 定义:用事务来控制并发的过程
  • 长事务:跨越多个事务请求的事务
  • 请求事务:在请求开始时启动,在请求结束时完成的事务
  • 延迟事务:在外界事务读取或加载完成时,启动的事务,即在更新时才启动的事务

事务建议:

  • 1.使用事务的时间应尽可能的短,尽量避免长事务,因为事务进行时间越长,锁定的东西越多,
  • 在没有任何并发控制的情况下,事务时间越长越有机会导致数据的不一致,造成事务的无效回滚,使用延迟事务能够提供事务的性能。
  • 2.使用事务时应该清楚的知道锁定的到底是什么,对于数据库来说,锁定的是被访问的行级数据。
  • 3.如果一个事务要求锁定的行数超过数据库最大可支持事务锁定,那么会上升为表级锁,即锁升级。锁升级显然对并发造成很大的影响。
  • 这也是为什么不能在领域层超类型级别上使用“对象”表的原因。
  • 4.尽可能的减少事务隔离

事务隔离级别(由低到高):

  • 1.读未提交
  • 2.读已提交
  • 3.可重复读
  • 4.可串行化

业务事务和系统事务

  • 系统事务:关系数据库系统和事务监视所支持的事务
  • 业务事务:业务事务是保证用户操作行为完整的事务

离线并发控制模式:

  • 1.应该尽可能让事务系统自己来处理并发问题。
  • 这样做会损失部分系统伸缩性
  • 2.乐观离线锁
  • 优点:易于编程实现,提供最好的灵活性
  • 缺点:只能在提交数据时才发现事务将要失败
  • 3.悲观离线锁:
  • 优点:尽可能早的发现错误
  • 缺点:不利于编程实现,丧失部分灵活性

应用服务器并发:

  • 1.显式多线程
  • 缺点:构建复杂,难以调试
  • 2.每个会话一个进程,配合进程池来提高效率
  • 3.每个会话一个线程,线程崩溃可能会导致整个进程垮掉
  • 4.中间层屏蔽,比如J2EE中的EJB

中秋快乐

海上生明月,天涯共此时。

05年离家之后,每年都是过年回一次家,今年是个例外,在遥远的老家,祝所有认识我的人,和我认识的人,中秋快乐,发财多多(虽然俗了点)。手机遇到点问题,没逐个给各位问好,多多包含。
PS:但愿我回去的时候各位不要跟我说国庆阅兵式多么的壮观,我不喜欢浪费纳税人的钱彰显自己的阔绰和宏伟,我爱我的祖国,但我不喜欢过度的政治宣传。

Firefox CPU 占用50%解决

前几天突然发现Firefox启动时候CPU占用有50%,更要命的是居然启动不起来,总是崩溃,崩溃,由于开发任务忙,换成别的浏览器继续搞,这两天又去旅游了一趟,早上一到公司,就开始整,DBA Notes的Fenng大侠,在他的博客中说是quick time这个播放器引起的,我跑到安装目录下面,没找到quick time这个插件,最后google到这篇文章,说是由google desktop不兼容引起的,google的桌面软件一向兼容性不是很好,卸载之,果然firefox正常了,唉,惊叹一下google的工程师是不是都用Mac的,郁闷