Ubuntu下使用Subversion(SVN)来管理Nginx网站发布

这里我将讲解如何利用SVN来管理网站的发布,这次环境仍然是Ubuntu,预装了SVN和Nginx,SVN服务已经启动,版本库已经建立并完成项目提交。

假设版本库路径为/var/lib/svn/project1,web发布路径为/srv/webroot/project1。

当我们在客户端将Web项目代码提交(commit)到project1代码库中时,如何自动更新/srv/webroot/project1的Web发布路径的内容呢?

首先,我们需要checkout一次,把库的文件checkout到Web路径下:

svn co svn://localhost/project1 --username bob --password 123456

其次,修改/var/lib/svn/project1/hooks/post-commit,如果没有则建立一个:

#!/bin/sh
export LANG=en_US.UTF-8
svn up /srv/webroot/project1 --username bob --password 123456 --no-auth-cache

注意–no-auth-cache,否则会提示验证信息ATTENTION! Your password for authentication realm导致执行失败。

最后,为post-commit文件增加执行属性:

chmod +x post-commit

完成上述步骤后,试试从客户端提交代码到版本库中,看看Web内容是不是也改变了?

Ubuntu不使用Apache架设Subversion(SVN)服务器

低配置的Ubuntu服务器,想架设个Subversion(SVN)服务器用来托管部分代码,服务器上原先装有Nginx,故不想安装Apache,操作过程总结如下。

  1. 安装Subversion工具
aptitude install subversion subversion-tools
  1. 建立SVN仓库,创建名称为project1的项目
mkdir /var/lib/svn 
svnadmin create /var/lib/svn/project1
  1. 修改配置文件/var/lib/svn/project1/conf/authz,添加授权认证信息

比如将bob加入管理员组,并对其添加读写权限,内容如下:

[groups]
admin = bob #将bob添加到admin组

[/]
bob = rw #成员bob对/目录的权限:r读,w写
  1. 修改配置文件/var/lib/svn/project1/conf/passwd添加用户密码
[users]
bob = 123456
  1. 修改配置文件/var/lib/svn/project1/conf/svnserve.conf
anon-access = none
auth-access = write
password-db = passwd #指定密码文件
authz-db = authz #指定授权认证文件
realm = My Project1 repository
  1. 临时启动svnserv服务程序。
svnserve --daemon --listen-port 3690 --root /var/lib/svn

这里也可以通过–listen-port参数指定监听端口。

  1. 首次提交项目文件,假设我们的项目文件临时存放于/tmp/project1里,那么命令可以如下:
svn import /tmp/project1 svn://localhost/project1 -m "Initial import"

当出现“Committed revision 1”时说明首次提交完成。

到第7步完成时,说明我们的SVN仓库已经建立,并且可以使用了,我们可以在客户机上尝试checkout了。

隐藏Nginx和PHP版本号

配置完一台服务器后,并不是就可以高枕无忧了,前不久刚刚爆发的PHP 5.3.9版本的漏洞也搞得人心惶惶,所以说经常关注安全公告并及时升级服务器也是必要的。

一般来说,黑客攻击服务器的首要步骤就是收集信息,比如说你的软件版本,这些将成为下一步有针对性攻击的依据。所以说一定程度的隐藏这些信息就显得非常有必要了,本文将简单介绍如何在网络上隐藏Nginx版本号以及PHP的版本号。

1.隐藏Nginx版本号,Nginx的版本号主要在两个地方会有,一个是HTTP header,有个Server:nginx/1.x.x类似会暴露Web服务器所用软件名称以及版本号,这个也是大多数Web服务器最容易暴露版本号的地方,第二个地方是Nginx出错页面,比如404页面没有找到等,这是如果用户没有指定页面的话,那么Nginx自己的页面会有版本戳记。通过在配置文件的http节配置server_tokens off来达到我们目的。

2.隐藏PHP的版本号,将expose_php = On改为expose_php = Off就搞定了,当然,对于Apache服务器还有另外一个方法可以直接尝试在.htaccess文件中Header unset X-Powered-By,删除X-Powered-By节,不过我还是建议改动php.ini的expose_php。

Windows7的PAE(物理扩展内存)开启与关闭方法

