ftp目录文件名乱码/使用原始ftp命令解决

对乱码的客户端,直接向服务器端发送原始的FTP命令:

opts utf8 off

对于flashFXT,可以按

菜单 - 命令 - 原始命令

输入

opts utf8 off

回车(或点确定)

再刷新服务端的目录列表,即正常显示

如果不行,可以试试发送ftp原始命令 opts utf8 on

原因解析:

按RFC 2610规定的方式,默认使用UTF-8。而某些服务器和客户端并不用此标准。即,server和client对话时,FTP服务器直接使用UTF-8发送数据,除非对方大喊一声opts  utf8 off ;而一些ftp产品则数默认使用本地编码对话,除非对方说一声opts  utf8 on 。所以,当服务器端与客户端不统一时,就出现了一个讲UTF8,一个用本地编码,就出现了乱码。

通过网络ntp自动同步linux主机的日期时间

如果只需要同步一次,那么执行如下命令即可

rdate -s time.nist.gov

其中time.nist.gov 是一个时间服务器,当然你也可以使用另外的时间服务器。

如果是多台服务器的时间需要保持完全同步,那么最好还是给这些服务器配置统一的自动同步任务,以免因为各种原因,造成它们的时间有所偏差。方法如下

使用 crontab 让linux自动同步时间
vi /etc/crontab
加上一句:

00 0 1 * * root rdate -s time.nist.gov

time.nist.gov 是一个时间服务器.

apache下载docx,pptx文件被浏览器当作zip文件保存:修改apache MIME类型配置mime.types

apache web服务器的站点,下载pptx,docx,xlsx文件,却被浏览器当作zip文件保存。

这不是浏览器的问题,而是apache不认docx,pptx,,xlsx等Microsoft Office 2007+的文件格式,而这些文件本身是zip压缩文件,所以被apache当作zip压缩文件发给浏览器了。

做个形像一点的比喻:浏览器请求一个url路径,这个路径指向一个.pptx文件,apache从web服务器的目录(磁盘上)查到这个文件,但它不知道这个文件是什么类型(注意:文件类型并不是由文件名后缀决定的,而是文件本身内容所决定),于是它通过分析这个文件内容,发现这个文件像是个zip压缩档,文件大小为12345字节,于是它给浏览器说:“嘿,你请求的是个zip压缩文件,它的大小为12345个字节,文件名是 abcd.pptx 。下面是这个文件的内容,请接收”

浏览器收到消息后,得知apache要发给自己一个zip压缩档,于是一边弹出对话框、询问用户是直接打开、还是保存到硬盘,一边把apache接下来发回的数据保存到缓冲区(或者保存到硬盘的临时目录里),等用户做好选择后,采取相应的打开或是保存的操作。

形象的说明,并不是十分准确的,但大体过程如此。

那现在的问题在于apache因为不认识这个pptx文件,那我们要教会apache,让它知道。我们可以通过mime.types文件让告诉它:

修改mime.types文件,在其中加上

application/vnd.ms-word.document.macroEnabled.12 docm
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
application/vnd.ms-powerpoint.template.macroEnabled.12 potm
application/vnd.openxmlformats-officedocument.presentationml.template potx
application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
application/vnd.ms-excel.addin.macroEnabled.12 xlam
application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
application/vnd.ms-excel.template.macroEnabled.12 xltm
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx

这样的一部分代码,这里包含了ms office相关的很多文件类型。

mime.types文件位置

mime.types文件在什么位置呢?

对于windows版本的apache,它在apache安装目录下的conf子目录里,典型位置为 X:\Program Files\Apache Group\Apache2\conf\mime.types

而linux版本下,通常位于/etc/mime.types, 如redhat/centos/fedora都是如此,debian/ubuntu系列应该也在这里,个人没有亲自查证。

不过centos并不推荐在这里修改,参看这里 http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-apache-config.html TypesConfig一小节

Instead of editing /etc/mime.types, the recommended way to add MIME type mappings is to use the AddType directive.

建议不要去修改 /etc/mime.types ,添加MIME type的推荐方法是使用apache的 AddType 指令.

AddType application/vnd.ms-word.document.macroEnabled.12 docm
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
AddType application/vnd.ms-powerpoint.template.macroEnabled.12 potm
AddType application/vnd.openxmlformats-officedocument.presentationml.template potx
AddType application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
AddType application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
AddType application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
AddType application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
AddType application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
AddType application/vnd.ms-excel.addin.macroEnabled.12 xlam
AddType application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
AddType application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
AddType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
AddType application/vnd.ms-excel.template.macroEnabled.12 xltm
AddType application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx

可以把这些指令加到apache的配置文件里,该指令在apache里出现过N次,不需多说,照着加进去就对了。

SEO问答:关于内容转载与内容更新

