<<构建高性能web站点>>阅读记录

大概花了2周多点的时间把这本书细读了一遍,感觉收获满多的。所以打算做点记录,用于以后的回顾。毕竟涉及的知识面还是有点广的。
(另外这个笔记是给我自己看的,所以比较简陋,能让我回忆起相关内容就OK了,所以大部分是标题或者一些提纲,见谅。)

0.服务器并发、ab测试工具
1.动态内容缓存
局部无缓存,静态化内容,局部静态化(SSI技术)
2.动态脚本加速
opcode缓存 , xdebug工具
3.浏览器缓存
缓存协商
(1)Last_Modified
(2)Etag
(3)Expires
(4)Cache-control
具体细读http协议,RFC2616(http/1.1)
4.WEB服务器缓存
(1)URL映射
(2)缓存响应内容
5.反向代理缓存
反向代理服务器,Varnish
ESI->网页局部缓存
注意AJAX的跨域问题
6.web组件分离
CSS,JS设置长时间缓存,如css?v1.2
7.分布式缓存
memcached(有时间打算阅读其源码)
缓存扩展,通过“key”取模,用“缓存连接器”调度
8.数据库性能优化
(1)组合索引(“最左前缀”基本原则)
(2)慢查询分析工具 mysqlsla
(3)索引缓存
(4)查询缓存
(5)临时表
(6)线程池
(7)反范式化设计
(8)非关系型数据库 memcacheDB
9.web负载均衡
(1)http重定向(如:镜像下载)
负载反馈(snmp-简单网络管理协议)
(2)DNS负载均衡
(3)反向代理负载均衡
(粘滞会话sticky sessions问题),最好用分布数session,和分布式缓存
(4)IP负载均衡
DNAT(LVS-NAT)
(5)直接路由 DR(LVS-DR)
(6)IP隧道(IP TUNNELING)(CDN服务)
10.共享文件系统(扩展有局限性)
11.分布式文件系统
MogileFS,Hadoop
(webDAV–Http扩展协议)
12.数据库扩展
(1)主从复制(mysql)
(2)读写分离
数据库反向代理(mysql Proxy)
(3)垂直分区(用于写操作频繁)
(4)水平分区(如userid奇偶取模),之前可分表
(分区方向代理Spock Proxy)
13.分布式计算
(1)异步计算
分布式消息队列(Gearman)
MemcacheQ
(2)分布式并行计算
map/reduce
14.性能监控
Nmon,snmp,cacti

CentOS防火墙开启80端口访问

以添加80端口为例操作如下:

[root@centos httpd]# /sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT

保存

[root@centos httpd]# /etc/rc.d/init.d/iptables save

iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]

如果上面的步骤还没好的话,可能是这个iptables文件使用的是包含调用。

一般的在/etc/sysconfig/iptables这个路径上

或者使用vi打开这个文件修改手动添加。

[root@centos httpd]# vi /etc/sysconfig/iptables

codeigniter在url中去掉index.php的解决方法

CI的二级url就类似这样http://localhost/CodeIgniter/index.php/welcome。不太好看,网上找到了去掉index.php的配置。如下:
nginx服务器的配置:
去掉index.php的方法:
修改config文件,将index_page=设为空
在nginx配置文件中增加:
location / {
rewrite ^/$ /index.php last;
rewrite ^/(?!index\.php|robots\.txt|images|js|style|fckeditor|upload)(.*)$ /index.php/$1 last;
}
其中fckeditor、upload等是你希望可以直接访问的目录,及框架之外你整合进来的程序目录

apache服务器:
1. 打开apache的配置文件,conf/httpd.conf :
LoadModule rewrite_module modules/mod_rewrite.so,把该行前的#去掉。
搜索 AllowOverride None(配置文件中有多处),看注释信息,将相关.htaccess的该行信息改为AllowOverride All。
2. 在CI的根目录下,即在index.php,system的同级目录下,建立.htaccess,直接建立该文件名的不会成功,可以先建立记事本文件,另存为该名的文件即可。内容如下(CI手册上也有介绍):
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
如果文件不是在www的根目录下,例如我的是:http://www.nowamagic.net/CodeIgniter/,第三行需要改写为RewriteRule ^(.*)$ /CodeIgniter/index.php/$1 [L]。
另外,我的index.php的同级目录下还有js文件夹和css文件夹,这些需要过滤除去,第二行需要改写为:RewriteCond $1 !^(index\.php|images|js|css|robots\.txt)
3.将CI中配置文件(system/application/config/config.php)中$config['index_page'] = “index.php”;将$config['index_page'] = “”; 。
最后重启服务器即可。

将CodeIgniter项目部署到Nginx的方法

最近将一个CI框架的项目部署到Nginx服务器上时,连接到控制器的页面全部出现404错误。查询资料后发现,CI框架主要应用与apache服务器,CI框架需要path_info的支持,Nginx服务器需要经过配置才能实现path_info。
从网上搜索后找到如下配置,测试正常。

找到对应配置文件,修改为:
server
{

listen 80;
server_name localhost;
index index.php;
root /home/wwwroot; #修改为项目对应的根目录

location ~ .*.php($|/)
{
root /home/wwwroot; #修改为项目对应的根目录
fastcgi_param SCRIPT_FILENAME /home/wwwroot$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
}

此外还要找到php.ini(/usr/local/php/etc/php.ini)的配置文件(若不修改,会出现No input file specified问题)
搜索关键词:cgi.fix_pathinfo
将此设置为1:
cgi.fix_pathinfo=1

最后重启Nginx即可。
此外若目录中出现”.”,也可能遇到404问题。(没遇到过,网上搜资料的时候找到的)

2012,新的开始

很久没写博客了,其实期间因为数据丢失。。。
最近两个多月博客虽然没怎么更新,但其实已经给这个博客换来3个家了,好多VPS都不稳定呀。。用来不到一个月就因种种原因被over了,导致的后果是我一直忙于给博客数据恢复。。搭环境,转移数据。。。
这次又刚搬了一次,入住了一个看起来相对稳定的VPS,但愿能够让我多待几个月。
上学期基本处于荒废状态,就运河杯做了点事,读了一点点书,做了几个课程设计就完事了,有点荒废呀。
然后就是linux的输入法总之还没win下的输入法舒服。。
就写这么点了,下次有重大突破再发新文章。(*^__^*) 嘻嘻……