2010年1月19日 | 分类: PHP | 标签:

        APMserv是张晏同学推出的一个windows环境下的LAMP一体包,有着傻瓜的使用概念,大大节约了测试环境的搭建时间,不过如果你打算应用于生产环境则还需要一定的改造。本文就说下如何去改造下里面的URL改写功能。

       首先,APMserver的Apache配置文件是放在Apache/conf目录下的httpd.conf 。这个文件通过一句话跟我们通过软件配置的虚拟主机结合起来。就是这句啦:

Include conf/apmserv/vhost.conf

里面的注释明确说到不要手动修改或者将自定义的站点配置放在vhost.conf文件中。
接下来,在Apache/conf/httpd.conf里面找到

NameVirtualHost *:80

在下面加上一句:

Include conf/apmserv/DIY.conf

保存Apache/conf/httpd.conf文件。

再来,跑到Apache/conf/apmserv/下面,建一个DIY.conf的文件,里面内容,可以参考Apache/conf/apmserv/vhost.conf 。如:

<VirtualHost *:80>
ServerName foodem.p.fabriqate.com
DocumentRoot “D:/live/FQ/projects/efd”
<Directory “D:/live/FQ/projects/efd”>
Options All ExecCGI FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.shtml index.aspx default.aspx
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>

将这段话,从Apache/conf/apmserv/vhost.conf 剪切
Apache/conf/apmserv/DIY.conf ,并将AllowOverride None 改成AllowOverride All也就是在Apache/conf/apmserv/vhost.conf里面,差不多有这样的一段话

<VirtualHost *:80>
ServerName foodem.p.fabriqate.com
DocumentRoot “D:/live/FQ/projects/efd”
<Directory “D:/live/FQ/projects/efd”>
Options All ExecCGI FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.shtml index.aspx default.aspx
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>

分别保存DIY.conf跟vhost.conf ,然后跑APMser的图形界面,重启下apache即可。

然后将你要配置的.htaccess放在对应程序的根目录即可。

下面附上discuz的httaccess配置:

htaccess

2010年1月5日 | 分类: 技术 | 标签: ,

最近公司换了一个磊科的NW618 的路由器,这个家伙很不错的,一下子把之前浪费的网速拿了回来。不过出现了一个问题,用FTP上传的时候很慢,甚至是停止好几分钟,才能反应过来,上传是能够上传,但是往往要等几分钟才能传几k的东西。实在看不下去……

开始排查了,由于之前FTP服务器出了问题,重装了一次,一直都觉得是FTP服务器的原因。结果,在服务器上对着pure-ftpd.conf看了老半天还是没什么结论。接着看FTP连接,不是被动模式的问题,更加奇怪的是我在192.168.1.105 能够正常上传,跑换到192.168.2.108 就不行了。 基本将服务器、FTP软件排除掉。

后来百度下,终于发现了问题的根源:MTU 最大传输单元的设置问题!

如何测试自己最大的MTU呢? 其实可以通过ping命令来测试:ping -f -l 1440 www.baidu.com 如果这个时候出现类似“来自 192.168.1.105 的回复: 需要拆分数据包但是设置 DF。”的提示,如图:

就说明你的ADSL设置MTU的时候不能超过1440,如何找最大的MTU? 呵呵,没有办法,逐步减少试下,ping -f -l 1340 www.baidu.com 提示timeout 或者 反应TTL多少ms都是正确的值,多次测试,取一个比较大的就可以了。

然后到modem设置页面,找到ADSL的页面,填入这个数值即可!

那么,为什么出现在192.168.2.108 不行而192.168.1.105 可以的情况呢? 往往是因为192.168.2.1 这个路由器的设置问题,对应调整 MTU,重启路由器后一切正常。

2010年1月5日 | 分类: 后台技巧 | 标签:

事实上ifconfig 这个命令就提供了在启动网卡以来的总流量,是以B也就是位计算的。

结合watch命令即可看到某个时间间隔内的流量变化,很cool的。完整命令如下:

watch -n 1 ‘ifconfig |grep byte’

该命令会自动刷新,流量统计,非常好。可以在 保存到/root/liuliang.sh 。赋权 chmod  x+  /root/liuliang.sh

日后就可以通过 /root/liuliang.sh 来看流量了,爽!

效果图:

RX 就是接收数据,TX就是发送的数据。上面的图就是服务器接收了14.7G的数据包,发送了11.5G

2009年2月12日 | 分类: 技术 | 标签: ,

elgg作为一套SNS系统已经得到不少fans的爱戴。

但是在Nginx下面安装elgg的时候就往往遇到改写出问题。

下面附一份完整的改写配置文件,已经正常在elgg1.2 实现改写功能。

elgg在nginx的改写配置

2009年2月10日 | 分类: PHP | 标签: , ,

这些应用都不能算是海量了。大小也只是2个G,转换后成功率99.97%,重要的数据都对比了条数,没有缺少,很是欣慰。

之前自己写了一个脚本,直接转换Mysql,没有先把数据存下来的那种,每次设定转换一定的数据量,不过只能适合普通的几十M的转换,除非CPU比较高。

源码如下:

基于PTK的数据库备份方案

不过不建议用这个,只能说自己的水平比较有限,没有考虑到编码转换等的种种问题。

经过研究发现:先把数据库备份下来再恢复是最佳的方案。

之前记得有个帝国备份王的。感觉不错,于是就在上面做了一些修改:

原版(开源):帝国备份王2008

修改了里面一个文件:class下面的functions.php就可以解决问题了。

下面附上functions.php的代码:

修改帝国备份王2008的函数定义文件

这样子,就可以解决一两个G的数据库备份,转码等问题。

过程中,发现帝国备份王比其他的备份工具都要快,原因是因为我选择了按照条数来限制每次导出量,并且自动识别了主键。

在SQL查询是如何体现的呢?

核心代码如下:

Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10,1
) limit 10 

简单吧,更多的内容可以参照:

http://www.phpobject.net/blog/read.php/119.htm

此外,也有用命令行来做编码转换的,核心的导出:

以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。
第一步:导出旧数据
mysqldump –default-character-set=latin1 -hlocalhost -uroot -B my_db –tables old_table > old.sql
第二步:转换编码(类似unix/linux环境下)
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
或者可以去掉 -f 参数,让iconv自动判断原来的字符集
iconv -t utf-8 -c old.sql > new.sql
在这里,假定原来的数据默认是gb2312编码。

事实证明这个不明智,超过两个G的SQL文件,转码慢,无法一次打开,无法修改,用命令导入的时候Mysql经常自己掉线,最可怕的是数据丢失严重。我之前也是打算用命令行来转换后院的数据库的,后来发现,不行,丢失数据的情况很严重,然后自己写然后再出现了本文开头的那一幕。

分别学到的PHP跟MySQL语法有:

  • 识别当前字段类型 mysql_field_type
  • 识别当前字段属性 mysql_field_flags(一般是判断是否是二进制,如果是就用base64_encode,导入的时候用base64_decode,这个是一个笨办法 :~ )
  • 在中文的系统,导出的SQL如果正常显示中文就说明已经是gbk的格式(ANSI文件格式),这个时候只要用 “character_set_client=’binary’; ENGINE=MYISAM DEFAULT CHARSET=gbk;” 就可以了。千万不要与目标编码对齐。
  • 可以看备份王里面关于生成文件编码的处理,确实很优秀,值得学习跟推荐。
第 5 页,共 68 页« 最新...34567102030...最旧 »