【转】瓷器村的饭店

    瓷器村有一家饭店,每顿饭只收1分钱的饭费。我在这家饭店工作多年,目睹了许多离奇的故事,今天要讲给你听。你一定会感兴趣的。

一、公益食堂

这家饭店始建于上世纪七十年代末,是生产队的食堂,主要靠生产队拨款维持运转。村民们每顿饭只要交1分钱的饭费就可以随便吃。当然饭菜也很简单,就是萝卜白菜馒头。

生产队领导曾经教导我们:“食堂是公益机构,要体现公益性。食堂职工要履行‘救饥扶饿’的神圣职责。”我们一直把这些教诲铭记在心。有的村民连1分钱 的饭费都交不起,我们就让他进来白吃;食堂门口经常有乞讨者,我们就从后厨给他们拿饭吃。反正这些都会由生产队给买单。就这样,我们食堂的口碑一直很好。 由于我们工作时都穿着白大褂,甚至有人称我们为“白衣天使”。

到了八十年代,食堂归村委会管理。虽然每顿饭的成本已经涨到了5角,但村委会给食堂足额补贴,所以村民们一直享受着“1分钱吃饱”的优惠价,食堂职工也一直在履行着“救饥扶饿”的神圣职责。

二、聪明绝顶的村长

九十年代初,村长说,村委会的平房太寒酸了,要盖一座办公大楼。村干部们异口同声地表示支持,负责基建的村长小舅子和负责后勤的村长表弟更是热烈欢 呼。村委会的分支机构很多,有犁地部、播种部、浇水部、收割部、打场部、拾荒部、养猪部、喂猪部、杀猪部、卖猪部……等等,按照每人400平方米的办公面 积计算,至少要盖80层大楼。可是钱从哪里来呢?

村里开会研究了三天三夜,最后,聪明绝顶的村长想出了一个聪明绝顶的办法:把食堂改名为“瓷器饭店”,也就是“市场化”;村委会只给食堂拨款40%,让食堂自筹60%。所谓“自筹”,就是让食堂向吃饭的村民收钱。这样,就可以减轻村里的财政负担,省出盖大楼的钱。

村委会的会计算了算帐,说道:“现在每顿饭的平均成本是3元,村里补贴1.2元,食堂只要把饭费从1分涨到1.8元就可以了。我散会之后就去安排。”

村长瞪了会计一眼,喝斥道:“你脑子有毛病吗?现在村民们本来就对物价敏感,村委会要是宣布把饭费涨到原来的180倍,村民们还不把村委会砸了?”

会计说:“那咋办?不涨饭费,食堂靠啥自筹资金?”

村长笑了笑,说道:“我自有办法!”

三、以餐具养食堂

第二天,瓷器村村委会发布了一份名为《以餐具养食堂》的红头文件。文件规定,为解决公立食堂经费不足的问题,现允许食堂向顾客收取“餐具费”。餐具费的收入,将用于弥补饭费收入的不足。

从此以后,村民们到食堂吃饭,除了支付1分钱的饭费以外,还要支付1至5元的“餐具费”。“1分钱吃饱”的时代一去不复返了。村民们纷纷议论:“村委会控制了饭费的上涨,真是亲民爱民!食堂加收了餐具费,真是贪得无厌!”

九十年代,瓷器村的经济形势一片大好,是大好,不是小好。村委会陆续购买了18辆奔驰、18辆广本、18辆帕萨特,村长包养了两个小媳妇,还把儿子送到河对岸的阿麦瑞克村上学。其他村子受了灾,村委会慷慨捐款。村干部的工资,也一次又一次地上涨。

当然,村民们不知道,村委会对食堂的拨款比例却是逐年减少的。到了1998年,拨款比例下降到了10%。这10%的拨款,还经常无法按时到位,有时还会被村委会赖帐不给。这时的“瓷器饭店”,虽然对外还宣称是“公立食堂”,但实际上已经跟自负盈亏的私营饭店相差无几了。

这期间,村委会也觉得1分钱的饭费实在是低得可笑,于是也给上调了几次。1998年,饭费调到了2元。但是,这时的饭菜档次也提高了很多,物价也涨了很多,每顿饭的成本已经涨到了5元至20元,饭费加上餐具费收入仍然不足以收回成本。食堂没办法,只好采购了一些中高档餐具,以便提高“餐具费”收入,用于弥补饭菜的亏损。此外,食堂还引进了南非鲍、澳洲龙虾、神户牛肉等高档菜,这些菜可以在2元饭费之外单独定价,卖到上百元,既可以满足高端顾客的需求,也可以增加一些收入。

四、四个难题

2000年,村委会的会计奉命对食堂进行调查,发现了几个问题,汇报给了村长。

第一个问题:随着物价的上涨和食谱的更新,每顿饭的成本已经涨到了10至30元。但是,按村委会的定价,饭费仍然只能收2元钱。即使加上餐具费和少量高档菜的收入,食堂仍然是亏损的。照这样下去,食堂就会倒闭。如果食堂倒闭了,村民们没处吃饭,就会来找村委会算帐。如何避免食堂倒闭?

第二个问题:随着村民的餐饮需求的增长,食堂的工作量比以前增加了好几倍。但是,食堂的职工编制没有增加。因此, 食堂现有职工不得不长期、常态超负荷工作。他们每天凌晨3点就要上班,晚上23点才能下班。遇到吃夜宵吃到后半夜的顾客,他们只能强打精神,加班奉陪。增 加了的这部分工作量,不是靠增加人员来完成的,而是靠现有职工无偿加班、放弃节假日、牺牲个人.权益来完成的。食堂职工对此有意见,如何平息?

第三个问题:在这二十多年中,餐饮行业发生了巨大的变化。现代餐饮已经变成了一门高技术含量的行业。一个人要想当 厨师、服务员,先要以高分考入大学,读5年本科,其中大部分人又读了3年硕士,厨师长、厨师、领班等职位甚至只录用博士。新职工在正式工作前,要经过漫 长、艰苦、低薪的见习期和轮转期,从摘菜、刷碗、拖地、端盘子做起。正式步入工作岗位后,终生都要进修、学习、钻研,紧追餐饮行业前沿,才能胜任工作、保 住饭碗。顾客对饭菜的口味、色泽、形态、火候、营养、卫生、充饥能力、刀工精度、数量精度等方面以及配套服务的要求非常高,食堂职工必须遵循复杂而严格的 技术标准,精工细作,精心服务;一旦出现疏漏,就可能被告上法庭、定罪判刑。因此,食堂职工的工作难度、工作量、心理压力和从业风险都比较大。食堂职工的 付出显著超过了其他大部分职业,但是,食堂职工的工资标准却并不高。食堂职工对此有意见,如何平息?

第四个问题:村民们缴纳了沉重的税赋,却不能享受“1分钱吃饱”的福利待遇,每顿饭除了要花 2 元饭费以外,还要花几元、几十元的餐具费。如果想吃鲍鱼、龙虾,还要花成百上千元。因此村民们纷纷抱怨“吃饭贵”。食堂的职工、灶位、 桌位、餐具等资源都比较紧张。在高峰时段,前来吃饭的村民甚至会找不到桌位,上菜速度也会变慢。因此村民们纷纷抱怨“吃饭难”。如果村民们发现“吃饭贵” 和“吃饭难”是由村委会缩减食堂拨款引起的,就会责怪村委会。如何避免村民们发现?

