启用Web服务器的IPv6支持

前几天Burst西海岸的VPS开售了,于是21一个鸡冻就入了一个最低配的,看样子貌似我是第14个客户……
由于Burst在主机配置里面提到了提供IPv6地址,于是昨天发了ticket请求设置,今早来看已经给我设了4个v6的地址,但是默认安装默认配置的Apache2并不支持IPv6的访问,于是萌生了整理一下各主流Web Server启用IPv6方式访问的设置,其实都不复杂。

21个人喜欢nano编辑器,如果你喜欢vi,稍微换一下命令就行。
如果提示

请如下操作

高快直达:1. Apache 2 / 2. Nginx / 3. Lighttpd / 4. IIS 6/7
Continue reading 启用Web服务器的IPv6支持

2010-03-22 小记

前几天手闲买了两个256M VPS用于学习VPS的配置,这两天有所心得,小记一下。
不好意思啦,长篇大论太辛苦了,以后要走简洁风的。

注:两个VPS分别是CenOS 5.4 32bit, Debian 5 32bit.

1. Kloxo安装脚本太傻瓜了,傻瓜到出错都不会stop

其中一个VPS购买的时候我选择了预置Kloxo,但是主机商说内存没有512M所以不予部署,好吧,我手闲自己安装一下试试就是了。下载了那个脚本之后,./kloxo-install-master.sh,开始安装。

由于是通过SSH的方式,我开着以后就没管了,从早上9点多一直到下午4点多,SSH里面一直很活跃地展现着《骇客帝国》的数字雨画面效果,我受不了了,Ctrl+C之后发现,滚屏上的文字一直都在重复,眼睛瞟到一个写着error的信息,看了一下,原来是某个PHP的模块没有卸掉,所以……很遗憾的是,我没有记下来那个没模块叫什么。

但是我比较不明白的是,为什么它error之后就一直Try again,而不是Stop让用户看看错误信息,所以那个Kloxo的安装脚本,我运行了整整6个小时,还好,主机商方面没有什么提示。其实为什么我会等这么长时间呢?因为很久很久以前,我经常连续花几天时间编译安装Gentoo Linux,这让我面对CLI的时候有足够的耐心,嘿嘿嘿~

还有,我参照的是这篇教程,感谢作者。

Tips: 要是你安装Kloxo超过30mins(国内可能不好说),请检查滚屏文字是否包含error。

2. 主机商没错,256M的VPS别装Kloxo

恩,这个确实是教训,在上面花了6个小时之后,我卸掉那个PHP模块,只用了短短几分钟Kloxo就部署好了,然后是……从VPS面板上我看到,256M的内存一直在60%~89%之间徘徊,然后Kloxo感觉一点都不快,VPS的主机CPU是4核的XEON E5520。

Tips: 服务商不一定都是忽悠你的。

3. 搞定Apache2单独用户权限配置

好吧,我承认在高中的时候朋友熊哥借过我一本Apache配置指南并且我一直都没还,但是也一直都没怎么看,基于两个VPS内存过低的原因,我开始自己配置服务器。以前的我算是轻微入门,这次又轻轻入了一点点,慢慢来咯。

今天遇到的问题就是Apache2+PHP5目录写入权限。
之前我在使用Dreamhost的时候,/home/user/public_html 755是写入可行的,但是我的VPS上表现为无法PHP写入文件,好吧,我将real_user加入apache运行组www-data后修改权限为775之后是可以的,但是我不甘心,并且同组写入在商业化虚拟机上是不可行的,并且DH上面确实是755,于是研究。

利用DH的SSH我登录上去在有限的权限内我开始翻系统的文件,我考虑到了用户组混搭 ((灵感来自犀利哥,嘿嘿,开玩笑的~))方面的问题,于是我实验了一个办法,并且通过了:

把用户 www-data ((Debian里面的Apache2默认以此用户名/组运行)) 加入 <user-private-group>

但是,反过来把 real_user 添加到组 www-data 并不能实现real_user的权限对www-data开放,除非文件的隶属组是www-data。不过问题在于,不可能主机商会让apache2的run_user加入每一个用户的私有组 ((private group,私有组,用户创建时一同添加的同名组。)),乍一看是没什么安全问题,单向继承权限嘛,但是如果我们一些特定的文件只让Apache读取的时候,问题就来了,这肯定不适用于生产环境的。

