<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Boulevard Of Broken Dreams &#187; 服务器</title>
	<atom:link href="http://www.ray77.com/tag/%e6%9c%8d%e5%8a%a1%e5%99%a8/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ray77.com</link>
	<description>Walking alone ... Waiting alone ...</description>
	<lastBuildDate>Mon, 10 May 2010 14:24:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Windows 2003 搭建虚拟主机服务器</title>
		<link>http://www.ray77.com/windows-2003-build-virtual-host-server.html</link>
		<comments>http://www.ray77.com/windows-2003-build-virtual-host-server.html#comments</comments>
		<pubDate>Sun, 22 Feb 2009 14:47:59 +0000</pubDate>
		<dc:creator>Rock</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://www.ray77.com/windows-2003-%e6%90%ad%e5%bb%ba%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e6%9c%8d%e5%8a%a1%e5%99%a8.html</guid>
		<description><![CDATA[Windows 2003 Build Virtual Host Server
　　一直想找一份详细的windows server 2003搭建Web服务器的教程，这篇文章讲得比较基础，也比较详细。同时希望能有份教程把服务器的配置与机房的管理的专业教程，Rock很有兴趣自己购买台服务器搭建Web、FTP、DNS以及邮件的服务器然后放在机房里。同时还希望能够搭建自己的LAMP服务器主机&#8230;哇&#8230;那种感觉绝对是超级无敌爽的&#8230;废话不多说了，对win服务器感兴趣的朋友可以看下这份教程。
　　随着Internet越来越普及，各种各样的虚拟主机也越来越多，由于虚拟主机需要同时向大量不同的用户提供安全的网络应用环境，因此搭建一个虚拟主机平台除了需要架设WEB和FTP服务器， 还涉及到一些虚拟主机环境所特有的问题。以下就对这些特有的问题进行归纳和分析。我个人认为在建立虚拟主机时主要需要注意以下三个大方面:
　　1.用户与磁盘空间和域名的绑定;
　　2.用户使用磁盘空间的容量限制(磁盘配额);
　　3.IIS和用户环境的安全问题(我使用的是Windows Server系统);
　　下面我就以这三个方面在Windows 2003 Enterprise Server具体如何实现做一个详细的介绍。

　　一、用户与磁盘空间和域名的绑定
　　先打开计算机管理(要是服务器已经升成为AD模式，就打开Active Directory用户与计算机)，点击展开本地用户和组，右键单击用户模块分别创建两个用户帐号。我这里建立的用户帐号依次为test1、test2。注意，为了安全考虑，请在组的模块中新建一个组。把用于虚拟主机的用户归纳到里面，并把用户原来隶属于的User组删除。(作为一个称职的管理员，需要注意的小细节是很多的，不然一个错误的细节就会引起灾难)如图1：
图1：建立虚拟主机的用户组
　　建立好帐号后，就在FTP空间目录下先建立一个LocalUser文件夹。然后对应所使用的帐号建立子文件夹。如:要是FTP空间指定的是D: WEB_Space文件夹，那就在这个文件夹下创建一个LocalUser文件夹。接着建立两个子文件夹:test1、test2，如图2：
图2：建立LocalUser文件夹
　　由于刚才我们建立用户帐号时，把它们单独的归纳到一个组中，这时就需要在FTP空间根目录属性的安全选项卡中把这个组添加进去，用户将无法通过FTP访问。如图3：
图3：设置用户组权限
　　接着我们需要建立FTP 用户隔离站点。这个功能是以前版本的IIS中FTP站点所没有的，FTP 用户隔离为 Internet 服务提供商 (ISP) 和应用服务提供商提供了解决方案，使他们可以为客户提供上载文件和 Web 内容的个人 FTP 目录。FTP 用户隔离通过将用户限制在自己的目录中，来防止用户查看或覆盖其他用户的 Web 内容。
　　因为顶层目录就是 FTP 服务的根目录，用户无法浏览目录树的上一层。在特定的站点内，用户能创建、修改或删除文件和文件夹。FTP 用户隔离是站点属性，而不是服务器属性。无法为每个 FTP 站点启动或关闭该属性。所以在建立FTP站点的时候就应该选择好，不然站点建立以后，将无法修改。
　　FTP 用户隔离共有三种模式:
　　不隔离用户:该模式不启用 FTP 用户隔离。该模式的工作方式与以前版本的 IIS 类似。由于在登录到 FTP 站点的不同用户间的隔离尚未实施，该模式最适合于只提供共享内容下载功能的站点或不需要在用户间进行数据访问保护的站点。
　　隔离用户:该模式在用户访问与其用户名匹配的主目录前，根据本机或域帐户验证用户。所有用户的主目录都在单一 FTP 主目录下，每个用户均被安放和限制在自己的主目录中。不允许用户浏览自己主目录外的内容。如果用户需要访问特定的共享文件夹，您可以再建立一个虚拟根目录。该模式不使用 Active Directory 目录服务进行验证。 注意 当使用该模式创建了上百个主目录时，服务器性能会下降。
　　用 Active Directory 隔离用户:该模式根据相应的 ...]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 610px"><img style="display: inline; border: 0px;" title="Windows 2003搭建虚拟主机服务器" src="http://www.ray77.com/wp-content/uploads/2009/02/post4305441140486644.jpg" border="0" alt="Windows 2003搭建虚拟主机服务器" width="600" height="163" /><p class="wp-caption-text">Windows 2003 Build Virtual Host Server</p></div>
<p>　　一直想找一份详细的windows server 2003搭建Web服务器的教程，这篇文章讲得比较基础，也比较详细。同时希望能有份教程把服务器的配置与机房的管理的专业教程，Rock很有兴趣自己购买台服务器搭建Web、FTP、DNS以及邮件的服务器然后放在机房里。同时还希望能够搭建自己的LAMP服务器主机&#8230;哇&#8230;那种感觉绝对是超级无敌爽的&#8230;废话不多说了，对win服务器感兴趣的朋友可以看下这份教程。</p>
<p>　　随着Internet越来越普及，各种各样的虚拟主机也越来越多，由于虚拟主机需要同时向大量不同的用户提供安全的网络应用环境，因此搭建一个虚拟主机平台除了需要架设WEB和FTP服务器， 还涉及到一些虚拟主机环境所特有的问题。以下就对这些特有的问题进行归纳和分析。我个人认为在建立虚拟主机时主要需要注意以下三个大方面:</p>
<p>　　1.用户与磁盘空间和域名的绑定;<br />
　　2.用户使用磁盘空间的容量限制(磁盘配额);<br />
　　3.IIS和用户环境的安全问题(我使用的是Windows Server系统);</p>
<p>　　下面我就以这三个方面在Windows 2003 Enterprise Server具体如何实现做一个详细的介绍。</p>
<p><span id="more-706"></span></p>
<p><strong>　　一、用户与磁盘空间和域名的绑定</strong></p>
<p>　　先打开计算机管理(要是服务器已经升成为AD模式，就打开Active Directory用户与计算机)，点击展开本地用户和组，右键单击用户模块分别创建两个用户帐号。我这里建立的用户帐号依次为test1、test2。注意，为了安全考虑，请在组的模块中新建一个组。把用于虚拟主机的用户归纳到里面，并把用户原来隶属于的User组删除。(作为一个称职的管理员，需要注意的小细节是很多的，不然一个错误的细节就会引起灾难)如图1：</p>
<div class="wp-caption aligncenter" style="width: 336px"><img style="display: inline; border: 0px;" title="建立虚拟主机的用户组" src="http://www.ray77.com/wp-content/uploads/2009/02/t-1.jpg" border="0" alt="建立虚拟主机的用户组" width="326" height="232" /><p class="wp-caption-text">图1：建立虚拟主机的用户组</p></div>
<p>　　建立好帐号后，就在FTP空间目录下先建立一个LocalUser文件夹。然后对应所使用的帐号建立子文件夹。如:要是FTP空间指定的是D: WEB_Space文件夹，那就在这个文件夹下创建一个LocalUser文件夹。接着建立两个子文件夹:test1、test2，如图2：</p>
<div class="wp-caption aligncenter" style="width: 336px"><img style="display: inline; border: 0px;" title="建立LocalUser文件夹" src="http://www.ray77.com/wp-content/uploads/2009/02/t-2.jpg" border="0" alt="建立LocalUser文件夹" width="326" height="232" /><p class="wp-caption-text">图2：建立LocalUser文件夹</p></div>
<p>　　由于刚才我们建立用户帐号时，把它们单独的归纳到一个组中，这时就需要在FTP空间根目录属性的安全选项卡中把这个组添加进去，用户将无法通过FTP访问。如图3：</p>
<div class="wp-caption aligncenter" style="width: 336px"><img style="display: inline; border: 0px;" title="设置用户组权限" src="http://www.ray77.com/wp-content/uploads/2009/02/t3.jpg" border="0" alt="设置用户组权限" width="326" height="232" /><p class="wp-caption-text">图3：设置用户组权限</p></div>
<p>　　接着我们需要建立FTP 用户隔离站点。这个功能是以前版本的IIS中FTP站点所没有的，FTP 用户隔离为 Internet 服务提供商 (ISP) 和应用服务提供商提供了解决方案，使他们可以为客户提供上载文件和 Web 内容的个人 FTP 目录。FTP 用户隔离通过将用户限制在自己的目录中，来防止用户查看或覆盖其他用户的 Web 内容。</p>
<p>　　因为顶层目录就是 FTP 服务的根目录，用户无法浏览目录树的上一层。在特定的站点内，用户能创建、修改或删除文件和文件夹。FTP 用户隔离是站点属性，而不是服务器属性。无法为每个 FTP 站点启动或关闭该属性。所以在建立FTP站点的时候就应该选择好，不然站点建立以后，将无法修改。</p>
<p>　　FTP 用户隔离共有三种模式:</p>
<p>　　不隔离用户:该模式不启用 FTP 用户隔离。该模式的工作方式与以前版本的 IIS 类似。由于在登录到 FTP 站点的不同用户间的隔离尚未实施，该模式最适合于只提供共享内容下载功能的站点或不需要在用户间进行数据访问保护的站点。</p>
<p>　　隔离用户:该模式在用户访问与其用户名匹配的主目录前，根据本机或域帐户验证用户。所有用户的主目录都在单一 FTP 主目录下，每个用户均被安放和限制在自己的主目录中。不允许用户浏览自己主目录外的内容。如果用户需要访问特定的共享文件夹，您可以再建立一个虚拟根目录。该模式不使用 Active Directory 目录服务进行验证。 注意 当使用该模式创建了上百个主目录时，服务器性能会下降。</p>
<p>　　用 Active Directory 隔离用户:该模式根据相应的 Active Directory 容器验证用户凭据，而不是搜索整个 Active Directory，那样做需要大量的处理时间。将为每个客户指定特定的 FTP 服务器实例，以确保数据完整性及隔离性。当用户对象在 Active Directory 容器内时，可以将 FTPRoot 和 FTPDir 属性提取出来，为用户主目录提供完整路径。</p>
<p>　　如果FTP 服务能成功地访问该路径，则用户被放在代表 FTP 根位置的该主目录中。用户只能看见自己的 FTP 根位置，因此受限制而无法向上浏览目录树。如果 FTPRoot 或 FTPDir 属性不存在，或它们无法共同构成有效、可访问的路径，用户将无法访问。</p>
<p>　　打开Internet信息服务(IIS)管理器，点击展开服务器，右键单击FTP站点，新建一个FTP站点，在建立向导中，因为我的服务器不是Active Directory模式，所以我们选择隔离用户这个选项。如图4：</p>
<div class="wp-caption aligncenter" style="width: 336px"><img style="display: inline; border: 0px;" title="FTP用户隔离选项" src="http://www.ray77.com/wp-content/uploads/2009/02/t-4.jpg" border="0" alt="FTP用户隔离选项" width="326" height="232" /><p class="wp-caption-text">图4：FTP用户隔离选项</p></div>
<p>　　完成建立向导后，开打新建立的FTP站点属性，点击属性中的安全用户选项卡，把允许匿名连接关闭。确定后退出。</p>
<p>　　最后是域名的绑定，域名绑定有两种定义，第一种是直接使用完整域名绑定WEB服务，如在服务器上提供<a href="http://www.test1.com">www.test1.com</a>和www.test2.com空间服务，第二种是开设子域名服务，如提供test1.yesky.com和test2.yesky.com空间服务。这两种在工作原理上是一样的，但第二种在操作上有一些不同。需要自己服务器的DSN支持。</p>
<p>　　首先我们让我们来了解一下关于域名(DNS)的基本知识，在我们要了解DNS，首先要了解几个名词:域名空间;根域;顶级域;二级域;主机名;区域。</p>
<p>　　域名空间:是DNS名的结构统称，他的结构主要是由根域，顶级域，二级域和主机名组成。</p>
<p>　　根域:是处在整个结构的顶级，是用点(.)表示的。由国外的几个公司管理的。55555没有我们的份~郁闷!!)</p>
<p>　　顶级域:是由2-3个英文字母组成，并且有着一定的意义，一般采用相对意义的英文单词缩写或相对代码。如:COM是指商业机构，GOV是指政府机构，CN是指中国……</p>
<p>　　二级域:是由一些域名提供商出租给个人或企业、机构的服务。如<a href="http://www.yesky.com">www.yesky.com</a>这个域名中yesky就属于二级域。</p>
<p>　　主机名:是用来表示Internet或内部网的计算机名称，但大家注意一点，在Internet上，有的时候主机名指代表一台服务器的IP地址，而不是服务器的名称，这一点是和内部网有区别的!</p>
<p>　　区域:是域名空间中的一个离散部分。区域主要是用来把一个域名变成可管理的几个部分，如:www.yesky.com这个域名我们可以把他划分成www和yesky,com这两个部分。这样，我们就可以利用yesky.com这部分生成不同的主机名。如mail.yesky.com;bbs.yesky.com等等。这一点比较重要。</p>
<p>　　DSN服务工作的流程我们可以把它称作名字解析过程，它共分为两种:正向搜索和反向搜索。正向搜索是把一个域名解析成一个IP，我们这里就用Internet上的<a href="http://www.yesky.com">www.yesky.com</a>域名做一个案例。</p>
<p>　　我们先在IE浏览器中输入<a href="http://www.yesky.com">www.yesky.com</a>这个域名，然后计算机将自动把这个域名传递给本地DNS服务器(也就是指在本机网卡属性中TCP/IP协议的DSN服务器输入框里输入的IP地址所对应的服务器)，DNS服务器收到信息后，将在自己的区域表中搜索有没有该域名所对应的IP!有则返回，若没有，它则会把搜索的信息传递给国外的几个根域DSN服务器之一，请求解析该域名。</p>
<p>　　根域DSN服务器则返回一条对COM域DNS服务器的IP地址给本地DNS服务器引用(由于yesky.com的顶级域是COM所以返回COM域DNS服务器的IP地址)，本地DNS服务器在根据IP地址给COM域DNS服务器发送一条<a href="http://www.yesky.com">www.yesky.com</a>域名解析请求的信息，COM域DNS服务器返回一条对yeskyDSN服务器的IP地址指引，然后本地DNS服务器再根据收到的IP地址给yeskyDSN服务器，发送一条www.yesky.com域名解析请求的信息，yeskyDSN服务器根据请求反馈给www的IP地址，本地服务器再把这个IP反馈给我们。这时解析完成，我们也就打开了www.yesky.com的网页。</p>
<p>　　反向搜索正好相反，它是把一个IP地址解析成一个域名，常看见的诸如Windows 2003下的Nslookup命令工具。由于DNS服务是按域名而不是按IP地址索引的，反向搜索一搜索就会搜索所有的信息，很消耗资源。为了避免这种情况，DNS服务创建了一个叫in-addr.arpa的特殊二级域，它使用的是与其他域名空间结构相同的方法，但它不采用域名，而是采用IP地址。</p>
<p>　　注意，要想做Internet上第二种虚拟主机，最好向域名提供商申请DNS转移权，要求提供商把DNS解析权指定到你的DNS服务器上，这样你就能自己利用Windwos Server的DSN服务随意开设子域名了，不然你每次要用一个新的子域名都要向域名提供商申请，那是很麻烦的，而且DSN在自己的服务器上还有很多好处，如开设MAIL服务等等。</p>
<p>　　先来打开DNS管理器，点击展开服务器，在正向查找区域新建一个区域。选择创建主要区域，输入你申请的域名，注意，只要输入我上面所说的区域就可以了，如yesky.com、sina.com.cn。完成。如图5：</p>
<div class="wp-caption aligncenter" style="width: 336px"><img style="display: inline; border: 0px;" title="创建主要区域" src="http://www.ray77.com/wp-content/uploads/2009/02/t-5.jpg" border="0" alt="创建主要区域" width="326" height="232" /><p class="wp-caption-text">图5：创建主要区域</p></div>
<p>　　创建好区域后，就在你创建的区域里创建主机。最好创建的主机名与你的用户名相同，这样方便管理。当然，如果你的系统已经升级到AD模式，那这步可以跳过，因为在AD模式下，你每创建一个帐户，就会自动的生成对应的主机名称。如图6：</p>
<div class="wp-caption aligncenter" style="width: 336px"><img style="display: inline; border: 0px;" title="创建主机" src="http://www.ray77.com/wp-content/uploads/2009/02/t-6.jpg" border="0" alt="创建主机" width="326" height="232" /><p class="wp-caption-text">图6：创建主机</p></div>
<p>　　所有的主机都创建好了后，就打开Internet信息服务(IIS)管理器，在WEB站点下创建新的WEB站点。在站点创建向导的IP地址和端口设置对话框中输入需要绑定的完整域名，如<a href="http://www.test.com">www.test.com</a>、test1.test.com、test12.test.com，创建完成后，域名就和空间绑定了。如图7：</p>
<div class="wp-caption aligncenter" style="width: 336px"><img style="display: inline; border: 0px;" title="域名和空间的绑定" src="http://www.ray77.com/wp-content/uploads/2009/02/t-7.jpg" border="0" alt="域名和空间的绑定" width="326" height="232" /><p class="wp-caption-text">图7：域名和空间的绑定</p></div>
<p>　　在DNS中有多少个主机，就可以建立多少个子域名WEB站点。也可以用域名提供商提供的直接指定IP的域名。但这里需要注意的是，一旦服务器中Internet信息服务(IIS)管理器里出现了带主机头的站点后，有时将会导致没有主机头的站点出错，这个问题很奇怪，可是能DNS映射引起的。</p>
<p><strong>　　二、用户使用磁盘空间的容量限制(磁盘配额)</strong></p>
<p>　　在配置之前，让我们先了解一下磁盘配额管理的一些基础知识，以便我们更容易理解它的工作方法。Windows 2003磁盘配额会跟踪每个用户在每个盘符中的使用情况。并根据用户的磁盘配额进行控制。因为配额是以每个用户做为单位进行跟踪的，所以不管用户在这个盘符下的任何地方储存文件都会被记录。磁盘配额共有二个比较显著的特点:</p>
<p>　　1.根据每个用户所拥有的文件和文件夹来计算使用磁盘的空间量。当一个新建、复制、保存文件到开启了磁盘配额的盘符上，或获得盘符上某文件所有权时，系统就自动从磁盘配额管理所限定的空间中扣减该用户的空间容量。</p>
<p>　　2.系统在计算用户使用磁盘空间时是忽略压缩的，它按照未压缩的字节计算用户使用的硬盘空间，而不管用户实际使用了多少磁盘空间。这样做是因为现在很多不同的文件类型在压缩的时候所压缩的比例不同。会造成文件长度的很大差异，给磁盘管理带来很大的工作负担。</p>
<p>　　注意，磁盘配额必须建立在NTFS格式的盘符上。不然无法使用。</p>
<p>　　选择你FTP空间所在的盘符，打开盘符的属性对话框，单击配额选项卡，选择启用配额管理复选框，开启磁盘配额管理。这是原本一些灰色不能使用的属性开始能使用了。请根据情况修改它们，如图8：</p>
<div class="wp-caption aligncenter" style="width: 199px"><img style="display: inline; border: 0px;" title="修改磁盘配额" src="http://www.ray77.com/wp-content/uploads/2009/02/t-8.jpg" border="0" alt="修改磁盘配额" width="189" height="240" /><p class="wp-caption-text">图8：修改磁盘配额</p></div>
<p>　　拒绝将磁盘空间给超过配额限制的用户:选择这个复选框，当用户超过了分配的磁盘空间时，他们就会收到一个空间已用完的消息，而且不能在往空间里面写任何东西</p>
<p>　　不限制磁盘使用:当你不打算限制用户磁盘空间时，单击这个选项。</p>
<p>　　将磁盘空间限制为:配置用户可以使用的磁盘空间容量</p>
<p>　　将警告等级设置为:配置在用户登陆空间时，如果空间使用已经达到警告空间等级，将会发送一个信息给该用户，提醒用户空间快使用完了</p>
<p>　　配额项:单击这个按钮可以打开配额项对话框，在这个对话框中，可以通过配置菜单分别定制每个用户磁盘空间。也可以删除老用户空间配额限制。另外它的主界面就是一个用户配额监控器。如图9：</p>
<div class="wp-caption aligncenter" style="width: 447px"><img style="display: inline; border: 0px;" title="用户配额监控器" src="http://www.ray77.com/wp-content/uploads/2009/02/t-9.jpg" border="0" alt="用户配额监控器" width="437" height="280" /><p class="wp-caption-text">图9：用户配额监控器</p></div>
<p>　　设置好后确定-关闭属性窗口，这时用户的磁盘配额就已经设置好了。还是比较简单的。</p>
<p>　　<strong>三、IIS和用户环境的安全问题</strong></p>
<p>　　记得一位资深的安全人士曾经说过，从Windows 2000 Server开始，本身的系统漏洞和网络漏洞已经不是那么多了，甚至可以说Windows本身安全系数已经超越了LINUX系统本身，(这里我只是引用语句，希望不会引发Windows和LINUX向来的争论)但由于Windows周边产品漏洞和不安全因数太多，尤其是IIS服务。才导致人人说它不安全。</p>
<p>　　由于系统的安全问题实在是太过于庞大，所分的体系也非常多，不可能面面具到，所以我根据个人经验说几个和虚拟主机密切相关的安全问题，但由于这些问题要想得到彻底的解决说明的话，那需要太多的篇幅，这里我也只能指出这些问题，和解决这些问题的思路。</p>
<p>　　支持ASP系统的IIS安全问题:</p>
<p>　　在支持ASP的IIS系统中，主要问题有两个，一个是由于ASP页面的输入框引起的安全攻击。在ASP页面中，我们经常可以看见输入框，如登录帐号、密码、查询、手机等等..这些控件其实是很危险的，因为这些控件的后台往往是连接着数据库，(SQL、Oracle等)有经验的程序员可以通过这些输入框输入数据库命令，在通过系统本身的数据库执行后，得到数据库帐号和密码。那也意味着离得到SYSTEM或Administrator帐号不远了。</p>
<p>　　所以，一般在做ASP页面时，我们在有这些输入框的窗口上都做一些限制，如最多只能输入多少个字符、哪些特殊字符不允许输入等等。但现在很少有网站能做到滴水不漏的，可能也是因为工作量太大的缘故吧:( 第二个问题是FileSystemObject这个组件为 ASP 提供了对默认的Windows Server服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作。权限实在是太大。也导致一些恶意虚拟主机租借用户利用这个ASP组件来攻击和控制系统。所以在不是必要的情况下，请不要启用它。太危险了。</p>
<p>　　基本系统设置安全问题:</p>
<p>　　一、端口设置。端口是计算机和外部网络相连的逻辑接口，也是计算机的第一道屏障，由于做虚拟主机的系统一般不需要开太多的端口，所以可以在网卡属性、Internet协议(TCP/IP)属性、高级、选项、TCP/IP筛选属性里进行添加。不过Windows Server TCP/IP筛选设置做的有点问题:只允许开哪些端口，不允许关哪些端口，郁闷吧。</p>
<p>　　二、IIS设置:首先，把C盘中的默认的IIS目录Inetpub彻底删掉，在Internet信息服务(IIS)管理器中将默认WEB网站给停止，从新建立你所需要的WEB发布站点，但注意，请把你要发布站点的目录建立在其他盘符，并不要给其命名一些相对简单或容易猜中的名字，如WEB、IIS、Inetpub等。其次，在Internet信息服务(IIS)管理器中删除在你虚拟主机上不想用到的文件名映射，如，你的系统只需要支持ASP和HTML的话，那只要保留这个两个文件名映射就可以了，其他的都可以删除，步骤为在Internet信息服务(IIS)管理器中右击主机、属性、WWW服务、编辑、主目录配置、应用程序映射，然后就开始一个个删吧。最后在的应用程序调试书签内将脚本错误消息改为发送文本就基本可以了。</p>
<p>　　三、预防DoS: DOS:即Denial Of Service，拒绝服务的缩写，原理就是生产出大量的数据包让服务器不停的处理，导致服务器不能对其他的数据产生响应。在注册表HKLMSYSTEMCurrentControlSetServicesTcpipParameters中更改以下值可以帮助你防御一定强度的DoS攻击 SynAttackProtect REG_DWORD 2 EnablePMTUDiscovery REG_DWORD 0 NoNameReleaseOnDemand REG_DWORD 1 EnableDeadGWDetect REG_DWORD 0 KeepAliveTime REG_DWORD 300,000 PerFORMRouterDiscovery REG_DWORD 0 EnableICMPRedirects REG_DWORD 0</p>
<p>　　四、工作进程隔离:在虚拟主机上经常会出现由于某个用户WEB站点的应用程序出错，进入无限循环，导致服务器资源大量消耗，最终死机的情况，这个问题在以往的IIS中是很难解决的，有时还得借助第三方软件。</p>
<p>　　但现在，IIS 6.0 引入了工作进程隔离模式，该模式可以在隔离环境中运行所有的 Web 应用程序。当在工作进程隔离模式下运行 IIS 时，可以将应用程序配置成在单独的应用程序池中运行。每个应用程序池在逻辑上表示一个可配置的工作进程，并且链接到池中的应用程序。工作进程彼此独立运行;它们可能失败，但不会影响其他工作进程。应用程序池保护其中的应用程序免受支持其他应用程序池的工作进程的影响。这样，就可以避免应用程序相互影响。</p>
<p>　　在工作进程隔离模式下，超文本传输协议 (HTTP) 请求被直接路由到服务于已配置的应用程序的内核应用程序池队列。服务于应用程序池的工作进程会将请求直接从该队列中拉出，避免了进程切换的开销。为进一步保护 WWW 服务，IIS 6.0 会隔离关键的万维网发布服务组件，如 HTTP 协议堆栈和 WWW 服务管理和监控，避免其受到在工作进程中运行的第三方代码的影响。</p>
<p>　　HTTP 协议堆栈接受 WWW 服务请求并将其排入队列。当工作进程处于不正常的状态并因此中断处理请求时，HTTP 协议堆栈会继续处理请求。同时，WWW 服务将检测不正常的工作进程并将其关闭。如果要求新工作进程为请求提供服务，WWW 服务会启动一个新工作进程以便从 HTTP 协议堆栈中获取队列中的请求。即使工作进程失败，WWW 服务仍会继续处理请求并保护用户免于丢失服务。打开 Internet信息服务(IIS)管理器，展开服务器，右键点击应用程序池，选择属性。就可以在弹出的对话框中根据自己的系统环境进行进程隔离设置了。如图10：</p>
<div class="wp-caption aligncenter" style="width: 347px"><img style="display: inline; border: 0px;" title="Internet信息服务(IIS)管理器" src="http://www.ray77.com/wp-content/uploads/2009/02/t-10.jpg" border="0" alt="Internet信息服务(IIS)管理器" width="337" height="238" /><p class="wp-caption-text">图10：Internet信息服务(IIS)管理器</p></div>
<p>　　由于系统环境比较多样化，所以很难有一个设置的标准，所以具体的设置请参考Windows 2003的帮助。</p>
<p>　　五、查看事件查看器:作为一个网管就应该时时刻刻的观察服务器的安全性，而事件查看器可以反映系统80%的安全情况，这需要我们要养成每天分析事件查看器的习惯。一般情况是每天早晚各查看一次，并保留一个星期的日志。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ray77.com/windows-2003-build-virtual-host-server.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS 5.0 编译安装 Apache+PHP+Mysql+Zend Optimizer+Eaccelerator+phpMyAdmin</title>
		<link>http://www.ray77.com/centos-apache-php-mysql.html</link>
		<comments>http://www.ray77.com/centos-apache-php-mysql.html#comments</comments>
		<pubDate>Wed, 11 Feb 2009 12:50:33 +0000</pubDate>
		<dc:creator>Rock</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.ray77.com/centos-apache-php-mysql.html</guid>
		<description><![CDATA[CentOS Linux
　　CentOS是Community ENTerprise Operating System的简称，我们有很多人叫它社区企业操作系统，不管你怎么叫它，它都是Linux操作系统的一个发行版本。
　　CentOS并不是全新的Linux发行版，倘若一说到Red Hat这个大名，大家似乎都听过。在Red Hat家族中有企业版的产品，它是Red Hat Enterprise Linux（以下称之为RHEL），CentOS正是这个RHEL的克隆版本。RHEL是很多企业采用的Linux发行版本，需要向Red Hat付费才可以使用，并能得到付过费用的服务和技术支持和版本升级。CentOS可以像RHEL一样的构筑Linux系统环境，但不需要向Red Hat付任何的产品和服务费用，同时也得不到任何有偿技术支持和升级服务。

　　Red Hat公司的产品中，有Red Hat Linux（如Redhat8,9）和针对企业发行的版本Red Hat Enterprise Linux，都能够通过网络FTP免费的获得并使用，但是在2003年的时候，Red Hat Linux停止了发布，它的项目由Fedora Project这个项目所取代，并以Fedora Core这个名字发行并提供给普通用户免费使用。Fedora Core这个Linux发行版更新很快，大约半年左右就有新的版本发布。目前的版本是Fedora Core 6，这个Fedora Core试验的韵味比较浓厚，每次发行都有新的功能被加入到其中，得到的成功结果将被采用道RHEL的发布中。虽说这样，频繁的被改进更新的不安定产品对于企业来说并不是最好的选择，大多数企业还是会选择有偿的RHEL产品（这里面有很深的含义，比如说企业用Linux赚钱，赚到的钱回报给企业，资金在企业间流通，回报社会，提高服务水准等）。
　　在构成RHEL的大多数软件包中，都是基于GPL协议发布的，也就是我们常说的开源软件。正因为是这样，Red Hat公司也遵循这个协议，将构成RHEL的软件包公开发布，只要是遵循GPL协议，任何人都可以在原有的软件构成的基础上再开发和发布。CentOS就是这样在RHEL发布的基础上将RHEL的构成克隆再现的一个Linux发行版本。RHEL的克隆版本不只CentOS一个，还有White Box Enterprise Linux和TAO Linux 和Scientific Linux（其他的这些都没听说过，是吧？）。
　　虽然说是RHEL的克隆，但并不是一模一样，所说的克隆是具有100%的互换性（真的么？）。但并不保障对应RHEL的软件在CentOS上面也能够100%的正常工作。并且安全漏洞的修正和软件包的升级对应RHEL的有偿服务和技术支持来说，数日数星期数个月的延迟情况也有（其实也没看出来多慢）。
　　CentOS的特点
　　在CentOS的全称里面我们可以看到Enterprise OS，也就是说企业系统，这个企业系统并不是企业级别的系统，而是它可以提供企业级应用所需要的要素。
　　例如：
　　稳定的环境
　　长期的升级更新支持
　　保守性强
　　大规模的系统也能够发挥很好的性能
　　CentOS满足以上的要素，满足上面要素的发行版还有Fedora 。Fedora和CentOS非常的相像，但是对CentOS来说，Fedora提供更多的新的功能和软件，发布更新快等特点，这样在稳定性和管理方面就增加了很多工作。企业所需要的系统环境应该是，高效稳定的系统环境，一次构建后能够长期使用的系统环境，所以Fedora那样的频繁更新发布的系统环境并不对应企业的应用。另一方面，CentOS却能够满足以上企业的需要，在众多的RHEL的克隆版本中，CentOS是很出众很优秀的。
　　官方网站：http://www.centos.org
　　中文社区：http://www.centospub.com/bbs
1、下载centos 5
我是下载的DVD版本，大家也可以下载服务器CD安装版本，其实都差不多。大家可以到这儿下载，速度很快的。
http://ftp.iasi.roedu.net/mirrors/ce&#8230;86-bin-DVD.iso
当然也可以在windows下用BT或迅雷下载，速度也很不错的。
下载后当然就刻录成光盘。我建议你刻录DVD啦，如果是菜鸟，也可以在图形界面进行学习，不会这么抓不住头脑。
2、（1）安装CentOS 5
作为服务器，不安装不需要的组件，所以在选择组件的时候，除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动编译安装。
系统约定RPM包和源码包存放位置
RPM包和源码包存放位置 /usr/local/src
源码包编译安装位置(prefix) /usr/local/xxx
脚本以及维护程序存放位置 /usr/local/sbin
MySQL 数据库位置 /var/lib/mysql
Apache 网站根目录 /home/www
Apache 虚拟主机日志根目录 /data/logs/www
yum RPM包信息文件 /etc/yum.list
3、系统环境部署及调整
（1）. 检查系统是否正常
# ...]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 610px"><img style="display: block; border: 0px;" title="CentOS 5.0 编译安装 Apache+PHP+Mysql+Zend Optimizer+Eaccelerator+phpMyAdmin" src="http://www.ray77.com/wp-content/uploads/2009/02/centos.jpg" border="0" alt="centos" width="600" height="182" /><p class="wp-caption-text">CentOS Linux</p></div>
<p>　　CentOS是Community ENTerprise Operating System的简称，我们有很多人叫它社区企业操作系统，不管你怎么叫它，它都是Linux操作系统的一个发行版本。<br />
　　CentOS并不是全新的Linux发行版，倘若一说到Red Hat这个大名，大家似乎都听过。在Red Hat家族中有企业版的产品，它是Red Hat Enterprise Linux（以下称之为RHEL），CentOS正是这个RHEL的克隆版本。RHEL是很多企业采用的Linux发行版本，需要向Red Hat付费才可以使用，并能得到付过费用的服务和技术支持和版本升级。CentOS可以像RHEL一样的构筑Linux系统环境，但不需要向Red Hat付任何的产品和服务费用，同时也得不到任何有偿技术支持和升级服务。</p>
<p><span id="more-668"></span></p>
<p>　　Red Hat公司的产品中，有Red Hat Linux（如Redhat8,9）和针对企业发行的版本Red Hat Enterprise Linux，都能够通过网络FTP免费的获得并使用，但是在2003年的时候，Red Hat Linux停止了发布，它的项目由Fedora Project这个项目所取代，并以Fedora Core这个名字发行并提供给普通用户免费使用。Fedora Core这个Linux发行版更新很快，大约半年左右就有新的版本发布。目前的版本是Fedora Core 6，这个Fedora Core试验的韵味比较浓厚，每次发行都有新的功能被加入到其中，得到的成功结果将被采用道RHEL的发布中。虽说这样，频繁的被改进更新的不安定产品对于企业来说并不是最好的选择，大多数企业还是会选择有偿的RHEL产品（这里面有很深的含义，比如说企业用Linux赚钱，赚到的钱回报给企业，资金在企业间流通，回报社会，提高服务水准等）。<br />
　　在构成RHEL的大多数软件包中，都是基于GPL协议发布的，也就是我们常说的开源软件。正因为是这样，Red Hat公司也遵循这个协议，将构成RHEL的软件包公开发布，只要是遵循GPL协议，任何人都可以在原有的软件构成的基础上再开发和发布。CentOS就是这样在RHEL发布的基础上将RHEL的构成克隆再现的一个Linux发行版本。RHEL的克隆版本不只CentOS一个，还有White Box Enterprise Linux和TAO Linux 和Scientific Linux（其他的这些都没听说过，是吧？）。<br />
　　虽然说是RHEL的克隆，但并不是一模一样，所说的克隆是具有100%的互换性（真的么？）。但并不保障对应RHEL的软件在CentOS上面也能够100%的正常工作。并且安全漏洞的修正和软件包的升级对应RHEL的有偿服务和技术支持来说，数日数星期数个月的延迟情况也有（其实也没看出来多慢）。<br />
　　<strong>CentOS的特点</strong><br />
　　在CentOS的全称里面我们可以看到Enterprise OS，也就是说企业系统，这个企业系统并不是企业级别的系统，而是它可以提供企业级应用所需要的要素。<br />
　　例如：<br />
　　稳定的环境<br />
　　长期的升级更新支持<br />
　　保守性强<br />
　　大规模的系统也能够发挥很好的性能<br />
　　CentOS满足以上的要素，满足上面要素的发行版还有Fedora 。Fedora和CentOS非常的相像，但是对CentOS来说，Fedora提供更多的新的功能和软件，发布更新快等特点，这样在稳定性和管理方面就增加了很多工作。企业所需要的系统环境应该是，高效稳定的系统环境，一次构建后能够长期使用的系统环境，所以Fedora那样的频繁更新发布的系统环境并不对应企业的应用。另一方面，CentOS却能够满足以上企业的需要，在众多的RHEL的克隆版本中，CentOS是很出众很优秀的。<br />
　　官方网站：<a href="http://www.centos.org">http://www.centos.org</a><br />
　　中文社区：<a href="http://www.centospub.com/bbs">http://www.centospub.com/bbs</a></p>
<p>1、下载centos 5<br />
我是下载的DVD版本，大家也可以下载服务器CD安装版本，其实都差不多。大家可以到这儿下载，速度很快的。<br />
<a href="http://ftp.iasi.roedu.net/mirrors/ce...86-bin-DVD.iso">http://ftp.iasi.roedu.net/mirrors/ce&#8230;86-bin-DVD.iso</a></p>
<p>当然也可以在windows下用BT或迅雷下载，速度也很不错的。</p>
<p>下载后当然就刻录成光盘。我建议你刻录DVD啦，如果是菜鸟，也可以在图形界面进行学习，不会这么抓不住头脑。</p>
<p>2、（1）安装CentOS 5<br />
作为服务器，不安装不需要的组件，所以在选择组件的时候，除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动编译安装。</p>
<p>系统约定RPM包和源码包存放位置</p>
<p>RPM包和源码包存放位置 /usr/local/src<br />
源码包编译安装位置(prefix) /usr/local/xxx<br />
脚本以及维护程序存放位置 /usr/local/sbin<br />
MySQL 数据库位置 /var/lib/mysql<br />
Apache 网站根目录 /home/www<br />
Apache 虚拟主机日志根目录 /data/logs/www<br />
yum RPM包信息文件 /etc/yum.list</p>
<p>3、系统环境部署及调整</p>
<p>（1）. 检查系统是否正常<br />
# more /var/log/messages //检查有无系统内核级错误信息<br />
# demesg //检查硬件设备是否有错误信息<br />
# ifconfig //检查网卡设置是否正确<br />
# ping www.163.com // 检查网络是否正常</p>
<p>（2）. 关闭不需要的服务<br />
# export LANG=&#8217;en_US&#8217; //设置语言<br />
# setup //选择启动的服务<br />
进入system service 选项。<br />
以space 键选定所需服务。<br />
以下仅列出需要启动的服务，未列出的服务一律关闭：<br />
crond<br />
irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时，才需开启，否则关闭。<br />
microcode_ctl<br />
network<br />
vsftpd<br />
sshd<br />
syslog</p>
<p>（3）、修改/etc/yum.repos.d/CentOS-Base.repo，将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下：</p>
<p># CentOS-Base.repo<br />
#<br />
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.<br />
# The mirror system uses the connecting IP address of the client and the<br />
# update status of each mirror to pick mirrors that are updated to and<br />
# geographically close to the client. You should use this for CentOS updates<br />
# unless you are manually picking other mirrors.<br />
#<br />
# If the mirrorlist= does not work for you, as a fall back you can try the<br />
# remarked out baseurl= line instead.<br />
#<br />
#</p>
<p>[base]<br />
name=CentOS-$releasever &#8211; Base<br />
baseurl=<a href="http://mirror.be10.com/centos/">http://mirror.be10.com/centos/</a>$releasever/os/$basearch/<br />
gpgcheck=1<br />
gpgkey=<a href="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5">http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</a><br />
protect=1</p>
<p>#released updates<br />
[updates]<br />
name=CentOS-$releasever &#8211; Updates<br />
baseurl=<a href="http://mirror.be10.com/centos/">http://mirror.be10.com/centos/</a>$releasever/updates/$basearch/<br />
gpgcheck=1<br />
gpgkey=<a href="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5">http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</a><br />
protect=1</p>
<p>#packages used/produced in the build but not released<br />
[addons]<br />
name=CentOS-$releasever &#8211; Addons<br />
baseurl=<a href="http://mirror.be10.com/centos/">http://mirror.be10.com/centos/</a>$releasever/addons/$basearch/<br />
gpgcheck=1<br />
gpgkey=<a href="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5">http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</a><br />
protect=0</p>
<p>#additional packages that may be useful<br />
[extras]<br />
name=CentOS-$releasever &#8211; Extras<br />
baseurl=<a href="http://mirror.be10.com/centos/">http://mirror.be10.com/centos/</a>$releasever/extras/$basearch/<br />
gpgcheck=1<br />
gpgkey=<a href="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5">http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</a><br />
protect=0</p>
<p>#additional packages that extend functionality of existing packages<br />
[centosplus]<br />
name=CentOS-$releasever &#8211; Plus<br />
baseurl=<a href="http://mirror.be10.com/centos/">http://mirror.be10.com/centos/</a>$releasever/centosplus/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
gpgkey=<a href="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5">http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</a><br />
protect=1</p>
<p>#contrib &#8211; packages by Centos Users<br />
[contrib]<br />
name=CentOS-$releasever &#8211; Contrib<br />
baseurl=<a href="http://mirror.be10.com/centos/">http://mirror.be10.com/centos/</a>$releasever/contrib/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
protect=0<br />
gpgkey=<a href="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5">http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</a></p>
<p>#packages in testing<br />
[testing]<br />
name=CentOS-5 &#8211; Testing<br />
baseurl=<a href="http://mirror.be10.com/centos/5/testing/i386/">http://mirror.be10.com/centos/5/testing/i386/</a></p>
<p>gpgcheck=1<br />
enabled=0<br />
protect=0</p>
<p>保存。</p>
<p>（2）更新系统，我们使用yum,</p>
<p>然后执行：<br />
# yum upgrade<br />
建议更新所有列出的程序，rhel 5.X的稳定性还要继续努力呢。</p>
<p>（4）、定时校正服务器时间<br />
# yum install ntp<br />
# crontab -e<br />
0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 &gt; /dev/null 2&gt;&amp;1</p>
<p>以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。</p>
<p>(5). 对TCP/IP网络参数进行调整，加强抗SYN Flood能力<br />
# echo &#8216;net.ipv4.tcp_syncookies = 1&#8242; &gt;&gt; /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件<br />
# sysctl -p //查看</p>
<p>（6）、FTP服务器的配置<br />
vi /etc/vsftpd/vsftpd.conf<br />
把anonymous_enable=YES注释掉不允许匿名登录。<br />
把chroot_list_enable=YES<br />
chroot_list_file=/etc/vsftpd.chroot_list<br />
前的注释去掉。<br />
把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)<br />
然后保存，service vsftpd start就可以了。</p>
<p>这时应当添加用户，因为root默认不能通过FTP方式登录。</p>
<p># adduser username<br />
# passwd userpassword</p>
<p>这样对于我们上传一些文件到系统中很方便。</p>
<p>4. 重新启动系统<br />
# init 6</p>
<p>5. 使用 yum 程序安装所需开发包（以下为标准的 RPM 包名称）<br />
# yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel</p>
<p>#这里我们将编译GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg,等先用RPM的方式一并安装好，避免手动编译浪费时间，同时也能避免很多错误，这几个小软件的编译很麻烦。这几个小软件编译错误了，GD当然安装不了，php5的编译当然也没戏了。所以我们抓大放小，对这些小牛鬼蛇神采取快速简洁的方式进行安装。并且对服务器的性能也不能产生什么影响。<br />
另外libxml2系统已经默认安装了，所以我们不需要手工编译了，直接安装它的开发包就行了。</p>
<p>6. 源码编译安装所需包 (Source)<br />
(1) GD2<br />
# cd /usr/local/src<br />
# wget <a href="http://www.boutell.com/gd/http/gd-2.0.34.tar.gz">http://www.boutell.com/gd/http/gd-2.0.34.tar.gz</a><br />
# tar xzvf gd-2.0.34.tar.gz<br />
# cd gd-2.0.34<br />
# CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/gd2 &#8211;mandir=/usr/share/man //./configure 配置。</p>
<p># make //make 是用来编译的，它从 Makefile 中读取指令，然后编译。<br />
# make install //make install 是用来安装的，它也从 Makefile 中读取指令，安装到指定的位置。</p>
<p>(2) Apache 日志截断程序<br />
# cd /usr/local/src<br />
# wget <a href="http://cronolog.org/download/cronolog-1.6.2.tar.gz">http://cronolog.org/download/cronolog-1.6.2.tar.gz</a><br />
# tar xzvf cronolog-1.6.2.tar.gz<br />
# cd cronolog-1.6.2<br />
# ./configure &#8211;prefix=/usr/local/cronolog<br />
# make<br />
# make install</p>
<p>7、编译mysql 5.0.46<br />
mysql 5.0.46是企业版本，貌似双数版本都是企业版本了。个人觉得代码质量要比社区版本要好一些。大家可以下载，免费使用。并不需要向mysql公司交钱。</p>
<p>cd /usr/local/src<br />
# wget <a href="http://mirror.provenscaling.com/mysq...-5.0.46.tar.gz">http://mirror.provenscaling.com/mysq&#8230;-5.0.46.tar.gz</a><br />
# tar xzvf mysql-5.0.46.tar.gz<br />
# cd mysql-5.0.46</p>
<p>修改mysql 客户端最大连接数， 默认的只有100,远远达不到我们的要求。</p>
<p># vi sql/mysqld.cc</p>
<p>搜索找到下面一行：<br />
{&#8220;max_connections&#8221;, OPT_MAX_CONNECTIONS,<br />
&#8220;The number of simultaneous clients allowed.&#8221;, (gptr*) &amp;max_connections,<br />
(gptr*) &amp;max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,<br />
0},</p>
<p>将其中的100改为1500, 当然小点也可以，根据你的需要来，不建议改的太大。</p>
<p>{&#8220;max_connections&#8221;, OPT_MAX_CONNECTIONS,<br />
&#8220;The number of simultaneous clients allowed.&#8221;, (gptr*) &amp;max_connections,<br />
(gptr*) &amp;max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,<br />
0},</p>
<p>保存。</p>
<p># CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/mysql &#8211;localstatedir=/var/lib/mysql &#8211;with-comment=Source &#8211;with-server-suffix=-enterprise-gpl &#8211;with-mysqld-user=mysql &#8211;without-debug &#8211;with-big-tables &#8211;with-charset=utf8 &#8211;with-collation=utf8_general_ci &#8211;with-extra-charsets=all &#8211;with-pthread &#8211;enable-static &#8211;enable-thread-safe-client &#8211;with-client-ldflags=-all-static &#8211;with-mysqld-ldflags=-all-static &#8211;enable-assembler &#8211;without-innodb &#8211;without-ndb-debug &#8211;without-isam</p>
<p>配置成功会提示：</p>
<p>MySQL has a Web site at <a href="http://www.mysql.com/">http://www.mysql.com/</a> which carries details on the<br />
latest release, upcoming features, and other information to make your<br />
work or play with MySQL more productive. There you can also find<br />
information about mailing lists for MySQL discussion.</p>
<p>Remember to check the platform specific part of the reference manual for<br />
hints about installing MySQL on your platform. Also have a look at the<br />
files in the Docs directory.</p>
<p>Thank you for choosing MySQL!</p>
<p>// 注意 ，CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; 这个环境参数只针对intel P4 芯片，如果你的CPU是AMD的，注意不能使用。请查看相应的编译优化参数。否则程序会无法编译，即使编译成功也无法运行，嘿嘿。</p>
<p>关于其他CPU的优化请看我的BLOG的一篇转贴：<br />
<a href="http://www.cnprint.org/bbs/blogs/1/blog43.html">http://www.cnprint.org/bbs/blogs/1/blog43.html</a></p>
<p># make<br />
编译的时间可能会比较长，毕竟优化的比较厉害。</p>
<p># make install</p>
<p>编译安装完成后执行后续操作：<br />
# useradd mysql //添加 mysql 用户<br />
# cd /usr/local/mysql<br />
# bin/mysql_install_db &#8211;user=mysql<br />
# chown -R root:mysql . //设置权限，注意后面有一个 &#8220;.&#8221;<br />
# chown -R mysql /var/lib/mysql //设置 mysql 目录权限<br />
# chgrp -R mysql . //注意后面有一个 &#8220;.&#8221;<br />
# cp share/mysql/my-medium.cnf /etc/my.cnf<br />
# cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。<br />
# chmod 755 /etc/rc.d/init.d/mysqld<br />
# chkconfig &#8211;add mysqld<br />
# /etc/rc.d/init.d/mysqld start //启动 MySQL<br />
# bin/mysqladmin -u root password &#8220;password_for_root&#8221;<br />
# service mysqld stop //关闭 MySQL</p>
<p>8. 编译安装 Apache<br />
# cd /usr/local/src<br />
# wget <a href="http://www.ip97.com/apache.org/httpd/httpd-2.2.6.tar.gz">http://www.ip97.com/apache.org/httpd/httpd-2.2.6.tar.gz</a><br />
# tar zxvf httpd-2.2.6.tar.gz<br />
# cd httpd-2.2.6</p>
<p>依次安装apr和apr-util</p>
<p># cd srclib/apr<br />
# CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/apr &#8211;enable-threads &#8211;enable-other-child &#8211;enable-static<br />
# make &amp;&amp; make install</p>
<p># cd ../apr-util<br />
# CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/apr-util &#8211;with-apr=/usr/local/apr/ &#8211;with-mysql=/usr/local/mysql<br />
# make &amp;&amp; make install</p>
<p>cd /usr/local/src/httpd-2.2.6<br />
# CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/apache2 &#8211;enable-mods-shared=all &#8211;with-mysql=/usr/local/mysql &#8211;enable-cache &#8211;enable-file-cache &#8211;enable-mem-cache &#8211;enable-disk-cache &#8211;enable-static-support &#8211;enable-static-htpasswd &#8211;enable-static-htdigest &#8211;enable-static-rotatelogs &#8211;enable-static-logresolve &#8211;enable-static-htdbm &#8211;enable-static-ab &#8211;enable-static-checkgid &#8211;disable-cgid &#8211;disable-cgi &#8211;with-apr=/usr/local/apr/ &#8211;with-apr-util=/usr/local/apr-util/ &#8211;enable-ssl &#8211;with-ssl=/usr/include/openssl</p>
<p># make<br />
# make install<br />
# echo &#8216;/usr/local/apache2/bin/apachectl start &#8216; &gt;&gt; /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。</p>
<p>注解：<br />
./configure //配置源代码树<br />
&#8211;prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ，也就Apache的安装目录。<br />
&#8211;enable-module=so //打开 so 模块，so 模块是用来提 DSO 支持的 apache 核心模块<br />
&#8211;enable-mods-shared=all //编译全部的模板，对于不需要我们可以在httpd.conf去掉。<br />
&#8211;enable-cache //支持缓存<br />
&#8211;enable-file-cache //支持文件缓存<br />
&#8211;enable-mem-cache //支持记忆缓存<br />
&#8211;enable-disk-cache //支持磁盘缓存<br />
&#8211;enable-static-support //支持静态连接(默认为动态连接)<br />
&#8211;enable-static-htpasswd //使用静态连接编译 htpasswd &#8211; 管理用于基本认证的用户文件<br />
&#8211;enable-static-htdigest //使用静态连接编译 htdigest &#8211; 管理用于摘要认证的用户文件<br />
&#8211;enable-static-rotatelogs //使用静态连接编译 rotatelogs &#8211; 滚动 Apache 日志的管道日志程序<br />
&#8211;enable-static-logresolve //使用静态连接编译 logresolve &#8211; 解析 Apache 日志中的IP地址为主机名<br />
&#8211;enable-static-htdbm //使用静态连接编译 htdbm &#8211; 操作 DBM 密码数据库<br />
&#8211;enable-static-ab //使用静态连接编译 ab &#8211; Apache HTTP 服务器性能测试工具<br />
&#8211;enable-static-checkgid //使用静态连接编译 checkgid<br />
&#8211;disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本<br />
&#8211;disable-cgi //禁止编译 CGI 版本的 PHP<br />
&#8211;enable-ssl // 编译 ssl模块。</p>
<p>我们不再使用worker模式编译apache，worker模式和php貌似有一些不协调不稳定之处。所以使用了默认的perfork模式。</p>
<p>将apache设置成开机自启动:</p>
<p>在/etc/rc.d/rc.local文件中加入一行<br />
/usr/local/apache2/bin/apachectl start<br />
这样每次重新启动系统以后,apache也会随系统一起启动.</p>
<p>或者<br />
# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd<br />
然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)<br />
# chkconfig: 2345 10 90<br />
# description: Activates/Deactivates Apache Web Server<br />
最后，运行chkconfig把Apache添加到系统的启动服务组里面：<br />
# chkconfig &#8211;add httpd<br />
# chkconfig httpd on</p>
<p>9、编译php 5.2.5-devel。<br />
php 5.2.4有点小BUG，无法在centos 5上正常编译，官方已经在php5.2.5中修复了。所以我们使用php 5.2.5进行编译。<br />
Suhosin是php增强型安全补丁，可以编译到静态内核中，也可以编译成php动态扩展。我个人强烈你建议安装成静态内核。Suhosin已经进入freebsd和gentoo的ports。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。</p>
<p># cd /usr/local/src<br />
# wget <a href="http://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror">http://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror</a><br />
wget <a href="http://www.hardened-php.net/suhosin/...9.6.2.patch.gz">http://www.hardened-php.net/suhosin/&#8230;9.6.2.patch.gz</a><br />
# tar zxvf php-5.2.5.tar.gz<br />
# gunzip suhosin-patch-5.2.1-0.9.6.2.patch.gz<br />
# cd php-5.2.5</p>
<p># CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/php &#8211;with-apxs2=/usr/local/apache2/bin/apxs &#8211;with-pear=/usr/share/php &#8211;with-zlib-dir &#8211;with-bz2 &#8211;with-libxml-dir=/usr &#8211;with-gd=/usr/local/gd2 &#8211;enable-gd-native-ttf &#8211;enable-gd-jis-conv &#8211;with-freetype-dir &#8211;with-jpeg-dir &#8211;with-png-dir &#8211;with-ttf=shared,/usr &#8211;enable-mbstring &#8211;with-mysql=/usr/local/mysql &#8211;with-mysqli=/usr/local/mysql/bin/mysql_config &#8211;with-config-file-path=/etc &#8211;with-iconv &#8211;disable-ipv6 &#8211;enable-static &#8211;enable-maintainer-zts &#8211;enable-zend-multibyte &#8211;enable-inline-optimization &#8211;enable-zend-multibyte &#8211;enable-sockets &#8211;enable-soap &#8211;with-openssl</p>
<p>配置成功会提示：</p>
<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| License: |<br />
| This software is subject to the PHP License, available in this |<br />
| distribution in the file LICENSE. By continuing this installation |<br />
| process, you are bound by the terms of this license agreement. |<br />
| If you do not agree with the terms of this license, you must abort |<br />
| the installation process at this point. |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>Thank you for using PHP.</p>
<p># make</p>
<p># make install</p>
<p># cp php.ini-recommended /etc/php.ini</p>
<p>在这里也顺便说一下将suhosin安装成为php的动态扩展的方法。毕竟网上根本不见它的中文安装教程。</p>
<p>虽然我个人不推荐这种方式。</p>
<p>wget <a href="http://www.hardened-php.net/suhosin/...sin-0.9.16.tgz">http://www.hardened-php.net/suhosin/&#8230;sin-0.9.16.tgz</a><br />
tar zxvf suhosin-0.9.16.tgz<br />
cd suhosin-0.9.16<br />
./configure &#8211;with-php-config=/usr/local/php/bin/php-config<br />
make<br />
make install</p>
<p>会提示编译的模块存在的目录，记住它。<br />
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/</p>
<p>然后在php.ini中增加一行下列语句。<br />
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so</p>
<p>10 、整合apache 与php<br />
# vi /usr/local/apache2/conf/httpd.conf<br />
在最后一行加上：<br />
AddType application/x-httpd-php .php</p>
<p>查找：(设置 WEB 默认文件)<br />
DirectoryIndex index.html<br />
替换为：<br />
DirectoryIndex index.php index.html index.htm //在 WEB 目录不到默认文件，httpd 就会执行 /var/www/error/noindex.html</p>
<p>找到这一段：<br />
# AllowOverride controls what directives may be placed in .htaccess files.<br />
# It can be &#8220;All&#8221;, &#8220;None&#8221;, or any combination of the keywords:<br />
# Options FileInfo AuthConfig Limit<br />
#<br />
AllowOverride none</p>
<p>更改为AllowOverride all<br />
允许apache rewrite</p>
<p># 监听443端口,支持https连接<br />
取消注释 httpd.conf 中的 Include conf/extra/httpd-ssl.conf</p>
<p>保存httpd.conf，退出。</p>
<p># /usr/local/apache2/bin/apachectl restart //重启 Apache</p>
<p>这时会出现错误：</p>
<p>/usr/local/apache2/bin/apachectl start<br />
httpd: Syntax error on line 107 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied</p>
<p>不急，我们慢慢解决。</p>
<p>先重启下机器：<br />
reboot<br />
这个Permission denied问题，在centos 5下面一般是Selinux引起的，作为生产用服务器，我建议你千万别草率地关掉Selinux一了百了。就像家里的防盗网，阻碍了你的猫自由进出窗户，你不能为了猫方便，就把防盗网简单拆除是同样的道理。我看见网上许多人建议把Selinux简单关闭来解决这个问题，很不以为然。<br />
我们可以这样操作：</p>
<p># audit2allow -d<br />
allow initrc_t usr_t:file execmod;<br />
allow mount_t default_t:file execute;</p>
<p># cd /etc/selinux/targeted/modules/<br />
# audit2allow -M local -d</p>
<p>屏幕产生如下提示：</p>
<p>产生类型强制文件：local.te<br />
正在编译策略<br />
checkmodule -M -m -o local.mod local.te<br />
semodule_package -o local.pp -m local.mod</p>
<p>********************重要 ***********************</p>
<p>为了在内核中加载这个新创建的策略软件包，<br />
您需要执行</p>
<p>semodule -i local.pp</p>
<p>我们运行</p>
<p># semodule -i local.pp</p>
<p>这样就让Selinux加载了新的规则。</p>
<p>更详细的内容请看我在BLOG上的转贴：</p>
<p><a href="http://www.cnprint.org/bbs/blogs/1/blog48.html">http://www.cnprint.org/bbs/blogs/1/blog48.html</a></p>
<p>reboot</p>
<p>哈哈，apache不会再报错了吧？<br />
这样我保留了selinux的功能，同时apache也能正常运行。</p>
<p>11. 查看确认 L.A.M.P 环境信息<br />
vi /usr/local/apache2/htdocs/phpinfo.php</p>
<p>新增加下面一行，并保存。</p>
<p>&lt;?php phpinfo(); ?&gt;</p>
<p># chmod 755 /usr/local/apache2/htdocs/phpinfo.php</p>
<p>用浏览器打开 <a href="http://127.0.0.1/phpinfo.php">http://127.0.0.1/phpinfo.php</a></p>
<p># echo &#8216; &#8216; &gt; /usr/local/apache2/htdocs/testdb.php<br />
# chmod 755 /usr/local/apache2/htdocs/testdb.php<br />
# service mysqld start<br />
用浏览器打开 <a href="http://127.0.0.1/testdb.php">http://127.0.0.1/testdb.php</a><br />
检查 phpinfo 中的各项信息是否正确。</p>
<p>12、设置SSL并创建自己的CA</p>
<p># cd /usr/share/ssl/misc</p>
<p># ./CA -newca</p>
<p>屏幕上出现如下的提示:CA certificate filename (or enter to create)</p>
<p>这是要求输入要创建的CA的证书文件名, 可以直接回车或输入证书文件名。</p>
<p>Making CA certificate &#8230;<br />
Generating a 1024 bit RSA private key<br />
&#8230;&#8230;&#8230;++++++<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..++++++<br />
writing new private key to &#8216;./demoCA/private/./cakey.pem&#8217;<br />
Enter PEM pass phrase:</p>
<p>Verifying password &#8211; Enter PEM pass phrase:-</p>
<p>此时要求输入和验证CA的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。</p>
<p>至此,在当前目录下生成了demoCA的目录,CA的证书就在该目录下,文件名为cacert.pem</p>
<p>生成服务器的证书请求</p>
<p># ./CA -newreq</p>
<p>屏幕上出现如下的提示:</p>
<p>Generating a 1024 bit RSA private key<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..++++++<br />
&#8230;..++++++<br />
writing new private key to &#8216;newreq.pem&#8217;<br />
Enter PEM pass phrase:<br />
Verifying password &#8211; Enter PEM pass phrase:</p>
<p>此时要求输入和验证服务器的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。</p>
<p>Please enter the following &#8216;extra&#8217; attributes</p>
<p>to be sent with your certificaterequest</p>
<p>A challenge password []:</p>
<p>An optional company name []:</p>
<p>.Request (and private key) is in newreq.pem</p>
<p>这是要求输入服务器的相关信息。</p>
<p>此时,在当前目录下生成了一个名为newreq.pem的文件,包含了要生成服务器数字证书的请求。</p>
<p>签署证书</p>
<p># ./CA -sign</p>
<p>屏幕上出现如下的提示:</p>
<p>Using configuration from /usr/share/ssl/openssl.cnf</p>
<p>Enter PEM pass phrase:</p>
<p>此时一样需要输入CA的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。</p>
<p>Certificate is to be certified until Nov 19 13:46:19 2002 GMT (365 days)</p>
<p>Sign the certificate? [y/n]:y</p>
<p>这时显示证书请求文件中的各项信息,并询问是否要签署证书，回答y，进行签署。</p>
<p>1 out of 1 certificate requests certified, commit? [y/n]y</p>
<p>回答y,会显示已经签署的证书的信息,并在当前目录下生成服务器的证书文件newcert.pem。</p>
<p># mkdir /usr/local/apache2/conf/ssl.crt/<br />
# mkdir /usr/local/apache2/conf/ssl.key/<br />
# cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.pem<br />
# cp newreq.pem /usr/local/apache2/conf/ssl.key/server.pem</p>
<p>更改服务器的证书文件的相关配置<br />
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf</p>
<p>查找并修改</p>
<p># Server Certificate:<br />
# Point SSLCertificateFile at a PEM encoded certificate. If<br />
# the certificate is encrypted, then you will be prompted for a<br />
# pass phrase. Note that a kill -HUP will prompt again. Keep<br />
# in mind that if you have both an RSA and a DSA certificate you<br />
# can configure both in parallel (to also allow the use of DSA<br />
# ciphers, etc.)<br />
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.pem<br />
#SSLCertificateFile /usr/local/apache2/conf/server-dsa.crt</p>
<p># Server Private Key:<br />
# If the key is not combined with the certificate, use this<br />
# directive to point at the key file. Keep in mind that if<br />
# you&#8217;ve both a RSA and a DSA private key you can configure<br />
# both in parallel (to also allow the use of DSA ciphers, etc.)<br />
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.pem<br />
#SSLCertificateKeyFile /usr/local/apache2/conf/server-dsa.key</p>
<p>示例文件</p>
<p>在SSL的根目录中生成一个index.html,它是如下所示:</p>
<p>＜html＞</p>
<p>这是SSL示例!</p>
<p>＜/html＞</p>
<p>测试</p>
<p>假如Web服务器的DNS名称是www.cnprint.org.</p>
<p>在浏览器的URL地址栏里输入 <a href="http://www.cnprint.org/，浏览器便会显示APACHE安装时确省的Test">http://www.cnprint.org/，浏览器便会显示APACHE安装时确省的Test</a> Page.</p>
<p>在浏览器的URL地址栏里输入 <a href="https://www.cnprint.org/，注意:是">https://www.cnprint.org/，注意:是</a> https 而不是http !</p>
<p>浏览器会提示站点已经采用了SSL进行数据的加密传输.由于我们的CA证书不是浏览器缺省的信任的根证书,所以,浏览器会说无法确认服务器的证书可信。暂时不管,一直NEXT,最后,浏览器会显示:这是SSL示例!</p>
<p>可以把CA的证书放在非SSL的站点上,让浏览器下载并安装CA证书,并将其设置成可信任的根证书,便可解决上面的问题.8 解除HTTPD起动时的口令输入。</p>
<p>由于安全的原因,Web服务器的私钥是口令加密了的，每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。</p>
<p>如果要解除HTTPD起动时的口令输入,可以这样:</p>
<p># cd /usr/local/apache2/conf/ssl.key/<br />
# cp server.pem server.pem.org<br />
# openssl rsa -in server.pem.org -out server.pem<br />
# chmod 400 server.pem</p>
<p>另外在网上看到一个方法，我没有试。有兴趣的可以试下。</p>
<p>创建SSL密码自动应答文件，否则每次Apache启动的时候，都会要求你输入SSL的密码.<br />
创建 /usr/local/apache2/conf/ssl.key/sendsslpwd ,内容如下.<br />
#!/bin/bash<br />
SSLpasswd=&#8221;YOUR PASSPHRASE&#8221;<br />
echo $SSLpasswd<br />
chmod 755 /usr/local/apache2/conf/ssl.key/sendsslpwd</p>
<p>此时，Web服务器的私钥已经没有口令加密,一定要确保server.pem文件除root外,任何用户均无权读取它。</p>
<p>13、安装 Zend Optimizer<br />
# cd /usr/local/src<br />
# wget <a href="http://downloads.zend.com/optimizer/...21-i386.tar.gz">http://downloads.zend.com/optimizer/&#8230;21-i386.tar.gz</a><br />
# tar xzvf ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz<br />
# ./ZendOptimizer-3.3.0-linux-glibc21-i386/install.sh<br />
按照它的提示一步步进行就行了。<br />
总之一句话。如果你的服务器环境不需要ZendOptimizer，那么能不安就不安装这个。避免和eaccelerator冲突。</p>
<p>14、安装eaccelerator // eaccelerator是php的加速软件，使用后php的执行效率会有较大幅度的提升。目前eaccelerator 0.9.5.2已经和ZendOptimizer-3.3.0能够基本上兼容啦。不过我个人觉得，ZendOptimizer-3.3.0没有加速的功能，反而使php运行变慢，只是起到了运行zend加密文件的作用而已。闲话不多说了，大家有兴趣的，可以去google下。</p>
<p># cd /usr/local/src<br />
# wget <a href="http://bart.eaccelerator.net/source/....9.5.2.tar.bz2">http://bart.eaccelerator.net/source/&#8230;.9.5.2.tar.bz2</a><br />
# tar -jxvf eaccelerator-0.9.5.2.tar.bz2<br />
# cd eaccelerator-0.9.5.2</p>
<p>export PHP_PREFIX=&#8221;/usr/local/php&#8221;<br />
$PHP_PREFIX/bin/phpize //指定一下php的目录</p>
<p># ./configure &#8211;enable-eaccelerator=shared &#8211;with-php-config=$PHP_PREFIX/bin/php-config // 设置</p>
<p># make &amp; make install</p>
<p>编译安装后我们会看到屏幕提示的eaccelerator.so所在的目录，比如我得到的是/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so，记住这个路径，待会要用到。</p>
<p>修改php.ini（安装完zend之后，php.ini存放于/usr/local/Zend/etc）<br />
在文件最后，zend之前，注意，这部分内容务必放在zend之前，不然可能会出现不可预期的服务器问题。添加下列信息：</p>
<p>[eaccelerator]<br />
extension=&#8221;/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so&#8221;<br />
eaccelerator.shm_size=&#8221;32&#8243;<br />
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221;<br />
eaccelerator.enable=&#8221;1&#8243;<br />
eaccelerator.optimizer=&#8221;1&#8243;<br />
eaccelerator.check_mtime=&#8221;1&#8243;<br />
eaccelerator.debug=&#8221;0&#8243;<br />
eaccelerator.filter=&#8221;"<br />
eaccelerator.shm_max=&#8221;0&#8243;<br />
eaccelerator.shm_ttl=&#8221;0&#8243;<br />
eaccelerator.shm_prune_period=&#8221;0&#8243;<br />
eaccelerator.shm_only=&#8221;0&#8243;<br />
eaccelerator.compress=&#8221;1&#8243;<br />
eaccelerator.compress_level=&#8221;9&#8243;</p>
<p>解释:<br />
zend_extension 是安装完程序自动指示给我们的<br />
eaccelerator.shm_size=&#8221;32&#8243; 缓存大小单位MB<br />
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221; 缓存路径</p>
<p># mkdir /tmp/eaccelerator // 建立目录<br />
# chmod 0777 /tmp/eaccelerator // 修改目录属性</p>
<p>最后重新启动apachectl</p>
<p>重启apache，phpinfo显示：<br />
This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies<br />
with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator<br />
with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies<br />
with Zend Optimizer v3.3.0, Copyright (c) 1998-2006, by Zend Technologies</p>
<p>也会有eAccelerator的具体信息。</p>
<p>15、安装phpmyadmin，管理mysql数据库</p>
<p># cd /usr/local/apache2/htdocs/<br />
# wget <a href="http://nchc.dl.sourceforge.net/sourc...-8-only.tar.gz">http://nchc.dl.sourceforge.net/sourc&#8230;-8-only.tar.gz</a></p>
<p># tar zxvf phpMyAdmin-2.11.1-all-languages-utf-8-only.tar.gz<br />
# mv phpMyAdmin-2.11.1-all-languages-utf-8-only phpmyadmin</p>
<p># cd phpmyadmin/libraries</p>
<p>修改配置文件<br />
# vi config.default.php</p>
<p>找到这几行进行修改：<br />
$cfg['Servers'][$i]['auth_type'] = &#8216;http&#8217;; // Authentication method (valid choices: config, http, HTTP, signon or cookie)<br />
$cfg['Servers'][$i]['user'] = &#8216;root&#8217;; // MySQL user<br />
$cfg['Servers'][$i]['password'] = &#8216;PASSWORD&#8217;; // MySQL password (only needed</p>
<p>经过这几个步骤，我们一个比较安全的LAMP服务器就环境基本建立成功啦。感觉上也不是很难，是吧？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ray77.com/centos-apache-php-mysql.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