1、客户机开启超级用户。

2、然后在开始=》运行=》输入cmd,然后输入以下命令即可开启或关闭PAE模式。

::开启PAE模式
bcdedit /set PAE forceenable
::关闭PAE模式
bcdedit /set PAE forcedisable

注意:该命令需要在管理员状态下运行。

3、执行完命令后,可以通过继续输入bcdedit来查看PAE开启状态。

4、此方法同样适用于 Windows Server 2008

Linux From Scratch(LFS)详解

什么是LFS

LFS──Linux from Scratch,是一个教科书项目的名称,由 Gerard Beekmans 所发展。这个项目不依赖任何发行版,完全从网上可以下载源代码,定制编译成完整的Linux操作系统。尽管目标是排除对特定发行版的依赖,但项目除了依赖软件组件的源代码外,仍然提供了少量启动脚本用以控制系统的启动。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的Linux,不单单是个性的桌面。目前最新版本为6.6。

LFS 有什么优势呢?现在看来,它可以提供最快和最小的Linux。但是最大的优势就是,安装LFS是菜鸟变成高手的捷径。第一次安装,需要按照LFS文档安装,如果在此期间所有文档内容你都认真的阅读,保证你受益匪浅;然后发现很多地方可以不按照别人的老路操作,这个时候用自己的方式参考第一次安装的经验,再一次建立Linux,完成的时候,你会发现自己已经再也不是Linux菜鸟了。

安装两次LFS,总共要用去你10天左右的业余时间(说不定10天还装不完)。但是这10多天将是你Linux水平进步最快的一个多礼拜。

当然,不是说LFS要装两遍,也没有说,一定要装那么长时间。如果闷头装,什么都不管,大概一共十个小时就有一个高效的完整的Linux系统呈现在你面前。(根据机器速度不同时间上会有差异)

最后,在我们开始之前,你想一下,丰富的 Linux 知识对于你来说比在Mplayer上看片,用KDE作PP桌面等来说是不是更重要。如果是,我们期盼你成功完成LFS系统加入我们LFS爱好者的行列!

LFS详解

LFS存在的一个重要原因是可以帮助人们学习Linux系统的内部是如何工作的。构建一个LFS系统会帮助演示是什么使Linux运转,各种组件如何在一起互相依赖的工作。最好的事情之一,是这种学习的经历给予的是一种能力,能够定制满足您自己需要的Linux。

LFS 的一个关键的好处是它让用户对于系统有更多的控制,而不是依赖于某些人的Linux 实现。在 LFS 的世界里,你是坐在司机的位置,掌控系统的每一个细节,比如目录层次和启动脚本配置。你也能掌控程序在哪里,为何,以及怎样被安装。

LFS 的另一个好处是可以创建一个非常紧凑的 linux 系统。当安装一个常规的发行版时,人们经常要被迫安装一些可能永远不会用到的程序。这些程序浪费宝贵的磁盘空间,或更糟的是占用 CPU资源。要构建一个少于100MB的 LFS 系统不是一件难事,这相比较目前大多数的发行版要小很多。这听起来是不是仍然占许多空间?我们中一些人的工作是创建一个非常小的嵌入式的 LFS 系统。我们成功的构建了一个系统,在只运行 Apache 服务器的情况下,大约占8MB磁盘空间。进一步的缩减能够减至5MB或更少。你用一个常规的分发版本试试?这也只是设计你自己的 linux 所带来的好处之一。

我们可以拿 linux 发行版与快餐店出售的汉堡打比喻,您不能决定您应该吃什么。相反,LFS 没有给您一个汉堡。而是给您一张制作汉堡的配方。用户可以查阅配方,减掉不想要的配料,增加你自己的配料以增强汉堡的口味。当你对配方满意的时候,开始去做准备。您可以采用确定的方式:或烤,或烘,或炸,或焙。

另外一个比方是把 LFS 与建筑房子比较。LFS 提供房子的框架蓝图,但是需要您去建筑它。LFS 包含了在这过程中调整计划的自由,定制满足用户的需要和参考。