村长听完这四个问题,一言不发,只顾眯着眼睛抽烟。会计不敢多嘴,也只是一言不发地看着村长。等到一袋烟抽完了,村长才转过头来,问会计:“你说,食 堂的职工是人还是神?”会计弄不清村长葫芦里卖的什么药,只好老老实实地回答道:“当……当然是人,不是神。怎么啦?”村长点了点头,说道:“这就好!只 要他们是人,不是神,就好办了。”

村长显然已经有了一个好办法!

五、一箭四雕

第二天下午,被村长派去食堂查账的会计兴冲冲地跑回来,向村长报告:“查到了!我查到了!”

村长说:“别着急,坐下慢慢说。”

会计坐下,喘了一口气,继续说道:“我仔细审查了食堂的餐具帐目,终于发现,他们在采购鲍鱼的时候收取了供应商的1000元回扣。其中500元用于购 买消毒柜,100元用于维修灶具,100元用于更换灯泡、水龙头;给几名干部和厨师长每人发了30元的奖金;最后给厨师和服务员补发了上月拖欠的工资,每 人5至10元不等。”

听完汇报,村长狡黠地笑了:“好啊!我就知道,他们是人,不是神!”

会计不明白,就问村长:“您这是什么意思?”

村长说:“他们不是神仙,所以他们不可能凭空变出米面肉菜、水电煤气、桌椅碗筷。如果没有拨款,他们就只能靠歪门邪道来维持食堂运转。他们不是神仙,所以他们忍不住疾苦清贫、高付出、低回报,他们会自己设法用歪门邪道来弥补收入。”

会计讪讪地问:“那,咱们村里是不是要严查一下,刹刹他们的歪门邪道?”

村长斩钉截铁地说道:“不!我就是要让他们搞歪门邪道!”

会计纳闷了,问村长:“为什么?”

村长叹了一口气,说道:“亏你跟了我这么多年,怎么还是不开窍啊?你昨天说的四个问题,第一是食堂入不敷出,第二是职工又苦又累,第三是职工收入微薄,第四是村民吃饭贵、吃饭难。你说,这四个问题的原因是什么?”

会计不假思索地答道:“这个我知道!食堂入不敷出是因为村里给食堂的拨款少,又不允许食堂涨价;食堂职工又苦又累是因为村里给食堂的编制太少,食堂又没钱雇临时工;食堂职工收入微薄是因为村里给食堂定的工资标准太低;村民吃饭贵,是因为村里给食堂拨款少,食堂只能向村民收钱,村民跟以前的‘1分钱吃饱’ 比较,觉得现在吃饭贵;村民吃饭难,是因为村里给食堂的拨款和编制少,食堂建设和人员不足。”

村长说:“不错,你这个会计还算没白当。那你说,这四个问题,归根结底是谁的责任?”

会计张口刚想说,又给咽回去了。

村长厉声问道:“你说,是谁的责任?”

会计诚惶诚恐地看着村长,结结巴巴地答道:“是、是、是村委会的责任……”

村长冷笑了两声,干笑了两声,又大笑了两声,最后和颜悦色地对会计说:“你答对了。但是,我要让全村人都相信,这是食堂职工的责任!”

会计纳闷地问:“怎么让他们相信呢?”

村长说:“就是要让食堂搞歪门邪道!村委会表面上要打击回扣,但实际上要纵容甚至鼓励食堂从供应商手里拿回扣!”

村长接着讲道:“回扣可是个好东西。第一,回扣给食堂提供了资金来源,弥补了饭费价格过低和拨款不足造成的亏损,维持了食堂运转,掩盖了村里拨款不足 的事实。第二,回扣可以用来给职工发工资奖金,安抚职工队伍,让他们忘记辛苦劳累,甘心做牛做马,卖命加班劳动。第三,按照村民们的一般观念,“回扣”肯 定是非正义的。村民们一听说食堂收了回扣,肯定会非常痛恨食堂,于是就把眼光全都盯在食堂职工身上,向他们发泄怨恨,就不会找咱们村委会的麻烦了;同时, 村委会隔三差五地假装打击一下回扣,还会赢得村民的拥护和爱戴。这样,你昨天所说的四个问题就全都解决了,村委会还不用花一分钱!”

会计的嘴巴张得老大,半天才回过神来,赞叹道:“村长,您真是太高明了!这是一箭四雕啊!”

六、发动村民斗食堂

晴空万里,阳光明媚。瓷器村办公大楼的第44层,4444房间,正在召开“瓷器村宣传工作动员大会”。会议由村长亲自主持,广播站站长、板报组组长、标语队队长、治保会主任等人参加了会议。

村长指示,在今后针对食堂的宣传报道中,要掌握几个“混淆”。

第一,要混淆“被动避害”和“主动趋利”。食堂如果没有供应商回扣、高档餐具的餐具费、高档饭菜的饭费等收入,只靠拨款和2元饭费,根本不可能维持运 转。食堂的厨师、服务员如果不向顾客推荐高档餐具和高档饭菜,就拿不到工资,久之则被辞退。食堂不可能坐等倒闭,职工不可能坐等辞退,因此他们主要是在执 行政策、被动避害、维持生计。但必须通过宣传教育,让村民们认为他们是在主动趋利、利用专业技术进行敛财致富,以激发村民们对他们的仇恨。

第二,要混淆“合理收入”和“暴利收入”。从行业的技术含量、难度、风险、工作量、付出代价等方面来衡量,食堂职工的合理收入水平应在1000元左 右,但现在大多数职工即使加上回扣工资也只能拿到600元。必须通过宣传教育,抹杀这个行业的特殊性,用低学历、低技术、低难度、低风险、低劳动强度的职 业的低微收入水平与之做比较,充分利用村民们“患不均”的心理,让村民们认为食堂职工拿600元就是暴利,以激发村民们对食堂职工的仇恨。

第三,要混淆“府败领导”和“普通职工”。在食堂里,确实有些领导,依靠回扣拿到了每月数千元的暴利收入,但这部分人的比例在1%以下。实际上,99% 的普通职工拿着偏低的工资,却在加班加点、受苦受累、牺牲奉献。必须通过宣传教育,让村民们认为,所有食堂职工都依靠回扣拿到了暴利收入,都富得流油,都有八套房、十辆车、一百个小老婆,以激发村民们对他们的仇恨。

第四,要混淆“正当的高价账单”和“不正当的高价账单”。有些高档饭菜本来就应该是高价,但在宣传报道时,必须淡化饭菜本身的档次和价值,而要强调账单上的高额数字,让村民们认为食堂在宰人,以激发村民们对食堂的仇恨。

