关于wordpress静态化方法

Filed in 服务器Tags: , , ,

最近开始重新折腾自己的博客,用了一下午的时间搭建了服务器,nginx+php-fpm
奈何服务器实在太烂,php脚本不能开的太多(主要是内存太小了,用大内存的服务器用习惯的人啊……)
一个cgi进程占20M,直接死机了……减少了cgi的进程数,果断好多了
然后我就在想,如果页面是静态的,那么利用nginx的静态优势,不就能大大减少cgi占用的内存了么?
由于不怎么用wordpress的后台(最多开发个主题神马的),所以着实研究了半天

首先,要想先静态化,先要伪静态化,正所谓欲练此功,必先**

先设置好nginx,其实原理很简单,无非就是自动转换一个index.php的入口

location / {
root ****;
index index.html index.htm index.php;
if (-d $request_filename) {
rewrite ^/(.*)([^/])$ http://$host/$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;
}
}

reload一下。

然后,在后台设置一下固定连接的形式,考虑到一个月发的日志不会太多,但是全放在根目录下,以后可能会超过linux的文件数限制,故使用了依照年月分目录
/archives/%year%/%monthnum%/%day%/%post_id%.html

尝试一下,网站能正常访问,OK

最后,安装一个生成缓存的插件,看了一下网上的评论,公认cos-html-cache比较不错
下载地址:cos-html-cache 2.7.3官网下载

下载,安装,启用,最后检查一下相应的路径下是否已经生成了文件

done

使用nginx进行大图等比例缩小并缓存

Filed in 服务器Tags: ,

1、需要image_filter模块,没有的话重新编译nginx,编译参数加上
--with-http_image_filter_module
2、配置文件1(需要使用缩略图的虚拟主机)
location ^~ /images/ {
autoindex off;
alias /path/to/image/file/;
expires 30d;
location ~ ^/images/thumb(100|150|346)/(.*)\.(jpg|png|gif)$
{
alias /path/to/image/cache/thumb$1/$2.$3;
set $image_uri /images/$2.$3?width=$1&height=$1;
set $image_filename thumb$1/$2.$3;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1/$image_uri;
break;
}
proxy_store /path/to/image/cache/$image_filename;
proxy_store_access user:rw group:rw all:r;
proxy_set_header Host 127.0.0.1;
}
}

3、配置文件2(进行缩略图处理的虚拟主机)
server
{
listen 80;
listen [::]:80;
server_name 127.0.0.1;
charset utf-8;

location ~ ^/images/(.*)\.(jpg|png|gif)$
{
alias /path/to/image/file/$1.$2;
set $img_width $arg_width;
set $img_height $arg_height;
image_filter test;
image_filter resize $img_width -;
image_filter_buffer 1M;
image_filter_jpeg_quality 80;
# image_filter_sharpen 50; 0.7.45无该参数
allow 127.0.0.0/8;
deny all;
}
access_log off;
}

4、本例中限定缩小后的宽度为100、150、346之一。

那些年一起建的极速(2011年篇.上)

Filed in 心情手札Tags:

2011年8月,随着几位创始人因为学业原因离职,我已然成为了极速任职时间最长的管理人员(当然,海马大大考研归来让我等很是高兴),历史往往会随着时间消逝,渐渐被人遗忘,随着我们的离开,知道极速历史的人会越来越少,因此,我决定,慢慢的,以我的视角,把这段经历写出来,聊以纪念。本文会分为2009年篇、2010年篇、2011年篇,好吧就先从离现在最近的的2011年开始说吧。

2011年1月寒假,极速依照惯例关站,那时,极速发展迅速,种子突破6万大关,可是随之带来的问题就是原本的那台服务器不堪重荷,高峰时几乎无法访问极速,于是,我决定利用关站的时间对极速算法进行第四次大型升级,增加一台新的服务器,修改服务器间的拓扑结构,重写数据库类。

假期通过研究,基本形成了框架体系,也为此写了好几篇分析文章,对类的修改也在假期完成了。2月份,开学前一周,狼大和幽冥大大购置了一台二手服务器,并买了两块硬盘,做起了raid,为赶在开学前完成,我们几个人熬夜做好了系统,并开始对配置好的从数据库和新的数据库类进行压力测试。但是,让我万万没有想到的是,理论和实际总是存在着巨大的差距,新配置的从服务器由于一些细节参数设置的问题,经常会产生数据淤积,导致主从数据库通信不畅。为此,我和幽冥大大、狼大在机房连续带了好几天,不断的调整服务器参数设置,最后终于赶在开学前,基本保证顺畅,之后,又用了近一个月的时间修正,才使这次升级达到了预想中的效果。我们把不断的参数调整戏称为“调教”。

假期,我还做了一个至今看来无比正确的决定,将极速的代码与界面分离,这样,界面就可以交个美工去做,而不用每次修改都需要改内核代码,这一改动大大的加快了极速前台改版美化工作,美工组在枯树的带领下,分别在5月发布了极速新首页,又在8月份,发布了新种子列表的beta版。