用户定制的 linux 系统的另一个好处是安全性。通过从源码编译整个系统,您能够审查任何东西,打上所有的安全补丁,而不需要等待别人去编译好修补了安全漏洞的二进制包。除非是您发现并制作的补丁,否则您得不到任何的保证,新的二进制包是否正确编译或修正了问题。

相关项目
该项目有很多相关子项目:

Beyond Linux From Scratch(BLFS)标准LFS仅仅安装了足够让系统启动的基本软件,以及使新系统能够编译新软件包的开发工具。BLFS包括了更多的软件包,且都有相应指导。

Crosss Linux From Scratch(CLFS)为需要进行交叉编译(即在一个平台上编译另一个平台的代码)的用户提供指导,正式版本为1.0,另有两个变种

CLFS Sysroot 采用Sysroot的方法来进行编译,好处是软件包的编译次数可以减少,坏处是不能支持在编译后对软件进行测试,必须要启动到目标平台上才能测试。
CLFS Embedded 一般用于极小系统以及嵌入式系统。为此,它使用uclibc而不是一般LFS使用的glibc。

Automated Linux From Scratch(ALFS)标准LFS只是一本书,用户需要根据书上的指引下载软件包并手动输入指令进行编译。ALFS子项目提供了把这一切自动化的脚本。

Hardened Linux From Scratch(HLFS)这个子项目致力于打造在安全性上无懈可击的Linux系统。

Hints 收集一些解释性、增强性的文档,以协助用户。

LiveCD 利用LFS的方法生成可以自行启动并安装了足够软件的CD,可以用来在空机器上安装LFS,或者直接在其上运行应用。

Patches 由于软件之间的依赖关系,在升级软件包之后可能会导致LFS的过程出现故障。Patch项目致力于研究最新版本的软件之间的互动,并提供一些补丁修复这些故障。

除此之外,该项目另有一个名为CBLFS(Community Driven BLFS)的项目,该项目实际是一个Wiki网站,依靠网友的自发贡献来提交各种软件包的安装方式。

步骤

尽管目标是安装一个与现有发行版毫无关系的系统,安装LFS仍然不能无中生有,而必须要有一个可以编译软件包的运行中的Linux系统。这个系统一般称为宿主系统。对于新机器,可以选用LFS LiveCD项目提供的光盘操作系统作为宿主。在宿主操作系统上安装LFS,需要的步骤如下:

  1. 对硬盘分区,添加用于安装LFS的用户和组(LFS教科书第2章)
  2. 下载所有需要的软件包源代码(LFS教科书第3章)
  3. 准备开发环境(LFS教科书第4章)
  4. 构造一个基本开发环境(称为工具链)(LFS教科书第5章)
  5. 构造完整的目标系统(LFS教科书第6章)
  6. 配置系统启动脚本(LFS教科书第7章)
  7. 启动系统(LFS教科书第8章)

成长就是成熟的过程

《人不成熟的六个特征》

人并不因为你的年龄大而成熟,也不因为你的年龄小而不成熟,只要你一次次面对挑战、一次次克服困难你才能逐步走向成熟走向成功。不愿付出,不原等待,轻言放弃,放弃者永不成功,成功者永不放弃!

一、立刻要回报,穷人心态

(1)每碰到一个机会他们总是看到机会中的困难,总说不!

(2)总想一夜暴富,容易得到的东西决不是有价值的,有价值的东西决不会让你轻而易举得到,奥运会冠军是一夜成名的吗?他们只不过是在比赛中得到了人们对他们训练成绩的肯定而已罢了!《富爸爸商学院》中说,在美国凡中彩票超一百万的,五年后他们的生活还不如以前。

二、不自律

(1)不愿改变自己的旧有的思考方式
人与人之间最根本的区别就是思考方式的差别,我们要想成为成功人士,就必须先改变我们的思考方式,然后改变我们的行为方式,做一件事你光看到困难,你连想都没想能成功,你会成那不成了奇迹?旧有的思考方式:立刻要回报、穷人心态、遇到困难就放弃,持之以恒的力量是无坚不摧的!旧有的行为方式:看电视、喝酒、无聊的应酬、打牌、下棋。

(2)喜欢在背后议论别人
这种人被我们称为闲人,对这样的话我们不听不说不传,即便你议论的话是对的对你也没一点好处!