村长最后总结道:“食堂职工都是普通人,必然会带有普通人的各种缺点。你们要细心挖掘,将小事扩大化,将个案普遍化,将鸡毛蒜皮上纲上线,让村民们认 为食堂职工都是十恶不赦的大贪屋犯、大杀人犯、大渎职犯。顾客与食堂发生纠纷时,你们要大篇幅报道顾客的声音,尤其要用浓墨重彩渲染顾客多么悲惨、痛苦、 无助,同时,要少报道或者不报道食堂的声音,不给食堂任何辩解的机会。要抢在事实查清之前,先行认定食堂职工一定有罪,先行认定顾客一定有冤。要通过“一 言堂”式的报道,把食堂彻底批倒、斗臭。等到食堂的负面形象树立起来之后,他们的正当做法也会被怀疑为营私牟利,他们的好心好意也会被怀疑为驴肝肺,村民 们将再也听不进他们的澄清辩解,他们一张嘴就会被村民们视为狡辩,他们中的大多数人加班加点、吃苦受累、牺牲奉献更是会被完全忽略。村民们会认为,“吃饭 贵”“吃饭难”是食堂职工造成的!”

从此以后,揭批食堂和食堂职工的新闻报道就没有停歇过,每隔一两年还会掀起一次高潮。

七、两千元的馒头

2008年的某一天,村民张三到食堂吃馒头,咬了一口,就抱怨道:“一点味都没有!来个水煮鱼!”服务员端上水煮鱼,张三吃了一口,又说道:“太辣 了,没法吃!拿菜谱来!”服务员拿来菜谱,张三点了一只1200元的龙虾和一瓶1000元的茅台。酒足饭饱之后,张三叫服务员结帐。服务员拿来账单,一共 是 2235元。张三跳了起来:“什么?这么贵?你们想钱想疯了?”

第二天,瓷器村村头的黑板报上登出了一条新闻,标题用醒目的特大号黑体字写道:“吃个馒头竟花2200元”。正文里说:“村民张某,来到食堂,仅仅是 想吃个馒头。最后结帐的时候,他却要面对2200多元的天价账单!当张某质询食堂收费的时候,食堂经理竟然理直气壮地说,收费合理,计费无误!”看了这条 新闻之后,村民们都气愤无比,异口同声地指责食堂黑心宰人。

八、吃饭饿死

2009年的一天,村民李四在食堂里吃饭,吃着吃着,忽然想起了前几天跟邻居因宅基地打架的事。他越想越气,竟然气得心脏病发作,倒地身亡。李四的老 婆孩子、三姑六舅、街坊邻居听说李四死在了食堂,赶忙扛着锄头锹镐,跑到食堂,让食堂赔钱。他们说:“在你们食堂吃饭时死了,所以就是被你们给活活饿死 的!是你们没有尽到救饥扶饿的义务!”

瓷器村板报组在第一时间赶到现场,采访了李四的家属,连夜赶写了一篇催人泪下的板报文章。文章说:“李某,一个身板硬朗的汉子,谈笑风生地走着进了食 堂,一个小时后,却身躯冰冷地蒙着白被单,被抬了出来。他只是想来吃一碗白米饭,他的老婆孩子还在家里等着他。他的儿子明天就要满6周岁了,李某早就答应 儿子,要在家里陪他过6周岁生日,要送给他一本漫画书作礼物。然而,谁能想到,仅仅一顿饭的功夫,父亲与儿子,阴阳两隔。刚买来的漫画书还在李某的衣兜 里,还带着他的体温,但他再也不能亲手送给儿子了。他还有个12岁的女儿,正在上小学。李某是家里唯一的劳动力,他死后,谁来负担女儿的学费?恐怕女儿只 能辍学,去城里打工,用她那双稚嫩的小手去赚钱养家……”最后,文章义正词严地说道:“食堂,本来是救饥扶饿的神圣殿堂,现在却变成了要命的鬼门关,把顾 客活活饿死。厨师的道德何在?服务员的良心何在?呜呼哀哉!呀买代!”

板报发表几个小时后,黑板周围的墙面上就写满了村民们义愤填膺的跟帖。村民们说:“把厨师捆起来,也让他活活饿死!”“把服务员千刀万剐,以告慰冤死的顾客!”“所谓食堂,就是榨干你的钱再把你活活饿死的地方!”

九、天价芦笋

2010年初,村广播站的记者小刘为了搜集新闻素材,开始调查食堂饭菜的原料价格。终于,在一个偏僻的深山林区,他发现农民出售鲜芦笋的价格只要 0.1 元一斤,而一盘烧芦笋在瓷器村食堂里却要卖到10元。他敏感地意识到,这可能是个绝好的新闻素材!经过调查,他发现,农民以0.1元的价格把芦笋出售给本 村蔬菜商,蔬菜商以0.2元的价格出售给乡蔬菜站,蔬菜站以0.4元的价格出售给蔬菜商贸公司,蔬菜商贸公司以0.8元的价格发往各地的蔬菜商贸公司;食 堂本地的商贸公司以0.8元的价格购进后,以1.6元的价格出售给蔬菜批发站,蔬菜批发站以3.2元的价格出售给食堂;食堂制作烧芦笋这道菜时,还用到了 肉和蘑菇,除去肉和蘑菇之后,芦笋折合6.4元。

看着这些数据,小刘有些失望,因为每个环节的毛利率都是50%,食堂环节并不比其他环节的利润更大。而且,食堂还提供了高技术含量的烹饪和配套服务, 烧芦笋的利润还要用于补贴廉价饭菜的亏损。小刘又了解到,一个蔬菜推销员,收入相当于一个博士学历的厨师的几倍、十几倍,这也从侧面说明了,食堂应该不是 获利最多的环节。最后他还发现,食堂大多数饭菜的加价率没有芦笋这么高,芦笋只是少数特例。小刘不禁发起愁来,这稿子该怎么写呢?广播站站长听了小刘的汇 报之后,哈哈大笑:“这很容易写嘛!来,我教你。”

几天以后,题为《天价芦笋,百倍利润》的文章在村广播站播出了:“一斤芦笋的出厂价只要1角钱,但食堂卖给村民的价格却是100角!芦笋的价格暴涨了 100倍!这天价的芦笋,简直比黄金还要暴利,比贩毒还要暴利啊!看到如此确凿的铁证,我们终于知道‘吃饭贵’的原因是什么了!食堂本是公益机构,应以 ‘救饥扶饿’为天职,但如今却成了厨师、服务员、洗菜工们敛财致富的暴利机构,吃饭焉能不贵!”

这正义的声音,从村广播站的大喇叭里播出来,传到瓷器村的家家户户。村民们听到这“百倍利润”的芦笋,气得肺都要炸了,恨不能立刻把食堂砸了,把厨师、服务员、洗菜工们碎尸万段。

十、女工喝水330公斤

2011年,为了让村民们“明白消费”,村委会规定,食堂必须给顾客打印“收费明细”,要细到每种原料、每项服务。比如说,洗菜所用的水,不能直接摊 到菜价中,而必须单独列在“水费”一栏中。菠菜、油菜等绿叶蔬菜,按村委会规定,需要多次浸泡清洗,以便除去农药、化肥,因此用的水比较多,平均每盘菜要 用 5升水。

村里有个女工,在食堂吃了一个月的饭,每天都要点两盘炒菠菜,因此每天都会用10升左右的洗菜水。再加上炒菜做饭过程中用到的水,每天的“收费明细”上总共会列出11升水。一个月下来,就是330升。