2011年4月份,极速面临着前所未有的危机,由于学校的宿舍紧张,需要将原来的部分社团办公室交给后勤集团……堆放杂物…… 极速机房也包含在内,而由于极速的高并发,意味着极速必须处于网络拓扑结构的一级节点上,否则,将会导致整个极速,以及极速所在的网关网络瘫痪。而为此我们专门和网络中心老师特别对极速原来的机房进行过网络改造(具体我会在2010年篇中详细写的),这也就意味着能寄存极速服务器的地方屈指可数,而极速,很有可能会因为没有合适的网络环境而关闭。为此,我、狮子、狼大、幽冥、海马、long、紫青劫、火车等人东奔气走,我们多次和团委协商,也多次找过李和章校长,都没有什么很好的解决方案。最后,我去找了网络中心的老师,非常感谢网络中心的老师,允许我们将极速的主服务器寄存在网络中心,虽然不如以前在自己的机房维护起来那么方便,但是不至于让极速的服务中断,是极速能更好的为大家服务。而极速的其他保种服务器也通过团委,找到也一个设备间,持续了3个月的和学校的不断协商,虽然没有保住机房,但终于还是以一个比较好的结果结束了。

待续未完……

由于各种原因,博客停开了一年,今天终于又重新开放了,高兴~

最近确实有点纠结

Filed in 心情手札

许多事有的时候不想强硬,但是不强硬有的时候无法做成事情
所以,当你有资本强硬的时候,要尽量为自己争取最大的利益
就这样吧,希望事情能有完美的解决办法

开站了

Filed in 心情手札

终于开站了,说实话,过程还是挺曲折的。

小站的名字叫echo lubao echo字典中的解释是发布、公开。

而echo对一个网络开发者 更是有着格外特殊的意义。

发了几篇以前自己写的技术文章,先冲冲门面,以后会陆续更新的。

先这样,还希望大家多多支持我

从数据库的原理及备份方案

Filed in 服务器Tags:

主从服务器技术,又叫数据库复制,是一种从一个服务器到多个服务器的异步同步技术,同步延时视主服务器的负载而定
数据库复制的技术细节如下:

1、主服务器把数据更新记录到二进制日志中
2、从服务器把主服务器的二进制日志拷贝到自己的中继日志中
3、从服务器重做中继日志的时间,把更新应用到自己的数据库上。

复制不光可以复制,由于他的短延时的特性(通常几秒钟)还可以做数据库负载均衡
通常网上使用的方法是DNS轮询,即通过DNS服务器返回不同的ip,已达到负载均衡的目的
但是,介于咱们学校的DNS服务器实在是不给力,和外部的DNS通信太慢,所以,改方式不适用与极速
第二个方案是做主从服务器读写分离,当然也有多种办法,有些插件变可以实现这项功能,但是由于极速特殊情况的存在,不利于控制
于是,选用使用php代码的方式,来控制读写分离,这样,易于控制和合理的调整

关于备份我的想法:
从刚才的分析可以看出,复制基本上可以解决服务器的备份问题,但是存在一种较为特殊的情况
那就是,当对主服务器误操作的时候,复制会立刻将修改更新的从服务器上,这样就比较麻烦
所以,即使有了主从服务器,还是需要对数据库进行定期的备份
备份的方式据我了解有以下四种

1、冷备份:
通过对frm文件、共享表空间文件、ibd文件、重做日志文件进行直接拷贝即可。由于mylisam只需要对frm和ibd进行拷贝即可,所以一般人会忽视共享表空间文件和重做日志文件,导致其余类型的数据库无法启动(而且说实在话,我还真不知道这两种文件在什么地方……)
而且该方法必须停止数据库进程,否则极易出现数据表损坏的情况,所以叫冷备份。(某个开着数据库备份的大大自弹小鸡鸡谢罪吧)
2、逻辑备份
即使用mysqlddump命令,
个人比较推崇这种方法产生,该方法不需要停掉数据库(停掉数据库这个语句也执行不起来……)
生产的是sql文件,跨平台性强,易于导入,
但是有个小小的问题,由于该语句相当于selet语句的原理,所以在出现update的语句是可能会造成排队现象
比较适合在深夜执行
3、热备份
顾名思义,和冷备份相对,可以在不停止数据库的情况下进行备份,而且不会影响到sql语句,是一种非常优秀的备份方式
但是有个比较大的问题,官方提供的ibbackup插件是收费的,啦啦啦啦啦啦……
当然有一种叫做XtraBackup的替代方案,还可以实现增量备份,不过没有实验过,可以考虑试试~
4、硬盘镜像
改方案必须使用LVM的硬盘模式,使用写时复制的技术,不会对原硬盘数据的读写造成任何的影响,是一种非常值得考虑的技术
当然,由于是全盘镜像,会对硬盘造成极大的压力,只一点不得不考虑