[Q] 16:03:36
请教一下,如果只是复制了网站里面的部分内容粘贴到了其它网站,比如产品介绍说明、新闻的部分内容,这算不算从我们网站上面转载?
[A] 16:04:18
严格的说 这就是转载
[Q] 16:04:43
那这种情况多了,会对我们网站排名有好处吗?
[A] 16:05:16
理论上说不会
[Q] 16:05:21

[Q] 16:05:24
多谢啦
[A] 16:05:58
但网站排名是很复杂的机制,实际上有没有好处,不是一句话能说清的
[A] 16:06:10
也没人能说得清,要看实际情况的
[Q] 16:07:14
哦,我就是想向一般我们对某些原创内容感兴趣,就直接会复制使用内容,对其出处网站如果起不到什么好处,那原始网站不是吃亏了,白想了
[A] 16:08:52
理论上搜索引擎会判断原创,并给原创加权,但它也会误判
[Q] 16:09:05
哦,谢谢
[A] 16:09:26
大网站转小网站的内容,很多时候排名比原创的小网站还高
[Q] 16:10:12
哦,看来网络还需要进一步优待原创啊
[A] 16:11:16
如果原创刚发出来就被转载,搜索引擎就很难判断谁是原创,这时大网站就占光了
[Q] 16:11:47
哦,原来是这样
[Q] 16:12:16
还好我们是大网站,呵呵
[A] 16:13:16

我说的也只是一般情况、理论分析的,实际情况,远比这复杂,呵呵
[Q] 16:13:27

[Q] 16:13:29
多谢啦
[A] 16:14:00
没人能真正摸透搜索引擎的机制,不然他早赚钱赚翻了
[Q] 16:14:31
恩,也是
[Q] 16:22:08
不好意思再请教一个:你的ppt里说“网站更新频率与搜索引擎的访问频率成正比”不知道我们客户产品,他们不改里面的内容,就是刷新产品,这样算吗?

[A] 16:22:37
可以认为 不算
[Q] 16:22:47
哦,还有就是刷新产品算是更新企业展台的网站吗?
[Q] 16:22:50
是不是也不算
[A] 16:23:18
因为更新是指的网页内容有显著的改变,刷新产品,仅仅是一个产品刷新时间有改变,其它没有改变
[Q] 16:23:44
一般我们都建议客户对产品做改动,现在看来是不对的,应该让他们多改动,除了产品名称外
[Q] 16:23:56
一般我们都建议客户对产品不做改动
[A] 16:24:42
网页内容有显著的改变
增加了一段内容,或者能其中某些部分做了较大修改
[Q] 16:24:53

[A] 16:25:19
但一般不要删减;当然内容表述有误要删还是得删的
[Q] 16:25:37
哦,原来如此,多谢啦~
[A] 16:26:08
但内容也不要过分的经常改变,是不是会有问题,这点也不好说,我没这方面经验
[Q] 16:26:17

[A] 16:26:47
有时修改内容后,会被搜索引擎认为你在做刻意的 SEO,反而会降权
[A] 16:27:05
这种情况我个人遇到过
[Q] 16:27:45
呵呵,好的,明白了

使用linode clone功能把一个vps整机迁移到另一vps上

前些天linode九周年促销活动时,抢买了一512的vps,想把原vps上的数据全部迁移过去,然后把旧vps撤销掉,这样可以省三个月的费用,还是很值的。买过后却懒得迁移数据,因为配置环境还是一件麻烦的事情,虽然没有多高技术含量。一个多月时间,也只配置了个最基本的环境,当时把配置过程实录下来,写了篇新手教程,然后就完全搁置了。其实环境还没有真正配置好。

今天偶然间看到linode后台里的clone功能,上网查了下,果然就是vps整机迁移的,这简直太方便了,跟linode迁移数据中心/机房一样简单,甚至更简单,不用给客服发ticket,完全自助!

于是在仔细确认后关掉新vps,把原vps clone过来。clone时,源vps不关机,直接迁移,理论上这样会造成一些问题,但考虑到vps工作负载并不高,其实只是个人wordpress博客,访问量很少,所以数据一致性问题应该可以忽略。

clone时,选中启动配置,而不是下面的硬盘,因为我需要的是整个服务器迁移,而不是只迁移某个硬盘。但是报错说“空间不足”,于是去把硬盘删掉,这样再操作,就通过了。因为两个vps在同一个机房(Fremont),所以速度很快,十几分钟就完成了。

启动vps,但失败了,发现是用的原来的启动配置,注意到在 Select Configuration Profiles 里有两个配置,默认选中的是原来的配置,改选中用另一个,再启动,成功。把前一个启动配置删掉,只保留可用的这个。

ssh连接,提示WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

因为RSA host key变了,所以ssh警告。