于是我又开始GG,找到一个办法,SuExec,但是这个办法有限制:只对CGI和SSI有效,那么PHP就要以CGI的方式运行。但是,同一篇文章提到了一个模块:apache2-mpm-itk,据说效果跟效率要比SuExec好,而且配置也不复杂,在<VirtualHost>部分就可以为每个虚拟机单独配置一个读写用户。

于是在自己的Debian VPS上测试通过,~/public_html的权限为755即可,同时在相关的VirualHost配置部分加入

配置即可。
这也同时解决了我长久以来的一个疑惑:这个Apache2用一个用户/组来跑所有虚拟主机不是很危险么?不过以前没想过要认真解决掉……

请跳转参阅:
1. 使用mpm-peruser为apache的虚拟主机提供一个绝对安全的单用户进程访问机制
2. Running Vhosts With Apache2 mpm-itk On Debian

Tips: 恩,Google是个好东西。

4. 几个关键词

gpasswd -a, useradd, id, a2enmod, /etc/skel, /etc/default/useradd.
mysql -u[user] -p -h[host] database << (zcat database.sql.gz)

以后以笔记类博文为主,这样写起来没有压力,请各位见谅~

延伸阅读:
1. 10 个最酷的 Linux 单行命令
2. Debian下为Apache启用rewrite模块(htaccess)
3. URL Rewriting Guide

辟谣之WordPress专业主机

先声明,本文不是针对时下流行的“WordPress专业主机”,
仅仅是从技术普及应用方面来解释说明关于“WordPress专业主机”的一些广告误导。

基础

、什么是WordPress

WordPress作为一款优秀的、开放源代码的、免费的PHP博客(Blog/部落格)程序,是使用PHP语言编写的一种Web应用(Web Apps)。WordPress是构建与PHP平台之上的一个程序,简单的说,我们可以理解为“Microsoft Office是构建于Windows系统之上的应用程序”一样来理解,不过,WordPress主要面对的是互联网、运行结果是HTML代码。

、WordPress的运行环境

运行WordPress需要满足PHP和MYSQL数据库(通过插件可以实现SQLite数据库)这两个条件,而出于支持静态链接(Permalinks)的必要,还需要服务器具备支持Rewrite规则(Rewrite Rules)的特性,而Rewrite规则的支持通常需要Apache的Mod_rewrite模块来实现,并且Rewrite规则一般保存于与WordPress目录同级的一个叫.htaccess的文件,并且这个环境在Linux/BSD/Unix平台上运行效率最佳、支持度最高、表现最完美,通常被统称为LAMP平台,组成结构为Linux+Apache+MySQL+PHP。
而这样的环境同时也可以“完美运行”任何基于LAMP架构组件的Web Apps,包括Discuz!/PhpWind/MediaWiki/DedeCMS/Sablog/b2evolution/Typecho等等。

同时,在Windows上我们也可以通过ISAPI_Rewrite这个模块来支持Rewrite,但是规则略有不同、可能会存在一些意想不到的问题,所以,并不推荐使用Windows平台来运行PHP程序。

关键词: WordPress, Linux, Apache, MySQL, LAMP, Rewrite, Web Apps
Continue reading 辟谣之WordPress专业主机

漫谈WordPress安装、迁移

在N年的空间迁移和颠簸中,算是总结出来一些小经验,也算是给WP新手的一些建议,
我这里不会告诉你怎么做,只会告诉你为什么,仅供参考。

安装

第一点,wp-config.php文件

话说,我不知道很多初学者在哪里看来的所谓“教程”,里面有一点就是要求安装者编辑wp-config-sample.php文件,手动写入数据库信息,然后另存为wp-config.php。

怎么说呢,本身这样的建议,或者说要求是没错的,但是该教程的作者似乎忘记了,国内普遍是使用Windows(R),而Win默认的编辑器叫“记事本”,而记事本默认的编码是ANSI且对UTF8支持不良,所以,这就错了。