(3)经常抱怨、行为消极
人不可能是完美的,或多或少的存在缺点,只要不是原则问题,我们要看他们好的一面,更重要的是你不能老是看到别人的缺点,即便你的抱怨是对的,你也不要抱怨,因为成功者绝不抱怨,抱怨者永不成功!

(4)拒绝学习、拒绝改变
二十一世纪这个世界最显著的三个特怔是:速度、多变、危机,我们的对策是:学习、改变、创业,你学的越快,你改变的速度越快,你成功的也就越快当今企业的竞争其实就是人才的竞争,人才的竞争就是学习力的竞争。现在是与狼共舞的时代,你要想成功,你首先得成为一条狼!现在的富翁,再过五—十年有80%将走向破产,你要想成功,你必须学习。
学习改变=成功

三、经常被情绪所左右

世界上多少的悲剧、多少的恐惧都是人与人之间不能容忍发生的,有些人遇到一点事就火冒三丈,怒发冲冠。
成功的五大因素中第一大因素就是能够控制自己的情绪,第二大就是健康,第三是时间管理,四是财务管理,五是良好的人际关系。

处理好人际关系的三大秘诀:
(1)关心别人胜过关心自己,
(2)三不三多,即不指责、不抱怨、不批评,多赞美、多表扬、多包容,
(3)善于倾听、善于沟通!无知而热情胜过博学而冷漠!

四、不愿学习、自以为是,没有归零的心态

中国国民素质与美日等发达国家相差五十年,
第一个指标是工程师、医生所占比例,
第二个是国民教育投资比例,
第三个是国民投入的学习时间,凡是不学习的人都会自以为是,凡是自以为是的人都很难成功

人学习要经历四个阶段:
不学: 不知己不知
学了一点: 知之己不知
再学一阶段;知之己知之
最成熟阶段:不知己知之
所以归零的心态对每个人都很重要,一个海绵如不把原来的水挤干,就不可能吸很多的水,谁归零的越快越好,谁就会越能走向成功。

五、判断事物靠直觉,而不是以事实为依据

在我们生活中有很多人说话做判断不是事实,而是靠直觉:我以为。。。我认为。。。。

六、做事不靠信念、靠人言

人生为自己活着,而不是为别人活着,别人的嘴长在别人的身上,别人想怎么说就怎么说,你管不了,没有人会为自己的错误的指导而承担责任,而现实中许多人就是好为人师。

这个世界的人群中一边是5%,一边是95%,5%的成功人士在没有成功之前都被人称为傻子疯子,无线电发明人甚至被当着疯子抬到精神病院去。

《人战胜不成熟的十大战役》

一、去掉假积极的面具

只学习不行动,每天看书参加会议;
只说不干,我要行动……我要……,就是不做;
知道却做不到,知到对他很重要,就是不去做,知道做不到等于不知道!
成功的最大的秘诀就是行动、行动、行动、、、想能想死人,做是做不死人的,跟着行动走感觉自然来

二、走出人生的怪圈

(1)在外面受气,回家拿家里人杀气,这是一种无能的表现
(2)别人错怪了你,你要十倍的报复

三、常选择逃避

遇到困难不是想办法去克服困难,而是逃避,
林肯说:你今天逃避了困难,明天你还会遇到,
你要离开让你舒适的环境和思考方式,因为舒适的环境会让你不愿改变,
你如果不愿改变你就会被改变!
先苦后甜,苦也是甜;先甜后苦,甜也是苦
你年轻时闲乐,你年老了就没有乐的!
如果结果是快乐的,你要百般忍受眼前的痛苦;如果结果是痛苦的,你要竭力避开眼前的快乐!
今天你看什么样的书听什么样的磁带和什么样的人在一起,就决定了五年后你将成为什么样的人

四、丢掉你的幻想,树立你的梦想

天真、不切实际就是幻想,深藏在内心深处最深切的渴望就是梦想,梦想是可以实现的,人类所有的成就都是梦想成真的结果,在我们的生活中许多人是没有梦想的,一个人有了梦想之后就会不断的前进,不断的前进,他是不管别人怎么看的

五、不要对改变的力量产生一丝一毫的怀疑