村板报组的组长听说了这件事,赶忙责令板报员小张写一篇文章,报道一下。

小张犯了难,对组长说:“每天用11升水,其中10升是洗菜的 ,很正常的嘛,有什么可报道的?”

组长启发道:“洗菜用10升水很正常,但如果喝10升水呢?还正常吗?每天总共11升水,听起来不多,但一个月的加起来就是330升,就是330公斤!听起来多不多?一个女工的肚子里能装下330公斤水吗?”

小张听完之后,豁然开朗,赶忙跑回去奋笔疾书。不多时,一篇义正词严、文采飞扬的文章诞生了。村头板报刊载了这篇文章,标题叫做《女工在食堂“被喝 水”330公斤》。文章写道:某女工,仅仅是想吃一盘炒菠菜,但在最后结帐但时候,却看到收费明细清单上赫然写着“自来水330公斤”!一个女工的肚子里 能装下330公斤自来水吗?食堂的乱收费已经到了不顾常识、不知廉耻的地步!

正巧,村里的“老大妈合唱团”正在村头排练红歌。团长张大妈看到板报标题后,都没看正文,就把嘴一撇,评论道:“不用问,肯定是食堂乱收费!”旁边的李大妈、刘大妈、赵大妈、王大妈纷纷附和:“对!肯定是乱收费!”

孙大爷、钱大爷遛早,路过板报墙,看了板报之后,用拐棍指着食堂方向,气呼呼地说道:“食堂太不象话了!人怎么能喝下330公斤自来水?拿我们当傻子呢?我们的眼光可是雪亮的!”

十一、结局
村委会的大楼依然矗立着,村干部的生活依然滋润着。村民们依然自费掏钱吃饭,怨气冲天。食堂职工依然加班加点、累死累活、忍气挨骂。厨艺比较好的厨 师,大都辞职改行,或者去别的村子当厨师了。年轻人看到食堂里的工作状况和厨师的社会地位,也都不愿意学厨师专业。食堂里剩下的职工,因为待遇差、身体疲 劳、心情憋闷,工作积极性也不高。因此,食堂的服务水平越来越差,饭菜越来越难吃。由于工作太繁忙、太劳累,后厨和前堂都经常出错,比如把盐当成白糖、把 醋当成酱油、把菜上错桌、给顾客算错账。村民们当然因此更加痛恨食堂的厨师和服务员们。

村长的儿子在阿麦瑞克村读书毕业了,把户口留在了阿麦瑞克村。村长和媳妇带着金银细软,投奔儿子去了。跟村长有关系的人,诸如村长的小舅子、表弟、外 甥,村长老婆的“相好的”,以及村长老婆的“相好的”的“相好的”,都在村里的历次“民心工程”中发了大财,盖起了别墅,开上了豪车。

村民们依然觉得“吃饭难”“吃饭贵”。每次觉得心里堵得慌的时候,就跑到村头的板报墙前面,虔诚地拜读每天晚上准时更新的板报。读完板报,顿时觉得瓷 器村是世界上最幸福的村子,自己是世界上最幸福的村民。当然,村民们依然不能忘记那个可恨的食堂。在茶余饭后,村民们经常会骂上几句:“他娘的!砸烂这个 黑心食堂!打死这群黑心厨师!”

【转】为什么不应该安装铁道部12306订票网站的根证书

原文地址:http://www.jayxon.com/2012/01/12306-certificate/

原文标题:12306的证书问题

博主按:对于12306订票网站要求安装的所谓的“根证书”我其实并不想吐槽,因为我觉得吐槽不足以表达从见到它第一眼起至今一直以来的愤怒。对于了解HTTPS相关的一些信息安全知识的同学来讲大家都懂得这里面的利害关系,但对于不懂计算机的群众来讲,铁道部此举实属欺诈,可以说12306是货真价实的钓鱼网站。今日放假订票又在醒目的位置看到了要求安装“钓鱼证书”的指示,博主认为在当今坑爹的互联网环境下网民应该提高自身的知识与判断力,故网上觅得此文转载供大家科普。

=======================================================

这个网站最近相当的火爆,Alexa排名瞬间变成了全球几百名左右,不过这个网站有多烂也是有目共睹的,很多人说是人太多造成的,当然那是一个很重要的原因,但是还有很多问题是与人多少没有关系的。比如对非IE浏览器的兼容性问题、无处不在的验证码(登录要验证码,查询余票要验证码,提交订单还要验证码)、购票成功后那红色并且闪烁着的“牢记”两个大字让人感觉好像被骗了、注册时需要填写的信息过多(什么语音查询密码有必要非得填么?)、语音查询密码是明文保存的(在网页源代码就能看到)等等,我这里来谈一谈证书的问题。

大家都知道https的网页是加密的,是需要证书的,网购火车票的网址是http://www.12306.cn/mormhweb/kyfw/,这个是http的普通网页,没有加密,是明文传输的,不需要证书。但是他里面有个iframe,也就是嵌套了另一个网页,地址是https://dynamic.12306.cn/otsweb/,这里就是https的了。

但是如果使用Chrome、Firefox或者IE8、9等浏览器都会显示这个网站的证书有安全问题。因为dynamic.12306.cn使用的是SRCA颁发的证书,这个证书在我们的计算机中是默认不被信任的,也就是不安全的。

Chrome:

IE9:

什么是SRCA?SRCA就是Sinorail Certification Authority,中文名叫中铁数字证书认证中心,简称中铁CA。这是个铁道部自己搞的机构,相当于是自己给自己颁发证书,当然不会被信任。更多信息请见这个机构的网站

于是,12306就在首页显著位置标明:为保障您顺畅购票,请下载安装根证书。一般人如果看到这个肯定会按照要求下载安装的。下载后解压里面有个“SRCA根证书安装说明手册.doc”,这个doc格式我就先不吐槽了,还是先说说内容吧。

这个文档一开头就有这么一段话:

尊敬的用户:

您现在安装的是中铁数字证书认证中心(中铁CA,SRCA)的根证书,完成这个操作可以使您的购票体验更为顺畅,同时获得一个更安全的网络购票环境。中铁CA是由工业和信息化部审批通过的合法电子认证服务机构,该产品及相关操作不会对您的计算机构成危害,请您放心使用。

安装了你的证书会使我的网络购票更顺畅更安全?我怎么不知道证书还有这种神奇的能力?是不是Windows优化大师、360之类的软件都应该集成一个安装SRCA的证书的功能啊?

再看后面,“该产品及相关操作不会对您的计算机构成危害,请您放心使用。”怎么感觉好像是此地无银三百两呢?

玩笑话就说到这里吧,下面来说说安装了这个证书到底会有什么危害。

下面由于涉及到一些密码学的知识,限于篇幅和本人的表达能力,可能解释得不是很清楚,如果有什么不明白的地方建议学习一下这篇文章,图文并茂,解释得比较清晰。