而很多WP初学者又极少有编码的概念,直接编辑了,然后就直接保存了。
这样的话,PHP基本会有一个header output的报错,意思就说说文件头前面有内容,我知道事实上在记事本里面看来是没有的。山河一片大好嘛,不过别忘了,这是ANSI和UTF8的战争。

所以,如果身为初学者的你,必须执意要自行修改wp-config.php文件,可以,但是请用一个加强版的“记事本”,我个人喜欢EditPlus,当然,还有更多的选择,不过你必须忘记你的“记事本”和“Office Word”这些弱智的东西。

说点题外话,我个人还是喜欢记事本的,即使它比较弱智,不过很多场合轻便的记事本还是合用的。

事实上,我认为你除了上传,不必修改任何PHP文件的内容,一个字母都不要动,
那么,不编辑的情况下怎么安装WP呢?OK,下一点。

第二点,简单安装WordPress

关于安装WordPress其实没啥好说的,只要搞清楚上一步的wp-config.php,大家都知道怎么回事儿,
有个安装向导的,你上传好文件,访问相应的目录,会指导你创建一个完全符合标准的wp-config.php文件的。

这里就随便说说一些安装WP的捷径吧。
不过,如果你是属于合租的空间,并且发起者只给你提供了FTP和MYSQL的用户密码,那么请使用Net2Ftp

通常,我们下载的WordPress是ZIP或GZ格式的压缩包,然后解包,一个一个上传,这样其实很费时间的。
如果你购买的空间有cPanel, DirectAdmin等面板,你会发现File Manager模块是具有解压缩功能的,
答案就呼之欲出了。

你可以只上传一个压缩包到空间上,然后使用File Manager来直接解压,然后调整目录结构,然后安装WP。
如果你没有那些面板呢,那么可以使用Net2Ftp,它也提供了打包解包的功能,
这样可以节省很多时间,因为FTP每上传一个文件都是一次连接,如果你的FTP够慢且文件够多,那就有的等了。

话说,如果你的空间提供SSH就更好了,
直接通过WGET获得压缩包,然后解压安装,基本没有文件需要经过你的电脑,那又是另一种快。
Continue reading 漫谈WordPress安装、迁移

PHP & Apache for Win

文章源自对Boiling Soul的回复

在Windows平台配置PHP+Apache,常见的问题之一就是[color=aaaaaa]Unable to load dynamic library (.dll)[/color]

而一般的做法是把 DLL 复制到 %systemroot%\system32 里面,
不过,这样的缺点显而易见:

  1. 如果需要大量的额外模块,那么会增加SYSTEM32的体积;
  2. 如果系统出现问题,备份是麻烦的事情;
  3. 如果需要对支持的模块进行整理/升级…

而我的方案是,把[color=aaaaaa]DLL模块文件放置到%Apache%\bin目录内[/color],
因为WINDOWS的寻找顺序会[color=aaaaaa]先从程序目录[/color]开始,所以DLL文件可以放在%Apache%\bin目录内。

需要什么模块,就把模块文件复制过去就行。
不过,缺点是把SYSTEM32的负担转移到了%Apache%\bin下,但是相对与SYSTEM32的文件数量来说,这么做是值得的。

另外附加一个我自己使用的关于PHP的诀窍。是关于[color=aaaaaa]同时在IIS内支持PHP4/5[/color]的办法。(之前询问过Prim@Hosting的销售代表,据说他们也没试过……)

手工配置PHP的时候,一般会建议把php.ini放置在%systemroot%内,不过这样一来就只能在WINDOWS内唯一支持PHP4或PHP5,
这样对程序开发者而言,同时[color=aaaaaa]测试对PHP4/5的兼容[/color]则会非常麻烦。

我做法是:[color=aaaaaa]把php.ini留在原PHP安装目录[/color],例如\php4\php.ini和\php5\php.ini,
在一个IIS上配置PHP4/PHP5,IIS的目录下的文件解释引擎因为支持单独设置,
所以可以在一个站点里面,建两目录,4/5,然后就可以分别设置PHP4/PHP5为4/5目录(两个目录也可以设置为虚拟目录指向同一目录)的PHP解释引擎。(因为PHP.ini在各自的目录里面,不会冲突的)
这样就可以在同一个IIS内测试程序对PHP4/5的兼容性。

相关:
Apache http://www.apache.org
PHP http://www.php.net