2013年2月

这里我将讲解如何利用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服务器,想架设个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了。

配置完一台服务器后,并不是就可以高枕无忧了,前不久刚刚爆发的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。

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

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

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

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

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

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

什么是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章)