先写这么多吧,其实这个假期主要是对innodb进行了大量的研究,结果发现这个技术只有当内存超过数据库大小是才能体现出最高的效率
内存太贵了,so,放弃了……
还是主从数据库吧……

极速架设全过程(续)

Filed in 服务器Tags: , , ,

上接幽大的帖子

http://bitpt.cn/uc/home/space.php?uid=25&do=blog&id=386

配置好服务器后,需要配置教育网的源,然后yum update。

安装好apache,php,mysql。php升级为5.2以上的版本,因为极速中的部分函数php5.3不支持,所以不要往5.3升。

因为我的专长在php编程上,所以很多东西写得不是很详细,希望幽冥大大来补充一下

配置好php后,开始安装极速所需要php扩展

1.eaccelerator(自己没装过,幽大来一下补充)

2.memcache

在终端命令行内以root权限运行一下命令

wget http://pecl.php.net/get/memcache-3.0.4.tgz
tar zxvf memcache-3.0.4.tgz
cd memcache-3.0.4
/usr/bin/phpize
./configure –with-php-config=/usr/bin/php-config
make
make install

完成!

这里有个小技巧,如果你不知道某条命令的位置可以用 locate命令查询,如果是文件则用whereis查询。由于Linux是文件系统,所以通常所用的东西都能用whereis查出

例如:whereis phpize

3.magicwand

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz

tar xvfz ImageMagick.tar.gz

cd ImageMagick-6.6.0

./configure

make

makeinstall

wget http://www.magickwand.org/download/php/MagickWandForPHP-1.0.8.tar.gz
tar xvfz MagickWandForPHP-1.0.8.tar.gz
cd MagickWandForPHP-1.0.8
/usr/phpize
./configure –with-php-config=/usr/bin/php-config
make
make install

完成!

把之前备份的httpd.conf和php.ini文件拷到该在的位置,详见幽大的帖子

在网站路径下建一个test.php文件,输入

<?php

phpinfo();

?>

关闭保存。

在地址栏中打开,查看是否安装了一下扩展
eAccelerator
short_open_tag
gd
iconv
magickwand
mbstring
memcache
mysql
mysqli

如果是从源上直接update的php,可能会缺少mbtring库

我的解决办法是

先下载和你的php同版本的php的gz包

这里以php5.2.10为例

tar xvfz php5.2.10.tar.gz

cd php5.2.10/ext/mbstring
usr/bin/phpize
./configure –with-php-config=/usr/bin/php-config
make
make install

完成!

下面安装memcached,就是memcache的服务端

wget http://monkey.org/~provos/libevent-1.4.10-stable.tar.gz

tar xvfz libevent-1.4.10-stable.tar.gz
cd libevent-1.4.10-stable.tar.gz

./configure

make
make install

wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz

tar xvfz memcached-1.4.4.tar.gz

cd memcached-1.4.4.tar.gz

./configure –with-libevent=/usr/local/lib/

make

make test

如果提示缺少某个文件(忘了文件名了用*.*表示吧)

cp /usr/local/lib/*.* /usr/lib/
make install

完成!

以root权限运行

/usr/local/bin/memcached -d -m 100 -u root -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

此时注意看SELinux的报错,里面有一个11211的,按照它上面的提示,键入一段话,把httpd访问除80以外的其他端口的权限打开。

然后再运行上面那行命令开启memcached。

插件终于装完了,太不容易了!

在/dev/shm文件夹下建立三个文件分别为

cgbtcache、session、tmp建立权限为777

因为之前配置文件中的配置,这样就把缓存移入到内存中了

然后设置网站访问权限

chown -R apache:apache 网站物理路径

chmod -R 700 网站物理路径

最后,访问一下网站试试吧!在聊天室里随便输入点什么,看看是否显示,如果不显示,则去检查memcached是否开启,memcache是否安装

 

DedeCMS5.5中无法显示管理员发布资料问题的解决方法

Filed in php心得Tags: , ,

在DedeCMS新发布的5.5版本中,管理员的发布资料将不会被显示,按照dede的说法这是为了减少服务器的压力,因为管理员必然会发布很多文章,这样访问管理员空间的人多了就会增加数据库的搜索量。可是对于一些个人网站,站长显然希望自己的资料被显示出来,那么该如何做呢?

首先,在后台的设置系统参数的会员设置中将是否禁止访问管理员帐号的空间置为否。

然后,在\include\taglib中找到memberinfos.lib.php,在其中找到

  1. if($row[‘matt’]==10) return ”;

这行代码,注释掉或删掉就可以了,即

  1. //if($row[‘matt’]==10) return ”;

最后,重新生成整个网站就可以了。

 

最近评论
Click to view/hide
 
Click to view/hide
2019年八月
« 8月    
 1234
567891011
12131415161718
19202122232425
262728293031  
站点功能
Click to view/hide