如果你按照这个文档的步骤安装了SRCA的根证书的话,那么以后所有SRCA颁发的证书在你的电脑上都会被认为是安全的。这有什么危害呢?首先SRCA是一个体制内的部门,所以他完全有可能会被有关部门控制。如果有关部门利用SRCA的私钥伪造了一个Gmail的证书,然后有关部门再通过电信运营商或者某墙拦截下来你和Gmail服务器之间的所有通信,然后把自己伪造的证书发给你,由于你安装了SRCA的根证书,你就会认为这个证书是安全的,也就是说你就会以为你收到的内容是Gmail服务器发送的。这样有关部门就在你和Gmail服务器之间充当了一个中间人的角色。这样你和Gmail服务器之间的所有加密通信就都神不知鬼不觉得被有关部门监听了,他们就可以得到你的邮件的内容甚至还有可能得到Gmail的密码。这就是著名的中间人攻击(MITM)。

这里只是以Gmail为例,因为有关部门多次试图获得一些异见人士的Gmail邮件内容,就不详细说了。

说完了安装证书的危害,那么为什么不使用VeriSign这个受信任的机构颁发的证书呢?

有些人就开始出来为铁道部辩护了,说铁道部不愿意花钱买证书,或者技术人员提出了要购买证书的要求但是领导不懂这些所以不同意等等。

我最开始也觉得这个是有可能的,毕竟这是在天朝。但是后来我发现https://epay.12306.cn/这个完成订票后用来支付的二级域名就是用的VeriSign颁发的证书。那为什么登陆账号以及订票不使用这个VeriSign的证书呢?

由于我实在无法找出合理的解释,所以我只好认为是这样的:铁道部由于某个特殊的原因,希望大家在自己的电脑上面安装SRCA的根证书,但是他自己也知道使用自签名的证书是有危险的,不过登陆和订票部分只是涉及到用户的隐私问题而已,即使有安全问题也无所谓的,天朝的p民本来就没有什么隐私的。但是支付部分涉及到钱,如果出了事儿就比较麻烦,所以支付部分还是使用了VeriSign的证书。

【转】域控需要开放的端口

转载自http://yoozhu.com/?p=1727

 

在域环境里面,如果两个DC之间启动防火墙,就会出现无法同步的现象。

从服务器日志看到:文件复制服务有困难启用复制: 从 PDC 到 BDC 为 c:\windows\sysvol\domain 用 DNS 名称 pdc.xin***.com。FRS 将继续重试。

以下是您看到此警告的一些原因。

[1] FRS 不能从此计算机正确解析此 DNS 名称 pdc.xin****.com。

[2] FRS 不在 pdc.xin***.com 上运行。

[3] Active Directory 里此副件的拓扑信息还没有复制到所有域控制器。

这个事件纪录消息将每个连接出现一次。问题解决后,您将看到另一个事件日志消息, 它表明连接被建立。

譬如:在主域控制器以外的域控制器里面建用户,提示,windows无法验证用户名的唯一性,因为在全局编录联系下发生下列错误:该服务器不可操作

解决办法:

1、关闭域控制器的防火墙

2、或者开放域控制器所需端口

用户登录与验证身份时会用到的连接端口
用户登录时会用到以下的服务,因此如果用户的计算机与域控制器之间被防火墙隔开,就必须在防火墙开放这些服务的连接端口。
Microsoft-DS traffic: 445/TCP、445/UDP
Kerberos: 88/TCP、 88/UDP
LDAP ping: 389/UDP
DNS: 53/TCP、53/UDP
计算机登录与验证身份时会用到的连接端口
计算机登录到域控制器时会用到以下的服务,因此如果域的成员计算机与域控制之间被防火墙隔开,就必须在防火墙开放这些服务的连接端口。
Microsoft-DS traffic: 445/TCP、445/UDP
Kerberos: 88/TCP、 88/UDP
LDAP ping: 389/UDP
DNS: 53/TCP、53/UDP

建立域信任时会用到的连接端口
位于不同林的域在建立“显性信任(explicit trust)”关系时,会用到以下的服务,因此如果这两个域的域控制器之间被防火墙隔开,就必须在防火墙开放这些服务的连接端口。
Microsoft-DS traffic: 445/TCP、445/UDP
Kerberos: 88/TCP、 88/UDP
LDAP:389/TCPAK 636/TCP(如果使用SSL)
LDAP ping: 389/UDP
DNS: 53/TCP、53/UDP
验证域信任时会用到的连接端口
两个域内的域控制器在验证信任关系时会用到以下的服务,因此如果这两台域控制器之间被防火墙隔开,就必须在防火墙开放这些服务的连接端口。
Microsoft-DS traffic: 445/TCP、445/UDP
Kerberos: 88/TCP、 88/UDP
LDAP:389/TCPAK 636/TCP(如果使用SSL)
LDAP ping: 389/UDP
DNS: 53/TCP、53/UDP
Net Logon service 无法被锁定在固定的一个RPC连接端口,也就是它是使用动态的RPC连接端口,此时我们如何开放连接端口呢?还好动态的RPC连接端口可以被限制在一个范围内

AD数据复制需要的端口- –
RPC 终结点影射器:135/TCP,135/UDP
NetBIOS 名称服务:137/TCP,137/UDP
NetBIOS 数据文报服务:138/UDP
NetBIOS 会话服务:139/TCP
RPC 动态分配:1024-65535/TCP
Microsoft-DS:445/TCP,445/UDP
LDAP:389/TCP
SSL 上的LDAP:636/TCP
全局编录 LDAP:3268/TCP
SSL 上的全局编录 LDAP:3269/TCP
Kerberos:88/TCP,88/UDP
DNS:53/TCP,53/UDP
WINS解析(如果需要):1512/TCP,1512/UDP
WINS复制(如果需要):42/TCP,42/UDP
AD用户密码修改:464/TCP
详细内容参见:Windows 服务器系统的服务概述和网络端口要求

【转】清华梦的粉碎—写给清华大学的退学申请

效斐按:这篇文章很旧很旧了,但到今天才看到,并且到今天才知道这个人是许久以前在小虾blog上看到的《完全使用Linux工作》这篇经典文章的作者。当然那篇文章很有煽动性,Linux和Windows的平衡点我自能把握。而这篇确实反映了国内科研环境、学术氛围,esp.在计算机方面。收藏之。

Continue reading “【转】清华梦的粉碎—写给清华大学的退学申请”

【转载】蒙牛也做了一个艰难的决定。。。。。。。。。。。

蒙牛做了个艰难的决定,如果监测到用户胃里有伊利牛奶,将自动释放三聚氰胺。

阿迪做了个艰难的决定,如果检测到用户身上有耐克,衣服鞋自动变透视装。

安尔乐做了个艰难的决定,如果检测到身上有其他品牌的卫生巾将自动焚毁。

诺基亚做了个艰难的决定,如果探测到10米范围内有iPhone,将启动自爆程序,毁灭10米内一切物体。

麦当劳做了个艰难的决定:如果检测到用户身上有肯德基的优惠券将自动对所售汉堡进行焚毁处理。

惠普做了一个艰难的决定,如果局域网上有任何非惠普电脑存在将自动发起黑客攻击。

百度做出了个艰难的决定,如果检测到用户电脑里有谷歌公司的软件,将自动启动电脑硬盘自动格式化程序。

可口可乐做了个艰难的决定,如检测到冰箱里有百事可乐,可口可乐将自动爆炸。