我们之所以不成功、不富有,是因为我们思想不富有,你要想成功,必须改变,只要你每天进步一点点,一个月,一年、五年、十年后你会有多大的变化呢?

六、不让生活的琐事充实你的大脑

我们每个人都有这四类事:重要的、紧急的、不重要的、不紧急的

A类事:重要的紧急的,今日事今日毕,立即去完成紧急的不重要,你要立断!

B类事:重要的不紧急,你要制定相应的程序, 不重要不紧急的称为琐事,你要把它立即踢出我们的生活圈!

送大家一句话:每个人都要培养有生产力的习惯,我们要把我们的经历、时间、资金花在最有生产力上面,我们的习惯应给我们增加资产而不是负债。

七、不要忽视时间的流失

很多人都说;哎呀,我才二十岁,我才三十几岁,这个世界最珍贵的资产就是时间,而很多穷人都在浪费自己的时间,你要拥有效率手册,每天晚上制定明天要做的事,这样你每天能节约2-3个小时,一个星期你就比别人多出5-7天

八、不要逃避现实而要敢于面对失败

不是你无能,你也无需自悲,《商学院》说:我们传统的学校、家庭教育过于强调了失败,其实这个世界很多杰出人物都犯了无数次错误,你千万不要怕犯错误,你犯错误多了,你就成功了,成功者都能够接受自己的失败和错误收拾残局,他们视困难为挑战。

九、 在懒惰毁掉你之前先毁掉懒惰

人不成功有三个原因:对成功本能的恐惧,懒惰,坏习惯
懒惰:思想懒惰,行为懒惰,当我们远离了懒惰,当我们远离了恐惧,当我们改变了坏习惯,我们就远离了贫穷,远离了失败。

十、不要以自我为中心

关心别人胜过关心自己,你只有帮助了别人成功你才能成功,当我们遇到问题时,你要从三个方面去考虑,首先你要站在别人的立场上,然后是事情的本身,最后才是你自己!

未来的八种人将被社会淘汰

近日,国家人事部行政科学研究所副所长吴德贵指出,随着入世,在某些行业和领域高素质人才“走俏”的同时,有“八种人”将会“滞销”,他们在激烈的竞争中,将遭遇麻烦事,成为“困难户”。这“八种人”是:

第一种、知识陈旧的人。如今,知识更新的速度越来越快,知识倍增的周期越来越短。20世纪60年代,知识倍增,周期是8年,70年代减少为6年,80年代缩短成3年,进入90年代以后,更是1年就增长1倍。人类真正进入了知识爆炸的时代,现有知识每年在以10%的速度更新。生活在这样一个时代,任何人都必须不断学习,更新知识,想靠学校学的知识“应付”一辈子,已完全不可能了。吴德贵说,过去,我们对“终身教育”的理解是,一个人从上学到退休,要一直接受教育;现在,这一概念应当重新定义,终身教育,从摇篮到坟墓,应贯穿人的一生。他认为,入世后,那些“抱残守缺”、知识陈旧的人,将是职场中的麻烦人。

第二种、技能单一的人。吴德贵认为,只会做一种工作,换一个岗位就不“灵光”的人,入世后日子会不好过。随着入世,竞争会越来越激烈,就业?下岗?再就业?再下岗,将成为司空见惯的事。要想避免在职场中成为“积压物资”,唯一的办法就是多学几手,一专多能。只有这样,才不至于“一棵树上吊死”,一旦下岗,心中不慌,“此处不留爷,自有留爷处”。如果说,入世后,复合型人才大受欢迎的话,技能单一的人遭到冷遇,就是非常自然的事了。

第三种、情商低下的人。智商显示一个人做事的本领,情商反映一个人做人的表现。在未来社会,不仅要会做事,更要会做人。情商高的人,说话得体,办事得当,才思敏捷,“人见人爱”。情商低的人,不是“不合群”,就是“讨人嫌”,要不就是“哪把壶不开提哪把”,这就麻烦了。现在,在国外广为流传这样的话:“靠智商得到录用,靠情商得到提拔。”一旦进入一个单位,能不能“工作顺利”、“事业有成”,情商是一个关键因素。吴德贵向职场中人提出善意忠告,在不断提升自己的能力时,还应不断培养自己的情商。否则,“身怀绝技”,也难免“碰壁”。