$ vim ~/.ssh/known_hosts

把旧的rsa key删掉,保存,再ssh连接,正常进入。

因为在vps上没有使用本机静态ip地址的配置,所以不需要做任何设置修改,直接运行了。

nginx编译后写入/etc/rc.local,所以自动启动了。

测试clone迁移后的vps上的站点是否正常运行,把浏览器的代理设置成vps ip地址80端口,然后通过域名访问,但wordpress提示“无法连接数据库”,难道是迁移后mysql挂了?ssh上检查没有mysqld的进程,想起好像当时没有把mysqld 设置为自动启动,于是到setup里查看,果然。设置自动启动,然后/etc/init.d/mysqld start ,然后再次访问网站,完全正常!

再检查了一下其它站点、备份数据之类,确认没有问题,到dnspod上把域名解析到新的vps上,然后两边都运行着,这样dns解析没有生效的用户,访问旧vps还是可以正常打开的,不至于造成流量丢失,或者被se蜘蛛“反感”。

几个小时后,把旧vps关掉,再次确认没有问题,这下就可以撤销掉旧vps了,今天8月1号,或许这一个月的费用就可以不付了。撤销掉vps后,看到账单里有个0.64刀的账单,看来这个月还是算用了一天吧。不过也还好,至省下了8-9月两个月的vps费用,好歹也两百多RMB。接着给客服发了个ticket,问问是remove掉vps后否还有其它事情要做,客服说要付掉那0.64的账单,别的没有。

于是付款,然后,没事了。写下这篇文章记念一下。

php下,对url路径规整化,剔除多余的上层目录(../)、当前目录(./)

php下,对url规整化,剔除多余的上层目录(../)、当前目录(./)

有时会构造出这样形式的url

/test/valums-file-uploader-cf7bfb1//./client/client/../.././tests/120720093725954.jpg

虽然在url里可以正常使用,但毕竟太啰嗦,也不美观,应该剔除其中多余的 "./" 与 "../",可以参考如下函数,使用preg正则表达式实现,使用前确认你的php环境有对preg正则表达式的支持。

function constrict_url_path($path)
{
    //转换dos路径为*nix风格
    $path=str_replace('\\','/',$path);
    //替换$path中的 /xxx/../ 为 / ,直到替换后的结果与原串一样(即$path中没有/xxx/../形式的部分)
    $last='';
    while($path!=$last){
        $last=$path;
        $path=preg_replace('/\/[^\/]+\/\.\.\//','/',$path);
    }
    //替换掉其中的 ./ 部分 及 //  部分
    $last='';
    while($path!=$last){
        $last=$path;
        $path=preg_replace('/([\.\/]\/)+/','/',$path);
    }
    return $path;
}

 

eclipse启动失败,报libxul.so的错误NS_StringGetMutableData_P 处理手记

centos 6.x下折腾了好几天,eclipse,没有使用centos自带的,从eclipse官方下载,但一直报错,错误如下:

[feng@fsc ~]$ /usr/local/eclipse/eclipse 
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x807afc5b, pid=3926, tid=3077723840
#
# JRE version: 6.0_33-b04
# Java VM: Java HotSpot(TM) Client VM (20.8-b03 mixed mode linux-x86 )
# Problematic frame:
# C  [libxul.so+0xda8c5b]  NS_StringGetMutableData_P+0x1bdbe
#
# An error report file with more information is saved as:
# /home/feng/hs_err_pid3926.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
已放弃 (core dumped)

前两天也看到了消息里libxul.so的信息,但直到今天google了一下“libxul.so eclipse”才得知在在eclipse.ini最后加入如下两行即可

-Dorg.eclipse.swt.browser.UseWebKitGTK=true
-Dorg.eclipse.swt.browser.XULRunnerPath==/usr/lib/xulrunner-2

之前一直在jre/jdk上找原因,结果是徒劳的。

因为是要安装个android开发环境,android sdk不支持openJDK,而要使用sun/oracle的jdk,所以卸载openJDK、安装sun/oracle JDK,并卸载centos自带的eclipse并从官网下载eclipse并解压缩到/usr/local. 折腾了好几天了。

据网上朋友说原因是Firefox的依赖包xulrunner(负责网页的渲染的模块)与JRE冲突。

手把手教你在centos下编译安装配置高性能web服务器环境nginx+php(fast-cgi)+mysql等/适合小内存vps使用

本文为实战操作过程的全程记录,采用一台新创建的linode vps(512M内存)环境,操作系统采用centos 6.2,以从源码编译的方式安装配置nginx, php(fast-cgi模式)web环境。

我们的目标:配置一台高性能、安全的web服务器。

继续阅读

Pages: Prev 1 2 3 4 5 6 7 8 9 10 ... 12 13 14 Next