东热终于做出了艰难的决定,如果检测到用户电脑存有1本岛的电影,电脑里所有片都将变成打码葫芦娃或新闻联播。

空空做出了一个艰难的决定,如果检测到你电脑里面有其他女优的影片,空空的作品将会打上马赛克。

mac os做了个艰难的决定 一旦检测到电脑里有window系统立马重启。

奔驰做了一个艰难的决定,如果检测到用户家有宝马,将自动变成C4炸弹。

康师傅做了个艰难的决定,如果检测到用户使用过统一,方便面里将没有调料包。

中石化做了个艰难的决定,如果监测到用户汽车油箱里有中石油,将自动释放电火花。

联通做了个艰难的决定,如果方圆百米内检测到有移动用户 将使这些用户不间断自动拨打110。

优乐美决定做了个艰难的决定,如果检测到用户胃里有立顿奶茶,将自动释放硫酸。

中华做了个艰难的决定,如果发现烟民嘴里有苏烟的味道,会自动转换成屁味。

电信做了个艰难的决定,如果监测到用户小区里有使用网通,将自动短路。

广电总局做了个艰难的决定,如果发现用户有不和谐物的,会自动转换成十年精华版新闻联播。

杰士邦做了个艰难的决定,如果监测到用户有使用杜蕾斯,将自动释放艾滋病毒。

迅雷做了一个艰难的决定,如果检测到用户电脑曾安装过快车,将拒绝下载教育片。

使用8.8.8.8依旧难逃DNS劫持厄运

Xiaofei留:因为今天尝试使用自己的SSH帐户架设socks5代理翻墙,结果发现华尔街日报可以访问,twitter、facebook却不能上。Google得到IE的socks代理是socks4,域名解析是不走代理的,登陆shell ping一下facebook,发现主机上得到的ip和我系统得到的ip不一致。这就意味着,我用的8.8.8.8同样遭到了DNS劫持,使用主机上得到的ip直接访问,果然能进去。

这样一来,8.8.8.8顶多图个好记了。

下面内容转自DNSPod官方Blog,DNS照劫不误。。

《我为什么不建议使用OpenDNS和Google Public DNS》

http://blog.dnspod.com/2009/12/why-not-opendns-and-google-public-dns/

 

看到标题肯定很多人就开骂了。为什么不用?用了解析速度快,能防ISP劫持,能翻墙,能这能那。真的是这样吗?其实在我眼中,OpenDNSGoogle Public DNS并不符合中国的国情,他们所作为买点的那些功能其实在国内一点用处都没有。

1.大家最关注的,翻墙,防止DNS被劫持。

资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果

正常请求一个被劫持的域名,当然是劫持没商量了

Sam@Bra:~$ dig hen.bao.li ; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;hen.bao.li. IN A ;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Dec 7 23:18:48 2009 ;; MSG SIZE rcvd: 44

Sam@Bra:~$ dig hen.bao.li

; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;hen.bao.li. IN A
;; ANSWER SECTION:
hen.bao.li. 85697 IN A 78.16.49.15
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Dec 7 23:18:48 2009
;; MSG SIZE rcvd: 44

然后再看用了Google Public DNS后,照样劫持你没商量

Sam@Bra:~$ dig @8.8.8.8 hen.bao.li ; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;hen.bao.li. IN A ;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15 ;; Query time: 75 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Mon Dec 7 23:20:58 2009 ;; MSG SIZE rcvd: 54

我们看看国外机器得出的真实结果