第四种、心理脆弱的人。遇到一点困难,就打“退堂鼓”,稍有不顺利,情绪就降到“冰点”,这样的人,在入世后的激烈竞争中必然日子不好过。由于生活节奏加快,竞争压力加大,有“心理障碍”或“心理疾病”的人逐渐增多,神经紧张、心理脆弱成了都市“现代病”。因此,入世后,无论在职者,还是求职者,都应该增强心理承受能力,提高“抗挤”、“抗压”素质。吴德贵说,在当今社会,没有一股不服输的“犟劲”,没有一种不怕难的“韧劲”,是不行的。

第五种、目光短浅的人。鼠目寸光难成大事,目光远大可成大器。有句话说得好:“你能看多远,你便能走多远。”一个组织的成长,需要规划,一个人的成长,需要设计。吴德贵说,有生涯设计的人,未必肯定成功,没有生涯设计的人,一定很难成功。“过一天算一天”,“哪里黑哪里住”,只看见鼻尖下边一小块地方的人,现在“不吃香”,入世后更“不吃香”。

第六种、反应迟钝的人。当今社会,“迟钝”就会“迟缓”,落后就要挨打。过去是“大鱼吃小鱼”,如今是“快鱼吃慢鱼”。入世后,一个人如果“思维”不“敏捷”,“反映”不“快速”,墨守成规,四平八稳,迟早会被淘汰。

第七种、单打独斗的人。“学科交叉、知识融会、技术集成”的现实告诉我们,在当今这个国际经济大循环的世界里,“孤胆英雄”的时代已经过去,个人的作用在下降,群体的作用在上升。特别是在入世后,要成就一项事业,靠个把人、少数人是不行的,需要一支队伍,一个组织,一个群体的共同奋斗,需要众多人智慧碰撞,团队合作。吴德贵说,“跑单帮”难成气候,“抱成团”才能打出一片天地。

第八种、不善学习的人。有些人虽然也想学习,但是不知道学习的方法,不掌握学习的技术。吴德贵认为,这种人入世后肯定“吃亏”。处在当今这个学习型社会里,人与人之间的差异,主要是学习能力的差异;人与人之间的“较量”,关键在学习能力的“较量”。过去,我们把不识字称之为“文盲”,未来学家托夫勒说,未来的“文盲”是想学习而不会学习的人。

鲜花和掌声从来不会赐予守株待兔的人,而只馈赠给那些风雨无阻的前行者,空谈和阔论从来不会让你的梦想成真,不是你能不能,而是你要不要,只要你一定要,你就一定能成功。

知识改变命运,网络改变生活,一生的好朋友,事业的好伙伴。互联网时代使我们拥有一个共同的梦,让我们携起手来共创美好的明天。努力吧!

谷歌制图服务(Google Chart)接口生成二维码

Google公布了制图服务(Google Chart)的接口,这项服务用起来相当简单,只使用浏览器就可以用来为统计数据自动生成图片。

目前谷歌制图服务提供折线图、条状图、饼图、Venn图、散点图、二维码图等。下面我们来看下如何使用这个简单的服务来生成二维码。

接口地址 http://chart.apis.google.com/chart?chs=宽高值x宽高值&cht=qr&chld=等级|边距&chl=内容

参数说明:

宽高值:生成二维码尺寸,单位是像素,目前生成的二维码都是正方形的,所以两个宽高值都设置为一样的值

等级:四个等级,L-默认:可以识别已损失的7%的数据;M-可以识别已损失15%的数据;Q-可以识别已损失25%的数据;H-可以识别已损失30%的数据

边距:生成的二维码离图片边框的距离

内容:生成二维码的内容,但一定要URLENCODE

下面给一个JS生成二维码地址的函数

function qrcode(data, size, level, margin) {
    size = size || 320;
    level = level || 'L';
    margin = margin | 0;
    return [
        'http://chart.apis.google.com/chart?cht=qr',
        '&chs='+size+'x'+size,
        '&chld='+level+'|'+margin,
        '&chl='+encodeURIComponent(data)
    ].join('');
}
//测试
var url = qrcode('http://www.rehiy.com/post/748');
window.location.href = url;