[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li ; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;hen.bao.li. IN A ;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44 ;; Query time: 252 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Mon Dec 7 23:25:12 2009 ;; MSG SIZE rcvd: 44

可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。

2.解析速度快

Google Public DNS解析速度是挺快的,但OpenDNS就未必了

Sam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com ; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.dnspod.com. IN A ;; ANSWER SECTION: http://www.dnspod.com. 600 IN CNAME http://www.dnspod.com.cdnudns.com. http://www.dnspod.com.cdnudns.com. 300 IN A 61.172.249.96 http://www.dnspod.com.cdnudns.com. 300 IN A 218.244.147.137 ;; Query time: 608 msec ;; SERVER: 208.67.222.222#53(208.67.222.222) ;; WHEN: Mon Dec 7 23:29:01 2009 ;; MSG SIZE rcvd: 101

3.最重要的问题,访问网站真的快吗?

相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。

大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。

网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。

智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。

但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。

返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。

本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。

拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果

Sam@Bra:~$ dig http://www.google.com ...... ;; ANSWER SECTION: http://www.google.com. 48102 IN CNAME http://www.l.google.com. http://www.l.google.com. 300 IN A 216.239.61.104

如果我用了OpenDNS的话,那么我得到下面的结果

Sam@Bra:~$ dig @208.67.222.222 http://www.google.com
......
;; ANSWER SECTION:
http://www.google.com.		30	IN	CNAME	google.navigation.opendns.com.

google.navigation.opendns.com. 30 IN A 208.67.219.230

google.navigation.opendns.com. 30 IN A 208.67.219.231

ping一下得出的IP地址,看看速度,其实并不快

Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes 64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms 64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms 64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms ^C --- 208.67.219.230 ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms

我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。

我网通DNS直接解析

Sam@Bra:~$ dig kaixin001.com
......
;; ANSWER SECTION:
kaixin001.com.		120	IN	A	220.181.100.31
kaixin001.com.		120	IN	A	220.181.100.32
kaixin001.com.		120	IN	A	220.181.100.33
kaixin001.com.		120	IN	A	220.181.100.34
kaixin001.com.		120	IN	A	220.181.100.35
kaixin001.com.		120	IN	A	220.181.100.30

如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP

Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ...... ;; ANSWER SECTION: kaixin001.com. 60 IN A 123.125.58.247 kaixin001.com. 60 IN A 123.125.56.246 kaixin001.com. 60 IN A 123.125.56.247 kaixin001.com. 60 IN A 123.125.56.245 kaixin001.com. 60 IN A 123.125.56.248 kaixin001.com. 60 IN A 123.125.59.20 kaixin001.com. 60 IN A 123.125.59.16 kaixin001.com. 60 IN A 123.125.58.248 kaixin001.com. 60 IN A 123.125.58.246 kaixin001.com. 60 IN A 123.125.58.245

中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网

网通直接查询,可以得到网通服务器的IP

Sam@Bra:~$ dig shooter.cn ...... ;; ANSWER SECTION: shooter.cn. 800 IN A 218.21.130.42
网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ...... ;; ANSWER SECTION: shooter.cn. 750 IN A 74.207.252.170

这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。

国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。

Using PHP with mod_fcgid

By Michael Stucki

The upcoming version 4.2 of TYPO3 will depend on PHP 5.2. Here is some help on migrating your server.

 

Intended Audience

This howto explains how to run PHP as a process which runs independently from Apache. It is written for server administrators who want to use a flexible and at the same time easy to manage PHP environment.

What is mod_fcgid

mod_fcgid is an Apache module. It allows execution of external programs who create web documents as their output. This procedure is well-known from CGI (Common Gateway Interface) which is often used in shared hosting environments, for example to run Perl scripts.

mod_fcgid was created as a binary compatible alternative to mod_fastcgi. Both extend the traditional CGI principle with the feature that they use persistent processes, managed by a server component. This means that the web server will not launch a new process for every request as it is the case with CGI. The speed gain is enormous.

Using PHP with mod_fcgid offers a full-featured PHP environment combined with all the features that mod_fcgid provides. This solution has a lot of advantages over the traditional way of running PHP on a web server, while the only disadvantage seems to be that it is a little bit more difficult to be set up.

Advantages of mod_fcgid

  1. Speed
    mod_fcgid seems to be as fast as the traditional mod_php Apache module. However, it also allows to be run on a multi threaded Apache server. For various reasons this still does not work reliable with mod_php4 / mod_php5.

  2. Configuration flexibility
    With mod_fcgid it is possible to run many different PHP versions on the same server, and even with multiple different users.

Disadvantages of mod_fcgid

  1. Installation is more complex
    Installation of PHP using mod_fcgid is probably more difficult than setting up mod_php5, mainly because there is only a few documentation about it that can be found. However, since you found this document, you may be lucky…

Installation

Prerequisites

This manual is designed for Debian Etch servers. It expects a server running Apache 2.x. Basically this should work equally for other systems – they probably just use different paths and package names…

Installation of packages

The following packages are required:

  1. php5-cgi
    This is the CGI binary of PHP5. It was compiled with FCGI support and works perfectly together with mod_fcgid.

  2. libapache2-mod-fcgid
    This is the FCGID module

  3. apache2-mpm-worker
    This is the multi threaded multi-processing module (MPM) for Apache2. It replaces apache2-mpm-prefork with is a single-threaded MPM and is required by mod_php4 / mod_php5. Of course these packages must also be removed.
    Keep in mind that you may want to make a backup of your current php.ini, because php5-cgi will set up a new configuration file.

    # apt-get -u install php5-cgi libapache2-mod-fcgid apache2-mpm-worker

Configuration

  1. Remove mod_php4 / mod_php5 if not already done

    # a2dismod php4
    # a2dismod php5

  2. Enable mod_actions and mod_fcgid

    # a2enmod actions
    # a2enmod fcgid

  3. Raise the communication timeout (= maximum execution time) for FCGI applications in /etc/apache2/mods-enabled/fcgid.conf by adding the “IPCCommTimeout” directive

    <IfModule mod_fcgid.c>
        AddHandler fcgid-script .fcgi
        SocketPath /var/lib/apache2/fcgid/sock
        
        # Communication timeout: Default value is 20 seconds
        IPCCommTimeout 60
        
        # Connection timeout: Default value is 3 seconds
        
        #IPCConnectTimeout 3
    </IfModule>

  4. Create a new file /etc/apache2/conf.d/php-fcgid.conf:

    <IfModule !mod_php4.c>
    <IfModule !mod_php4_filter.c>
    <IfModule !mod_php5.c>
    <IfModule !mod_php5_filter.c>
    <IfModule !mod_php5_hooks.c>
    <IfModule mod_actions.c>
    <IfModule mod_alias.c>
    <IfModule mod_mime.c>
    <IfModule mod_fcgid.c>
        # Path to php.ini – defaults to /etc/phpX/cgi
        DefaultInitEnv PHPRC=/etc/php5/cgi
        
        # Number of PHP childs that will be launched. Leave undefined to let PHP decide.
        #DefaultInitEnv PHP_FCGI_CHILDREN 3
        
        # Maximum requests before a process is stopped and a new one is launched
        #DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000
        
        # Define a new handler "php-fcgi" for ".php" files, plus the action that must follow
        AddHandler php-fcgi .php
        Action php-fcgi /fcgi-bin/php-fcgi-wrapper
        
        # Define the MIME-Type for ".php" files
        AddType application/x-httpd-php .php
        
        # Define alias "/fcgi-bin/". The action above is using this value, which means that
        # you could run another "php5-cgi" command by just changing this alias
        Alias /fcgi-bin/ /var/www/fcgi-bin.d/php5-default/
        
        # Turn on the fcgid-script handler for all files within the alias "/fcgi-bin/"
        <Location /fcgi-bin/>
            SetHandler fcgid-script
            Options +ExecCGI
        </Location>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>

  5. Next, create the directory which is chosen by the alias, and put in a symlink to the php5-cgi binary

    # mkdir /var/www/fcgi-bin.d/php5-default
    # ln -s /usr/bin/php5-cgi /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper

  6. Finally, restart Apache

    # /etc/init.d/apache2 restart

 

Additional configuration

It is also possible to run different versions of PHP, even with different users.

  1. Enable mod_suexec

    # a2enmod suexec

  2. Create a new user

    # adduser <username>

  3. For every instance of PHP, create a new subdirectory in /var/www/fcgi-bin.d/

    # mkdir /var/www/fcgi-bin.d/php<version>-<username>/

  4. Instead of creating a symlink, this time you need to add a new file “php-fcgi-wrapper” inside this directory

    #!/bin/sh
    # Wrapper for PHP-fcgi
    # This wrapper can be used to define settings before launching the PHP-fcgi binary.

    # Define the path to php.ini. This defaults to /etc/phpX/cgi.
    #export PHPRC=/var/www/fcgi-bin.d/php5-web01/phprc
    #export PHPRC=/etc/php5/cgi

    # Define the number of PHP childs that will be launched. Leave undefined to let PHP decide.
    #export PHP_FCGI_CHILDREN=3

    # Maximum requests before a process is stopped and a new one is launched
    #export PHP_FCGI_MAX_REQUESTS=5000

    # Launch the PHP CGI binary
    # This can be any other version of PHP which is compiled with FCGI support.
    exec /usr/bin/php5-cgi

  1. Make this script executable and change the user appropriately

    # chmod a+x /var/www/fcgi-bin.d/php<version>-<username>/php-fcgi-wrapper
    # chown <user>:<group> /var/www/fcgi-bin.d/php<version>-<username>/php-fcgi-wrapper

  2. Modify the Apache configuration, e.g. in /etc/apache2/sites-enabled/web01

    <VirtualHost *:80>
        Servername web01.myserver.com
        DocumentRoot /var/www/websites/web01/
        SuexecUserGroup <user> <group>
        Action php-fcgi /fcgi-bin/php-fcgi-wrapper
        Alias /fcgi-bin/ /var/www/fcgi-bin.d/php<version>-<username>/
    </VirtualHost>

    Notice: It is important that user and group are owned by the same user and group as defined for the wrapper script above.

  3. Restart Apache

    # /etc/init.d/apache2 restart

Appendix

Further reading

[1] Website of mod_fcgid: http://fastcgi.coremail.cn/

FAQ

How fast is it?

Compared to mod_php5 the speed seems to be almost equal, probably just a little bit slower.

Can I turn off the PHP parser for a specific directory?

Of course! You can simply disable the parser for directories. This is very useful for example to use WebDAV for editing PHP files. Using mod_php5 these files would be sent as plain HTML output:

<Location /dav/>
    RemoveHandler .php
</Location>

ChangeLog

Changes in version 1.0

  1. Initial version

About the author

Michael Stucki is the leader of the TYPO3 core team. He lives close to Basel / Switzerland. When he is not developing, he likes doing sports and travel around. Michael is working for snowflake productions, where this document was initially written as a help guide for their customers.

 

This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml

 

The content of this document is related to TYPO3 – a GNU/GPL CMS/Framework available from www.typo3.com

转帖:强帖……曾经的电脑高手,你们在哪????

1、很久以前,那还是我用win98的时候有次我系统崩溃了,因为我是电脑白吃,我朋友给我介绍了一个高手来帮我修电脑。 

他看了一下电脑,问我有没有98的盘,我说没有。 

他想了一下,叫我把固定电话拿给他,我想修电脑要电话干什么,但人家是高手,我也不好说什么,就把电话拔下来给他了。 

他把电话线空着的一头接在电脑的一个插孔内,然后进入了dos,然后就开始在电话上不停的按着键,他按键的速度非常快,但是只按0,1两个键,我搞不懂这有什么用,但也不敢问,看了半个多小时,他还是不停的按这两个键,我渐渐的有些困,我问他这东西要搞多久,他说要几个小时,我给他倒了杯茶,就一个人去隔壁睡觉了。 

醒来的时候,一看已经过了4个多小时,我起身到隔壁,看见他正在98里面调试,过了一会儿,他说,你试试,我坐上椅子用了一下,真的好了,我当时也不懂电脑,谢过人家就走了。 

后来我慢慢对电脑有了了解,终于了解,原来当时那位高手是用机器语言编了一个98系统,我后来问我朋友那位高手的下落,我朋友说前几年去了美国之后,杳无音讯…. 

2、很久以前,那还是我用winXP的时候有次我系统崩溃了,因为我是电脑白吃,我朋友给我介绍了一个高手来帮我修电脑。 

他看了一下电脑,问我有没有XP的安装盘,我说没有。 

他想了一下,叫我把一张空的DVD刻录盘和一根针拿给他,我想修电脑要刻录盘和针干什么,但人家是高手,我也不好说什么,就把DVD刻录盘拿一张来给他了。 

他把针头对着刻录盘戳,他戳的速度非常快,但是只戳深或浅,我搞不懂这有什么用,但也不敢问,看了半个多小时,他还是不停的戳着DVD刻录盘,我渐渐的有些困,我问他这东西要搞多久,他说要几个小时,我给他倒了杯茶,就一个人去隔壁睡觉了。 

醒来的时候,一看已经过了4个多小时,我起身到隔壁,看见他正在Xp里面调试,还装上了office、photoshop、迅雷、魔兽世界等软件……过了一会儿,他说,你试试,我坐上椅子用了一下,真的好了,我当时也不懂电脑,谢过人家就走了。 

后来我慢慢对电脑有了了解,终于了解,原来当时那位高手是针头刻了一个单面双层的DVD,在里面刻上了Xp、office、photoshop、魔兽世界的安装程序,我后来问我朋友那位高手的下落,我朋友说前几年去了美国之后,杳无音讯…. 

3、很久以前,那还是我用winXP的时候有次我不小心把D盘格了,因为我是电脑白吃,我朋友给我介绍了一个高手来帮我恢复数据。 

他看了一下电脑,问我有没有备份过Ghost,我说没有。 

他想了一下,叫我把一块磁铁拿给他,还问我D盘里有什么东西,我想修电脑要磁铁干什么,但人家是高手,我也不好说什么,就把磁铁给他了,还告诉他我D盘里全是火影忍者的动画。 

他把硬盘拆了,用磁铁在上面画圈,他画圈的速度非常快,但是只有碰到或不碰到,我搞不懂这有什么用,但也不敢问,看了半个多小时,他还是不停的在硬盘上画着圈,我渐渐的有些困,我问他这东西要搞多久,他说要几个小时,我给他倒了杯茶,就一个人去隔壁睡觉了。 

醒来的时候,一看已经过了4个多小时,我起身到隔壁,看见他正在D盘里面调试,里面全是火影忍者的动画片,过了一会儿,他说,你试试,我坐上椅子用了一下,真的好了,我当时也不懂电脑,谢过人家就走了。 

后来我慢慢对电脑有了了解,终于了解,原来当时那位高手是用磁铁直接在硬盘上写数据,凭着惊人的记忆力将火影忍者的动画片都写入了硬盘,我后来问我朋友那位高手的下落,我朋友说前几年去了英国之后,杳无音讯….

4、很久以前,那还是我在玩WOW的时候有次我不小心把60级T1的人物删了,因为我是游戏白吃,我朋友给我介绍了一个高手来帮我找回任务。 

他看了一下电脑,问我有没有找过客服,我说没有。 

他想了一下,叫我把一块石头给他,还问我人物什么职业,我想修复人物要石头干什么,但人家是高手,我也不好说什么,就把石头给他了,还告诉他我的人物已经有全套的T1。 

他把硬盘拆了,并把石头放上去用手在上面搓,他搓的速度非常快,但是只有搓到和搓不到,我搞不懂这有什么用,但也不敢问,看了半个多小时,他还是不停的在石头上搓,我渐渐的有些困,我问他这东西要搞多久,他说要几个小时,我给他倒了杯茶,就一个人去隔壁睡觉了。 

醒来的时候,一看已经过了4个多小时,我起身到隔壁,看见他正在打黑龙公主,身上已经有T2了,过了一会儿,他说,你试试,我坐上椅子用了一下,真的NB,我当时也不懂电脑,谢过人家就走了。 

后来我慢慢对电脑有了了解,终于了解,原来当时那位高手是用手搓炉石回档呢,凭着惊人的速度搓热了炉石恢复了人物,我后来问我朋友那位高手的下落,我朋友说前几年去了暴雪之后,杳无音讯….

5、很久以前,那还是我用电脑的时候有次我不小心把cpu烧坏了了,因为我是电脑白吃,我朋友给我介绍了一个高手来帮我修电脑。 

他看了一下电脑,问我有没有买新的cpu,我说没有。 

他想了一下,叫我把一张香烟纸拿给他,还问我cpu是多少的,我想修电脑要香烟纸干什么,但人家是高手,我也不好说什么,就把香烟纸给他了,还告诉他我cpu是inter2.8g的。 

他把cpu拆了,把香烟纸上的金属溥弄成一丝一丝的往cpu上粘,他粘的速度非常快,但是只有长的短的,我搞不懂这有什么用,但也不敢问,看了半个多小时,他还是不停的在cpu上贴香烟纸,我渐渐的有些困,我问他这东西要搞多久,他说要几个小时,我给他倒了杯茶,就一个人去隔壁睡觉了。 

醒来的时候,一看已经过了4个多小时,我起身到隔壁,看见他正在调试,居然cpu已经弄到4.0g,过了一会儿,他说,你试试,我坐上椅子用了一下,真的好了,那个速度才叫速度,以前的简直叫蚂蚁爬,我当时也不懂电脑,谢过人家就走了。 

后来我慢慢对电脑有了了解,终于了解,原来当时那位高手是用锡纸直接在cpu上做电路,凭着惊人的记忆力将烧掉的cpu重新排了一个微电路,我后来问我朋友那位高手的下落,我朋友说前几年去了美国之后,杳无音信