<?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>温室小花.技术.博客 --纯粹的unix技术博客</title>
	<atom:link href="http://www.evanjiang.net.cn/feed" rel="self" type="application/rss+xml" />
	<link>http://www.evanjiang.net.cn</link>
	<description>红颜弹指老，刹那芳华，与其天涯思君，恋恋不舍，莫若相忘于江湖！</description>
	<lastBuildDate>Sun, 18 Jul 2010 13:59:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>vSphere 4上建立Citrix XenDesktop 3.0 问题小结</title>
		<link>http://www.evanjiang.net.cn/archives/1503.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1503.html#comments</comments>
		<pubDate>Sun, 18 Jul 2010 13:59:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[citrix]]></category>
		<category><![CDATA[存储备份]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1503</guid>
		<description><![CDATA[<p>


 <p>•	近期在评估试用Citrix 的虚拟桌面产品XenDesktop 3.0, 由于基础架构选用的是Vmware 新发布的vSphere 4, 因此在搭建评估环境中遇到不少问题, 幸好有因特网, 基本上任何问题都可以在上面找到解决方法.
XenDesktop是Citrix的桌面虚拟化平台，通过虚拟化技术将桌面和数据统一管理在服务器中，在用户登录时由XenDesktop构建虚拟桌面交付给用户使用。
此次评估环境中有两台服务器, 其中一台安装MS Virtual Server 2005 R2, 上面运行三台虚拟机:域控, Citrix DDC服务器, Citrix Provisioning Server. 另一台安装VMware ESX 4 评估版, 用于安装基础桌面虚拟机及后续的虚拟桌面.
前期的安装及设置都很顺利, 考虑到vCenter 和 ESX Server 使用的证书是在安装时自动生成, 因此使用OpenSSL重新创建自颁发证书, 并替换到vCenter 和 ESX Server中. 具体操作可以参考:http://www.vmware.com/pdf/vi_vcserver_certificates.pdf
接下来碰到几个问题:</p>
<p>


1、在通过XenDesktop Setup Wizard创建多虚拟桌面时，基础架构选择VMWARE并通过验证后，找不到一个虚拟机模板。重新确认模板的设置及Provisioning Server的设置，还是不行，于是上Citrix网站寻找解决方案，找到两个补丁：http://support.citrix.com/article/CTX122630 和 http://support.citrix.com/article/CTX122057
此两个补丁针对在vSphere上搭建XenDesktop 3.0时所遇到的若干问题进行修复，安装该补丁后，可以找到模板。



2、还是在XenDesktop Setup Wizard中，所有设置都完成，VM也创建成功，但桌面组创建失败。心想向导不行，那自己手动创建或许可以吧，于是通过Citrix AMC控制台创建桌面组，到登录VMware这一步就过不去：无法连接上vCenter。很明显是因为这个问题导致XenDesktop Setup Wizard创建桌面组失败，这次折腾比较久，在Citrix DDC服务器上通过IE可以正常连接到vCenter，但AMC就是不行，回想起证书做替换，可能没有正确导入DDC服务器中（但IE访问vCenter时未提示证书有误），于是重新导入vCenter证书，导入时选中“显示物理区域”，将证书导入到根证书颁发机构的本地计算机中, OK，问题解决。
接下来，尽量享受XenDesktop所带来的虚拟桌面吧。</p>
<p>



</p>
]]></description>
			<content:encoded><![CDATA[<p style="float: left;margin: 4px;"><script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 160x600, 创建于 10-2-7 */
google_ad_slot = "8970910006";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p> <p>•	近期在评估试用Citrix 的虚拟桌面产品XenDesktop 3.0, 由于基础架构选用的是Vmware 新发布的vSphere 4, 因此在搭建评估环境中遇到不少问题, 幸好有因特网, 基本上任何问题都可以在上面找到解决方法.<br />
XenDesktop是Citrix的桌面虚拟化平台，通过虚拟化技术将桌面和数据统一管理在服务器中，在用户登录时由XenDesktop构建虚拟桌面交付给用户使用。<br />
此次评估环境中有两台服务器, 其中一台安装MS Virtual Server 2005 R2, 上面运行三台虚拟机:域控, Citrix DDC服务器, Citrix Provisioning Server. 另一台安装VMware ESX 4 评估版, 用于安装基础桌面虚拟机及后续的虚拟桌面.<br />
前期的安装及设置都很顺利, 考虑到vCenter 和 ESX Server 使用的证书是在安装时自动生成, 因此使用OpenSSL重新创建自颁发证书, 并替换到vCenter 和 ESX Server中. 具体操作可以参考:http://www.vmware.com/pdf/vi_vcserver_certificates.pdf<br />
<span id="more-1503"></span>接下来碰到几个问题:</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>1、在通过XenDesktop Setup Wizard创建多虚拟桌面时，基础架构选择VMWARE并通过验证后，找不到一个虚拟机模板。重新确认模板的设置及Provisioning Server的设置，还是不行，于是上Citrix网站寻找解决方案，找到两个补丁：http://support.citrix.com/article/CTX122630 和 http://support.citrix.com/article/CTX122057<br />
此两个补丁针对在vSphere上搭建XenDesktop 3.0时所遇到的若干问题进行修复，安装该补丁后，可以找到模板。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>2、还是在XenDesktop Setup Wizard中，所有设置都完成，VM也创建成功，但桌面组创建失败。心想向导不行，那自己手动创建或许可以吧，于是通过Citrix AMC控制台创建桌面组，到登录VMware这一步就过不去：无法连接上vCenter。很明显是因为这个问题导致XenDesktop Setup Wizard创建桌面组失败，这次折腾比较久，在Citrix DDC服务器上通过IE可以正常连接到vCenter，但AMC就是不行，回想起证书做替换，可能没有正确导入DDC服务器中（但IE访问vCenter时未提示证书有误），于是重新导入vCenter证书，导入时选中“显示物理区域”，将证书导入到根证书颁发机构的本地计算机中, OK，问题解决。<br />
接下来，尽量享受XenDesktop所带来的虚拟桌面吧。</p>
<p><script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1503.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using XenDesktop with VMware</title>
		<link>http://www.evanjiang.net.cn/archives/1501.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1501.html#comments</comments>
		<pubDate>Sun, 18 Jul 2010 13:54:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1501</guid>
		<description><![CDATA[<p style="float: right;margin: 4px;">


</p> <p>Using XenDesktop with VMware
Using XenDesktop with VMware Infrastructure 3 or vSphere 4 require a few extra steps to set up and configure. VMware Infrastructure 3 and vSphere 4 both have a few different steps for XenDesktop Delivery Controller and XenDesktop Setup Wizard communication along with the proper permissions for the account [...]]]></description>
			<content:encoded><![CDATA[<p>Using XenDesktop with VMware<br />
Using XenDesktop with VMware Infrastructure 3 or vSphere 4 require a few extra steps to set up and configure. VMware Infrastructure 3 and vSphere 4 both have a few different steps for XenDesktop Delivery Controller and XenDesktop Setup Wizard communication along with the proper permissions for the account used to connect to your Virtual Center or vCenter server. In this blog post I am going to go over the steps to set up and configure XenDesktop Delivery Controller and the XenDesktop Setup Wizard communication along with the permissions needed for both VMware Infrastructure 3 and vSphere 4.<br />
XenDesktop Delivery Controller and VMware Infrastructure 3 – Virtual Center 2.5<br />
<span id="more-1501"></span>Virtual Center HTTPS Access<br />
•	On the Virtual Center server browse to Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter\SSL and copy the rui.crt to your XenDesktop Delivery Controller(s) and Provisioning Server with the XenDesktop Setup Wizard<br />
•	Open an MMC and the Certificates snap-in to manage Certificates for the Computer Account on the XenDesktop Delivery Controller(s) and Provisioning Server with the XenDesktop Setup Wizard<br />
•	Expand Certificates > Trusted Root Certificates > Certificates and import the rui.crt<br />
•	Create a host file entry for vmware with the IP address of the Virtual Center server on your XenDesktop Delivery Controller(s) and Provisioning Server with the XenDesktop Setup Wizard<br />
•	In the Hosting Infrastructure section when creating a desktop group on the XenDesktop Delivery <script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>Controller or on the Provisioning Server when the running the XenDesktop Setup Wizard, select VMware Virtualization for the Hosting Infrastructure and enter https://vmware/sdk for the Virtual Center address<br />
Note: To change the default SSL certificate see Replacing Virtual Center Server Certificates or the SOE Team Stuff Blog – How To: Replace default VMware Virtual Center SSL certificate with Enterprise CA certificate<br />
Virtual Center HTTP Access<br />
•	Logon to the Virtual Center server<br />
•	Browse to Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter\<br />
•	Open proxy.xml with the text editor of your choice and find the /sdk section. Change the accessMode to httpAndHttps<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>•	Restart the vCenter services<br />
•	In the Hosting Infrastructure section when creating a desktop group on the XenDesktop Delivery Controller or on the Provisioning Server when the running the XenDesktop Setup Wizard, select VMware Virtualization for the Hosting Infrastructure and enter http://Virtual Center Server IP address/sdk for the Virtual Center address<br />
XenDesktop Delivery Controller and vSphere 4<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>vCenter HTTPS Access<br />
•	On the ”>vCenter server replace the default SSL certificate. For the steps on this see Replacing vCenter Server Certificates or the SOE Team Stuff Blog – How To: Replace default VMware Virtual Center SSL certificate with Enterprise CA certificate<br />
•	Open an MMC and the Certificates snap-in to manage Certificates for the Computer Account on the XenDesktop Delivery Controller(s) and Provisioning Server with the XenDesktop Setup Wizard<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>•	Expand Certificates > Trusted Root Certificates > Certificates and import the trusted root certificate for the SSL certificate created in step 1<br />
•	On the XenDesktop Delivery Controller(s) install Citrix hotfix XDE300PM003 and on the Provisioning Server install XenDesktop Setup Wizard XDE300SW001 &#8211; This for XenDesktop 3.0. I haven’t tested this with the XenDesktop 4 beta.<br />
•	In the Hosting Infrastructure section when creating a desktop group on the XenDesktop Delivery Controller or on the Provisioning Server when the running the XenDesktop Setup Wizard, select VMware Virtualization for the Hosting Infrastructure and enter https://vi.domain.com/sdk for the Virtual Center address<br />
vCenter HTTP Access<br />
•	Logon to the vCenter server<br />
•	Browse to Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter\<br />
•	Open proxy.xml with the text editor of your choice and find the /sdk section. Change the accessMode to httpAndHttps<br />
<a href="http://ad.zanox.com/ppc/?15139536C65181673T"><img src="http://ad.zanox.com/ppv/?15139536C65181673" align="bottom" width="728" height="90" border="0" hspace="1" alt="bookair b008 728x90"></a>•	Restart the vCenter services<br />
•	In the Hosting Infrastructure section when creating a desktop group on the XenDesktop Delivery Controller or on the Provisioning Server when the running the XenDesktop Setup Wizard, select VMware Virtualization for the Hosting Infrastructure and enter http://vCenter server IP address/sdk for the Virtual Center address<br />
As you can see, using XenDesktop with VMware is pretty straight forward. I recommend using HTTPS access over HTTP access. Using HTTPS access is more secure than HTTP access and doesn’t require modifying the proxy.xml file on your Virtual Center or vCenter server.<br />
Virtual Center and vCenter Permissions<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>When using XenDesktop with VMware make sure you use an account with the proper permissions to connect to the Virtual Center or vCenter server. This account will be used for both the XenDesktop Delivery Controller and the XenDesktop Setup Wizard to connect to Virtual Center or vCenter.<br />
The account used for XenDesktop Delivery Controller and the XenDesktop Setup Wizard to communicate to Virtual Center or vCenter will need the following permissions. The following permissions need to be propagated to the the lower levels in the Virtual Center or vCenter tree. Create a role in Virtual Center or vCenter for XenDesktop with the following permissions:<br />
Hosts and Clusters Node<br />
Global<br />
Manage Custom Attributes<br />
Set Custom Attributes<br />
Data Center(s) that will contain the virtual machines<br />
Data Store<br />
Browse Data Store<br />
Virtual Machine<br />
Inventory<br />
Create<br />
Interaction<br />
Power On<br />
Power off<br />
Suspend<br />
Reset<br />
State (entire branch)<br />
Provisioning<br />
Deploy Template<br />
Resource<br />
Assign Virtual Machine to Resource Pool<br />
For a complete overview of using XenDesktop with VMware see Citrix support article CTX116928 – Using VMware Infrastructure 3 with Desktop Delivery Controller. The Citrix support article is for VMware Infrastructure 3 but can be applied to vSphere 4 as well.<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1501.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebSphere启用全局安全性</title>
		<link>http://www.evanjiang.net.cn/archives/1498.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1498.html#comments</comments>
		<pubDate>Wed, 02 Jun 2010 14:25:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1498</guid>
		<description><![CDATA[<p>为的是说明WebSphere中启用管理安全性的必要性——否则谁都可以进入你的控制台修改配置，就算开发阶段没有安全要求，但是WebSphere没有Weblogic的那种锁定模式，所以当两个人同时修改配置并保存时，往往会发生操作丢失和冲突的问题。所以接下来介绍针对控制台的安全性设置，当然最直接的就是在安装profile的时候就启用管理安全性。</p>
<p>在管理控制台-安全中启用“全局安全性”，并把“应用程序安全性”、“执行Java 2安全性”选项前的勾去掉——我们今天只考虑控制台的安全性。</p>
<p>接下来对于“用户注册表”的选择，有三种方法：</p>
<p>最简单的——配置本地操作系统用户</p>
<p>单击安全性 > 全局安全性。
在“用户注册表”下，单击本地操作系统。
在服务器用户标识字段中输入有效用户名。
在服务器用户密码字段中输入用户密码。
可选：选中授权时忽略大小写选项以使 WebSphere Application Server 在您使用缺省授权时能够执行不区分大小写的授权检查。
单击确定。
这里的用户标识和密码，是指操作系统的用户和密码。就是说Windows环境下，你需要先在计算机管理的“本地用户和组”里设置一个帐号，类Unix环境需要先user add一个帐号并设置密码。优点是简单明了，缺点则是引入了另一层不安全——你的系统管理员帐号公开出来了，原因见引用。虽说一般都是使用WebSphere的安装运行帐号作为这里所设置的帐号（又有一个问题，如果是域环境中搭建Windows故障转移集群，那么这个帐号还必须是域管理员帐号），WebSphere管理员原本就知道这个帐号的，但往往开发人员也需要知道控制台的登录密码进行应用发布，这就造成了权限控制的不便。而且有些项目的安全策略需要定期修改系统密码，那更会造成种种不便。所以更常用的，是第二种“用户注册表”今天想了想，用的最多的其实是“联合存储库”，WAS建立Profiles启用安全性默认就是用这种模式。




在非 admin 用户（Windows 平台）或非 root 用户（Unix 平台）的环境中，如何为 WAS 设置安全特性？




答：在非admin用户（Windows平台）/非root用户（Unix平台）环境中运行WAS时，在全局安全（global security）特性被启用的前提下，用户的注册表（registry）必须是LDAP或一个特定的注册表（自定义注册表）。</p>
<p>如果想使用本地操作系统的注册表，运行WAS的用户必须有管理员/root用户的权限来调用本地系统的认证或收集用户/组信息的API。</p>
<p>最常用的——“联合存储库”</p>
<p>单击安全性 > 安全管理、应用程序和基础结构。
在“用户帐户存储库”下，单击联合存储库，选择设置为当前。
点击“配置”，常规属性的“域名”中已经填好defaultWIMFileBasedRealm，在“主要管理用户名”中填入wasadmin，勾选“自动生成的服务器标识”，点击应用。
出来设置密码的界面，输入密码，点击确认。
保存配置，重启应用服务器。
最常用的另一种选择——配置定制用注册表</p>
<p>单击安全性 > 全局安全性。
在“用户帐户存储库”下，单击定制独立注册表。
在“服务器用户标识”字段中输入有效用户名。 此标识是仅用于 WebSphere Application Server 安全性的安全性服务器标识，与运行服务器的系统进程无关。服务器调用本地操作系统用户注册表来认证和获取有关用户的特权信息（通过调用该特定用户注册表中的本机 API）。
在“服务器用户密码”字段中输入用户的密码。（这里的用户名和密码就是等下需要在users.props和group.props里面自己添加的）



在“定制注册表类名”字段中，输入实现了 com.ibm.websphere.security.UserRegistry 接口的以点分隔的类名的完整位置。 对于样本来说，该文件名是 com.ibm.websphere.security.FileRegistrySample。该文件在 WebSphere Application Server 类路径中，最好是在app_server_root/lib/ext 目录中。此文件存在于所有产品进程中。因此，此文件存在于单元类路径和所有节点类路径中。注意： 提供的样本旨在使您熟悉此功能。请不要在实际生产环境中使用此样本。（我一般就用这个Sample，当然生产环境还是要用自己开发的）
将定制注册表类名添加到类路径中。 建议您将包含定制用户注册表实现的 Java 归档（JAR）文件添加到app_server_root/classes 目录中。（将上述com.ibm.websphere.security.FileRegistrySample拷贝到目录中）
可选：选择授权时忽略大小写选项以执行不区分大小写的检查。 仅当用户注册表不区分大小写并且在用户和组查询期间不提供一致的大小写时，才有必要启用此选项。



如果要输入任何其他用于初始化注册表的属性，请单击应用。
可选：输入其他属性以初始化您的实现。
单击定制属性 > 新建。
输入属性名和属性值。对于样本，输入下面这两个属性。假定 users.props 文件和 groups.props 文件在产品安装目录下的customer_sample目录中。可以将这些属性放在您选择的任何目录中并通过定制属性来引用它们的位置。但是，确保该目录有适当的访问许可权。属性名
属性值usersFile
${USER_INSTALL_ROOT}/customer_sample/users.props（文件放哪无所谓，路径制定正确即可，配置完后可以把权限改为400，提高一下安全性，我不太确定，忘了这个WAS会不会加密这个文件，加密的话还要给个写入权限，明天做实验试一下）</p>
<p>groupsFile
${USER_INSTALL_ROOT}/customer_sample/groups.props</p>
<p>users.props 文件和groups.props 文件提供了这两个属性的样本。（点击自己去看吧，我不把样本复制过来了，基本上是Linux下shadow文件的格式）




将不会使用描述、必需和验证表达式字段，可以不填写这些字段。</p>
<p>在包含多个 WebSphere Application Server 进程（例如不同机器中的单元和多个节点）的 [...]]]></description>
			<content:encoded><![CDATA[<p>为的是说明WebSphere中启用管理安全性的必要性——否则谁都可以进入你的控制台修改配置，就算开发阶段没有安全要求，但是WebSphere没有Weblogic的那种锁定模式，所以当两个人同时修改配置并保存时，往往会发生操作丢失和冲突的问题。所以接下来介绍针对控制台的安全性设置，当然最直接的就是在安装profile的时候就启用管理安全性。</p>
<p>在管理控制台-安全中启用“全局安全性”，并把“应用程序安全性”、“执行Java 2安全性”选项前的勾去掉——我们今天只考虑控制台的安全性。</p>
<p>接下来对于“用户注册表”的选择，有三种方法：</p>
<p>最简单的——配置本地操作系统用户</p>
<p>单击安全性 > 全局安全性。<br />
在“用户注册表”下，单击本地操作系统。<br />
在服务器用户标识字段中输入有效用户名。<br />
在服务器用户密码字段中输入用户密码。<br />
可选：选中授权时忽略大小写选项以使 WebSphere Application Server 在您使用缺省授权时能够执行不区分大小写的授权检查。<br />
<span id="more-1498"></span>单击确定。<br />
这里的用户标识和密码，是指操作系统的用户和密码。就是说Windows环境下，你需要先在计算机管理的“本地用户和组”里设置一个帐号，类Unix环境需要先user add一个帐号并设置密码。优点是简单明了，缺点则是引入了另一层不安全——你的系统管理员帐号公开出来了，原因见引用。虽说一般都是使用WebSphere的安装运行帐号作为这里所设置的帐号（又有一个问题，如果是域环境中搭建Windows故障转移集群，那么这个帐号还必须是域管理员帐号），WebSphere管理员原本就知道这个帐号的，但往往开发人员也需要知道控制台的登录密码进行应用发布，这就造成了权限控制的不便。而且有些项目的安全策略需要定期修改系统密码，那更会造成种种不便。所以更常用的，是第二种“用户注册表”今天想了想，用的最多的其实是“联合存储库”，WAS建立Profiles启用安全性默认就是用这种模式。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
在非 admin 用户（Windows 平台）或非 root 用户（Unix 平台）的环境中，如何为 WAS 设置安全特性？<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
答：在非admin用户（Windows平台）/非root用户（Unix平台）环境中运行WAS时，在全局安全（global security）特性被启用的前提下，用户的注册表（registry）必须是LDAP或一个特定的注册表（自定义注册表）。</p>
<p>如果想使用本地操作系统的注册表，运行WAS的用户必须有管理员/root用户的权限来调用本地系统的认证或收集用户/组信息的API。</p>
<p>最常用的——“联合存储库”</p>
<p>单击安全性 > 安全管理、应用程序和基础结构。<br />
在“用户帐户存储库”下，单击联合存储库，选择设置为当前。<br />
点击“配置”，常规属性的“域名”中已经填好defaultWIMFileBasedRealm，在“主要管理用户名”中填入wasadmin，勾选“自动生成的服务器标识”，点击应用。<br />
出来设置密码的界面，输入密码，点击确认。<br />
保存配置，重启应用服务器。<br />
最常用的另一种选择——配置定制用注册表</p>
<p>单击安全性 > 全局安全性。<br />
在“用户帐户存储库”下，单击定制独立注册表。<br />
在“服务器用户标识”字段中输入有效用户名。 此标识是仅用于 WebSphere Application Server 安全性的安全性服务器标识，与运行服务器的系统进程无关。服务器调用本地操作系统用户注册表来认证和获取有关用户的特权信息（通过调用该特定用户注册表中的本机 API）。<br />
在“服务器用户密码”字段中输入用户的密码。（这里的用户名和密码就是等下需要在users.props和group.props里面自己添加的）<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
在“定制注册表类名”字段中，输入实现了 com.ibm.websphere.security.UserRegistry 接口的以点分隔的类名的完整位置。 对于样本来说，该文件名是 com.ibm.websphere.security.FileRegistrySample。该文件在 WebSphere Application Server 类路径中，最好是在app_server_root/lib/ext 目录中。此文件存在于所有产品进程中。因此，此文件存在于单元类路径和所有节点类路径中。注意： 提供的样本旨在使您熟悉此功能。请不要在实际生产环境中使用此样本。（我一般就用这个Sample，当然生产环境还是要用自己开发的）<br />
将定制注册表类名添加到类路径中。 建议您将包含定制用户注册表实现的 Java 归档（JAR）文件添加到app_server_root/classes 目录中。（将上述com.ibm.websphere.security.FileRegistrySample拷贝到目录中）<br />
可选：选择授权时忽略大小写选项以执行不区分大小写的检查。 仅当用户注册表不区分大小写并且在用户和组查询期间不提供一致的大小写时，才有必要启用此选项。<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
如果要输入任何其他用于初始化注册表的属性，请单击应用。<br />
可选：输入其他属性以初始化您的实现。<br />
单击定制属性 > 新建。<br />
输入属性名和属性值。对于样本，输入下面这两个属性。假定 users.props 文件和 groups.props 文件在产品安装目录下的customer_sample目录中。可以将这些属性放在您选择的任何目录中并通过定制属性来引用它们的位置。但是，确保该目录有适当的访问许可权。属性名<br />
属性值usersFile<br />
${USER_INSTALL_ROOT}/customer_sample/users.props（文件放哪无所谓，路径制定正确即可，配置完后可以把权限改为400，提高一下安全性，我不太确定，忘了这个WAS会不会加密这个文件，加密的话还要给个写入权限，明天做实验试一下）</p>
<p>groupsFile<br />
${USER_INSTALL_ROOT}/customer_sample/groups.props</p>
<p>users.props 文件和groups.props 文件提供了这两个属性的样本。（点击自己去看吧，我不把样本复制过来了，基本上是Linux下shadow文件的格式）<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
将不会使用描述、必需和验证表达式字段，可以不填写这些字段。</p>
<p>在包含多个 WebSphere Application Server 进程（例如不同机器中的单元和多个节点）的 Network Deployment 环境中，这些属性可供每个进程使用。由于相对名称USER_INSTALL_ROOT将扩展为产品安装目录，所以，请使用此名称来查找文件。如果未使用此名称，请确保那些文件在所有节点上都在同一位置中。</p>
<p>会将基于 WebSphere Application Server V4 的定制用户注册表迁移至基于 com.ibm.websphere.security.UserRegistry 接口的定制用户注册表。</p>
<p>单击应用。<br />
重复此步骤以添加其他属性。<br />
单击确定并完成必需的步骤以打开安全性。<br />
对于配置认证机制。WAS存在两个认证机制：第一，简单WebSphere认证机制（SWAM，单个服务器需求使用SWAM选项）；第二，轻量级第三方认证（LTPA，多服务器分布式需求使用LTPA选项）。这个比较蛮烦，又能唠叨一篇。</p>
<p>经此折腾，管理控制台的安全性就启用.<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1498.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tsm常见的排查过程(方便解决TSM常见的错误）</title>
		<link>http://www.evanjiang.net.cn/archives/1496.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1496.html#comments</comments>
		<pubDate>Wed, 02 Jun 2010 14:14:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[TSM]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1496</guid>
		<description><![CDATA[<p>tsm常见的排查过程。</p>
<p>以AIX平台上的TSM应用为例，列举了一个信息收集清单以及相信信息的收集方法，供用户参考使用。
1． 操作系统信息
操作系统版本信息
oslevel -r
操作系统fixpack信息
instfix -i &#124; grep ML
操作系统是64bit还是32bit？
2． 安装程序信息
列举系统中安装的所有TSM备份软件信息
lslpp –L &#124; grep tivoli.tsm
3． TSM的在线系统信息和相关版本信息
服务器端信息：
Q SYSTEM
Q NODE F=D
Q SCHEDULE F=D
Q LIBV F=D
客户端版本信息：
dsmc
该命令结果中包括了客户端版本的version，release，modification等信息。
4． TSM的配置信息
服务器端信息：



dsmserv.opt
在AIX环境中，通常位于/usr/tivoli/tsm/server/bin目录下
客户端信息：
dsm.sys和dsm.opt
在AIX环境中，通常位于/usr/tivoli/tsm/client/ba/bin目录下
5． TSM的日志信息
服务器端日志信息



Q Actlog Begintime=HH:MM Endtime=HH:MM
这里的Begintime和Endtime至少包括了错误信息出现前后各一个小时的信息。
dsmserv.err
该日志通常位于TSM服务器程序的安装目录下。
客户端日志信息



dsmerror.log
该日志通常位于TSM客户端程序的安装目录下。
dsmsched.log
6． TDP应用日志信息
如果是TDP for Exchange应用则应该收集：



tdpexc.log
如果是TSM API客户端应用则应该收集：
dsierror.log
如果是TDP for Oralce，则应该收集：
tdpoerror.log



如果是针对DB2备份，则应该收集：
db2diag.log，db2alert.log，userexit.log
如果是TDP for SQL，则应该收集：
tdpsql.log
7． 最后不可缺少的一点：
完整，准确的错误现象描述，和出错信息全文。
仅仅收集到上述信息，并不能完全保证售后工程师可以从中寻找和判断出问题的根源。
但这至少是一个好的开始，它可以帮助工程师了解用户的使用环境，并缩小问题根源的范围，为进一步的诊断打下基础。




</p>
]]></description>
			<content:encoded><![CDATA[<p>tsm常见的排查过程。</p>
<p>以AIX平台上的TSM应用为例，列举了一个信息收集清单以及相信信息的收集方法，供用户参考使用。<br />
1． 操作系统信息<br />
操作系统版本信息<br />
oslevel -r<br />
操作系统fixpack信息<br />
instfix -i | grep ML<br />
操作系统是64bit还是32bit？<br />
2． 安装程序信息<br />
列举系统中安装的所有TSM备份软件信息<br />
lslpp –L | grep tivoli.tsm<br />
3． TSM的在线系统信息和相关版本信息<br />
服务器端信息：<br />
Q SYSTEM<br />
Q NODE F=D<br />
Q SCHEDULE F=D<br />
Q LIBV F=D<br />
<span id="more-1496"></span>客户端版本信息：<br />
dsmc<br />
该命令结果中包括了客户端版本的version，release，modification等信息。<br />
4． TSM的配置信息<br />
服务器端信息：<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>dsmserv.opt<br />
在AIX环境中，通常位于/usr/tivoli/tsm/server/bin目录下<br />
客户端信息：<br />
dsm.sys和dsm.opt<br />
在AIX环境中，通常位于/usr/tivoli/tsm/client/ba/bin目录下<br />
5． TSM的日志信息<br />
服务器端日志信息<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>Q Actlog Begintime=HH:MM Endtime=HH:MM<br />
这里的Begintime和Endtime至少包括了错误信息出现前后各一个小时的信息。<br />
dsmserv.err<br />
该日志通常位于TSM服务器程序的安装目录下。<br />
客户端日志信息<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>dsmerror.log<br />
该日志通常位于TSM客户端程序的安装目录下。<br />
dsmsched.log<br />
6． TDP应用日志信息<br />
如果是TDP for Exchange应用则应该收集：<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>tdpexc.log<br />
如果是TSM API客户端应用则应该收集：<br />
dsierror.log<br />
如果是TDP for Oralce，则应该收集：<br />
tdpoerror.log<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>如果是针对DB2备份，则应该收集：<br />
db2diag.log，db2alert.log，userexit.log<br />
如果是TDP for SQL，则应该收集：<br />
tdpsql.log<br />
7． 最后不可缺少的一点：<br />
完整，准确的错误现象描述，和出错信息全文。<br />
仅仅收集到上述信息，并不能完全保证售后工程师可以从中寻找和判断出问题的根源。<br />
但这至少是一个好的开始，它可以帮助工程师了解用户的使用环境，并缩小问题根源的范围，为进一步的诊断打下基础。<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1496.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下 Tsm 服务器、客户端安装配置全过程</title>
		<link>http://www.evanjiang.net.cn/archives/1494.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1494.html#comments</comments>
		<pubDate>Wed, 02 Jun 2010 14:09:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[TSM]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1494</guid>
		<description><![CDATA[<p>系统环境：LINUX AS5
存储：IBM DS400 STORAGE 已经将阵列MOUNT到本地/sdb/
1．   软件下载
地址 ftp://ftp.software.ibm.com/storage/tivoli-storage-management/
TSM服务器端：选用TSM 5.2,原因是有WEB界面，ISC 和 AC普遍反映很慢
TSM客户端5.4.2
2.软件安装
2.1 安装服务器：
rpm –ivh xxx.rpm
\i686 \TIVsm-license-5.2.0-0.i386.rpm
\i686 \TIVsm-license_keys-5.2.0-0.i386.rpm
\i686 \TIVsm-server-5.2.0-0.i386.rpm
\i686 \TIVsm-tsmscsi-5.2.0-0.i386.rpm
\noarch \TIVsm-webadmin-5.2.0-0.noarch.rpm
2.2 安装客户端
rpm –ivh xxx.rpm
TIVsm-API.i386.rpm
TIVsm-BA.i386.rpm
TIVsm-msg.zh_CN.i386.rpm
3.软件配置
3.1 服务器端配置
cd /opt/tivoli/tsm/server/bin/
vi dsmserv.opt
dsmserv.opt内容如下：
*******************************
COMMMETHOD TCPIP
COMMMETHOD HTTP
TCPPORT 1500
HTTPPORT 1580
DEVCONFIG devcnfg.out
*******************************

3.2 客户端配置
cd /opt/tivoli/tsm/client/ba/bin/
vi dsm.sys （注：将/opt/tivoli/tsm/client/ba/bin/dsm.sys.smp     改名为dsm.sys）
dsm.sys内容如下：
*******************************
SErvername         SERVER1 (此名称为TSM服务器名称，默认为SERVER1)
COMMMethod      [...]]]></description>
			<content:encoded><![CDATA[<p>系统环境：LINUX AS5<br />
存储：IBM DS400 STORAGE 已经将阵列MOUNT到本地/sdb/<br />
1．   软件下载<br />
地址 ftp://ftp.software.ibm.com/storage/tivoli-storage-management/<br />
TSM服务器端：选用TSM 5.2,原因是有WEB界面，ISC 和 AC普遍反映很慢<br />
TSM客户端5.4.2<br />
2.软件安装<br />
2.1 安装服务器：<br />
rpm –ivh xxx.rpm<br />
\i686 \TIVsm-license-5.2.0-0.i386.rpm<br />
\i686 \TIVsm-license_keys-5.2.0-0.i386.rpm<br />
\i686 \TIVsm-server-5.2.0-0.i386.rpm<br />
\i686 \TIVsm-tsmscsi-5.2.0-0.i386.rpm<br />
\noarch \TIVsm-webadmin-5.2.0-0.noarch.rpm<br />
2.2 安装客户端<br />
rpm –ivh xxx.rpm<br />
TIVsm-API.i386.rpm<br />
TIVsm-BA.i386.rpm<br />
TIVsm-msg.zh_CN.i386.rpm<br />
3.软件配置<br />
3.1 服务器端配置<br />
cd /opt/tivoli/tsm/server/bin/<br />
vi dsmserv.opt<br />
dsmserv.opt内容如下：<br />
*******************************<br />
COMMMETHOD TCPIP<br />
COMMMETHOD HTTP<br />
TCPPORT 1500<br />
HTTPPORT 1580<br />
DEVCONFIG devcnfg.out<br />
*******************************<br />
<span id="more-1494"></span><br />
3.2 客户端配置<br />
cd /opt/tivoli/tsm/client/ba/bin/<br />
vi dsm.sys （注：将/opt/tivoli/tsm/client/ba/bin/dsm.sys.smp     改名为dsm.sys）<br />
dsm.sys内容如下：<br />
*******************************<br />
SErvername         SERVER1 (此名称为TSM服务器名称，默认为SERVER1)<br />
COMMMethod         TCPip<br />
TCPPort            1500<br />
TCPServeraddress    192.168.0.1   (此IP为服务器端的IP)<br />
nodename           CLIENT1   (此名称为服务器端建立的node的名称，后面会讲到)<br />
passwordaccess     generate<br />
***********************************<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>vi dsm.opt<br />
dsm.opt内容如下<br />
***********************************<br />
SErvername      SERVER1<br />
***********************************<br />
4．软件运行<br />
4.1 服务器端运行，<br />
cd /opt/tivoli/tsm/server/bin/<br />
./dsmserv<br />
然后在IE里访问http://192.168.0.1：1580    192.168.0.1为TSM服务器IP<br />
用户名密码：admin<br />
4.2 客户端运行<br />
cd /opt/tivoli/tsm/client/ba/bin/<br />
./dsmcad          启动WEB访问<br />
./dsmc            运行客户端<br />
然后在IE里访问http://192.168.0.2：1581    192.168.0.2为TSM客户端IP<br />
5．软件使用<br />
5.1 服务器端使用<br />
IE里访问http://192.168.0.1：1580<br />
设定不允许超时<br />
Operation view &#8212;- Manage security&#8212; Set web authentication time out 设为0<br />
建立客户端与服务器的连接点<br />
Object view&#8212; Client &#8212; Client Nodes&#8212;Operations&#8212; Register a new node<br />
此处的Node name 就是 客户端 DSM.SYS里的NODENAME<br />
Policy Domain Name，Policy Sets，Management Classes是系统已经默认的 命名为STANDARD,如果想自己重头建起，顺序如下：<br />
Object view&#8212;Policy Domain Name&#8212;Operations &#8212; Define Policy Domain<br />
Object view&#8212;Policy Domain Name&#8212; Policy Sets&#8212; Operations &#8212; Define Policy Sets<br />
Object view&#8212;Policy Domain Name&#8212; Policy Sets&#8212; Management Class &#8212; Operations &#8212; Define Management Class<br />
Object view&#8212;Policy Domain Name&#8212; Client Nodes&#8212;Operations&#8212; Register a new node<br />
将LOG保存地点改为存储上：<br />
Object view&#8212;Recovery Log&#8212;Recovery Log VolumesDefine recovery log volume<br />
Volume Name:/sdb/log01.dsm<br />
Format Size:1000          此处为Log文件大小定义，我设为1000 M<br />
Wait:No<br />
将Backup保存地点改为存储上：<br />
Object view&#8212; Server Storage&#8212; Storage Pools&#8212; Disk storage pools&#8212; Volumes&#8212;Operations &#8212; Define a disk storage pool volume<br />
Storage Pool Name:BACKUPPOOL<br />
Volume Name: /sdb/backup01.dsm<br />
Media AccessStatus: READWRITE<br />
Format Size:10000    此处为backup空间大小定义，我设为10000 M ,空间不够再来定义backup02.dsm,<br />
Wait:No<br />
5.2 客户端使用<br />
IE里访问http://192.168.0.2：1581<br />
输入Noden名和密码<br />
比较简单，有一点说明，要恢复以前某个时间删过的文件时,需要选择<br />
恢复&#8212;查看&#8212;显示活动/非活动的文件<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>6.定时备份<br />
方法有两种，一种是在服务器端定义SCHEDULE，一种是在客户端定义定时备份，这里我们选用比较简单的后者。<br />
在客户端运行：<br />
cd /opt/tivoli/tsm/client/ba/bin/<br />
dsmc incremental subdir=yes /test/<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>意思是 对/test/下所有文件及子目录做增量备份(incremental可简写成i),那么我们只要定时执行这条命令就可以，Linux下的 crontab即可实现，我们先把命令写在一个文件里，定时去执行这文件。<br />
cd /opt/tivoli/tsm/client/ba/bin/<br />
vi dsmc.sh<br />
内容：dsmc incremental subdir=yes /test/<br />
保存，退出<br />
chmod 777 dsmc.sh<br />
运行Linux crontab,和VI一样使用<br />
crontab –e<br />
内容：<br />
21 02 * * * /opt/tivoli/tsm/client/ba/bin/dsmc.sh   意思是每天02：21执行dsmc.sh<br />
保存，退出<br />
7．高级应用<br />
设置保留的版本数<br />
Object view&#8212;Policy Domain Name&#8212; Policy Sets&#8212; Management Class&#8212;Backup Copy Groups&#8212;Operations &#8212; Define Backup Copy Groups<br />
Object view&#8212;Policy Domain Name&#8212; Policy Sets&#8212; 你的Policy Set&#8212;Operations &#8212; Validate Policy Sets<br />
Object view&#8212;Policy Domain Name&#8212; Policy Sets&#8212; 你的Policy Set&#8212; Operations &#8212; Activate Policy Sets<br />
保留其它版本时间长度 （ Retain Extra Versions）<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>保留其它版本属性指定除最新备份版本外所有其它版本的保留天数。最新版本是现行版本，将永不删除。如果指定无限制，则额外版本会保存到备份版本数目超过存在的版本数据或删除的版本数据参数设置。在此情况下，最老的额外版本会立即删除。<br />
已删除的版本数据 (Versions Data Deleted)<br />
已删除的版本数据属性指定为从工作站上擦除的文件和目录保留的不同备份版本的最大数目。只要文件或目录还存留在工作站上，就忽略此参数。<br />
如果删除此文件或目录，则在下一次运行增量备份时，现行备份版本将变为非现行版本，而超过此参数指定数值的最早版本将被删除。<br />
其余版本的到期日期基于保留其它版本时间长度和保留唯一版本时间长度参数。<br />
注：Policy Set Name 为 ACTIVE的Policy Set 是被Activate 的Policy Set<br />
8. 基础知识<br />
完全备份<br />
备份全部选中的文件夹，并不依赖文件的存档属性来确定备份那些文件。 在备份过程中，任何现有的标记都被清除，每个文件都被标记为已备份，换言之，清除存档属性。<br />
差异备份<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>差异备份是针对完全备份：备份上一次的完全备份后发生变化的所有文件。差异备份过程中，只备份有标记的那些选中的文件和文件夹。它不清除标记，既：备份后不标记为已备份文件，换言之，不清除存档属性。<br />
增量备份<br />
增量备份是针对于上一次备份（无论是哪种备份）：备份上一次备份后，所有发生变化的文件。增量备份过程中，只备份有标记的选中的文件和文件夹，它清除标记，既：备份后标记文件，换言之，清除存档属性。<br />
完全备份和差异备份组合<br />
在星期一进行完全备份，在星期二至星期五进行差异备份。如果在星期五数据被破坏，则你只需要还原星期一完全的备份和星期四的差异备份。这种策略备份数据需要较多的时间，但还原数据使用较少的时间。<br />
完全备份和增量备份组合<br />
在星期一进行完全备份，在星期二至星期五进行增量备份。如果在星期五数据被破坏，则你需要还原星期一正常的备份和从星期二至星期五的所有增量备份。这种策略备份数据需要较多的时间，但还原数据使用较少的时间。<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1494.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TSM在windows环境下的安装、配置及服务器自身的备份</title>
		<link>http://www.evanjiang.net.cn/archives/1490.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1490.html#comments</comments>
		<pubDate>Wed, 02 Jun 2010 13:52:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[TSM]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1490</guid>
		<description><![CDATA[<p>TSM安装、配置、服务器备份
实验机 器：192.168.1.15、192.168.1.16
操作系统：windows2003
安装顺序：
1、安装isc601
2、 安装AC532
3、安装TSMserver
4、安装Client</p>
<p>安装过程：
1、在192.168.1.15上 安装ISC过程中需要设置密码，即ISCADMIN的登录密码：zenith。管理端口按默认http为8421,https为8422.
2、安 装AC532,在安装过程中注意ISC安装路径，如提示需要安装ISC时检查一下路径，修改后再行安装。
3、在192.168.1.16上安装 Client。安装时选择自定义，因为默认安装没有选择安装管理客户机命令行文件，若不安装此项，将无法在客户机上通过dsmadmc连接管理服务器。安 装完成后客户机需要重启。</p>
<p>配置过程：
1、服务器端配置：
   1.1运行配置向导&#8230;
   在过程中设置server名字为：tsmtest,接受推荐无密码。在存储设备中选择文件库，在本地硬盘设置虚拟文件带库。
   过程中未注册节点，准备在命令行中统一配置。
     1.2服务器配置：
   在向导配置完成后，服务器已经开始运行，此时在AC中可以对此服务器进行注册后进行管理，而且也能看到我们在向导中配置的虚拟带库：filediv2。

   此时我们需要进行存储规划：
   目前我们有两个设备类：磁盘与磁带库（虚拟的文件库）。设想结构为磁盘存储池（缓存）首先使用－－>装满以后迁移到带库。再用磁带建一个副本存储 池，备份前面的磁盘与磁带存储池中的数据。若前面的磁盘存储或磁带存储池数据损坏以后，可以通过副本存储池恢复。（此设计思想也可以做为项目实施过程中存 储规划参考）
    服务器配置步骤（基本步骤）：
      定义带库和路径
      定义驱动器和路径
      定义设备类
  [...]]]></description>
			<content:encoded><![CDATA[<p>TSM安装、配置、服务器备份<br />
实验机 器：192.168.1.15、192.168.1.16<br />
操作系统：windows2003<br />
安装顺序：<br />
1、安装isc601<br />
2、 安装AC532<br />
3、安装TSMserver<br />
4、安装Client</p>
<p>安装过程：<br />
1、在192.168.1.15上 安装ISC过程中需要设置密码，即ISCADMIN的登录密码：zenith。管理端口按默认http为8421,https为8422.<br />
2、安 装AC532,在安装过程中注意ISC安装路径，如提示需要安装ISC时检查一下路径，修改后再行安装。<br />
3、在192.168.1.16上安装 Client。安装时选择自定义，因为默认安装没有选择安装管理客户机命令行文件，若不安装此项，将无法在客户机上通过dsmadmc连接管理服务器。安 装完成后客户机需要重启。</p>
<p>配置过程：<br />
1、服务器端配置：<br />
   1.1运行配置向导&#8230;<br />
   在过程中设置server名字为：tsmtest,接受推荐无密码。在存储设备中选择文件库，在本地硬盘设置虚拟文件带库。<br />
   过程中未注册节点，准备在命令行中统一配置。<br />
     1.2服务器配置：<br />
   在向导配置完成后，服务器已经开始运行，此时在AC中可以对此服务器进行注册后进行管理，而且也能看到我们在向导中配置的虚拟带库：filediv2。<br />
<span id="more-1490"></span><br />
   此时我们需要进行存储规划：<br />
   目前我们有两个设备类：磁盘与磁带库（虚拟的文件库）。设想结构为磁盘存储池（缓存）首先使用－－>装满以后迁移到带库。再用磁带建一个副本存储 池，备份前面的磁盘与磁带存储池中的数据。若前面的磁盘存储或磁带存储池数据损坏以后，可以通过副本存储池恢复。（此设计思想也可以做为项目实施过程中存 储规划参考）<br />
    服务器配置步骤（基本步骤）：<br />
      定义带库和路径<br />
      定义驱动器和路径<br />
      定义设备类<br />
      定义存储池<br />
      创建策略域<br />
      创建策略集<br />
      创建管理类<br />
      创建备份副本组<br />
      激活策略集<br />
      ＃此例中我们的带库和路径、驱动器和路径、设备类等都在向导中配置完毕，也可以在命令行中完成。<br />
示例：<br />
定义磁带库和路径<br />
tsm> define library LB0.1.0.4 libtype=scsi share=yes   ＃带库名，以带库在TSM中显示为准  按这篇文章来看,WINDOWS2003也连接了IBM DS8342等磁带库设备.不然TSM不会显示LB0.1.0.4的磁带标识的.那么也就是说,这篇文章不值得参考.因为跟我们的环境有些不一样.我们现在的环境没有磁带库.遇到一些困难.<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
tsm> update library LB0.1.0.4 libtype=scsi share=yes<br />
tsm> define path tsm LB0.1.0.4 srctype=server desttype=library device=LB0.1.0.4 online=yes   ＃服务器名、带库名<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
定义驱动器和路径<br />
tsm> define drive LB0.1.0.4 MT0.2.0.4 element=256    ＃带库名、驱动器名<br />
tsm> define path tsm MT0.2.0.4 srctype=server desttype=drive library=LB0.1.0.4 device=MT0.2.0.4 online=yes  ＃服务器名、驱动器名</p>
<p>tsm> define drive LB0.1.0.4 MT0.3.0.4  element=257<br />
tsm> define path tsm MT0.3.0.4  srctype=server desttype=drive library=LB0.1.0.4 device=MT0.3.0.4  online=yes</p>
<p>定义设备类<br />
tsm> define devclass LTOCLASS1 devtype=lto library= LB0.1.0.4   ＃设备类名</p>
<p>    定义存储池：<br />
tsm> define stgpool backpool9 disk   #存储池名、设备类名<br />
tsm> define stgpool nextpool9 filedev2 maxscratch=100  #<br />
  tsm> define stgpool copypool9 filedev2 pooltype=copy maxscratch=20  #定义副本存储池</p>
<p>    设置backpool的下一存储池为nextpool：<br />
         tsm>update stgpool backpool9 nextpool=nextpool9  copystg=copypool9 </p>
<p>         设置backpool1的副本存储池为copypool:<br />
         tsm>backup stgpool backpool9 copypool9 maxprocess=1</p>
<p>         创建备份策略域：<br />
                     tsm> define domain testpolicy</p>
<p>         创建策略集：<br />
         tsm> define policyset testpolicy testpolicy_set   #策略域名、策略集名</p>
<p>    创建管理类：<br />
        tsm> define mgmtclass testpolicy testpolicy_set testpolicy_maclass migdestination=none<br />
                   tsm> assign defmgmtclass testpolicy testpolicy_set testpolicy_maclass     </p>
<p>    创建备份副本组：<br />
        txm> define copygroup testpolicy testpolicy_set testpolicy_maclass standard destination=engback1 serialization=static verexists=5  verdeleted=4 retextra=90 retonly=600    ＃上例中standard是关键定，定义备份副本组是不需要名字<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
         激活策略集：<br />
        tsm>activate policyset testpolicy testpolicy_set </p>
<p>    配置客户机节点，（客户机中修改dsm.opt文件）：<br />
tsm> register node ytclient zenith domain=testpolicy    ＃节点名、节点密码  节点名字与密码是在服务器里设置的。而在客户端就不需要设置，只需设置passwordaccess generate</p>
<p>2、客户机配置：<br />
   编辑配置文件：..\tsm\baclient\dsm.opt   #原文件可能为dsm.smp，有时安装后此文件在config目录下，拷过来即可。<br />
    COMMMethod         TCPip<br />
    TCPPort            1500<br />
    TCPServeraddress   192.168.11.20<br />
    nodename           ytclient<br />
    passwordaccess       generate<br />
<br />
完成上述操作后，我们已经基本完成服务器端存储结构及配置，也已与客户端建立好连接。此时在客户端已经可以 通过管理命令登录管理备份服务器。</p>
<p>客户端备份测试：<br />
select e:\ftp-soft\ksg\*    #文件大小共约60M左右，备份时提示：服务器耗尽数据存储空间<br />
备份完成后通过：<br />
q backup d:\ftp-soft\ksg\*   ＃也无法查看到备份内容，显然备份没有成功。应该是备份存储池没有空间所致。<br />
我们登录服务器查看：<br />
q stg<br />
在显示的我们使用的主存储池backuppool9中estimated capacity为0.0M,于是我们登录管理控制台，为backuppool9添加disk volume。此处如果是真正的磁带库，则我们需要将磁带检入即可。此处注意，对磁带操作有两个命令：label、checkin，语法如下：<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
label libvolume lb0.1.0.4 search=yes labelsou=barcode checkin=scratch overwrite=yes<br />
checkin libvolume lb0.1.0.4 search=yes status=scratch<br />
label 对磁带做标签操作，相当于对磁带进行格式化，所以在有数据时不可随意进行此步操作。<br />
checkin是对磁带进行检入，若磁带比较多，需要花费一定 时间。<br />
添加Volume后再次备份，仍然提示服务器耗尽数据存储空间。<br />
登录web管理台查看，发现在 testpolicy_mgmclass管理类中备份设置未选择存储池，添加备份存储池为：backuppool9。然后备份作业成功。</p>
<p>恢 复：<br />
restore -inactive e:\ftp-soft\* -pick -subdir=yes<br />
服务器备份恢复测试：</p>
<p>数 据库完全备份：<br />
backup db type=full devclass=filedev2    ＃800答：备份数据写到定义的设备类当中去，在定义文件设备类时需要指定文件目录，在做此服务器DB备份时将会备入定义设备类时指定的文件夹中。若系统 损坏，重新安装TSM后，需要定义同名设备类，然后指定同一目录。进入系统后恢复即可。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
在上图中设置的参数，最大卷容量即在此设备类的存 储池备份时，每卷最大只能25M，若有个50M的文件备份一次就需要两个卷。安装限制似乎类似于带库的驱动器数目。</p>
<p>完全备份后，可以执行 增量备份：<br />
backup db type=incremental devclass=filedev2</p>
<p>测试过程：<br />
备份 数据：<br />
在客户机192.168.1.16上做备份：<br />
select e:\tsmtest\*</p>
<p>备份数据库：<br />
backup db type=full devclass=filedev2</p>
<p>删除所有安装TSM相关软件，一切都重新装过，进行恢复测试：<br />
1、 重复前面的安装过程&#8230;<br />
2、安装完成后停止掉TSM服务，然后进入安装目录server下运行恢复命令:<br />
dsmserv restore db devclass=filedev2 vol=95362738.dbb commit=yes<br />
卷名就是指定设备类目录下 扩展名为DBB的文件名。同时恢复DB还需要devcnfg(安装目录server1下)、volhistory（server1下 dsmserv.opt中的：VOLUMEHistory &#8220;volhist.out&#8221; ）两个文件存在，而且此两个文件要是在做DB备份时的状态存在才可以，所以在做DB备份时，须将当时状态下的这两个文件拷贝出来。</p>
<p>在做上 述操作后，由于devcnfg等两个文件都是新安装的文件，所以操作后server1服务无法启动，在“服务”中及命令行下都无法启动了，提示在启动服务 器前必须先恢复数据库。</p>
<p>重新配置TSMserver1,然后备份DB，并将devcnfg.out、volhist.out两文件拷出。 然后删除server1,再重新配置后，恢复测试，通过。</p>
<p>数据库DB备份总结：<br />
数据库DB自身的备份可以通过如下命令完成：<br />
backup db type=full devclass=filedev2<br />
＃备份DB时只能指定设备类，还可以指定具体备份到哪一卷，但是此处不能使 用存储池。因为一旦数据库损坏，是无法识别存储池的。<br />
恢复时使用命令：<br />
dsmserv restore db devclass=filedev2 vol=95362738.dbb commit=yes<br />
＃在进行数据库恢复时，若备份时采用的是文件设备 类，此时需提前定义相同名字的文件设备类，并且要与原类定义时指向同一文件夹。<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1490.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>有关IBM TSM常用实施配置</title>
		<link>http://www.evanjiang.net.cn/archives/1486.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1486.html#comments</comments>
		<pubDate>Mon, 26 Apr 2010 16:06:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[TSM]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1486</guid>
		<description><![CDATA[<p>　　常用命令
　　1.tsm client command line interface
　　#dsmc
　　显示TSM server和TSM client的version and release号
　　运行client端的备份
　　图形接口命令：#dsm
　　2.administrative client command line interface
　　#dsmadmc
　　显示TSM server和TSM client的version and release号
　　web管理界面：http://serveraddress:1580
　　ISC管理界面：http://serveraddress:8421/ibm/console
　　3.tape defragmentation or reclamation
　　当磁带上的数据过期后，该数据会被标识为空，但空间并不能被释放，因为磁带是顺序写设备，不可能重写磁带上空的空间。
　　4.security concepts
　　tsm server 和client之间的通讯采用mutual suspision algorithm,该机制类似于Kerberos授权机制。
　　tsm为数据的保护提供两种加密机制：56-bit DES和128-bit AES
　　TSM5.5版本的数据加密有了一个新特性，不再使用encryptionkey的方式。
　　5.Multi-session and transaction concepts
　　Multi-session: 关注server设置MAXSESSIONS，client端设置MAXNUMMP，设置RESOURCEUTILIZATION in client option file.
　　很多人问道：tsm在备份的时候启动几个driver是如何确定的，就是以上几个参数。
用TSM实施备份：备份模式总结一
　　有两种类型的备份：incremental backup 和selective backup
　　incremental backup备份文件、目录和自从上次新的或被修改的子目录
　　selective backup无条件地备份指定的文件或者目录.
　　6.1 incremental backup
　　incremental backup操作是对client文件系统的全扫描，在incremental backup期间，client会询问server哪些文件当前已被存储。client用这些信息来进行如下操作：
　　


- 备份新文件
　　- 备份被修改的文件
　　- 使存储在server上的client上已被删除的文件过期
　　6.2 Selective backup
　　selective backup无条件地备份指定的文件或者目录,而不管它是否被修改
　　6.3 Image or logical volume backup
　　tsm使用这种机制使文件系统或裸设备作为一个单个的对象来备份。
　　此备份结合incremental [...]]]></description>
			<content:encoded><![CDATA[<p>　　常用命令<br />
　　1.tsm client command line interface<br />
　　#dsmc<br />
　　显示TSM server和TSM client的version and release号<br />
　　运行client端的备份<br />
　　图形接口命令：#dsm<br />
　　2.administrative client command line interface<br />
　　#dsmadmc<br />
　　显示TSM server和TSM client的version and release号<br />
　　web管理界面：http://serveraddress:1580<br />
　　ISC管理界面：http://serveraddress:8421/ibm/console<br />
　　3.tape defragmentation or reclamation<br />
　　当磁带上的数据过期后，该数据会被标识为空，但空间并不能被释放，因为磁带是顺序写设备，不可能重写磁带上空的空间。<br />
　　4.security concepts<br />
　　tsm server 和client之间的通讯采用mutual suspision algorithm,该机制类似于Kerberos授权机制。<br />
　　tsm为数据的保护提供两种加密机制：56-bit DES和128-bit AES<br />
　　TSM5.5版本的数据加密有了一个新特性，不再使用encryptionkey的方式。<br />
　　5.Multi-session and transaction concepts<br />
　　Multi-session: 关注server设置MAXSESSIONS，client端设置MAXNUMMP，设置RESOURCEUTILIZATION in client option file.<br />
　　<span id="more-1486"></span>很多人问道：tsm在备份的时候启动几个driver是如何确定的，就是以上几个参数。<br />
用TSM实施备份：备份模式总结一<br />
　　有两种类型的备份：incremental backup 和selective backup<br />
　　incremental backup备份文件、目录和自从上次新的或被修改的子目录<br />
　　selective backup无条件地备份指定的文件或者目录.<br />
　　6.1 incremental backup<br />
　　incremental backup操作是对client文件系统的全扫描，在incremental backup期间，client会询问server哪些文件当前已被存储。client用这些信息来进行如下操作：<br />
　　<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>- 备份新文件<br />
　　- 备份被修改的文件<br />
　　- 使存储在server上的client上已被删除的文件过期<br />
　　6.2 Selective backup<br />
　　selective backup无条件地备份指定的文件或者目录,而不管它是否被修改<br />
　　6.3 Image or logical volume backup<br />
　　tsm使用这种机制使文件系统或裸设备作为一个单个的对象来备份。<br />
　　此备份结合incremental backup会使备份和恢复的速度加快，因为进行镜像备份时会覆盖它之前的文件内容。<br />
　　镜像备份的好处有：<br />
　　- 相对于文件级别的备份，它提供更快的备份和恢复机制<br />
　　- 节约了server的资源，因为它只需要一个入口，而不需要对所有文件进行扫描<br />
　　- Provide a point-in-time picture of your file system,which is useful if your enterprise needs to recall<br />
　　6.4 locked file backup<br />
　　tsm可以备份一些被locked的文件，这些文件是由于某些应用的需要而拒绝某些进程的访问。tsm使用Open File support(OFS)通过Logical Volume Snapshot Agent(LVSA)来实现,但有可能在备份多个locked文件时导致文件的不一致，可以使用PRESCHEDULECMD和POSTSCHEDULECMD使文件一致和closed状态.<br />
　　<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>windows xp和windows server2003也包含Microsoft Volume Shadow-Copy Service(VSS)执行在线备份。<br />
　　unix平台下tsm client不提供LVSA.需要购买snapshot模块，在incremental,selective或archive命令时使用snapshotroot选项 。<br />
　　6.5 Adaptive subfile backup<br />
　　tsm备份文件改变的部分，根据byte级别或者说block级别。<br />
　　它基于base file和delta文件的备份，delta文件备份的次数最大为20次，超过此数目后它将对之前的备份进行归档然后开始新的base file的备份.恢复时只恢复base file和最后一次备份的delta文件，因为最后一次delta备份包含自base file以来所有改变的文件的备份，类似于差异备份。<br />
　　6.6 Journal-based backup<br />
　　journal-based backup 可用于windows client，可用于tsm v5.3.3 和更高版本的B/A client,and for AIX client.<br />
　　journal-based backup,client不扫描本地文件系统或从server获得信息决定某个文件要处理。<br />
　　并且减少client和server之间的网络传输。<br />
　　incremental-by-date backup 花费很少的时间处理备份相对于完全增量备份，并且需要很少的内存。因为所有文件的列表不需要从server获得。<br />
　　与传统incremental backup不同的是，incremental-by-date 和journal-based backup 不包含当前server上的所有工作站文件的存储。<br />
　　incremental-by-date类似于差异备份<br />
　　6.7 Group backup<br />
　　类似于归档<br />
用TSM实施备份：备份模式总结二<br />
　　6.8 Active and inactive file versions<br />
　　policy settings:verexit=4;verdel=2;retextra=30;retonly=45<br />
　　verexit:保留版本数<br />
　　veldel:当文件被删除后，保留该文件的版本数<br />
　　retextra:当文件被删除后，保留该文件备份的天数<br />
　　retonly:保留最后一个版本的天数.<br />
　　6.9 backup binding<br />
　　将文件与管理类进行link process is called binding.<br />
　　<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>binding process发生在当你执行增量备份的时候。TSM client 检查server 管理类和client include-exclude list或client option file执行binding 进程<br />
　　6.9.1 rebinding<br />
　　6.10 backup set （又称为portable backup:便携式备份）<br />
　　如果要产生一个client最近备份的copy从tsm server到顺序介质上，则通过generate backupset命令来完成。通过此命令可以将　　client在tsm server的备份生成一个backupset，通过将其备份到顺序介质上，可以实现不依赖于tsm的恢复。<br />
　　注：lan-free 的backup的恢复需要安装tsm client code。而且不支持&#8221;bare machine recovery&#8221;能力.<br />
　　可以通过以下方法产生存储一个独立的backup set:<br />
　　- 使用tape device<br />
　　- 定义一个sequential device class，并指定到disk。<br />
　　- 使用可擦写cd或zip drive，使用tsm定义一个子REMOVABLEFILE device class.<br />
　　6.10.1 backup set planning<br />
　　如果要将backup set重新定义到新的tsm server，则使用define backupset命令<br />
　　6.11 TSM Restore<br />
　　6.11.1Point-in-time restore<br />
　　在进行incremental backupx或selective and incremental-by-date backup时，当从client filespace 或者目录时并不通知server.<br />
　　6.11.2 No-query restore<br />
　　在一般或者传统的恢复意义上,client会查询server所有需要恢复对象的信息,server会将信息发送给出client，client会进行排序以便于tape mounts被优化。可是，这些工作花费的时间会相当长。TSM才用的是No-query恢复。<br />
　　<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>A no-query restore会让tsm sever 做如下工作：<br />
　　- client发送需要恢复文件的信息给server<br />
　　- server计算出最佳的tape mount序列，便开始发送恢复的数据到client<br />
　　由于对tape mount的优化工作交由server来处理，加快了恢复的时间.<br />
　　6.11.3 Multi-session restore<br />
　　Multi-session restore 可以在B/A client执行no-query restore时执行多个restore session.<br />
　　6.11.4 Logical volume restore<br />
　　6.12 scheduling<br />
　　有两种机制通常来控制client和server之间的联系去运行一个schedule: CLIENT POLLING 和SERVER PROMPTED<br />
　　Scheduling:<br />
　　tsm 的schedule分为两类：administrative scheduling / client scheduling两者有如下三点不同：<br />
　　- Execution location:前者在server执行，后者在client上执行<br />
　　- Domain privilege:只有具有administrator或system权限的用户才可以管理administrative schedule.<br />
　　- Commands: administrative schedule只能初始化一个内部的tsm 命令，而client不仅可以执行一个内部的client action，而且可以执行一个外部的命令如a shell scrīpt or executable.<br />
　　<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>三种模式：client polling 和server-prompted 及on-time client schedule<br />
　　7 Setting up the API environment<br />
　　DSMI_CONFIG the fully qualified name for the client option file for unix<br />
　　DSMI_DIR Points to the path containing dsm.sys,dsmtca,the en_US NLS language.<br />
　　DSMI_LOG points to the path for the dsierror.log file<br />
归档和分层存储<br />
　　HSM migration(UNIX)：TSM通常有两种方式用来管理和监控剩余空间：threshold and demand<br />
　　HSM migration(Windows)<br />
　　需要定义migration jobs来控制migrate process.使用dsmcls来定义单独的migration jobs.也可以使用dsmgui接口来实现<br />
　　Server architecture<br />
　　使用copy group的copyserialization参数的四个属性值来定义tsm 备份正在修改的目标文件的行为:<br />
　　Advanced transparent recall<br />
　　有三种modes: normal,migrate-on-close,read-without-recall<br />
　　Data storage<br />
　　使用simultaneous writes to copy storage pools可以为主存储池指定最多3个copy pool.而且simultaneous writes to copy stroage pools 不同于backup stgpool,backup stgpool在同一时间里不能写到多个copy storage pool.但simultaneous 不支持server-free或LAN-free备份，或当nas backup 写toc文件。<br />
　　每个节点的最大数目的mount point由MAXNUMMP参数来决定，而且，需要两个或以上的tape drive.<br />
　　存储池之间的数据迁移<br />
　　有两种方式自动控制存储池之间的数据移动：<br />
　　- Migration:对于primary pool，可以通过Highmig和Lowmig参数来控制。copy stgpool不能。对于random access stgpool,可以指定MIGPocess参数，可以将其参数值等于drive的个数.默认为1.<br />
　　- Maxsize：通过此参数可以限制大于该数值的大文件直接backup到另一个存储池中.<br />
　　有两种方法可以手动的初始化一个migration:<br />
　　- 更新存储池，修改highmig和lowmig的值<br />
　　- 使用migrate stgpool。<br />
　　Reclamation回收<br />
　　由于顺序卷只能被成功的从头写到尾，且只能写一次，TSM不会再重写该卷中因过期而empty的部分。由于一个顺序卷可能很难所有的文件都过期，所以只能通过手工回收来回收空间，回收卷的状态应该是&#8221;scratch&#8221;或&#8221;filling&#8221;中的一种，而且被回收的卷状态应该是&#8221;full&#8221;,一旦被回收的卷被empty,它的状态会返回scratch.<br />
　　通常回收需要2个或更多的驱动器会更有效，但是，也可以通过设置RECLAIMSTGpool参数来指定一个顺序存储池, reclaimstgpool允许指定另一个存储池的顺序卷作为他的holding area.这个存储池必须为primary sequential storage pool.由于该存储池必须为顺序的，所以可以指定其设备类为FILE.<br />
　　在指定该顺序存储池为回池后，还要将该存储池的next pool设为source存储池，这样就可以形成一个循环。<br />
如何减少恢复的时间？<br />
　　10.1Collocation<br />
　　- Collocation(配置）:最小化磁带存储client端数据的数目。<br />
　　- Disk caching: 从disk存储池恢复数据，即使它已经被迁移。<br />
　　- Consolidation（合并）:移动数据到快速访问存储池或者在恢复他们之前合并数据。<br />
　　通过collocation可以设置nodes group。使用define collocgroup和define collocmember.TSM 缺省的是collocate by group.如果你不能定义groups or members, 缺省的行为是collocate by node.你也可以通过设置collocate to &#8220;node&#8221;。<br />
　　最好的粒度是设置collocate的参数是&#8221;Filespace&#8221;，如果collocation by filespace被定义，server 会尝试一个volume上的一个节点的filespace.如果节点有多个filespaces，server 会将数据存放在不同顺序卷的每个filespace.<br />
　　如果collocation 被disabled,则有server会尝试使用所在可用的空间卷。<br />
　　使用collocation具有的三点优势:<br />
　　- 使工作站的数据集中<br />
　　- 减少磁带在恢复过程中的mount次数<br />
　　- 使在存储池的级别可进行选择.<br />
　　在大部分情况下,考虑到带盒的价格和传输和离线存储的成本,copy storage 一般不用collocated.<br />
　　10.2 Disk caching<br />
　　disk caching只用来设置disk storage pools.(set the cache setting to &#8220;yes&#8221;) 在迁移进程迁移一部分数据到下一个存储池之后,　　会将迁移的数据同时保存在disk cache里,以便于恢复和还原.<br />
　　disk caching 有以下缺点:<br />
　　> Client端的备份性能将受到影响,因为server在写存储新的文件是会决定哪些cached files文件要被重写.<br />
　　> 需要更多的database space .因为server要跟踪文件的cached copy和迁移到其他存存储池的copy.<br />
　　10.3Data movement<br />
　　tsm 允许使用move nodedata 命令来移动顺序存储池的节点的数据,到随机访问存储池中,这样可以提高数据恢复的速度.<br />
SAN环境拷贝<br />
　　TSM 使用两种主要的功能能够利用SAN拓扑技术:<br />
　　- Tape library sharing: TSM带库共享可以使管理员集中tape资源,以供多个tsm servers使用.带库共享提高备份和恢复的性能和带库的硬件利用率.<br />
　　- LAN-free client data transfer:基于TSM server的控制,存储池被分配给TSM Client来运行SAN存储代理.client的backup数据通过SAN直接传输到存储池,client和server之间的控制信息通过LAN传输,而且只占用极少的带宽.<br />
　　11.1 TSM in a SAN environment<br />
　　主要有三个方面:<br />
　　- 可用性(Availability)<br />
　　- 性能(Performance)<br />
　　- 有效性(Efficiency)<br />
　　可用性主要表现在:<br />
　　- 远程连接带库.<br />
　　- Fabric failover<br />
　　带库共享有以下两种基本的形式:<br />
　　- Library partitioning: 许多流行的带库都可以分成逻辑上的两个或多个虚拟的带库.每个逻辑带库都有自己的驱动器集和cartridge slot ranges.每个server只能访问属于自己的分区.<br />
　　- Library sharing:是指连接到SAN网络的主机都可以共享整个带库.每个tsm server都可以访问所有的带库和带库的slots.如果带库卷为private,则表示只有它所属的主机可以访问它.如果要使用新的磁带卷,则可以通过scratch tape pool得到.<br />
　　SAN环境中,TSM可以自动检测到设备的序列号和element号.<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1486.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TSM SERVER上，文件存在哪里？</title>
		<link>http://www.evanjiang.net.cn/archives/1484.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1484.html#comments</comments>
		<pubDate>Mon, 26 Apr 2010 16:01:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[TSM]]></category>
		<category><![CDATA[存储备份]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1484</guid>
		<description><![CDATA[<p>　　其实你根本不需要知道你备份的文件在TSM SERVER上存在哪里。restore\retreive向TSM SERVER发出恢复请求后，TSM SERVER自动去找到文件并进行恢复。
　　如果你非要看看文件到底存那里，可以依照下面步骤。了解下面步骤，可以增加对TSM的理解。
查看TSM Server上的文件步骤1-3
　　1、先找到你这个client对应的TSM SERVER。
#cd /usr/tivoli/tsm/client/ba/bin
#pg /dsm.sys
SErvername bosstest
COMMmethod TCPip
TCPPort 1500
TCPServeraddress 10.143.3.81
Passwordaccess generate
NodeName node10
resourceutilization 10
　　2、到10.143.3.81，登录到TSM SERVER
#dsmadmc
uid:admin passwd:admin
tsm>
　　3、查到client所对应的node名称
tsm>q node f=d
以详细格式查询节点信息，会有IP地址列示
Node Name: BJDSS
Platform: AIX
Client OS Level: 5.2
Client Version: Version 5, Release 2, Level 0.0
Policy Domain Name: STANDARD




Last Access Date/Time: 11/07/06 23:07:43
Days Since Last Access: 1
Password Set Date/Time: 09/22/06 10:52:21
Days Since Password Set: 47
Invalid Sign-on Count: 0
Locked?: No
Contact:
Compression: [...]]]></description>
			<content:encoded><![CDATA[<p>　　其实你根本不需要知道你备份的文件在TSM SERVER上存在哪里。restore\retreive向TSM SERVER发出恢复请求后，TSM SERVER自动去找到文件并进行恢复。<br />
　　如果你非要看看文件到底存那里，可以依照下面步骤。了解下面步骤，可以增加对TSM的理解。<br />
查看TSM Server上的文件步骤1-3<br />
　　1、先找到你这个client对应的TSM SERVER。<br />
#cd /usr/tivoli/tsm/client/ba/bin<br />
#pg /dsm.sys<br />
SErvername bosstest<br />
COMMmethod TCPip<br />
TCPPort 1500<br />
TCPServeraddress 10.143.3.81<br />
Passwordaccess generate<br />
NodeName node10<br />
resourceutilization 10<br />
　　2、到10.143.3.81，登录到TSM SERVER<br />
#dsmadmc<br />
uid:admin passwd:admin<br />
tsm><br />
　　<span id="more-1484"></span>3、查到client所对应的node名称<br />
tsm>q node f=d<br />
以详细格式查询节点信息，会有IP地址列示<br />
Node Name: BJDSS<br />
Platform: AIX<br />
Client OS Level: 5.2<br />
Client Version: Version 5, Release 2, Level 0.0<br />
Policy Domain Name: STANDARD<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Last Access Date/Time: 11/07/06 23:07:43<br />
Days Since Last Access: 1<br />
Password Set Date/Time: 09/22/06 10:52:21<br />
Days Since Password Set: 47<br />
Invalid Sign-on Count: 0<br />
Locked?: No<br />
Contact:<br />
Compression: Client<br />
Archive Delete Allowed?: Yes<br />
Backup Delete Allowed?: Yes<br />
Registration Date/Time: 09/14/06 10:59:01<br />
Registering Administrator: OPEN_REGISTRATION<br />
Last Communication Method Used: Tcp/Ip<br />
Bytes Received Last Session: 13,343.75 M<br />
Bytes Sent Last Session: 1,759<br />
Duration of Last Session: 1,767.81<br />
Pct. Idle Wait Last Session: 0.43<br />
Pct. Comm. Wait Last Session: 40.66<br />
Pct. Media Wait Last Session: 4.38<br />
Optionset:<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
URL:<br />
Node Type: Client<br />
Password Expiration Period:<br />
Keep Mount Point?: No<br />
Maximum Mount Points Allowed: 1<br />
Auto Filespace Rename : No<br />
Validate Protocol: No<br />
TCP/IP Name: p690<br />
TCP/IP Address: 127.0.0.1<br />
Globally Unique ID: 00.00.00.00.2e.bc.11.d8.a4.44.08.63.0a.8f.08.14<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>查看TSM Server上的文件步骤4-5<br />
　　4、查看节点对应的domain<br />
tsm>q node<br />
查看domain中policy set ,mgt calss copygroup名称<br />
Node Name Platform Policy Domain Days Since Days Since Locked?<br />
Last Access Password Set Name &#8211; d<br />
ss<br />
&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-<br />
BJDSS AIX STANDARD 1 47 No<br />
tsm>q domain<br />
Policy Activated Activated Number of Description<br />
Domain Policy Default Registered<br />
Name Set Mgmt Nodes<br />
Class<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>&#8212;&#8212;&#8212; &#8212;&#8212;&#8212; &#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8211;<br />
STANDARD STANDARD STANDARD 15 Installed default policy domain.<br />
　　5、策略的查看，copygroup中定义了目标stgpool<br />
tsm>q copygroup standard standard standard type=archive format=detail<br />
Policy Domain Name: STANDARD<br />
Policy Set Name: STANDARD<br />
Mgmt Class Name: STANDARD<br />
Copy Group Name: STANDARD<br />
Copy Group Type: Archive<br />
Retain Version: 365<br />
Copy Serialization: Shared Static<br />
Copy Frequency: CMD<br />
Copy Mode: Absolute<br />
Copy Destination: ARCHIVEPOOL<br />
Last Update by (administrator): SERVER_CONSOLE<br />
Last Update Date/Time: 10/26/99 15:42:51<br />
Managing profile:<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>查看TSM Server上的文件步骤6-7<br />
　　6、q volume stgpool=archivepool<br />
Storage Device Estimated Pct Volume<br />
Pool Name Class Name Capacity Util Status<br />
(MB)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;<br />
000055 ARCHIVEPOOL 3590DC 26,667.1 100.0 Full<br />
A00040 ARCHIVEPOOL 3590DC 53,191.2 100.0 Full<br />
A00060 ARCHIVEPOOL 3590DC 52,438.8 100.0 Full<br />
A00084 ARCHIVEPOOL 3590DC 52,866.0 100.0 Full<br />
A00086 ARCHIVEPOOL 3590DC 52,458.1 100.0 Full<br />
A00087 ARCHIVEPOOL 3590DC 52,504.7 100.0 Full<br />
A00088 ARCHIVEPOOL 3590DC 52,344.2 100.0 Full<br />
A00089 ARCHIVEPOOL 3590DC 52,673.3 100.0 Full<br />
　　、tsm> q content b00336 node=BJdss<br />
Node Name Type Filespace FSID Client&#8217;s Name for File Name<br />
&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;- &#8212;&#8212;&#8212;- &#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
BJDSS Arch /tsm_migrate 1 /bibak/ 20061009.boss-bi.tar.Z<br />
BJDSS Arch /tsm_migrate 1 /bibak/ 20061009.dayout.tar.Z<br />
BJDSS Arch /tsm_migate 1 /bibak/ 20061009.dayout.tar.Z<br />
BJDSS Arch /tsm_migrate 1 /bibak/ 20061009.table.tar.Z<br />
BJDSS Arch /tsm_migrate 1 /bibak/ 20061010.boss-bi.tar.Z<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1484.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决AppSrv02概要文件删除不彻底问题</title>
		<link>http://www.evanjiang.net.cn/archives/1481.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1481.html#comments</comments>
		<pubDate>Sun, 18 Apr 2010 06:43:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1481</guid>
		<description><![CDATA[<p>有次尝试手工创建WebSphere概要文件。由于初次操作，操作完，发觉创建的概要文件不是自已想要，想将它删除，但发现不能正常删除，想创建新的概要文件，又提示新的概要文件名已经存在。折腾很久，都没有解决问题，最后，从网上找了一些文章参考。最后解决了问题。</p>
<p>在做把下面的两个命令就更完美。。
./manageprofiles.sh -validateAndUpdateRegistry -profileName AppSrv01</p>
<p>./manageprofiles.sh -validateRegistry
&#8211;将显示所有的profile全部有效。

websphere 6.1 删除概要文件</p>
<p>成功删除profile）




1.找到profileRegistry.xml，在目录IBM\WebSphere\AppServer\properties里,去掉想删除的profile的配置即可。




2.删除profileName.bat  在目录IBM\WebSphere\AppServer\properties\fsdb里，删除</p>
<p>3.将profile的实际存储目录及内容删除，如：D:\IBM\WebSphere\AppServer\profiles\AppSrv01</p>
<p>　　创建概要文件：</p>
<p>　　方案一：./manageprofiles.sh -create -profileName AppSrv01</p>
<p>　　-profilePath /opt/IBM/WebSphere/AppServer/profiles/AppSrv01




　　-templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default</p>
<p>　　方案二：开始－程序－IBM WebSphere-Application Server-Profile Management Tool, 按照提示创建。




　　删除概要文件：</p>
<p>　　方案一：

　　1.找到profileRegistry.xml，在目录IBM\WebSphere\AppServer\properties里,去掉想删除的profile的配置即可。
　　2.删除profileName.bat  在目录IBM\WebSphere\AppServer\properties\fsdb里，删除</p>
<p>　　3.将profile的实际存储目录及内容删除，如：D:\IBM\WebSphere\AppServer\profiles\AppSrv01




　　方案二：</p>
<p>　　使用命令 manageprofiles.bat -delete -profileName profileNam</p>
<p>可以AppServer\properties\profileRegistry.xml下把节点配置删除，然后把profile下相应文件夹和程序启动的快捷方式都删除就可以了吧。




</p>
]]></description>
			<content:encoded><![CDATA[<p>有次尝试手工创建WebSphere概要文件。由于初次操作，操作完，发觉创建的概要文件不是自已想要，想将它删除，但发现不能正常删除，想创建新的概要文件，又提示新的概要文件名已经存在。折腾很久，都没有解决问题，最后，从网上找了一些文章参考。最后解决了问题。</p>
<p>在做把下面的两个命令就更完美。。<br />
./manageprofiles.sh -validateAndUpdateRegistry -profileName AppSrv01</p>
<p>./manageprofiles.sh -validateRegistry<br />
&#8211;将显示所有的profile全部有效。<br />
<span id="more-1481"></span><br />
websphere 6.1 删除概要文件</p>
<p>成功删除profile）<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
1.找到profileRegistry.xml，在目录IBM\WebSphere\AppServer\properties里,去掉想删除的profile的配置即可。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
2.删除profileName.bat  在目录IBM\WebSphere\AppServer\properties\fsdb里，删除</p>
<p>3.将profile的实际存储目录及内容删除，如：D:\IBM\WebSphere\AppServer\profiles\AppSrv01</p>
<p>　　创建概要文件：</p>
<p>　　方案一：./manageprofiles.sh -create -profileName AppSrv01</p>
<p>　　-profilePath /opt/IBM/WebSphere/AppServer/profiles/AppSrv01<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
　　-templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default</p>
<p>　　方案二：开始－程序－IBM WebSphere-Application Server-Profile Management Tool, 按照提示创建。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
　　删除概要文件：</p>
<p>　　方案一：<br />
<br />
　　1.找到profileRegistry.xml，在目录IBM\WebSphere\AppServer\properties里,去掉想删除的profile的配置即可。<br />
　　2.删除profileName.bat  在目录IBM\WebSphere\AppServer\properties\fsdb里，删除</p>
<p>　　3.将profile的实际存储目录及内容删除，如：D:\IBM\WebSphere\AppServer\profiles\AppSrv01<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
　　方案二：</p>
<p>　　使用命令 manageprofiles.bat -delete -profileName profileNam</p>
<p>可以AppServer\properties\profileRegistry.xml下把节点配置删除，然后把profile下相应文件夹和程序启动的快捷方式都删除就可以了吧。<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1481.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Xmanager 远程连接Solaris的方法</title>
		<link>http://www.evanjiang.net.cn/archives/1479.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1479.html#comments</comments>
		<pubDate>Sun, 18 Apr 2010 06:37:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[sun unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1479</guid>
		<description><![CDATA[<p>： 使用 Xmanager 连接远程 Solaris  </p>
<p>环境 ：
管理PC 1  ： 公司局域网 通过 防火墙或路由器 连接至 Internet  </p>
<p>Server ：(Solaris8\9\10)  直接处于 Internet </p>
<p>通过 Pc1 使用 xmanager 远程管理 Solaris Server </p>
<p>（注：如果你的管理PC 直接就是公网ＩＰ地址就没有必要实验本方案，只需配置你的个人防火墙打开６０００端口给Ｓｅｒｖｅｒ就可以） </p>
<p>1:　安装Xmanager2  </p>
<p>Xmanager V2.0 build 0704 </p>
<p>http://www.skycn.com/soft/1138.html</p>
<p>
2:   Solaris 系统默认启动DXCMP，不需要配置 ，只需检查进程是否启动即可
ps -ef&#124;grep dtlogin




    root   521    [...]]]></description>
			<content:encoded><![CDATA[<p>： 使用 Xmanager 连接远程 Solaris  </p>
<p>环境 ：<br />
管理PC 1  ： 公司局域网 通过 防火墙或路由器 连接至 Internet  </p>
<p>Server ：(Solaris8\9\10)  直接处于 Internet </p>
<p>通过 Pc1 使用 xmanager 远程管理 Solaris Server </p>
<p>（注：如果你的管理PC 直接就是公网ＩＰ地址就没有必要实验本方案，只需配置你的个人防火墙打开６０００端口给Ｓｅｒｖｅｒ就可以） </p>
<p>1:　安装Xmanager2  </p>
<p>Xmanager V2.0 build 0704 </p>
<p>http://www.skycn.com/soft/1138.html</p>
<p><span id="more-1479"></span><br />
2:   Solaris 系统默认启动DXCMP，不需要配置 ，只需检查进程是否启动即可<br />
ps -ef|grep dtlogin<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
    root   521     1   0   3&Ocirc;&Acirc; 30 ?           0:00 /usr/dt/bin/dtlogin -daemon<br />
    root   616   521   0   3&Ocirc;&Acirc; 30 ?           0:00 /usr/dt/bin/dtlogin -daemon<br />
    root 26766 24105   0 15:19:47 pts/3       0:00 grep dtlogin<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
如果没有启动 delogin start </p>
<p>3：配置管理PC1 局域网出口的防火墙或路由器 </p>
<p>比如 管理PC1 的内网IP 172.16.0.111   局域网出口IP  111.111.111.111<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
配置 NAT<br />
将出口IP：111.111.111.111 的 6001 端口 NAT 至 内网　管理PC1的6000端口 </p>
<p>4:  在Xmanager 打开 Xbrowser<br />
新建 New Xmanager Session<br />
修改 属性<br />
xdmcp Conection Method : XDM Query </p>
<p>xdmcp Host:  Solaris Server IP </p>
<p>xdmcp Port:177 </p>
<p>xdmcp Local Address: Auto Select </p>
<p>Proxy  选中  Use Following Connection address </p>
<p>Proxy Host ： 防火墙中NAT 的OutSide IP(111.111.111.111)<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Proxy Port：6001 </p>
<p>5: 如果你的Solaris Server 安装中文字体，请使用 Xmanager的中文字体补丁<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Xmanager 中文字体 </p>
<p>http://www.netsarang.com/download/main.html#fonts</p>
<p>6: 1-5 全部操作后，就可通过 刚刚建立的New Xmanager Session连接你的Solaris Server的桌面</p>
<p><script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1479.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2双机安装过程</title>
		<link>http://www.evanjiang.net.cn/archives/1473.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1473.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 03:41:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[db2]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1473</guid>
		<description><![CDATA[<p>DB2版本：8.2
操作系统：5.3
主机名：A机:H80a   B机:H80b </p>
<p>用户：
A机
user            user id       group            groupid              home directory
db2inst1    [...]]]></description>
			<content:encoded><![CDATA[<p>DB2版本：8.2<br />
操作系统：5.3<br />
主机名：A机:H80a   B机:H80b </p>
<p>用户：<br />
A机<br />
user            user id       group            groupid              home directory<br />
db2inst1        209           db2iadm1          206                 /home/db2inst1<br />
db2fenc1        210           db2fgrp1          103                 /home/db2fenc1<br />
dasusr1         110           dasadm1           101                 /home/dasusr1（本地） </p>
<p>B机<br />
user            user id       group            groupid              home directory<br />
db2inst1        209           db2iadm1          206                 /home/db2inst1<br />
db2fenc1        210           db2fgrp1          103                 /home/db2fenc1<br />
dasusr1         111           dasadm1           102                 /home/dasusr1(本地） </p>
<p>两边的das用户主目录都在本地，instance用户和fence用户的主目录都在共享卷组上<br />
注意：两台机的instance用户和fence用户的ID号，组的ID号都要一样<br />
<span id="more-1473"></span><br />
共享vg: 7133vg<br />
lv name                    mount point<br />
db2inst1lv                /home/db2inst1<br />
db2fenc1lv                /home/db2fenc1<br />
lv05                      /db2log             &#8212;&#8212;&#8212;-db2日志文件<br />
db2databa                 /db2data            &#8212;&#8212;&#8212;-db2inst1的数据库文件 </p>
<p>实例名：db2inst1<br />
数据库：testdb </p>
<p><br />
配置过程： </p>
<p>以下操作在A机上完成： </p>
<p>1. 建立共享卷组7133vg<br />
   创建lv:db2inst1lv,db2fenc1lv,db2databa<br />
   创建文件系统：/home/db2inst1,/home/db2fenc1,/db2log,/db2data<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
2. 创建用户db2inst1和db2fenc1<br />
   创建组db2iadm1,db2fgrp1 </p>
<p>3. 安装数据库<br />
   建立光驱文件系统<br />
   mount /cdrom<br />
   cd /cdrom<br />
   ./db2setup<br />
   安装过程中建立dasusr1用户和dasadm1组<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
4. 将相关路径的权限设定到指定用户<br />
   chown -R db2inst1:db2iadm1 /home/db2inst1<br />
   chown -R db2fenc1:db2fgrp1 /home/db2fenc1<br />
   chown -R db2inst1:db2iadm1 /db2data<br />
   chown -R db2inst1:db2iadm1 /db2log </p>
<p>5. 创建实例db2inst1<br />
   cd /usr/opt/db2_08_01/instance<br />
   ./db2icrt -u db2fenc1 db2inst1 </p>
<p>6. 创建数据库testdb<br />
   su &#8211; db2inst1<br />
   db2start<br />
   db2 create database testdb on /db2data<br />
   db2 update db cfg for testdb using newlogpath /db2log<br />
   db2 terminate<br />
   db2stop<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
7. unmount /home/db2inst1<br />
   unmount /home/db2fenc1<br />
   unmount /db2log<br />
   unmount /db2data<br />
   varyoffvg 7133vg </p>
<p>以下操作在B机完成： </p>
<p>1. 同步共享卷组<br />
   importvg -y 7133vg hdiskX<br />
   mount /home/db2inst1<br />
   mount /home/db2fenc1<br />
   mount /db2log<br />
   mount /db2data<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
2. 创建用户db2inst1和db2fenc1<br />
   创建组db2iadm1,db2fgrp1<br />
   注意：以上用户和组的ID号都要和A机上的相同 </p>
<p>3. 安装数据库<br />
   建立光驱文件系统<br />
   mount /cdrom<br />
   cd /cdrom<br />
   ./db2setup<br />
   安装过程中建立dasusr1用户和dasadm1组<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
4. 创建实例db2inst1<br />
   mv /home/db2inst1/sqllib /home/db2inst1/sqllib.a<br />
   cd /usr/opt/db2_08_01/instance<br />
   ./db2icrt -u db2fenc1 db2inst1<br />
   rm -R /home/db2inst1/sqllib<br />
   mv /home/db2inst1/sqllib.a /home/db2inst1/sqllib<br />
   cp /home/db2inst1/sqllib/db2nodes.cfg.b /home/db2inst1/sqllib/db2nodes.cfg(在hacmp环境中把该命令加到ha的启动脚本里） </p>
<p>5. 修改/etc/services文件<br />
   对照A机的/etc/services文件添加db2的端口号，两台机的端口号要保持一致 </p>
<p>6. 启动数据库<br />
   su &#8211; db2inst1<br />
   db2start<br />
   db2 connect to testdb<br />
   安装成功 </p>
<p>注意：db2nodes.cfg文件中的主机名必须和运行DB2的主机名保持一致，因此可以在两台机的本地保存一个db2nodes.cfg的备份<br />
      在hacmp的脚本中加入用本地db2nodes.cfg文件覆盖/home/db2inst1/sqllib/db2nodes.cfg的命令 </p>
<p>以上安装过程省略了hacmp的安装配置过程 </p>
<p>A机db2nodes.cfg.a的内容为：<br />
0 H80a 0 </p>
<p>B机db2nodes.cfg.b的内容为：<br />
0 H80b 0</p>
<p><script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1473.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XOOPS安全向導(网上转摘）</title>
		<link>http://www.evanjiang.net.cn/archives/1470.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1470.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 03:38:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1470</guid>
		<description><![CDATA[<p>首先，你需要記住這個︰沒有一個100%安全的系統。任何事物都是相對的。在這個前提下，我們可以做一些使你的系統更安全的措施。
這個向導概述了不同的步驟來使你的系統更安全，技巧有來自XOOPS-TIPS.com的，也有來自XOOPS官方論壇的，多數的技巧已經被在XOOPS-TIPS.com列出來了，但是列出來的是分散的。我們希望把這些技巧分門別類，使你能更好的領會”安全問題”。</p>
<p>選擇一個好的空間服務商
我們總是把那個公司提供最多的功能而價格最低廉放在選擇空間的首位，其實，很多其他的因素值得注意。</p>
<p>下面是一些技巧︰
一個好的著名的空間服務商通常意味著安全。因為我們沒有一個預算來單獨買一台主機，你應當注意整個主機的安全性和在這個主機上的其他網站的安全性。因為這些對你的網站的安全至關重要。
不管你的網站多麼安全，如果你的伺服器被在上面的其他網站威脅，你使你的網站更安全的措施都是白費力。
轉讓或規模較小的空間服務商應當被避免選擇。因為通常來說，我們沒有資源或者方法來監視你的伺服器。

安裝——選擇一個不好猜測的前綴
在安裝進程中，選擇一個不好猜測的前綴，像︰f56Gewg_3GE98FE53fgw，或者HK_er__twgwY98Fgfw。
如果你用的預設的“xoops”作為前綴，你可以用GIJOE的“XOOPS Protector”這個模組來修改前綴




安裝完成後馬上應該做的
當你安裝完XOOPS的時候，不要忘記刪除安裝目錄和修改mainfile.php的權限。不刪除安裝目錄、不修改mainfile權限，相當于公開要請別人來重新安裝並且取代你控制這個網站。</p>
<p>安裝”XOOPS Protector”模組
當你安裝完XOOPS 的時候，你應當安裝的第一個模組是GIJOE的”XOOPS Protector”模組。如果你對你的網站安全很在意，GIJOE的“XOOPS Protector”模組是必須安裝的的。
XOOPS可能是最安全的CMS之一，然而，它的核心有潛在的隱患可能使黑客攻擊進入你的網站。這一點已經被GIJOE——“對XOOPS安全貢獻最大的人”證明。
獲得更多信息，請訪問GIJOE的網站︰http://www.peak.ne.jp/xoops/




把用戶名和密碼從Mainfile.php中移出來
你安裝完XOOPS後，我們建議你把資料庫的用戶名和密碼從mainfile.php中移出來。把敏感的信息從網站目錄中移出來是很好的安全措施。這可以避免由你的伺服器失誤導致的敏感信息泄漏。例如PHP停止編譯，如果這樣的話，PHP文件里的信息可以被任何人讀到。
關於這個技巧的詳細信息，請訪問︰http://xoops-tips.com/news-article.storyid-1.htm




保護Admin.php和“系統管理”模組
Admin.php是任何人都可以訪問的，這就為駭客攻擊提供可乘之機，保護Admin.php的方法請訪問︰http://xoops-tips.com/news-article.storyid-9.htm</p>
<p>保護風格目錄（themes）
你可以阻止你的風格目錄被探測器探測到，詳細請訪問︰http://xoops-tips.com/news-article.storyid-25.htm</p>
<p>關掉“列表目錄”功能
如果你的伺服器有”關閉列表目錄”功能的話，關掉它！如果伺服器不提供這個功能，建立一個“index.html”輸入以下代碼︰
上傳到XOOPS所有的目錄，除了根目錄和模組的根目錄。
XOOPS預設存在這個文件（index.html），但是我們建議你確保每個目錄裡都有這個文件（除了根目錄和模組的根目錄）。




保護管理員的Email地址
除了對用戶以外，你絕對不應該把管理員的Email地址告訴給其他人。如果你正在用 “XOOPS headline”模組，請訪問以下的網址來確保你的管理員Email不泄漏給其他人︰</p>
<p>http://xoops-tips.com/news-article.storyid-51.htm</p>
<p>



第三方模組
注意第三方模組，這裡面可能存在一些作者沒有察覺的安全隱患。
如果你正在使用第三方模組，請經常檢查更新，並且有規律的訪問XOOPS論壇，看一下其他用戶的反映。
其他的你應該做的︰
1.經常備份你的網站內容。
2.在“訪問量”和安全之間找到平衡點︰適當的開啟審核功能。
3.保證你的XOOPS是最新的。
4.PHP 和 MySQL 方面︰考慮開啟“cgi-wrap“功能，但這是以犧牲速度為代價的。
5.禁止緩存︰如果你是需要出售內容的，考慮在 theme.htm 的頂部加入以下代碼︰

這會阻止搜尋引擎緩存你的內容。如果不這樣，即使你阻止了一個人的IP，他仍然可以從搜尋引擎的緩存中獲得你的內容，但注意，這會使你的搜尋引擎排名降低！</p>
<p>最後一點︰不要過於自信，保持高度仔細。
祝你使用XOOPS愉快！

insraq的主頁︰http://isnraq.xoops.cn
XOOPS官方網站︰http://www.xoops.org.cn
XOOPS-TIPS.com︰http://www.xoops-tips.com
XOOPS CHINA︰http://www.xoops.org.cn</p>
<p>=================================
這個文件的Word版本請在附件下載！Word版本有更好的顯示效果！
請尊重原作者和insraq的勞動成果，轉載時請完整轉載。
注意！這個版本我刪掉了一些沒有用的解釋性的話，原作請訪問︰</p>
<p>http://xoops-tips.com/news-article.storyid-81.htm</p>
<p>



</p>
]]></description>
			<content:encoded><![CDATA[<p>首先，你需要記住這個︰沒有一個100%安全的系統。任何事物都是相對的。在這個前提下，我們可以做一些使你的系統更安全的措施。<br />
這個向導概述了不同的步驟來使你的系統更安全，技巧有來自XOOPS-TIPS.com的，也有來自XOOPS官方論壇的，多數的技巧已經被在XOOPS-TIPS.com列出來了，但是列出來的是分散的。我們希望把這些技巧分門別類，使你能更好的領會”安全問題”。</p>
<p>選擇一個好的空間服務商<br />
我們總是把那個公司提供最多的功能而價格最低廉放在選擇空間的首位，其實，很多其他的因素值得注意。</p>
<p>下面是一些技巧︰<br />
一個好的著名的空間服務商通常意味著安全。因為我們沒有一個預算來單獨買一台主機，你應當注意整個主機的安全性和在這個主機上的其他網站的安全性。因為這些對你的網站的安全至關重要。<br />
不管你的網站多麼安全，如果你的伺服器被在上面的其他網站威脅，你使你的網站更安全的措施都是白費力。<br />
轉讓或規模較小的空間服務商應當被避免選擇。因為通常來說，我們沒有資源或者方法來監視你的伺服器。<br />
<span id="more-1470"></span><br />
安裝——選擇一個不好猜測的前綴<br />
在安裝進程中，選擇一個不好猜測的前綴，像︰f56Gewg_3GE98FE53fgw，或者HK_er__twgwY98Fgfw。<br />
如果你用的預設的“xoops”作為前綴，你可以用GIJOE的“XOOPS Protector”這個模組來修改前綴<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
安裝完成後馬上應該做的<br />
當你安裝完XOOPS的時候，不要忘記刪除安裝目錄和修改mainfile.php的權限。不刪除安裝目錄、不修改mainfile權限，相當于公開要請別人來重新安裝並且取代你控制這個網站。</p>
<p>安裝”XOOPS Protector”模組<br />
當你安裝完XOOPS 的時候，你應當安裝的第一個模組是GIJOE的”XOOPS Protector”模組。如果你對你的網站安全很在意，GIJOE的“XOOPS Protector”模組是必須安裝的的。<br />
XOOPS可能是最安全的CMS之一，然而，它的核心有潛在的隱患可能使黑客攻擊進入你的網站。這一點已經被GIJOE——“對XOOPS安全貢獻最大的人”證明。<br />
獲得更多信息，請訪問GIJOE的網站︰http://www.peak.ne.jp/xoops/<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
把用戶名和密碼從Mainfile.php中移出來<br />
你安裝完XOOPS後，我們建議你把資料庫的用戶名和密碼從mainfile.php中移出來。把敏感的信息從網站目錄中移出來是很好的安全措施。這可以避免由你的伺服器失誤導致的敏感信息泄漏。例如PHP停止編譯，如果這樣的話，PHP文件里的信息可以被任何人讀到。<br />
關於這個技巧的詳細信息，請訪問︰http://xoops-tips.com/news-article.storyid-1.htm<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
保護Admin.php和“系統管理”模組<br />
Admin.php是任何人都可以訪問的，這就為駭客攻擊提供可乘之機，保護Admin.php的方法請訪問︰http://xoops-tips.com/news-article.storyid-9.htm</p>
<p>保護風格目錄（themes）<br />
你可以阻止你的風格目錄被探測器探測到，詳細請訪問︰http://xoops-tips.com/news-article.storyid-25.htm</p>
<p>關掉“列表目錄”功能<br />
如果你的伺服器有”關閉列表目錄”功能的話，關掉它！如果伺服器不提供這個功能，建立一個“index.html”輸入以下代碼︰<br />
上傳到XOOPS所有的目錄，除了根目錄和模組的根目錄。<br />
XOOPS預設存在這個文件（index.html），但是我們建議你確保每個目錄裡都有這個文件（除了根目錄和模組的根目錄）。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
保護管理員的Email地址<br />
除了對用戶以外，你絕對不應該把管理員的Email地址告訴給其他人。如果你正在用 “XOOPS headline”模組，請訪問以下的網址來確保你的管理員Email不泄漏給其他人︰</p>
<p>http://xoops-tips.com/news-article.storyid-51.htm</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
第三方模組<br />
注意第三方模組，這裡面可能存在一些作者沒有察覺的安全隱患。<br />
如果你正在使用第三方模組，請經常檢查更新，並且有規律的訪問XOOPS論壇，看一下其他用戶的反映。<br />
其他的你應該做的︰<br />
1.經常備份你的網站內容。<br />
2.在“訪問量”和安全之間找到平衡點︰適當的開啟審核功能。<br />
3.保證你的XOOPS是最新的。<br />
4.PHP 和 MySQL 方面︰考慮開啟“cgi-wrap“功能，但這是以犧牲速度為代價的。<br />
5.禁止緩存︰如果你是需要出售內容的，考慮在 theme.htm 的頂部加入以下代碼︰<br />
<META NAME=“ROBOTS” CONTENT=“NOARCHIVE”><br />
這會阻止搜尋引擎緩存你的內容。如果不這樣，即使你阻止了一個人的IP，他仍然可以從搜尋引擎的緩存中獲得你的內容，但注意，這會使你的搜尋引擎排名降低！</p>
<p>最後一點︰不要過於自信，保持高度仔細。<br />
祝你使用XOOPS愉快！<br />
<br />
insraq的主頁︰http://isnraq.xoops.cn<br />
XOOPS官方網站︰http://www.xoops.org.cn<br />
XOOPS-TIPS.com︰http://www.xoops-tips.com<br />
XOOPS CHINA︰http://www.xoops.org.cn</p>
<p>=================================<br />
這個文件的Word版本請在附件下載！Word版本有更好的顯示效果！<br />
請尊重原作者和insraq的勞動成果，轉載時請完整轉載。<br />
注意！這個版本我刪掉了一些沒有用的解釋性的話，原作請訪問︰</p>
<p>http://xoops-tips.com/news-article.storyid-81.htm</p>
<p><script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1470.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>成功部署SOA的七个步骤</title>
		<link>http://www.evanjiang.net.cn/archives/1468.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1468.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 03:32:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1468</guid>
		<description><![CDATA[<p>面向服务架构的架构及其所支持的Web服务已经成为当今最热门的软件趋势。但同时，人们对它的理解也最不全面。</p>
<p>　　理论上，面向服务的架构(SOA)和它的名字一样不是那么复杂。Open Group给SOA做了一个简单的定义：“一个支持以服务为导向的架构风格。”&#8212;一种你可以创建业务流程的方式，SOA就像胶水一样，可以将你的应用紧紧“粘连”在一起。然而，在实践中，这一原则可以说是极其复杂并且使人感到很迷惑。部署一个SOA就像为一个几十年的老房子建造地下室一样让人感到很没有底气。你如何才能搭建一个基础去支持一些已建成的应用呢？你如何才将已经存在的应用“粘连”在一起呢？</p>
<p>　　尽管实施SOA的前景是如此的“恐怖”和“黯淡”，但是，现在投资与SOA服务和技术的公司比以往任何时候都要多。在其“2007&#8212;2008年SOA开支报告”中，市场研究机构AMR Research发现，企业投资与SOA的预算正在以惊人的速度增长：在接受调查的公司中，有53%的公司正在使用SOA，而在去年同期，这一比例仅仅为21%，增加了一倍多。另外，还有37%的公司正考虑准备部署第一个SOA，预计到2010部署完毕。</p>
<p>　　投资服务和技术以支持SOA的开销是非常昂贵的，但这种方法给企业的部分承诺是：这项支出将很快在企业中看到回报，提高企业的生产力、业务效率、客户满意度，并通过重用性减少成本。此外，从长远来看，企业投资于SOA可以避免昂贵的点到点的集成项目，如果采用传统架构，每次产品升级企业都要进行这样的集成，这使得企业的开支大大减少。

　　把SOA应用于企业流程而获得成功的企业在各个行业数不胜数。纽约健康及心理卫生署(New York City Department of Health and Mental Hygiene)在部署了SOA项目以后，其文件处理的效率提高了25倍;Parametric Technology是一家财富500强企业，主要向客户提供软件和服务，该公司在使用了甲骨文的Fusion中间件以后，业务效率大大提高，可以实时满足其各个商业领域客户的需求。不过，并非所有公司都如此成功：根据AMR Research的调查报告，2008年投资与SOA的费用将高达数百万美元，但“大多数被浪费了”。为了确保你的公司所实施的SOA是最好的，我将在下面介绍一个部署SOA的步骤，以便使你在部署过程中不会手忙脚乱不知所措。</p>
<p>　　第1步：尽职调查，做好你自己的功课</p>
<p>　　尽管SOA正在变得日益普及，但围绕“到底什么是SOA”仍然有一些混乱。市场分析机构Saddletree Research公司总裁和首席分析师Paul Stockford指出，人们对于SOA最常见的误解以及就是认为它是一种产品。“SOA不是你可以买到的一个现成产品，”Stockford说。相反，SOA指的是一系列的开发和集成应用的原则;而Web 服务正是实现这些原则的是一套标准。




　　由于在过去的几年里人们对SOA炒作和关注已经到了疯狂的地步，这使得很容易形成这样一种思维定式，认为SOA是企业的灵丹妙药&#8212;一个能立刻治愈所有服务的痛苦的架构。不过，现实总是不参杂任何感情色彩的。企业在掏钱部署SOA之前，需要了解SOA的基本原则是如何切实适用于特定的业务流程的。“个案研究是一个了解SOA如何才能给你的公司提供帮助的有效方式”，AMR Research分析师Ian Finley说。此外，你也可以借助杂志、商展和竞争对手来了解SOA。与软件供应商进行讨论是你可以利用的另一个潜在资源;Finley建议同多个不同的软件供应商进行沟通，因为有些供应商出于私利有可能会夸大自己的SOA技术。</p>
<p>　　第2步：成立一个团队</p>
<p>　　几乎所有的专家都一致认为，一个成功的 SOA项目中其中最关键的步骤是确保你公司的各个部门之间进行沟通。Nice Systems公司全球行销副总裁Eyal Danon称SOA为“IT和业务之间的桥梁”。 SOA或Web服务项目的技术天性要求它应该几乎完全由企业的技术部门(或外部顾问)承担，但是由于这些项目的核心部分是为了推动业务流程的，所以高层主管行政人员也应该参与进来，这是必不可少的。




　　为了做到这一点，其中一个最有效的方法是成立一个由高层主管行政人员和顶尖的IT员工组成的专门小组。市场研究机构Aberdeen Group公司高级分析师Michael Dortch说：“一流的公司总是将企业各个部门最合适的人才组成一个智囊团，听取他们的意见。要使SOA的建设取得成功并使企业更具竞争力，也需要多方面集思广益。”通过建立一个跨部门的团队致力于你的SOA项目，这样就可以确保来自企业各个部门的人都会关注并对SOA项目负责，直至成功。你可以为这个团队指定一个负责人来领导项目建设，这依赖于你的企业文化。
第3步：制定现实的目标




　　我们应该如何看待SOA呢？我们可以用《金发姑娘和三只小熊》打个比喻：计划太大或者计划太小都是不明智的;最好是恰恰能满足公司的需要。如果你确定要实施一个SOA，那么你一定要在脑中有一个清晰的目标。如果这些目标是没有被明确地定义，那么你就有可能花费了大量精力和金钱才掌握的技术以及建设的基础设施是你不需要的。但是，还有这样一个同样危险的陷阱：“一些公司常犯的一个错误是，他们试图把一切东西都设计得非常完美，” Finley说。“超大规模的SOA项目本身就是一个错误。”</p>
<p>　　部署SOA的一种有效方法是寻找一个单一业务部门，在那里创建一个基于Web服务的应用将能收到立竿见影的效果。将SOA项目分阶段部署能够使该项目更容易实施。在部署第一个SOA应用之前，你必须问自己：SOA能给我的公司带来什么好处呢？这将依赖于你的企业的年龄和复杂度、企业文化、优先次序和企业的系统结构。</p>
<p>　　第4步：有效地管理你的数据

　　因为SOA有助于推动企业数据的无缝共享，而企业数据是服务的动力源泉，所以SOA的成功与否与企业数据息息相关。换句话说，数据质量不够好的话就有可能对企业业务造成伤害。“在面向服务的架构中，你想要最大限度地共享和重用资源，比如客户资料，”市场研究机构Forrester Research高级分析师James Kobielus说。“企业往往会做错的一件事就是他们没有将自己的客户数据集成到一个核心企业知识库里。”</p>
<p>　　要创建一个客户数据集成(Customer Data Integration，CDI)仓库，企业在尝试部署SOA之前，往往需要投资于购买主数据管理(Master Data Management，MDM)工具。虽然很多公司选择从他们的CRM供应商那里购买MDM工具，但Kobielus建议在部署MDM之前，应综合考虑各个厂商的产品，选择一个最适合自己的厂商。几乎所有的数据清洗(Data-Cleaning厂商已经实现了Web服务标准，因此，不论软件的品牌是什么，易集成性都很高。




　　第5步：自己创建还是购买SOA</p>
<p>　　在培训和规划阶段，仔细考虑你的SOA倡议的具体细节是很重要的。随着具备SOA技术的厂商逐渐增多，你的选择也相应地增加了。在过去，如果一个公司想要把SOA准则运用于自己的业务中，它需要自己做很多工作。但是，随着现在越来越多的供应商可以提供一套完整的SOA架构，它是一个可以帮助你构建SOA的预构建(Prebuild)工具 。</p>
<p>　　为了制定适合你的公司的最好方法，SOA 团队必须考虑你的公司所具备的业务优势，并同可能的SOA供应商讨论各个候选方案的优势和劣势。预构建工具在SOA部署过程中可以起到润滑剂的作用，并可以减轻IT团队的很多压力。甲骨文、IBM 和SAP是一领域的领头羊，他们都有具备这些功能的工具集。对于那些过去利用花钱购买套装应用来创建IT系统的公司来说，建SOA工具毫无疑问对他们来说很有吸引力。</p>
<p>　　另一方面，如果一个公司采用更加先进的SOA可能意味着会带来更多的收入，那么，这些公司就希望利用管理工具帮助他们创建自己的基础设施。“在投标如此密集的市场领域，有时候几毫秒的时间就能影响到生意的成败，所以，自己建设SOA也是很有意义的”，Aberdeen Group高级研究分析师Ian Michiels说。在Forrester公布的市场调查报告《The Forrester Wave：单独SOA和Web服务管理解决方案，2007年第四季度》中，Progress Software 、AmberPoint、IBM的解决方案被列为最高效的解决方案，但是，仔细调查多个供应商从中选择一个最适合你企业的厂商仍然很重要。</p>
<p>　　第6步：循序渐进</p>
<p>　　“婴儿学步”应该是成功部署SOA这个“游戏”最合适的代名词。正如我们在第3步中讨论的那样，首先从一个小项目着手部署是很重要的。企业在应用集成过程中所面临挑战的困难度可以更加清楚地显示部署SOA带来的好处。这种交叉作用的程度各个公司可能会有所差异。




　　对小项目仔细测量对于SOA在更广泛的范围内取得成功是非常重要的。在项目开始之前和结束之后进行标准检查对于未来SOA部署的成功也是必须的。Dortch发现，在一流的SOA用户中，60%的用户会部署SOA性能分析和报告软件，40%的用户会为SOA应用和服务建立服务质量指标。</p>
<p>　　在以业务为中心的地方放上度量手段，就能看到性能是否提高以及员工使用的服务数目的是否增加。Dortch解释说，虽然有很多公司忽略了这个明显步骤，但是，建立一个精确的性能测试却是一个显而易见的好办法。“你正在做任何一个称职的IT系统自丛诞生以来一直在干的事情：复制和调整。”</p>
<p>　　第7步：保持跟踪</p>
<p>　　对于任何业务项目，为了能从投资中获得最大的价值，时刻对它保持关注很重要。对于SOA项目来说，持续跟踪尤为重要。在企业范围内，一个完整的SOA集成可能需要几年的时间，而这带来的好处甚至可能需要更长的时间才能完全释放出来。你需要保持你任命的SOA团队时刻处于待命状态并准备迎接可能出现的挑战。Dortch建议为这个团队创建一个基于成功部署的激励结构。如果你向行政人员证明SOA正在给企业带来他们所关心的商业利益，他们也会对SOA项目保持关注。“告诉他们你在做什么，并让他们负责协调一些工作。这是一个不能跳过得步骤。” Dortch说。</p>
<p>　　SOA供应商业会根据最新出现的标准继续配置他们的产品，并开发新的并且不同的创建SOA的方法。在这个瞬息万变的领域里，企业应该时刻关注业界出现的新兴技术以保持竞争力并跟上时代发展的步伐。“SOA的未来是非常光明的，”Stockford说。“这给供应商和使用者都带来了巨大的机遇，利用SOA的集成创新技术创造竞争优势。”




</p>
]]></description>
			<content:encoded><![CDATA[<p>面向服务架构的架构及其所支持的Web服务已经成为当今最热门的软件趋势。但同时，人们对它的理解也最不全面。</p>
<p>　　理论上，面向服务的架构(SOA)和它的名字一样不是那么复杂。Open Group给SOA做了一个简单的定义：“一个支持以服务为导向的架构风格。”&#8212;一种你可以创建业务流程的方式，SOA就像胶水一样，可以将你的应用紧紧“粘连”在一起。然而，在实践中，这一原则可以说是极其复杂并且使人感到很迷惑。部署一个SOA就像为一个几十年的老房子建造地下室一样让人感到很没有底气。你如何才能搭建一个基础去支持一些已建成的应用呢？你如何才将已经存在的应用“粘连”在一起呢？</p>
<p>　　尽管实施SOA的前景是如此的“恐怖”和“黯淡”，但是，现在投资与SOA服务和技术的公司比以往任何时候都要多。在其“2007&#8212;2008年SOA开支报告”中，市场研究机构AMR Research发现，企业投资与SOA的预算正在以惊人的速度增长：在接受调查的公司中，有53%的公司正在使用SOA，而在去年同期，这一比例仅仅为21%，增加了一倍多。另外，还有37%的公司正考虑准备部署第一个SOA，预计到2010部署完毕。</p>
<p>　　投资服务和技术以支持SOA的开销是非常昂贵的，但这种方法给企业的部分承诺是：这项支出将很快在企业中看到回报，提高企业的生产力、业务效率、客户满意度，并通过重用性减少成本。此外，从长远来看，企业投资于SOA可以避免昂贵的点到点的集成项目，如果采用传统架构，每次产品升级企业都要进行这样的集成，这使得企业的开支大大减少。<br />
<span id="more-1468"></span><br />
　　把SOA应用于企业流程而获得成功的企业在各个行业数不胜数。纽约健康及心理卫生署(New York City Department of Health and Mental Hygiene)在部署了SOA项目以后，其文件处理的效率提高了25倍;Parametric Technology是一家财富500强企业，主要向客户提供软件和服务，该公司在使用了甲骨文的Fusion中间件以后，业务效率大大提高，可以实时满足其各个商业领域客户的需求。不过，并非所有公司都如此成功：根据AMR Research的调查报告，2008年投资与SOA的费用将高达数百万美元，但“大多数被浪费了”。为了确保你的公司所实施的SOA是最好的，我将在下面介绍一个部署SOA的步骤，以便使你在部署过程中不会手忙脚乱不知所措。</p>
<p>　　第1步：尽职调查，做好你自己的功课</p>
<p>　　尽管SOA正在变得日益普及，但围绕“到底什么是SOA”仍然有一些混乱。市场分析机构Saddletree Research公司总裁和首席分析师Paul Stockford指出，人们对于SOA最常见的误解以及就是认为它是一种产品。“SOA不是你可以买到的一个现成产品，”Stockford说。相反，SOA指的是一系列的开发和集成应用的原则;而Web 服务正是实现这些原则的是一套标准。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
　　由于在过去的几年里人们对SOA炒作和关注已经到了疯狂的地步，这使得很容易形成这样一种思维定式，认为SOA是企业的灵丹妙药&#8212;一个能立刻治愈所有服务的痛苦的架构。不过，现实总是不参杂任何感情色彩的。企业在掏钱部署SOA之前，需要了解SOA的基本原则是如何切实适用于特定的业务流程的。“个案研究是一个了解SOA如何才能给你的公司提供帮助的有效方式”，AMR Research分析师Ian Finley说。此外，你也可以借助杂志、商展和竞争对手来了解SOA。与软件供应商进行讨论是你可以利用的另一个潜在资源;Finley建议同多个不同的软件供应商进行沟通，因为有些供应商出于私利有可能会夸大自己的SOA技术。</p>
<p>　　第2步：成立一个团队</p>
<p>　　几乎所有的专家都一致认为，一个成功的 SOA项目中其中最关键的步骤是确保你公司的各个部门之间进行沟通。Nice Systems公司全球行销副总裁Eyal Danon称SOA为“IT和业务之间的桥梁”。 SOA或Web服务项目的技术天性要求它应该几乎完全由企业的技术部门(或外部顾问)承担，但是由于这些项目的核心部分是为了推动业务流程的，所以高层主管行政人员也应该参与进来，这是必不可少的。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
　　为了做到这一点，其中一个最有效的方法是成立一个由高层主管行政人员和顶尖的IT员工组成的专门小组。市场研究机构Aberdeen Group公司高级分析师Michael Dortch说：“一流的公司总是将企业各个部门最合适的人才组成一个智囊团，听取他们的意见。要使SOA的建设取得成功并使企业更具竞争力，也需要多方面集思广益。”通过建立一个跨部门的团队致力于你的SOA项目，这样就可以确保来自企业各个部门的人都会关注并对SOA项目负责，直至成功。你可以为这个团队指定一个负责人来领导项目建设，这依赖于你的企业文化。<br />
第3步：制定现实的目标<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
　　我们应该如何看待SOA呢？我们可以用《金发姑娘和三只小熊》打个比喻：计划太大或者计划太小都是不明智的;最好是恰恰能满足公司的需要。如果你确定要实施一个SOA，那么你一定要在脑中有一个清晰的目标。如果这些目标是没有被明确地定义，那么你就有可能花费了大量精力和金钱才掌握的技术以及建设的基础设施是你不需要的。但是，还有这样一个同样危险的陷阱：“一些公司常犯的一个错误是，他们试图把一切东西都设计得非常完美，” Finley说。“超大规模的SOA项目本身就是一个错误。”</p>
<p>　　部署SOA的一种有效方法是寻找一个单一业务部门，在那里创建一个基于Web服务的应用将能收到立竿见影的效果。将SOA项目分阶段部署能够使该项目更容易实施。在部署第一个SOA应用之前，你必须问自己：SOA能给我的公司带来什么好处呢？这将依赖于你的企业的年龄和复杂度、企业文化、优先次序和企业的系统结构。</p>
<p>　　第4步：有效地管理你的数据<br />
<br />
　　因为SOA有助于推动企业数据的无缝共享，而企业数据是服务的动力源泉，所以SOA的成功与否与企业数据息息相关。换句话说，数据质量不够好的话就有可能对企业业务造成伤害。“在面向服务的架构中，你想要最大限度地共享和重用资源，比如客户资料，”市场研究机构Forrester Research高级分析师James Kobielus说。“企业往往会做错的一件事就是他们没有将自己的客户数据集成到一个核心企业知识库里。”</p>
<p>　　要创建一个客户数据集成(Customer Data Integration，CDI)仓库，企业在尝试部署SOA之前，往往需要投资于购买主数据管理(Master Data Management，MDM)工具。虽然很多公司选择从他们的CRM供应商那里购买MDM工具，但Kobielus建议在部署MDM之前，应综合考虑各个厂商的产品，选择一个最适合自己的厂商。几乎所有的数据清洗(Data-Cleaning厂商已经实现了Web服务标准，因此，不论软件的品牌是什么，易集成性都很高。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
　　第5步：自己创建还是购买SOA</p>
<p>　　在培训和规划阶段，仔细考虑你的SOA倡议的具体细节是很重要的。随着具备SOA技术的厂商逐渐增多，你的选择也相应地增加了。在过去，如果一个公司想要把SOA准则运用于自己的业务中，它需要自己做很多工作。但是，随着现在越来越多的供应商可以提供一套完整的SOA架构，它是一个可以帮助你构建SOA的预构建(Prebuild)工具 。</p>
<p>　　为了制定适合你的公司的最好方法，SOA 团队必须考虑你的公司所具备的业务优势，并同可能的SOA供应商讨论各个候选方案的优势和劣势。预构建工具在SOA部署过程中可以起到润滑剂的作用，并可以减轻IT团队的很多压力。甲骨文、IBM 和SAP是一领域的领头羊，他们都有具备这些功能的工具集。对于那些过去利用花钱购买套装应用来创建IT系统的公司来说，建SOA工具毫无疑问对他们来说很有吸引力。</p>
<p>　　另一方面，如果一个公司采用更加先进的SOA可能意味着会带来更多的收入，那么，这些公司就希望利用管理工具帮助他们创建自己的基础设施。“在投标如此密集的市场领域，有时候几毫秒的时间就能影响到生意的成败，所以，自己建设SOA也是很有意义的”，Aberdeen Group高级研究分析师Ian Michiels说。在Forrester公布的市场调查报告《The Forrester Wave：单独SOA和Web服务管理解决方案，2007年第四季度》中，Progress Software 、AmberPoint、IBM的解决方案被列为最高效的解决方案，但是，仔细调查多个供应商从中选择一个最适合你企业的厂商仍然很重要。</p>
<p>　　第6步：循序渐进</p>
<p>　　“婴儿学步”应该是成功部署SOA这个“游戏”最合适的代名词。正如我们在第3步中讨论的那样，首先从一个小项目着手部署是很重要的。企业在应用集成过程中所面临挑战的困难度可以更加清楚地显示部署SOA带来的好处。这种交叉作用的程度各个公司可能会有所差异。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
　　对小项目仔细测量对于SOA在更广泛的范围内取得成功是非常重要的。在项目开始之前和结束之后进行标准检查对于未来SOA部署的成功也是必须的。Dortch发现，在一流的SOA用户中，60%的用户会部署SOA性能分析和报告软件，40%的用户会为SOA应用和服务建立服务质量指标。</p>
<p>　　在以业务为中心的地方放上度量手段，就能看到性能是否提高以及员工使用的服务数目的是否增加。Dortch解释说，虽然有很多公司忽略了这个明显步骤，但是，建立一个精确的性能测试却是一个显而易见的好办法。“你正在做任何一个称职的IT系统自丛诞生以来一直在干的事情：复制和调整。”</p>
<p>　　第7步：保持跟踪</p>
<p>　　对于任何业务项目，为了能从投资中获得最大的价值，时刻对它保持关注很重要。对于SOA项目来说，持续跟踪尤为重要。在企业范围内，一个完整的SOA集成可能需要几年的时间，而这带来的好处甚至可能需要更长的时间才能完全释放出来。你需要保持你任命的SOA团队时刻处于待命状态并准备迎接可能出现的挑战。Dortch建议为这个团队创建一个基于成功部署的激励结构。如果你向行政人员证明SOA正在给企业带来他们所关心的商业利益，他们也会对SOA项目保持关注。“告诉他们你在做什么，并让他们负责协调一些工作。这是一个不能跳过得步骤。” Dortch说。</p>
<p>　　SOA供应商业会根据最新出现的标准继续配置他们的产品，并开发新的并且不同的创建SOA的方法。在这个瞬息万变的领域里，企业应该时刻关注业界出现的新兴技术以保持竞争力并跟上时代发展的步伐。“SOA的未来是非常光明的，”Stockford说。“这给供应商和使用者都带来了巨大的机遇，利用SOA的集成创新技术创造竞争优势。”<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1468.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL数据的切分与应用方案</title>
		<link>http://www.evanjiang.net.cn/archives/1466.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1466.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 03:17:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1466</guid>
		<description><![CDATA[<p>数据的切分分为两种模式，一种是按照不同的表(或者schema)来切分到不同的数据库(主机)上，这种切分可以称之为垂直（纵向）切分；另外一种是根据数据的逻辑关系，将同一个表中的数据按照某种条件拆分到多台数据库（主机）上，这种切分称之为数据的水平（横向）切分。</p>
<p>一个架构较好的应用系统，其总体功能肯定是由多个功能模块所组成的，而每一个功能模块所需要的数据对应到数据库中就是一个或多个表。而在架构设计中，各个功能模块相互之间的交互点越统一，越少，系统的耦合度就越低，系统各个模块的维护性及扩展性就越好。这样的系统，实现数据的垂直切分也就越容易。</p>
<p>数据的垂直切分基本上可以简单地理解为按照表或模块来切分数据，而水平切分则不同。一般来说，简单的水平切分主要是将某个访问及其平凡的表再按照某个字段的某种规则分散到多个表中，每个表包含一部分数据。就是将表中的某些行切分到一个数据库，而另外的某些行又切分到其他数据库中。为了容易地判定各行数据被切分到哪个数据库了，切分总是要按照某种特定的规则来进行的：如根据某个数据类型字段基于特定数据取模，某个时间类型字段的范围

方案一
________________________________________</p>
<p>水平切分，比如按照用户id进行切分，把不同用户的数据分散到不同的表或不同的数据库或不同的数据库服务器上，然后进行主从复制数据



a.一个Mysql集群(这儿所说的集群就是Mysql的Master/Slave方式，不是Mysql Cluster),所有用户的各种数据(bbs,blog,user)保存于某一台服务器的某一个数据库上，下面的n表示子表的数据(用户所在的子表根据用户id % n计算出来，这个可以根据需要定一个值例如10，如果以后发现数据量过大，可以增大n的值比如20，此时则需要进行数据迁移，因为n的值已经变了，用户所在子表的值也随之发生了变化，所以必须进行数据移动，数据迁移前停止网站的各种服务，备份mysql的数据，然后进行数据迁移，其实写一个脚本就可以了，也不是很复杂。



Master  Slave(Slave服务器数量可以根据需要进行适当的扩充)
sns(数据库名称)
bbs0
bbs1
&#8230;
bbsn
blog0
blog1
&#8230;
blogn
user0
user1
&#8230;
usern</p>
<p>b.多个Mysql集群，不同用户的数据保存到不同的数据库服务器上



假如一共有3个节点，散列算法是用户ID模以服务器节点数，假设有三个用户id分别为1,3,5，则保存数据的服务器节点为1,0,2
用户3的数据保存在Master0
master0 slave0
sns(数据库名称)
bbs
blog
user</p>
<p>用户1的数据保存在master1
master1 slave1
sns(数据库名称)
bbs
blog
user</p>
<p>用户5的数据保存在master2
master2 slave2
sns(数据库名称)
bbs
blog
user</p>
<p>方案二
________________________________________

垂直切分，就是按照网站的功能来进行切分，某个SNS网站，按照用户数据、博客数据、照片数据、标签数据等每个模块一个独立的数据库或数据库服务器，此种方案可以根据情况来看是否要做Master/Slave复制



其实下面的例子是垂直切分加上水平切分，这种切分方式的缺点就是如果需要进行关联查询时要跨数据库进行操作，非常的麻烦
db server1
sns(数据库名称)
user0
&#8230;
usern</p>
<p>db server2
sns(数据库名称)
blog0
&#8230;
blogn</p>
<p>db server3
sns(数据库名称)
photo0
&#8230;
photon</p>
<p>垂直切分及水平切分的缺点
________________________________________




由于采用了垂直切分或水平切分，数据分散在不同节点机器上，无法进行全局查找和统计。解决方案一是对主要的基础数据存储在全局表中(或者将全局数据保存在Memcache、BerkeleyDB中)，便于查找和统计，但这类数据不宜太多，部分核心数据。




</p>
]]></description>
			<content:encoded><![CDATA[<p>数据的切分分为两种模式，一种是按照不同的表(或者schema)来切分到不同的数据库(主机)上，这种切分可以称之为垂直（纵向）切分；另外一种是根据数据的逻辑关系，将同一个表中的数据按照某种条件拆分到多台数据库（主机）上，这种切分称之为数据的水平（横向）切分。</p>
<p>一个架构较好的应用系统，其总体功能肯定是由多个功能模块所组成的，而每一个功能模块所需要的数据对应到数据库中就是一个或多个表。而在架构设计中，各个功能模块相互之间的交互点越统一，越少，系统的耦合度就越低，系统各个模块的维护性及扩展性就越好。这样的系统，实现数据的垂直切分也就越容易。</p>
<p>数据的垂直切分基本上可以简单地理解为按照表或模块来切分数据，而水平切分则不同。一般来说，简单的水平切分主要是将某个访问及其平凡的表再按照某个字段的某种规则分散到多个表中，每个表包含一部分数据。就是将表中的某些行切分到一个数据库，而另外的某些行又切分到其他数据库中。为了容易地判定各行数据被切分到哪个数据库了，切分总是要按照某种特定的规则来进行的：如根据某个数据类型字段基于特定数据取模，某个时间类型字段的范围<br />
<span id="more-1466"></span><br />
方案一<br />
________________________________________</p>
<p>水平切分，比如按照用户id进行切分，把不同用户的数据分散到不同的表或不同的数据库或不同的数据库服务器上，然后进行主从复制数据<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>a.一个Mysql集群(这儿所说的集群就是Mysql的Master/Slave方式，不是Mysql Cluster),所有用户的各种数据(bbs,blog,user)保存于某一台服务器的某一个数据库上，下面的n表示子表的数据(用户所在的子表根据用户id % n计算出来，这个可以根据需要定一个值例如10，如果以后发现数据量过大，可以增大n的值比如20，此时则需要进行数据迁移，因为n的值已经变了，用户所在子表的值也随之发生了变化，所以必须进行数据移动，数据迁移前停止网站的各种服务，备份mysql的数据，然后进行数据迁移，其实写一个脚本就可以了，也不是很复杂。<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>Master  Slave(Slave服务器数量可以根据需要进行适当的扩充)<br />
sns(数据库名称)<br />
bbs0<br />
bbs1<br />
&#8230;<br />
bbsn<br />
blog0<br />
blog1<br />
&#8230;<br />
blogn<br />
user0<br />
user1<br />
&#8230;<br />
usern</p>
<p>b.多个Mysql集群，不同用户的数据保存到不同的数据库服务器上<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>假如一共有3个节点，散列算法是用户ID模以服务器节点数，假设有三个用户id分别为1,3,5，则保存数据的服务器节点为1,0,2<br />
用户3的数据保存在Master0<br />
master0 slave0<br />
sns(数据库名称)<br />
bbs<br />
blog<br />
user</p>
<p>用户1的数据保存在master1<br />
master1 slave1<br />
sns(数据库名称)<br />
bbs<br />
blog<br />
user</p>
<p>用户5的数据保存在master2<br />
master2 slave2<br />
sns(数据库名称)<br />
bbs<br />
blog<br />
user</p>
<p>方案二<br />
________________________________________<br />
<br />
垂直切分，就是按照网站的功能来进行切分，某个SNS网站，按照用户数据、博客数据、照片数据、标签数据等每个模块一个独立的数据库或数据库服务器，此种方案可以根据情况来看是否要做Master/Slave复制<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, 创建于 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>其实下面的例子是垂直切分加上水平切分，这种切分方式的缺点就是如果需要进行关联查询时要跨数据库进行操作，非常的麻烦<br />
db server1<br />
sns(数据库名称)<br />
user0<br />
&#8230;<br />
usern</p>
<p>db server2<br />
sns(数据库名称)<br />
blog0<br />
&#8230;<br />
blogn</p>
<p>db server3<br />
sns(数据库名称)<br />
photo0<br />
&#8230;<br />
photon</p>
<p>垂直切分及水平切分的缺点<br />
________________________________________<br />
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x15, 创建于 10-3-23 */
google_ad_slot = "9129041183";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
由于采用了垂直切分或水平切分，数据分散在不同节点机器上，无法进行全局查找和统计。解决方案一是对主要的基础数据存储在全局表中(或者将全局数据保存在Memcache、BerkeleyDB中)，便于查找和统计，但这类数据不宜太多，部分核心数据。<br />
<script type="text/javascript"><!--
  google_ad_client = "pub-8438729971248494";
  google_ad_format = "js_sdo";
  google_cts_mode ="rs";
  google_num_cts = "8";
  google_searchbox_color_border = "0066CC";
  google_searchbox_width = 585;
  google_searchbox_height = 26;
  google_link_target = 2;
  google_logo_pos = "left";
  google_rs_pos = "below";
  google_ad_height = 90;
  google_ad_width = 728;
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_sdo.js">
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1466.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install MQ on Redhat Linux</title>
		<link>http://www.evanjiang.net.cn/archives/1461.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1461.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 09:14:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1461</guid>
		<description><![CDATA[<p>To install MQ on RedHat  Linux please note following:
1.        Create group/user need from Control Center
a)        Log in as root. Create MQ groups and users from the yast2 Control Center.
1.        Log in as root. [...]]]></description>
			<content:encoded><![CDATA[<p>To install MQ on RedHat  Linux please note following:<br />
1.        Create group/user need from Control Center<br />
a)        Log in as root. Create MQ groups and users from the yast2 Control Center.<br />
1.        Log in as root. Create MQ groups and users from the yast2 Control Center.<br />
  a. Create the mqm and mqbrkrs user groups:<br />
1) Click Security &#038; Users > Groups > Add a Group.<br />
2) Set the name field to mqm and create the user group.<br />
3) Create the mqbrkrs user group in the same way.</p>
<p>b. Create the mqm user:<br />
1) Click Security &#038; Users > Users > Add a User.<br />
2) Set the name field to mqm and create the user.<br />
3) Click Security &#038; Users > Change a Users Password > Passwords to add a password to the new user </p>
<p>c.Add the mqm and root users to the mqm group:<br />
1) Click Security &#038;Users > Users > Change / Show Characteristics of a User.<br />
2) Enter mqm in the User Name field. 50 IBM WebSphere Application Server: Getting Started<br />
3) Add mqm to the Group SET field, which is a comma-separated list of the groups to which the user belongs.<br />
4) Add root to the mqm group and the mqbrkrs group.<br />
Or Use Script:<br />
linux:~ # groupadd mqm<br />
linux:~ # groupadd mqbrkrs<br />
linux:~ # useradd -g mqm -G mqbrkrs -m mqm<br />
linux:~ # usermod -G mqm root<br />
Adding user root to group mqm<br />
linux:~ # gpasswd -a root mqbrkrs<br />
Adding user root to group mqbrkrs<br />
linux:~ # passwd mqm<br />
Changing password for mqm.<br />
New password:<br />
Re-enter new password:<br />
Password changed<br />
<span id="more-1461"></span><br />
linux:~ #<br />
b)        Copy&#038;mount CD17 to your target linux.Go to folder: CD17\WSMQ5302_LINUX\MQ5302<br />
c)        Run the mqlicense.sh script. If you want to view a text-only version of license, which can be read by a screen-reader, type:<br />
./mqlicense.sh -text_only<br />
The license is displayed.<br />
If want to accept the license without it being displayed, you can run the mqlicense.sh script with the -accept option.<br />
./mqlicense.sh -accept<br />
You must accept the license agreement before you can proceed with the installation.<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
NOTE: If you see below error message -><br />
Problem<br />
You install WebSphere- MQ v5.3 on Linux-. You run the &#8220;./mqlicense.sh -accept&#8221; command to accept the license and receive the following error:<br />
./mqlicense.sh: line 131: 18670 Segmentation fault<br />
${JRE?} -cp<br />
${LAPCLASSPATH?} com.ibm.lex.lapapp.LAP -l<br />
${PROGPATH?}/lap/licenses -s /tmp/mq_license<br />
${STATUSARG}<br />
${DISPLAYARG}<br />
ERROR: Installation will not succeed unless the license agreement can be accepted. If the error was caused by a display problem, read the         license agreement file in the &#8216;License&#8217; directory, and then run the following command:<br />
mqlicense.sh -accept<br />
Only use this command if you accept the license agreement. For other errors, contact your IBM support center.</p>
<p>You need to run below steps firstly -><br />
#1. Read the license agreement in the License directory<br />
#2. export LD_ASSUME_KERNEL=2.4.19<br />
#3. mkdir -p /tmp/mq_license/license<br />
#4. echo 9 > /tmp/mq_license/license/status.dat<br />
                or<br />
   touch /tmp/mq_license/license/status.dat<br />
d)        There the following rpm files: (You can only install the rpms in blue)<br />
MQSeriesRuntime-5.3.0-2.i386.rpm<br />
MQSeriesSDK-5.3.0-2.i386.rpm<br />
MQSeriesServer-5.3.0-2.i386.rpm<br />
MQSeriesJava-5.3.0-2.i386.rpm<br />
MQSeriesMan-5.3.0-2.i386.rpm<br />
MQSeriesSamples-5.3.0-2.i386.rpm<br />
MQSeriesClient-5.3.0-2.i386.rpm<br />
MQSeriseIES30&#8230;..rpm<br />
MQSeriseConfig&#8230;.rpm    (If you want to use MQ explorer on Linux, install these two RPM)</p>
<p>MQSeriesKeyMan-5.3.0-2.i386.rpm<br />
MQSeriesMsg_Zh_CN-5.3.0-2.i386.rpm<br />
MQSeriesMsg_Zh_TW-5.3.0-2.i386.rpm<br />
MQSeriesMsg_de-5.3.0-2.i386.rpm<br />
MQSeriesMsg_es-5.3.0-2.i386.rpm<br />
MQSeriesMsg_fr-5.3.0-2.i386.rpm<br />
MQSeriesMsg_it-5.3.0-2.i386.rpm<br />
MQSeriesMsg_ja-5.3.0-2.i386.rpm<br />
MQSeriesMsg_ko-5.3.0-2.i386.rpm<br />
MQSeriesMsg_pt-5.3.0-2.i386.rpm<br />
gsk6bas-6.0-3.33.i386.rpm<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
by command: rpm -ivh ***.rpm<br />
e)        Go to folder:\WSMQ5302_LINUX\MQ_CSD08<br />
f)        There the following rpm files: (You can only install the rpms in blue)<br />
MQSeriesRuntime-U497537-5.3.0-8.i386.rpm<br />
MQSeriesSDK-U497537-5.3.0-8.i386.rpm<br />
MQSeriesServer-U497537-5.3.0-8.i386.rpm<br />
MQSeriesJava-U497537-5.3.0-8.i386.rpm<br />
MQSeriesMan-U497537-5.3.0-8.i386.rpm<br />
MQSeriesClient-U497537-5.3.0-8.i386.rpm<br />
MQSeriesSamples-U497537-5.3.0-8.i386.rpm<br />
MQSeriseConfig&#8230;.rpm<br />
MQSeriseIES30&#8230;..rpm   (If you want to use MQ explorer on Linux, install these two RPM)</p>
<p>MQSeriesKeyMan-U497537-5.3.0-8.i386.rpm<br />
MQSeriesTXClient-U497537-5.3.0-8.i386.rpm<br />
MQSeriesFTA-U497537-5.3.0-8.i386.rpm<br />
gsk6bas-6.0-5.41.i386.rpm<br />
g)        Uninstall MQSeries<br />
In the MQSeries for Linux Quick Beginnings Book, it describes to uninstall all of the MQSeries files at once<br />
using the command:<br />
rpm -q -a | grep &#8220;MQSeries&#8221; | xargs rpm -e<br />
however, if a Queue Manager is running when you issue this command then only part of MQSeries will be uninstalled.<br />
From that point onwards you will be unable to stop any remaining Q-Managers or uninstall the remaining components.<br />
YOU MUST ENSURE THAT YOU STOP ALL RUNNING QUEUE MANAGERS BEFORE ATTEMPTING TO USE THIS COMMAND(stop WAS).<br />
If you do run this command, while a queue manager is running, then you will need to either reboot your machine or<br />
re-install the removed parts of MQSeries to allow you to stop the Queue Manager before you can fully complete the uninstallation.<br />
NOTE:<br />
There may some errors in the uninstall processing when you installed MQSeries patches, you can use command &#8216;<br />
rpm -q -a | grep &#8220;MQSeries&#8221;&#8216; to check which rpm pack still in the system and use command &#8216;rpm -e
<pack name>&#8216; to uninstall them from high level to low.<br />
If install fail, use rpm -ivh xxx.rpm &#8211;replacefiles to install again</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1461.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sun v490 服务器solaris10 安装mq 记录</title>
		<link>http://www.evanjiang.net.cn/archives/1459.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1459.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 07:34:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[sun unix]]></category>
		<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1459</guid>
		<description><![CDATA[<p>一、安装过程
1、某天下午对SUN的1个服务器v490进行安装
2、安装完成后用MQM的自测命令检查，确认OK</p>
<p>二、WAS原始安装文件所在目录
/bak/mqm_install</p>
<p>三、mqm安装后，默认程序是安装在/OPT/mqm下，数据安装在var/mqm目录下
四、安装过程如下：
　　（1）SUN下
     a.用ROOT用户登录后，创建用户组与用户mqm,口令是mqm,mqm用户加入root用户组
       groupadd mqm
       useradd -G mqm,root -d /opt/mqm -s -m /bin/bash mqm
       passwd mqm
       -input mqm,mqm
     b.在mqm目录下建立目录mqm_ins , 用ftp工具把安装文件包tar文件放入其中，然后解包
    [...]]]></description>
			<content:encoded><![CDATA[<p>一、安装过程<br />
1、某天下午对SUN的1个服务器v490进行安装<br />
2、安装完成后用MQM的自测命令检查，确认OK</p>
<p>二、WAS原始安装文件所在目录<br />
/bak/mqm_install</p>
<p>三、mqm安装后，默认程序是安装在/OPT/mqm下，数据安装在var/mqm目录下<br />
四、安装过程如下：<br />
　　（1）SUN下<br />
     a.用ROOT用户登录后，创建用户组与用户mqm,口令是mqm,mqm用户加入root用户组<br />
       groupadd mqm<br />
       useradd -G mqm,root -d /opt/mqm -s -m /bin/bash mqm<br />
       passwd mqm<br />
       -input mqm,mqm<br />
     b.在mqm目录下建立目录mqm_ins , 用ftp工具把安装文件包tar文件放入其中，然后解包<br />
       mkdir mqm_ins<br />
       cd mqm_ins<br />
        &#8212;ftp tar file<br />
       tar xvf *<br />
     c.回到mqm目录，修改profile文件参数<br />
       cd ..<br />
       vi .profile<br />
       把整理好的profile参数放入其中&#8230;文件为&#8221;profile-待放入系统配置&#8221;<br />
     d.去到/etc/目录下，修改system文件，按用户要求修改内核参数，参考文件“etc-system-待放入系统配置”<br />
　　　　放入后保存。<br />
　　 e.回到mqm_ins目录下执行安装<br />
       先执行认证<br />
       ./mqlicense.sh，输入1接受协议，然后回车继续安装<br />
       提示完成后，再执行<br />
       pkgadd -d .<br />
     　执行安装过程，每一步按默认参数选择ALL或回车，安装所有组件包，最后提示MQM安装完成。</p>
<p><span id="more-1459"></span><br />
五、验证安装<br />
    1、mqm用户登录<br />
       创建队列venus.queue.manager<br />
       crtmqm -q venus.queue.manager<br />
       启动队列管理器<br />
　　　 strmqm<br />
       启用MQSC命令<br />
       runmqsc<br />
       进入环境后，定义名为ORANGE.QUEUE的本地队列<br />
       define qlocal (orange.queue)<br />
       end  (停止MQSC)<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
　　　　现在，已定义下列各项：名为venus.queue.manager的缺省队列管理器，名为ORANGE.QUEUE的队列</p>
<p>        转到/opt/mqm/samp/bin目录下，使用amqsput样本程序来将消息放入队列，以且使用amqsget样本程序来从队列取回消息<br />
        dspmq  命令可显示MQM队列状态<br />
        ./amqsput ORANGE.QUEUE<br />
        输入一行文字，然后以空行结束，退出<br />
　　　　./amqsget ORANGE.QUEUE<br />
        可显示刚才放入队列的消息，成功提示即证明完成。<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
       </p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1459.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sun Fire™ V490 RSC配置说明 (参考网上文章）</title>
		<link>http://www.evanjiang.net.cn/archives/1457.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1457.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 07:30:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[sun unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1457</guid>
		<description><![CDATA[<p>与V240不同的是，Sun Fire™ V480, V880, V490, and V890 SC使用的不是ALOM而是RSC，RSC的配置可以在正常状态#下完成，并不需要借助console口！rsc</p>
<p>的配置软件不是系统默认安装的，首先要在服务器上安装rsc的软件包Sun Remote System Control (RSC) 2.2.3 Software，可以在sun的补丁光盘里面找到</p>
<p>，位于光盘的目录：sun/progs/RSC/2.2.3中。该软件包也可以从sun的网站上下载，如下是参考链接地址：</p>
<p>http://www.sun.com/servers/rsc.html</p>
<p>在solaris 8上软件包是rsc2.2.3_packages_s8.zip，solaris 9和solaris 10使用同样的软件包是rsc2.2.3_packages_s8.zip</p>
<p>该软件安装步骤如下：</p>
<p>先准备软件包，然后解压缩，</p>
<p># unzip rsc2.2.3_packages_s8.zip</p>
<p>解压缩后出现很多的软件包，如下：</p>
<p>README SUNWfrscd SUNWkrscd</p>
<p>README-RSC SUNWfrscj SUNWkrscj</p>
<p>SUNWcrsc SUNWhrsc SUNWrsc</p>
<p>SUNWcrscd SUNWhrscd SUNWrscd</p>
<p>SUNWcrscj SUNWhrscj SUNWrscj</p>
<p>SUNWdersc SUNWirscd SUNWsrscd

SUNWdrscd SUNWirscj SUNWsrscj</p>
<p>SUNWdrscj SUNWitrsc SUNWsvrsc</p>
<p>SUNWerscd SUNWjersc en_us_relnotes.pdf</p>
<p>SUNWerscj SUNWjrscd rsc2.2.3_packages_s8.zip</p>
<p>SUNWesrsc SUNWjrscj rsc2.2.3_packages_s9.zip</p>
<p>SUNWfrrsc SUNWkrsc软件包中是针对不同语言环境不同的软件包，英文的软件包是必须安装的，中文的软件包是
SUNWcrsc SUNWcrscd SUNWcrscj </p>
<p>英文的软件包是：
SUNWrsc SUNWrscd SUNWrscj</p>
<p>除了中文和英文的软件包外把多余的软件包删除掉，剩下如下软件包：</p>
<p>README SUNWcrscj en_us_relnotes.pdf</p>
<p>README-RSC SUNWrsc rsc2.2.3_packages_s8.zip








SUNWcrsc SUNWrscd rsc2.2.3_packages_s9.zip</p>
<p>SUNWcrscd SUNWrscj</p>
<p>然后安装这些软件包。</p>
<p># pkgadd [...]]]></description>
			<content:encoded><![CDATA[<p>与V240不同的是，Sun Fire™ V480, V880, V490, and V890 SC使用的不是ALOM而是RSC，RSC的配置可以在正常状态#下完成，并不需要借助console口！rsc</p>
<p>的配置软件不是系统默认安装的，首先要在服务器上安装rsc的软件包Sun Remote System Control (RSC) 2.2.3 Software，可以在sun的补丁光盘里面找到</p>
<p>，位于光盘的目录：sun/progs/RSC/2.2.3中。该软件包也可以从sun的网站上下载，如下是参考链接地址：</p>
<p>http://www.sun.com/servers/rsc.html</p>
<p>在solaris 8上软件包是rsc2.2.3_packages_s8.zip，solaris 9和solaris 10使用同样的软件包是rsc2.2.3_packages_s8.zip</p>
<p>该软件安装步骤如下：</p>
<p>先准备软件包，然后解压缩，</p>
<p># unzip rsc2.2.3_packages_s8.zip</p>
<p>解压缩后出现很多的软件包，如下：</p>
<p>README SUNWfrscd SUNWkrscd</p>
<p>README-RSC SUNWfrscj SUNWkrscj</p>
<p>SUNWcrsc SUNWhrsc SUNWrsc</p>
<p>SUNWcrscd SUNWhrscd SUNWrscd</p>
<p>SUNWcrscj SUNWhrscj SUNWrscj</p>
<p>SUNWdersc SUNWirscd SUNWsrscd<br />
<span id="more-1457"></span><br />
SUNWdrscd SUNWirscj SUNWsrscj</p>
<p>SUNWdrscj SUNWitrsc SUNWsvrsc</p>
<p>SUNWerscd SUNWjersc en_us_relnotes.pdf</p>
<p>SUNWerscj SUNWjrscd rsc2.2.3_packages_s8.zip</p>
<p>SUNWesrsc SUNWjrscj rsc2.2.3_packages_s9.zip</p>
<p>SUNWfrrsc SUNWkrsc软件包中是针对不同语言环境不同的软件包，英文的软件包是必须安装的，中文的软件包是<br />
SUNWcrsc SUNWcrscd SUNWcrscj </p>
<p>英文的软件包是：<br />
SUNWrsc SUNWrscd SUNWrscj</p>
<p>除了中文和英文的软件包外把多余的软件包删除掉，剩下如下软件包：</p>
<p>README SUNWcrscj en_us_relnotes.pdf</p>
<p>README-RSC SUNWrsc rsc2.2.3_packages_s8.zip<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
SUNWcrsc SUNWrscd rsc2.2.3_packages_s9.zip</p>
<p>SUNWcrscd SUNWrscj</p>
<p>然后安装这些软件包。</p>
<p># pkgadd -d .</p>
<p>安装完之后，会在/usr/platform/`uname -i`/ 路径下生成rsc目录</p>
<p># cd /usr/platform/`uname -i`/rsc</p>
<p># ./ rsc-initscript </p>
<p># ./rsc-config</p>
<p>Continue with RSC setup (y|n): y</p>
<p>Set RSC date/time now (y|n|?) [y]:<br />
Server Hostname [SUN280R]:<br />
Edit customer info field (y|n|?) [n]:<br />
Enable RSC Ethernet Interface (y|n|s|?) [n]: y<br />
RSC IP Mode (config|dhcp|?) [dhcp]: n<br />
RSC IP Mode (config|dhcp|?) [dhcp]: config<br />
RSC IP Address []: 192.168.81.12<br />
RSC IP Netmask [255.255.255.0]:<br />
RSC IP Gateway []: 192.168.81.254<br />
Enable RSC Alerts (y|n|s|?) [n]:<br />
Enable RSC Modem Interface (y|n|s|?) [n]:<br />
Enable RSC Serial Port Interface (y|n|s|?) [n]:<br />
Setup RSC User Account (y|n|?) [y]:<br />
Username []: admin<br />
User Permissions (c,u,a,r|none|?) [cuar]: </p>
<p>Verifying Selections</p>
<p>General Setup</p>
<p>Set RSC date now = y<br />
Server Hostname = PMDB01</p>
<p>Set Customer Info = n</p>
<p>Is this correct (y|n): y<br />
Ethernet Setup<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
IP Mode = config<br />
IP Address = 192.168.81.12<br />
IP Netmask = 255.255.255.0<br />
IP Gateway = 192.168.81.254</p>
<p>Is this correct (y|n): y</p>
<p>Alert Setup<br />
Alerts disabled</p>
<p>Is this correct (y|n): y </p>
<p>Modem Setup<br />
&#8212;&#8212;&#8212;&#8211;<br />
 Modem disabled, ppp disabled</p>
<p>Is this correct (y|n): y</p>
<p>Serial Port Setup<br />
 Serial port disabled<br />
Is this correct (y|n): y</p>
<p>User Setup<br />
User Name = neusoft<br />
User Permissions = cuar<br />
Is this correct (y|n): y</p>
<p>This script will now update RSC, continue? (y|n): y<br />
Updating flash, this takes a few minutes<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
Download completed successfully</p>
<p>Resetting RSC (takes about 90 seconds):<br />
DONE<br />
Setting up server to update RSC date on boot: DONE<br />
Setting up server hostname: DONE<br />
Setting up ethernet interface: DONE<br />
Disabling RSC alert engine: DONE<br />
Disabling modem interface: DONE<br />
Disabling serial port interface: DONE<br />
Adding user to RSC:<br />
rscadm: user already exists<br />
when this script completes,<br />
use the rscadm command to correct the error.<br />
Resetting RSC (takes about 90 seconds):<br />
Are you sure you want to reboot RSC (y/n)? y</p>
<p>DONE<br />
Setting up RSC date: DONE</p>
<p>*******************************<br />
RSC has been successfully setup</p>
<p>至此，配置完毕，可以使用telnet连接RSC</p>
<p>与V240类似，系统也提供了rscadm命令用于在正常状态下管理配置rsc!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1457.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2安装手册 For IBM Aix</title>
		<link>http://www.evanjiang.net.cn/archives/1455.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1455.html#comments</comments>
		<pubDate>Sun, 07 Feb 2010 13:33:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[db2]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1455</guid>
		<description><![CDATA[<p>DB2安装手册 (IBM AIX 环境下）
一、安装前的准备
1．	检查操作系统的版本，确保AIX系统已经打上最新的补丁：
#oslevel –r
#instfix –i &#124;grep ML
如果没有安装最新补丁，请使用补丁光盘，安装补丁文件；
2．	查看/usr文件系统的可用空间，确保可用空间>100MB：
#df –k
如果/usr可用空间不够，使用chfs –a size=+256000 /usr增加128MB空间；
3．	建议安装前，停止其他繁忙的应用程序的运行，以确保安装的性能。
二、安装过程
1．	注册为具有超级用户权限的用户(root以下所有操作均在root用户下完成）；
2．	将 标有“DB2通用数据库企业版”的软件光盘插入驱动器（DB2 UNIVERSAL DATABASE ENTERPRISE SERVER EDITION VERSION 8.1 AT THE FIXPAK 1LEVEL）；
3．	加载光盘文件系统：#mount –rv cdrfs /dev/cd0 /mnt;
4．	进入光盘文件系统# cd /cdrom;  （cd mnt）
5．	将光盘上压缩文件拷贝至/db2temp ,命令为cp;（db2temp是一存放解压缩文件的临时文件夹）
6．	解压缩uncompress 文件名;
7．	继续解压缩tar –xvf  文件名
8．	进入解压后的文件夹，找到db2setup文件，运行 ./db2setup命令以启动 DB2 安装程序,安装 DB2 V6 窗口打开;
9．	 按 Tab 键或用鼠标更改突出显示的选项，按 Enter 键或鼠标选择或取消选择选项;</p>
<p>10．	点击Install Products，并选择安装DB2 UDB Enterprise Server Edition</p>
<p>11．	点击Next，进入DB2 Setup [...]]]></description>
			<content:encoded><![CDATA[<p>DB2安装手册 (IBM AIX 环境下）<br />
一、安装前的准备<br />
1．	检查操作系统的版本，确保AIX系统已经打上最新的补丁：<br />
#oslevel –r<br />
#instfix –i |grep ML<br />
如果没有安装最新补丁，请使用补丁光盘，安装补丁文件；<br />
2．	查看/usr文件系统的可用空间，确保可用空间>100MB：<br />
#df –k<br />
如果/usr可用空间不够，使用chfs –a size=+256000 /usr增加128MB空间；<br />
3．	建议安装前，停止其他繁忙的应用程序的运行，以确保安装的性能。<br />
二、安装过程<br />
1．	注册为具有超级用户权限的用户(root以下所有操作均在root用户下完成）；<br />
2．	将 标有“DB2通用数据库企业版”的软件光盘插入驱动器（DB2 UNIVERSAL DATABASE ENTERPRISE SERVER EDITION VERSION 8.1 AT THE FIXPAK 1LEVEL）；<br />
3．	加载光盘文件系统：#mount –rv cdrfs /dev/cd0 /mnt;<br />
4．	进入光盘文件系统# cd /cdrom;  （cd mnt）<br />
5．	将光盘上压缩文件拷贝至/db2temp ,命令为cp;（db2temp是一存放解压缩文件的临时文件夹）<br />
6．	解压缩uncompress 文件名;<br />
7．	继续解压缩tar –xvf  文件名<br />
8．	进入解压后的文件夹，找到db2setup文件，运行 ./db2setup命令以启动 DB2 安装程序,安装 DB2 V6 窗口打开;<br />
9．	 按 Tab 键或用鼠标更改突出显示的选项，按 Enter 键或鼠标选择或取消选择选项;</p>
<p>10．	点击Install Products，并选择安装DB2 UDB Enterprise Server Edition</p>
<p>11．	点击Next，进入DB2 Setup wizard；</p>
<p>12．	点击Next，进入Software License Agreement；<br />
<span id="more-1455"></span><br />
选择Agree，并点击Next;<br />
13．	选择安装类型：为Custom自定义安装，并点击Next；</p>
<p>14．	选择在本机上安装DB2，并点击Next；</p>
<p>15．	选择DB2组件，添加Application Development Tools选项，并点击Next；</p>
<p>16．	选择DB2 产品语言，缺省为English，并点击Next；</p>
<p>17．	创建DB2 Administration Server User，设定password，其他使用缺省配置，并点击Next；</p>
<p>18．	选择DB2 Instance，选择32bit Instance，并点击Next（此时会出现一个提示说需要支持32位的JDK，此JDK在DEVELOPE KIT随机光盘中能够找到，最后一步详细说明安装步骤）</p>
<p>19．	选择Single-partition Instance，并点击Next；</p>
<p>20．	创建DB2 Instance owner User，设定password，其他使用缺省配置，并点击Next；</p>
<p>21．	创建DB2 Instance fenced User，设定password，其他使用缺省配置，并点击Next；</p>
<p>22．	配置DB2 Instance TCP/IP 通讯，选择Configure，使用缺省值，并点击Next；</p>
<p>23．	设置Instance属性，使用缺省值，并点击Next；</p>
<p>24．	准备DB2 tools catalog，选择不使用，并点击Next；</p>
<p>25．	设置Administration联系表，使用缺省值，并点击Next；</p>
<p>26．	设置健康监视联系人，使用缺省值，并点击Next；</p>
<p>27．	当前配置总结，并点击Next，开始复制文件；</p>
<p>28．	安装过程；</p>
<p>29．	安装完毕，并点击Finish；</p>
<p>安装完成之后检查三个帐户（dasusr1，db2inst1，db2fenc）是否全部建立，使用smitty user命令查看，或者使用su命令分别进入三个帐户，如果三个帐户存在并且可以su进去，证明帐户添加成功。如发现帐户没有建立，重新执行安装程序，再次安装，帐户添加成功。<br />
三、数据库测试<br />
1．	安装完以后重启机器； shutdown -F<br />
2．	安装结果：数据库程序安装完成后，DB2的软件程序安装在/usr/lpp目录中，DB2DIR = /usr/lpp/DB2_08_01；<br />
3．	执行 ./home/db2inst1/sqllib/db2profile;<br />
4．	使用db2inst1登入系统，运行$db2sampl 创建sample数据库；<br />
5．	使用$db2 list db directory查看数据库catalog；<br />
6．	使用$db2 connect to sample连接到Sample数据库；使用$db2 list tables查看表，并使用select * from sales查看Sales表里的内容，结果如下：<br />
$ db2 connect to sample;<br />
   Database Connection Information<br />
 Database server        = DB2/AIX64 8.1.0<br />
 SQL authorization ID   = DB2INST1<br />
 Local database alias   = SAMPLE</p>
<p>$ db2 list tables</p>
<p>Table/View                      Schema          Type  Creation time<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
CL_SCHED                        DB2INST1        T     2005-04-17-10.53.31.235846<br />
DEPARTMENT                      DB2INST1        T     2005-04-17-10.53.26.255031<br />
EMP_ACT                         DB2INST1        T     2005-04-17-10.53.26.685151<br />
EMP_PHOTO                       DB2INST1        T     2005-04-17-10.53.27.169439<br />
EMP_RESUME                      DB2INST1        T     2005-04-17-10.53.30.242825<br />
EMPLOYEE                        DB2INST1        T     2005-04-17-10.53.26.395867<br />
IN_TRAY                         DB2INST1        T     2005-04-17-10.53.31.351258<br />
ORG                             DB2INST1        T     2005-04-17-10.53.25.699546<br />
PROJECT                         DB2INST1        T     2005-04-17-10.53.26.970160<br />
SALES                           DB2INST1        T     2005-04-17-10.53.31.042355<br />
STAFF                           DB2INST1        T     2005-04-17-10.53.26.047395</p>
<p>  11 record(s) selected.</p>
<p>$ db2 &#8220;select * from sales&#8221;;</p>
<p>SALES_DATE SALES_PERSON    REGION          SALES<br />
&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211;<br />
12/31/1995 LUCCHESSI       Ontario-South             1<br />
12/31/1995 LEE             Ontario-South             3<br />
12/31/1995 LEE             Quebec                    1<br />
12/31/1995 LEE             Manitoba                  2<br />
12/31/1995 GOUNOT          Quebec                    1<br />
03/29/1996 LUCCHESSI       Ontario-South             3<br />
03/29/1996 LUCCHESSI       Quebec                    1<br />
03/29/1996 LEE             Ontario-South             2<br />
03/29/1996 LEE             Ontario-North             2<br />
03/29/1996 LEE             Quebec                    3<br />
03/29/1996 LEE             Manitoba                  5<br />
03/29/1996 GOUNOT          Ontario-South             3<br />
03/29/1996 GOUNOT          Quebec                    1<br />
03/29/1996 GOUNOT          Manitoba                  7<br />
03/30/1996 LUCCHESSI       Ontario-South             1<br />
03/30/1996 LUCCHESSI       Quebec                    2<br />
03/30/1996 LUCCHESSI       Manitoba                  1<br />
03/30/1996 LEE             Ontario-South             7<br />
03/30/1996 LEE             Ontario-North             3<br />
03/30/1996 LEE             Quebec                    7<br />
03/30/1996 LEE             Manitoba                  4<br />
03/30/1996 GOUNOT          Ontario-South             2<br />
03/30/1996 GOUNOT          Quebec                   18<br />
03/30/1996 GOUNOT          Manitoba                  1<br />
03/31/1996 LUCCHESSI       Manitoba                  1<br />
03/31/1996 LEE             Ontario-South            14<br />
03/31/1996 LEE             Ontario-North             3<br />
03/31/1996 LEE             Quebec                    7<br />
03/31/1996 LEE             Manitoba                  3<br />
03/31/1996 GOUNOT          Ontario-South             2<br />
03/31/1996 GOUNOT          Quebec                    1<br />
04/01/1996 LUCCHESSI       Ontario-South             3<br />
04/01/1996 LUCCHESSI       Manitoba                  1<br />
04/01/1996 LEE             Ontario-South             8<br />
04/01/1996 LEE             Ontario-North             -<br />
04/01/1996 LEE             Quebec                    8<br />
04/01/1996 LEE             Manitoba                  9<br />
04/01/1996 GOUNOT          Ontario-South             3<br />
04/01/1996 GOUNOT          Ontario-North             1<br />
04/01/1996 GOUNOT          Quebec                    3<br />
04/01/1996 GOUNOT          Manitoba                  7</p>
<p>  41 record(s) selected.</p>
<p>四、安装补丁<br />
安装 DB2 补丁前的注意事项：<br />
由于补丁解压后单个文件大于2G，因此需在/etc/security/limits中将参数fsize的值改为-1<br />
注：1、使用root帐户进行解压缩必须把fsize的值改为-1，用db2inst1帐户进行解压缩需用root帐户把压缩文件的权限改为777。<br />
# chmod –R 777 压缩文件名<br />
2、在安装补丁之前最好先创建数据库<br />
在建立数据库之后，运行db2set DB2CODEPAGE=1386<br />
开始安装之前，请先确实停止所有的 DB2 程序。<br />
1. 执行 su &#8211; root 命令以切换至 root 权限。<br />
2. 针对每个实例执行下列命令：<br />
           su – iname（db2inst1）<br />
       . $HOME/sqllib/db2profile<br />
       db2 force applications all<br />
       db2 terminate<br />
       db2stop<br />
       exit<br />
   其中 iname 代表实例拥有者名称。<br />
   如果您是 hacmp 使用者，则必须使用 ha_db2stop 命令停止 DB2，而不应使用<br />
   db2stop 命令。不然，db2stop 命令会触发失败事件。<br />
3. 执行下列命令：<br />
        su – aname(dasusr1)<br />
       . $HOME/das/dasprofile<br />
        db2admin stop<br />
        exit<br />
   其中 aname 代表 DAS 拥有者名称。<br />
4. 在 AIX 上，您也应执行 slibclean，以从内存中卸载未使用的共享档案<br />
   库，然后才进行安装：<br />
       /usr/sbin/slibclean<br />
5. 停止所有正在使用 DB2 第 8 版的实例。若有正在使用 DB2 第 8 版的「错误<br />
   监督程序」，也必须加以停用。<br />
安装DB2补丁<br />
从 IBM 匿名 FTP 服务器下载第 8 版替代 FixPak，下载后的文件名为：FP9a_U800780.tar.Z<br />
解压缩的步骤：<br />
1、	uncompress FP9a_U800789.tar.Z,执行后生成的文件为FP9a_U800789.tar<br />
2、	tar –tvf  FP9a_U800789.tar,执行后生成的文件OD_14086<br />
若要安装 DB2 补丁：<br />
1. 进入OD_14086文件夹。<br />
2. 输入 ./installFixPak 命令以启动安装。<br />
./installFixPak –y  (执行的命令)<br />
注: 根据默认值，installFixPak命令将会确定 AIX 上所有已更新的档案集。<br />
更新实例以使用新的 DB2 层次<br />
在安装新的 DB2 层次之后，必须更新所有实例。<br />
您必须以 root 身份登入来更新实例。针对每个实例，发出下列命令：<br />
      INSTHOME(/usr/opt/db2_08_01)/instance/db2iupdt iname(db2inst1)<br />
 其中 iname 代表实例名称，INSTHOME 代表适合您操作系统的安装目录。<br />
当数据库管理服务器 (DAS) 实例存在，并且是 DB2 第 8 版 DAS 实例时，请执行<br />
dasupdt 命令。若要更新 DAS 实例，请发出下列命令：<br />
    INSTHOME/instance/dasupdt dasname(dasusr1)<br />
其中 dasname 代表 DAS 拥有者名称，INSTHOME 代表适合您操作系统的安装目录。<br />
如需 db2iupdt 或 dasupdt 命令进一步的相关信息，请以 -h 选项执行这些命令。<br />
重新启动实例<br />
1. 以实例拥有者身份登入，然后输入 db2start 命令。<br />
2. 在每一个实例重复。<br />
若要重新启动管理服务器，请以 DAS 拥有者登入，然后执行 db2admin start 命令。<br />
重新连结连结档案<br />
您必须在安装之后，将 DB2 公用程序连结至所有的数据库。完成这个步骤，修正程序安装即完成，并会确保程序代码层次的正确使用。每个数据库只需执行一次连结的程序 (如下所述)。<br />
重新连结 DB2 UDB 数据库<br />
引用修正程序之后，您必须执行下列命令集之一：<br />
在命令提示下输入：<br />
    db2 terminate<br />
       db2 CONNECT TO <dbname><br />
       db2 BIND
<path>/@db2ubind.lst BLOCKING ALL GRANT PUBLIC<br />
       db2 BIND
<path>/@db2cli.lst BLOCKING ALL GRANT PUBLIC<br />
    db2 terminate<br />
    或<br />
在 DB2 命令行下输入：<br />
       TERMINATE<br />
       CONNECT TO <dbname><br />
       BIND
<path>/@db2ubind.lst BLOCKING ALL GRANT PUBLIC<br />
       BIND
<path>/@db2cli.lst BLOCKING ALL GRANT PUBLIC<br />
       TERMINATE<br />
其中 <dbname> 代表公用程序应连接的数据库名称，
<path> 代表连结档案所在<br />
目录的完整路径名称 (如 $HOME(/home/db2inst1)/sqllib/bnd，其中 $HOME 代表数据库服务器的实例之起始目录)。 db2ubind.lst 与 db2cli.lst包含用于 DB2 UDB 所必要的连<br />
结档案清单。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1455.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 for RH linux的详细的安装步骤</title>
		<link>http://www.evanjiang.net.cn/archives/1453.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1453.html#comments</comments>
		<pubDate>Sun, 07 Feb 2010 13:31:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[db2]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1453</guid>
		<description><![CDATA[<p>安装
(1) 操作系统安装
本次测试的操作系统环境为RedHat Linux7.2 Professional，内核 2.2.12 或更新版本 </p>
<p>安装过程基本上点选“next”即可，有以下几点需要注意
1． 在选择要安装的产品包时，要选中安装“开发工具包”，因为DB2运行环境需要其中的两个库：glibc 版本 2.1.2 或更新版本，libstdc++ 版本 2.9.0。
2． 可以在安装过程中设置网络参数，如IP地址、网关等，当然你也可以在安装完成后在操作系统命令行完成。 </p>
<p>(2) DB2产品安装
本次使用的安装介质为DB2 for Linux安装光盘，其中包括
1． DB2 UDB for Linux Enterprise Edition
2． DB2 Connect Enterprise Edition
3． DB2 Application Development Development Tool
4． DB2 Administration Client </p>
<p>本次测试的目的是希望通过DB2 的产品连上社保局的AS/400下的DB2数据库并能存取数据库，所有我们只需安装Connect产品。 </p>
<p>在安装DB2产品之前，你必须安装公用域程序包pdksh，该包可以从Linux安装盘中获得(目前使用的版本为第二张安装盘)，安装步骤如下：
#mkdir db2
#mount –t iso9660 –o ro /dev/cdrom db2
#rpm –ivh /root/db2/RedHat/RPMS/pdksh…rpm
#umount db2

然后就可以安装DB2产品。
如果系统提示找不到共享库：libncurses.so.4，进行如下操作：
#ln –sf /usr/lib/libncurses.so.5 /usr/lib/libncurses.so.4  </p>
<p>#mount /dev/cdrom [...]]]></description>
			<content:encoded><![CDATA[<p>安装<br />
(1) 操作系统安装<br />
本次测试的操作系统环境为RedHat Linux7.2 Professional，内核 2.2.12 或更新版本 </p>
<p>安装过程基本上点选“next”即可，有以下几点需要注意<br />
1． 在选择要安装的产品包时，要选中安装“开发工具包”，因为DB2运行环境需要其中的两个库：glibc 版本 2.1.2 或更新版本，libstdc++ 版本 2.9.0。<br />
2． 可以在安装过程中设置网络参数，如IP地址、网关等，当然你也可以在安装完成后在操作系统命令行完成。 </p>
<p>(2) DB2产品安装<br />
本次使用的安装介质为DB2 for Linux安装光盘，其中包括<br />
1． DB2 UDB for Linux Enterprise Edition<br />
2． DB2 Connect Enterprise Edition<br />
3． DB2 Application Development Development Tool<br />
4． DB2 Administration Client </p>
<p>本次测试的目的是希望通过DB2 的产品连上社保局的AS/400下的DB2数据库并能存取数据库，所有我们只需安装Connect产品。 </p>
<p>在安装DB2产品之前，你必须安装公用域程序包pdksh，该包可以从Linux安装盘中获得(目前使用的版本为第二张安装盘)，安装步骤如下：<br />
#mkdir db2<br />
#mount –t iso9660 –o ro /dev/cdrom db2<br />
#rpm –ivh /root/db2/RedHat/RPMS/pdksh…rpm<br />
#umount db2<br />
<span id="more-1453"></span><br />
然后就可以安装DB2产品。<br />
如果系统提示找不到共享库：libncurses.so.4，进行如下操作：<br />
#ln –sf /usr/lib/libncurses.so.5 /usr/lib/libncurses.so.4  </p>
<p>#mount /dev/cdrom db2<br />
#/root/db2/db2setup </p>
<p>选择安装DB2 Connect EE，根据提示完成安装。 </p>
<p>安装完Connect 产品后，就要创建一个DB2的实例用来生成连接环境，在安装界面选择”create”实例，随后的选择均可采用缺省。 </p>
<p>实例创建完成后，系统会生成一个登录用户db2inst1，缺省密码ibmdb2，我们将会用这个帐号/密码登录到操作系统并连接到AS/400。 </p>
<p>设置<br />
(1) 必须完成相关的网络设置以保证到社保局的物理链路畅通<br />
相关的命令：<br />
#ifconfig eth0 132.92.21.204 netmask 255.255.0.0 //设置IP<br />
#route add default gw 132.92.21.254 //设置缺省路由<br />
#traceroute 97.0.0.1 //跟踪到目的主机的路由<br />
#ping 97.0.0.1 //测试网络<br />
#route  //查看路由 </p>
<p>网络配置文件(每次操作系统启动时自动从该文件加载)<br />
/etc/sysconfig/network-scripts/ifcfg-eth0 </p>
<p>(2) 更新hosts和services文件<br />
编辑/etc/hosts文件，增加一行<br />
97.0.0.8  as400<br />
编辑/etc/services文件，增加一行<br />
ddm 446/tcp<br />
(3) 以db2inst1帐号登录<br />
(4) 启动db2，在命令行进行如下设置：<br />
db2=>;catalog tcpip node zstax remote as400 server ddm<br />
db2=>;catalog dcs db localdb as s653p86m<br />
db2=>;catalog database localdb as zsins at node zstax authentication dcs<br />
db2=>;terminate </p>
<p>(5) 测试到AS400的连接<br />
db2=>;connect to zsins user XXXXX using XXXXXX<br />
如果成功连接，会返回AS400的服务器的有关信息 </p>
<p>(6) 存取数据库<br />
如果提示”NULLID.****”包未找到，在DB2的安装包目录找到相应的文件，这里我们需要安装db2clpcs.bnd<br />
db2=>;bind /usr/IBMdb2/V7.1/bnd/db2clpcs.bnd blocking all grant public </p>
<p>然后你就可以对数据库进行存取操作</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1453.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Linux上实现DB2双机HA完整方案</title>
		<link>http://www.evanjiang.net.cn/archives/1449.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1449.html#comments</comments>
		<pubDate>Sat, 30 Jan 2010 14:58:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[db2]]></category>
		<category><![CDATA[suse linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1449</guid>
		<description><![CDATA[<p>1. 摘要 </p>
<p>　　本文档介绍在SuSE Linux Enterprise Server v8.0(SLES 8)上安装配置DB2 UDB Enterprise Serverv8.2双机互备的高可靠性方案的基本步骤。该方案配合采用SLES的卷管理器(LVM)和Veritas Cluster Server v2.2(VCS 2.2)作为HA实现组件。 </p>
<p>2. 概述 </p>
<p>　本文档假定读者已经理解双机互备的HA方案的基本概念。 </p>
<p>2.1. 双机互备HA方案的基本步骤 </p>
<p>　　建立一个双机互备方案的基本步骤是：
1. 确定基本参数(如IP地址、存储空间，等等。本方案的参数均为示范参数，读者需要根据实际环境替换)
2. 配置共享存储(本方案不涉及共享存储方案的配置)
3. 在两台节点上分别安装应用(在本方案中是DB2 UDB)
4. 在一台节点上对应用作初始配置(在本方案中是在共享存储上建立DB2数据库)
5. 在另一台节点上引入共享存储上的配置(在本方案中是对共享存储上的数据库做catalog操作)
6. 在两台节点上分别手动测试应用
7. 配置HA Cluster管理软件(在本方案中是VCS)
8. 测试HA Cluster管理软件可以成功接管资源</p>
<p>2.2. 假设 </p>
<p>　　本文档假定采用以下示例环境，SLES与VCS已在节点上正确安装，SLES的共享存储已经正确连接，VCS的心跳连接已经正确配置。

2.2.1. 存储 </p>
<p>　　各节点上需要足够的本地磁盘空间，来安装DB2 UDB的可执行代码及实例。 </p>
<p>　　本方案需要足够的共享存储空间，来放置数据库数据。 </p>
<p>　　假定共享存储上分配给DB2数据库的卷组名为/dev/datavg1，逻辑卷名为/dev/datavg1/db2lv1(使用SLES的LVM服务)，在两个节点上的挂接点名为/home/db2data，且已正确格式化为合适的文件系统(Veritas工程师指出在SLES 8上VCS 2.2不支持ext3文件系统，建议格式化时指定ext2，在SLES 9和VCS 4.1上不存在这个问题)。注意这个挂接点要在fstab文件中配置为启动时不自动挂接。 </p>
<p>　　数据库其他表空间可以建立在共享存储的其他卷上，如果是文件系统，同样要配置为不自动挂接。本文档暂不讨论。 </p>
<p>2.2.2. 节点 </p>
<p>　　本HA方案采用两个服务器节点做主从互备，以下分别称为Active节点和Passive节点。这两个节点具有相同的硬件和操作系统配置。 </p>
<p>2.2.3. 网络 </p>
<p>　　对外的IP网络。假定该方案中DB2 UDB对外提供服务使用的浮动IP(Floating IP)为192.168.10.110，Active节点的物理IP为192.168.10.11，Passive节点的物理IP为192.168.10.12。 </p>
<p>　HA管理软件需要一组内部IP来管理双机间的心跳连接。心跳IP不在本文档范围内。 </p>
<p>3. 配置步骤 [...]]]></description>
			<content:encoded><![CDATA[<p>1. 摘要 </p>
<p>　　本文档介绍在SuSE Linux Enterprise Server v8.0(SLES 8)上安装配置DB2 UDB Enterprise Serverv8.2双机互备的高可靠性方案的基本步骤。该方案配合采用SLES的卷管理器(LVM)和Veritas Cluster Server v2.2(VCS 2.2)作为HA实现组件。 </p>
<p>2. 概述 </p>
<p>　本文档假定读者已经理解双机互备的HA方案的基本概念。 </p>
<p>2.1. 双机互备HA方案的基本步骤 </p>
<p>　　建立一个双机互备方案的基本步骤是：<br />
1. 确定基本参数(如IP地址、存储空间，等等。本方案的参数均为示范参数，读者需要根据实际环境替换)<br />
2. 配置共享存储(本方案不涉及共享存储方案的配置)<br />
3. 在两台节点上分别安装应用(在本方案中是DB2 UDB)<br />
4. 在一台节点上对应用作初始配置(在本方案中是在共享存储上建立DB2数据库)<br />
5. 在另一台节点上引入共享存储上的配置(在本方案中是对共享存储上的数据库做catalog操作)<br />
6. 在两台节点上分别手动测试应用<br />
7. 配置HA Cluster管理软件(在本方案中是VCS)<br />
8. 测试HA Cluster管理软件可以成功接管资源</p>
<p>2.2. 假设 </p>
<p>　　本文档假定采用以下示例环境，SLES与VCS已在节点上正确安装，SLES的共享存储已经正确连接，VCS的心跳连接已经正确配置。<br />
<span id="more-1449"></span><br />
2.2.1. 存储 </p>
<p>　　各节点上需要足够的本地磁盘空间，来安装DB2 UDB的可执行代码及实例。 </p>
<p>　　本方案需要足够的共享存储空间，来放置数据库数据。 </p>
<p>　　假定共享存储上分配给DB2数据库的卷组名为/dev/datavg1，逻辑卷名为/dev/datavg1/db2lv1(使用SLES的LVM服务)，在两个节点上的挂接点名为/home/db2data，且已正确格式化为合适的文件系统(Veritas工程师指出在SLES 8上VCS 2.2不支持ext3文件系统，建议格式化时指定ext2，在SLES 9和VCS 4.1上不存在这个问题)。注意这个挂接点要在fstab文件中配置为启动时不自动挂接。 </p>
<p>　　数据库其他表空间可以建立在共享存储的其他卷上，如果是文件系统，同样要配置为不自动挂接。本文档暂不讨论。 </p>
<p>2.2.2. 节点 </p>
<p>　　本HA方案采用两个服务器节点做主从互备，以下分别称为Active节点和Passive节点。这两个节点具有相同的硬件和操作系统配置。 </p>
<p>2.2.3. 网络 </p>
<p>　　对外的IP网络。假定该方案中DB2 UDB对外提供服务使用的浮动IP(Floating IP)为192.168.10.110，Active节点的物理IP为192.168.10.11，Passive节点的物理IP为192.168.10.12。 </p>
<p>　HA管理软件需要一组内部IP来管理双机间的心跳连接。心跳IP不在本文档范围内。 </p>
<p>3. 配置步骤 </p>
<p>3.1. DB2 UDB安装、配置步骤 </p>
<p>3.1.1. 建立用户和组 </p>
<p>　　在两台节点上分别在root下执行以下命令:<br />
　　groupadd –g 900 db2iadm1<br />
　　groupadd –g 901 db2fadm1<br />
　　groupadd –g 902 dasadm1<br />
　　useradd –g db2iadm1 –u 800 –d /home/db2inst1 –s /bin/bash db2inst1<br />
　　useradd –g db2fadm1 –u 801 –d /home/db2fenc1 –s /bin/bash db2fenc1<br />
　　useradd –g dasadm1 –u 802 –d /home/dasusr1 –s /bin/bash dasusr1<br />
　　组ID和用户ID可以根据实际情况选择，但务必保证在两台节点上相同的用户名/组名具有相同的ID。</p>
<p>3.1.2. 安装DB2 UDB产品代码<br />
　　在两台节点上分别在root用户下执行以下命令:<br />
　　cd<br />
　　./db2install –p DB2.ESE<br />
　　cd /opt/IBM/db2/V8.1/adm<br />
　　./db2licm –a /db2/license/db2ese.lic</p>
<p>　　其中，是DB2 UDB ESE安装介质所在目录。 </p>
<p>3.1.3. 建立实例 </p>
<p>　　在两台节点上分别在root用户下执行以下命令: </p>
<p>　　cd /opt/IBM/db2/V8.1/instance </p>
<p>　　./db2icrt –p 50000 –u db2fenc1 db2inst1 </p>
<p>3.1.4. 建立DAS </p>
<p>　　在两台节点上分别在root用户下执行以下命令: </p>
<p>　　cd /opt/IBM/db2/V8.1/instance </p>
<p>　　./dascrt –u dasusr1 </p>
<p>3.1.5. 建立数据库 </p>
<p>　　在Active节点上在root用户下执行以下命令:<br />
　　mount /dev/datavg1/db2lv1 /home/db2data<br />
　　su – db2inst1<br />
　　db2start<br />
　　db2 create database on /home/db2data<br />
　　db2stop<br />
　　exit<br />
　　umount /home/db2data<br />
　　其中，是数据库名。</p>
<p>3.1.6. Catalog数据库<br />
　　在Passive节点上在root用户下执行以下命令:<br />
　　mount /dev/datavg1/db2lv1 /home/db2data<br />
　　su – db2inst1<br />
　　db2start<br />
　　db2 catalog database on /home/db2data<br />
　　db2stop<br />
　　exit<br />
　　umount /home/db2data<br />
　其中，是上一步骤建立的数据库名</p>
<p>3.1.7. 检验DB2配置<br />
　　在Active节点上，在root用户下执行以下命令:<br />
　　mount /dev/datavg1/db2lv1 /home/db2data<br />
　　su – db2inst1<br />
　　db2start<br />
　　db2 connect to<br />
　　db2 create table T (ID INTEGER)<br />
　db2 connect reset<br />
　db2stop<br />
　　exit<br />
　umount /home/db2data<br />
　　检验上述命令均无出错信息。</p>
<p>　　在Passive节点上，在root用户下执行以下命令:<br />
　　mount /dev/datavg1/db2lv1 /home/db2data<br />
　　su – db2inst1<br />
　　db2start<br />
　　db2 connect to<br />
　　db2 drop table T<br />
　　db2 connect reset<br />
　　db2stop<br />
　　exit<br />
　　umount /home/db2data<br />
　　检验上述命令均无出错信息。</p>
<p>3.2. VCS配置<br />
　在VCS中，建立DB2资源组，在组中配置浮动IP、Application等资源，将Application的启动、停止等命令脚本配置为db2start、db2stop、db2admin start和db2admin stop，将Application的监视命令脚本配置为ps命令，监视db2sysc和db2dasrrm进程。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1449.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rhel5.4中文包的安装以及WebSphere概要文件的创建与删除</title>
		<link>http://www.evanjiang.net.cn/archives/1447.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1447.html#comments</comments>
		<pubDate>Thu, 28 Jan 2010 13:20:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1447</guid>
		<description><![CDATA[<p>一、Red Hat Enterprise Linux 5.0版本下的中文包的安装</p>
<p>需要找到光盘上的２个中文支持字体包安装上即可.
文件名如下,注意不同版本文件明后面数字部分可能会不同,其代表版本号.下面是Red Hat Enterprise Linux 5.0版本下的中文包文件名.
fonts-chinese-3.02-9.6.el5.noarch.rpm
fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm</p>
<p>分别双击上面的2个文件并安装,完毕后无需从新启动系统即可支持中文,(可能需要关闭然后从新打开需要显示中文的应用程序)．</p>
<p>这种方法，也适用于rhel5.4版本。</p>
<p>二、websphere 创建概要文件脚本.</p>
<p>
　　创建概要文件：</p>
<p>　　方案一：./manageprofiles.sh -create -profileName AppSrv01</p>
<p>　　-profilePath /opt/IBM/WebSphere/AppServer/profiles/AppSrv01</p>
<p>　　-templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default</p>
<p>　　方案二：开始－程序－IBM WebSphere-Application Server-Profile Management Tool, 按照提示创建。</p>
<p>三、解决AppSrv02概要文件删除不彻底问题。</p>
<p>　　删除概要文件：</p>
<p>　　方案一：</p>
<p>　　1.找到profileRegistry.xml，在目录IBM\WebSphere\AppServer\properties里,去掉想删除的profile的配置即可。
　　2.删除profileName.bat  在目录IBM\WebSphere\AppServer\properties\fsdb里，删除</p>
<p>　　3.将profile的实际存储目录及内容删除，如：D:\IBM\WebSphere\AppServer\profiles\AppSrv01</p>
<p>　　方案二：</p>
<p>　　使用命令 manageprofiles.bat -delete -profileName profileNam</p>
<p>可以AppServer\properties\profileRegistry.xml下把节点配置删除，然后把profile下相应文件夹和程序启动的快捷方式都删除就可以.</p>
]]></description>
			<content:encoded><![CDATA[<p>一、Red Hat Enterprise Linux 5.0版本下的中文包的安装</p>
<p>需要找到光盘上的２个中文支持字体包安装上即可.<br />
文件名如下,注意不同版本文件明后面数字部分可能会不同,其代表版本号.下面是Red Hat Enterprise Linux 5.0版本下的中文包文件名.<br />
fonts-chinese-3.02-9.6.el5.noarch.rpm<br />
fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm</p>
<p>分别双击上面的2个文件并安装,完毕后无需从新启动系统即可支持中文,(可能需要关闭然后从新打开需要显示中文的应用程序)．</p>
<p>这种方法，也适用于rhel5.4版本。</p>
<p>二、websphere 创建概要文件脚本.</p>
<p><span id="more-1447"></span><br />
　　创建概要文件：</p>
<p>　　方案一：./manageprofiles.sh -create -profileName AppSrv01</p>
<p>　　-profilePath /opt/IBM/WebSphere/AppServer/profiles/AppSrv01</p>
<p>　　-templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default</p>
<p>　　方案二：开始－程序－IBM WebSphere-Application Server-Profile Management Tool, 按照提示创建。</p>
<p>三、解决AppSrv02概要文件删除不彻底问题。</p>
<p>　　删除概要文件：</p>
<p>　　方案一：</p>
<p>　　1.找到profileRegistry.xml，在目录IBM\WebSphere\AppServer\properties里,去掉想删除的profile的配置即可。<br />
　　2.删除profileName.bat  在目录IBM\WebSphere\AppServer\properties\fsdb里，删除</p>
<p>　　3.将profile的实际存储目录及内容删除，如：D:\IBM\WebSphere\AppServer\profiles\AppSrv01</p>
<p>　　方案二：</p>
<p>　　使用命令 manageprofiles.bat -delete -profileName profileNam</p>
<p>可以AppServer\properties\profileRegistry.xml下把节点配置删除，然后把profile下相应文件夹和程序启动的快捷方式都删除就可以.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1447.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WAS7ND  FOR AIX -两套集群安装记录笔记</title>
		<link>http://www.evanjiang.net.cn/archives/1436.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1436.html#comments</comments>
		<pubDate>Sat, 23 Jan 2010 12:45:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ibm unix]]></category>
		<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1436</guid>
		<description><![CDATA[<p>硬件平台：p759
操作系统：aix 5.3
本次要安装：WAS 7，
一、	安装前介质准备
以上三类文件分别放在两台机的/tmp/was_install目录下，子目录分别为WAS,,IHS,plugin ,然后解压。
Guzip *.gz
Tar xvf *.tar
准备安装
二、安装要求：
1、两台机，做成集群，S1QDJZYY做管理控制台，S2QDJZYY做受控节点
拓朴如下：
主机名	IP	安装软件（组件）
S1QDJZYY	xxx.xxx.xxx.xxx主	WASND ( WAS，DM) +httpserver+plugin
S2QDJZYY	xxx.xxx.xxx.xxx备	WASND( WAS) + httpserver+plugin</p>
<p>2、本机地址通过DHCP 获取从兴内部IP。
3、并请求从兴刘工协助完成ftp 文件上传到目标机上</p>
<p>4、连接方式，就是通过手提电脑连入一台WINDOWS2003，然后通过这台WINDOWS2003上的xmanager连入到目标机中。</p>
<p>5、其他要求：
管理用户名与口令设置：admin/admin(样本samples的口令也是admin，在S1QDJZYY有装samlpes，在S2QDJZYY没有装这个样本包)</p>
<p>主机首先用图形化安装，得到dmgr01,appsrv01 文件，备机也用图形化安装，得到apparv01 ,然后主机与备机都通过字符脚本形式，建多一个appsrv02 profileName。
安装目录放在 /usr/IBM目录下。</p>
<p>
三、安装前其他事项检查
1、Df 命令看空间，/install下空间足够
2、hostname主机名检查，主机名没有下划线，正常
3、系统补丁检查 uname 看操作系统与版本，正常
4、集群内的主、备两机要互相PING通，在HOSTS文件中要互相加主机IP与HOSTNAME
在每台机的HOSTS文件中增加对方的IP地址与名称，来建集群时用
此步是把备机上的server1节点加入主机的dmgr01上成功的前提
5、	群集安装时，确认所有机子的日期要一致,要同步</p>
<p>四、WAS安装过程
1、安装与节点设置
在目标机的终端格式直接操作，在aix中执行安装
注意：安装目录注意修改默认opt为指定目录/usr/</p>
<p>Was/install.sh执行，在 S1QDJZYY下选择cell单元（dmgr+application，并自动联合，）安装，在S2QDJZYY下选择application安装。</p>
<p>两机各自完成后，在S1QDJZYY下，在profiles/dmgr01/bin下执行
./startManager.sh启动服务
然后到/profiles/appsvr01/bin下执行./startNode.sh启动节点代理
然后可到/profiles/appsvr01/bin下执行./startSever.sh server1启动服务</p>
<p>在S2QDJZYY下，在profiles/appsvr01/bin下执行
./addNode.sh xxx.xxx.xxx.xxx 8879
输入用户与口令admin,admin
看节点联结完成后，再执行./startNode.sh启动节点代理。
执行./startServer.sh server1可启动服务</p>
<p>此时打开控制台 http:// xxx.xxx.xxx.xxx :9060/ibm/console，输入admin/admin后，打开环境->节点管理，可看到两个受控节点；打开application server可看到两个服务server1，并且状态是已启动状态。</p>
<p>2、集群建立
去application server下删除两个独立的SERVER1。然后到cluster中建立一个新的集群gdjzcluster。
然后在NODE1、NODE2下分别建立server1。加入集群。</p>
<p>3、去节点管理那里做下同步节点
4、启动集群，可以看到成功启动即可。</p>
<p>五、安装HTTP与PLUGINS
停止上面启动的集群，安装http server与plugins
安装http server时，注意用户与组那里设成nobody,管理用户与口令设成admin
其他步骤按提示进行。
安装目录注意修改默认opt为指定目录usr</p>
<p>安装后，可在http server/bin目录下执行./apachectl start与/adminctl start启动apach服务与管理。看logs下的admin_err.log，提示成功即可。</p>
<p>六、安装appsrv02 ，在S1QDJZYY 与S2QDJZYY用字符脚本建立appsrv02
在S1QDJZYY下：
      cd /usr/IBM/WebSphere/AppServer/bin
          [...]]]></description>
			<content:encoded><![CDATA[<p>硬件平台：p759<br />
操作系统：aix 5.3<br />
本次要安装：WAS 7，<br />
一、	安装前介质准备<br />
以上三类文件分别放在两台机的/tmp/was_install目录下，子目录分别为WAS,,IHS,plugin ,然后解压。<br />
Guzip *.gz<br />
Tar xvf *.tar<br />
准备安装<br />
二、安装要求：<br />
1、两台机，做成集群，S1QDJZYY做管理控制台，S2QDJZYY做受控节点<br />
拓朴如下：<br />
主机名	IP	安装软件（组件）<br />
S1QDJZYY	xxx.xxx.xxx.xxx主	WASND ( WAS，DM) +httpserver+plugin<br />
S2QDJZYY	xxx.xxx.xxx.xxx备	WASND( WAS) + httpserver+plugin</p>
<p>2、本机地址通过DHCP 获取从兴内部IP。<br />
3、并请求从兴刘工协助完成ftp 文件上传到目标机上</p>
<p>4、连接方式，就是通过手提电脑连入一台WINDOWS2003，然后通过这台WINDOWS2003上的xmanager连入到目标机中。</p>
<p>5、其他要求：<br />
管理用户名与口令设置：admin/admin(样本samples的口令也是admin，在S1QDJZYY有装samlpes，在S2QDJZYY没有装这个样本包)</p>
<p>主机首先用图形化安装，得到dmgr01,appsrv01 文件，备机也用图形化安装，得到apparv01 ,然后主机与备机都通过字符脚本形式，建多一个appsrv02 profileName。<br />
安装目录放在 /usr/IBM目录下。</p>
<p><span id="more-1436"></span><br />
三、安装前其他事项检查<br />
1、Df 命令看空间，/install下空间足够<br />
2、hostname主机名检查，主机名没有下划线，正常<br />
3、系统补丁检查 uname 看操作系统与版本，正常<br />
4、集群内的主、备两机要互相PING通，在HOSTS文件中要互相加主机IP与HOSTNAME<br />
在每台机的HOSTS文件中增加对方的IP地址与名称，来建集群时用<br />
此步是把备机上的server1节点加入主机的dmgr01上成功的前提<br />
5、	群集安装时，确认所有机子的日期要一致,要同步</p>
<p>四、WAS安装过程<br />
1、安装与节点设置<br />
在目标机的终端格式直接操作，在aix中执行安装<br />
注意：安装目录注意修改默认opt为指定目录/usr/</p>
<p>Was/install.sh执行，在 S1QDJZYY下选择cell单元（dmgr+application，并自动联合，）安装，在S2QDJZYY下选择application安装。</p>
<p>两机各自完成后，在S1QDJZYY下，在profiles/dmgr01/bin下执行<br />
./startManager.sh启动服务<br />
然后到/profiles/appsvr01/bin下执行./startNode.sh启动节点代理<br />
然后可到/profiles/appsvr01/bin下执行./startSever.sh server1启动服务</p>
<p>在S2QDJZYY下，在profiles/appsvr01/bin下执行<br />
./addNode.sh xxx.xxx.xxx.xxx 8879<br />
输入用户与口令admin,admin<br />
看节点联结完成后，再执行./startNode.sh启动节点代理。<br />
执行./startServer.sh server1可启动服务</p>
<p>此时打开控制台 http:// xxx.xxx.xxx.xxx :9060/ibm/console，输入admin/admin后，打开环境->节点管理，可看到两个受控节点；打开application server可看到两个服务server1，并且状态是已启动状态。</p>
<p>2、集群建立<br />
去application server下删除两个独立的SERVER1。然后到cluster中建立一个新的集群gdjzcluster。<br />
然后在NODE1、NODE2下分别建立server1。加入集群。</p>
<p>3、去节点管理那里做下同步节点<br />
4、启动集群，可以看到成功启动即可。</p>
<p>五、安装HTTP与PLUGINS<br />
停止上面启动的集群，安装http server与plugins<br />
安装http server时，注意用户与组那里设成nobody,管理用户与口令设成admin<br />
其他步骤按提示进行。<br />
安装目录注意修改默认opt为指定目录usr</p>
<p>安装后，可在http server/bin目录下执行./apachectl start与/adminctl start启动apach服务与管理。看logs下的admin_err.log，提示成功即可。</p>
<p>六、安装appsrv02 ，在S1QDJZYY 与S2QDJZYY用字符脚本建立appsrv02<br />
在S1QDJZYY下：<br />
      cd /usr/IBM/WebSphere/AppServer/bin<br />
                ./manageprofiles.sh -create -profileName AppSrv02<br />
                -profilePath /usr/IBM/WebSphere/AppServer/profiles/AppSrv02<br />
                -templatePath /usr/IBM/WebSphere/AppServer/profileTemplates/default<br />
                -hostName S1QDJZYY -enableAdminSecurity true<br />
                -adminUserName admin -adminPassword admin -samplesPassword admin<br />
在S2QDJZYY下：<br />
 cd /usr/IBM/WebSphere/AppServer/bin<br />
                ./manageprofiles.sh -create -profileName AppSrv02<br />
                -profilePath /usr/IBM/WebSphere/AppServer/profiles/AppSrv02<br />
                -templatePath /usr/IBM/WebSphere/AppServer/profileTemplates/default<br />
                -hostName S2QDJZYY -enableAdminSecurity true<br />
                -adminUserName admin -adminPassword admin -samplesPassword admin</p>
<p>七、将appsrv02 加入dmg01。<br />
在S1QDJZYY下：<br />
cd /usr/IBM/WebSphere/AppServer/appsrv02/bin<br />
./addNode.sh localhost 8879<br />
输入 admin admin<br />
在S2QDJZYY下：<br />
cd /usr/IBM/WebSphere/AppServer/appsrv02/bin<br />
./addNode.sh xxx.xxx.xxx.xxx 8879<br />
输入admin admin </p>
<p>八、现在在后台应该可以看到新增加两个节点。然后针对这两个节点做应用一机的server2 与应用二机的server2的集群 .应用一机的server3与应用二机的server3的的集群，建立的过程与建立server1的集群的步骤一样。这里就不详述。</p>
<p>完成！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1436.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用Xmanager远程连接Red hat Enterprise Linux 5</title>
		<link>http://www.evanjiang.net.cn/archives/1434.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1434.html#comments</comments>
		<pubDate>Thu, 21 Jan 2010 13:36:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1434</guid>
		<description><![CDATA[<p>具体方法如下: </p>
<p>服务器：Red hat Enterprise Linux 5 </p>
<p>终端：Xmanager 3.0 </p>
<p>服务器配置：－－－－－－－－－－－－－－－－－－－－－－－－
1. 配置 XDM </p>
<p>(1). Change runlevel to 5
       id:5:initdefault:
修改 /etc/inittab，将运行级别设置为5，即:
      id:5:initdefault: </p>
<p>(2). Enable XDMCP </p>
<p>修改 /etc/gdm/custom.conf， </p>
<p>  将 [xdmcp] 部分的 Enable 设置为 1，即：
      [xdmcp]
      Enable=1
 [...]]]></description>
			<content:encoded><![CDATA[<p>具体方法如下: </p>
<p>服务器：Red hat Enterprise Linux 5 </p>
<p>终端：Xmanager 3.0 </p>
<p>服务器配置：－－－－－－－－－－－－－－－－－－－－－－－－<br />
1. 配置 XDM </p>
<p>(1). Change runlevel to 5<br />
       id:5:initdefault:<br />
修改 /etc/inittab，将运行级别设置为5，即:<br />
      id:5:initdefault: </p>
<p>(2). Enable XDMCP </p>
<p>修改 /etc/gdm/custom.conf， </p>
<p> <span id="more-1434"></span> 将 [xdmcp] 部分的 Enable 设置为 1，即：<br />
      [xdmcp]<br />
      Enable=1<br />
      Post=177<br />
    将 [security] 部分的 DisallowTCP 设置为 false，即：<br />
      [security]<br />
      DisallowTCP=false<br />
2. 配置防火墙 (TCP/UDP Ports) / 若已经关闭防火墙，则忽略这一步<br />
      Open UDP port 177 from the PC to the remote host direction.<br />
      Open incoming TCP ports 6000~6010 from the remote host to your PC.<br />
3. 重新启动服务器，即输入下面的命令即可：<br />
   # init 3; init 5<br />
终端配置<br />
－－－－－－－－－－－－－－－－－－－－－－－－<br />
1、点击 Xmanager 图标，打开 Xbrowser<br />
   这时 Xbrowser 窗口中会显示局域网中所有的可用服务器 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1434.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebSphere V7.0静默安装及集群配置 (转摘于网上）</title>
		<link>http://www.evanjiang.net.cn/archives/1432.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1432.html#comments</comments>
		<pubDate>Sun, 17 Jan 2010 02:28:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1432</guid>
		<description><![CDATA[<p>选项参考：</p>
<p> Option Name (-OPT)
 WebSphere Application Server Network Deployment</p>
<p>Values
 Default</p>
<p>allowNonRootSilentInstall
 &#8220;true &#124; false&#8221;
 Commented</p>
<p>disableOSPrereqChecking
 &#8220;true &#124; false&#8221;
 Commented</p>
<p>disableNonBlockingPrereqChecking
 &#8220;true &#124; false&#8221;
 Commented</p>
<p>checkFilePermissions
 &#8220;true &#124; false&#8221;
 Commented</p>
<p>feature
 &#8220;noFeature &#124; samplesSelected &#124; languagepack.console.all &#124; languagepack.server.all&#8221;
 &#8220;samplesSelected&#8221;</p>
<p>installLocation
 Any valid directory path
 app_server_root directories for root and non-root installers</p>
<p>installType
 &#8220;installNew &#124; addFeature&#8221;
 &#8220;installNew&#8221;</p>
<p>profileType
 &#8220;standAlone &#124; management &#124; cell &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>选项参考：</p>
<p> Option Name (-OPT)<br />
 WebSphere Application Server Network Deployment</p>
<p>Values<br />
 Default</p>
<p>allowNonRootSilentInstall<br />
 &#8220;true | false&#8221;<br />
 Commented</p>
<p>disableOSPrereqChecking<br />
 &#8220;true | false&#8221;<br />
 Commented</p>
<p>disableNonBlockingPrereqChecking<br />
 &#8220;true | false&#8221;<br />
 Commented</p>
<p>checkFilePermissions<br />
 &#8220;true | false&#8221;<br />
 Commented</p>
<p>feature<br />
 &#8220;noFeature | samplesSelected | languagepack.console.all | languagepack.server.all&#8221;<br />
 &#8220;samplesSelected&#8221;</p>
<p>installLocation<br />
 Any valid directory path<br />
 app_server_root directories for root and non-root installers</p>
<p>installType<br />
 &#8220;installNew | addFeature&#8221;<br />
 &#8220;installNew&#8221;</p>
<p>profileType<br />
 &#8220;standAlone | management | cell | custom | none | secureProxy&#8221;<br />
 &#8220;cell&#8221;</p>
<p>silentInstallLicenseAcceptance<br />
 &#8220;true | false&#8221;<br />
 &#8220;false&#8221;</p>
<p>cimSelected<br />
 &#8220;true | false&#8221;<br />
 Commented</p>
<p>cimRepositoryLocation<br />
 Any valid directory path<br />
 Commented</p>
<p>traceFormat<br />
 ALL | text | XML<br />
 Commented</p>
<p>traceLevel<br />
 OFF | SEVERE | WARNING | INFO | CONFIG | FINE | FINER | FINEST<br />
 Commented</p>
<p>PROF_adminUserName<br />
 Any valid user ID<br />
 Empty string</p>
<p>PROF_adminPassword<br />
 Any valid user password<br />
 Empty string</p>
<p>PROF_appServerProfileName<br />
 A valid profile name<br />
 Commented</p>
<p>PROF_appServerNodeName<br />
 A string with valid characters<br />
 Commented</p>
<p>PROF_cellName<br />
 A string with valid characters<br />
 Commented</p>
<p>PROF_defaultPorts<br />
 Commented | Uncommented<br />
 Commented</p>
<p>PROF_dmgrAdminPassword<br />
 Valid deployment manager administrative user password<br />
 Commented</p>
<p>PROF_dmgrAdminUserName<br />
 Valid deployment manager administrative user name<br />
 Commented</p>
<p>PROF_dmgrHost<br />
 Host name of the deployment manager<br />
 Commented</p>
<p>PROF_dmgrPort<br />
 SOAP port of the deployment manager<br />
 Commented</p>
<p>PROF_dmgrProfileName<br />
 A valid profile name<br />
 Commented</p>
<p>PROF_enableAdminSecurity<br />
 &#8220;true | false&#8221;<br />
 &#8220;true&#8221;</p>
<p>PROF_hostName<br />
 Any valid host name<br />
 Commented<br />
<span id="more-1432"></span><br />
PROF_isDefault<br />
 Commented | Uncommented<br />
 Commented</p>
<p>PROF_nodeName<br />
 Any valid and unique node name<br />
 Commented</p>
<p>PROF_nodeOmitAction<br />
 Valid name of a configuration action for the cell<br />
 Commented</p>
<p>PROF_omitAction<br />
 Name of a configuration action<br />
 Commented</p>
<p>PROF_portsFile<br />
 Any valid file path to a valid ports file<br />
 Commented</p>
<p>PROF_profileName<br />
 Any valid profile name string<br />
 Commented</p>
<p>PROF_profilePath<br />
 Any valid file path. See the description of profile_root in Directory conventions for default values.<br />
 Commented</p>
<p>PROF_serverType<br />
 DEPLOYMENT_MANAGER | JOB_MANAGER | ADMIN_AGENT<br />
 Commented</p>
<p>PROF_serverName<br />
 Any application server name, such as server1<br />
 Commented</p>
<p>PROF_startingPort<br />
 Any valid port number<br />
 Commented</p>
<p>PROF_validatePorts<br />
 Commented | Uncommented<br />
 Commented</p>
<p>PROF_webServerCheck<br />
 &#8220;true | false&#8221;<br />
 Commented</p>
<p>PROF_webServerHostname<br />
 A valid host name of the system with the Web server<br />
 Commented</p>
<p>PROF_webServerInstallPath<br />
 Any valid directory path to the Web server<br />
 Commented</p>
<p>PROF_webServerName<br />
 A valid name of a valid Web server<br />
 Commented</p>
<p>PROF_webServerOS<br />
 linux | windows | aix | hp | solaris | os390 | i5os<br />
 Commented</p>
<p>PROF_webServerPluginPath<br />
 Any valid directory path to the Web server plug-ins<br />
 Commented</p>
<p>PROF_webServerPort<br />
 A valid port to access the Web server<br />
 Commented</p>
<p>PROF_webServerType<br />
 IHS | IIS | SUNJAVASYSTEM | DOMINO | APACHE | HTTPSERVER_ZOS<br />
 Commented</p>
<p>PROF_winserviceAccountType<br />
 specified user | localsystem<br />
 Commented</p>
<p>PROF_winserviceCheck<br />
 &#8220;true | false&#8221;<br />
 Commented</p>
<p>PROF_winserviceStartupType<br />
 manual | automatic | disabled<br />
 Commented</p>
<p>PROF_winservicePassword<br />
 The password of the valid specified user<br />
 Commented</p>
<p>PROF_winserviceUserName<br />
 The name of the valid specified user<br />
 Commented</p>
<p>例式：已测试成功的例式，默认安装Dmgr01/AppSrv01</p>
<p>新安装脚本：</p>
<p>自动创建Dmgr01和AppSrv01</p>
<p>-OPT silentInstallLicenseAcceptance=&#8221;true&#8221;</p>
<p>-OPT installType=&#8221;installNew&#8221;</p>
<p>-OPT profileType=&#8221;cell&#8221;</p>
<p>-OPT feature=&#8221;noFeature&#8221;</p>
<p>-OPT PROF_enableAdminSecurity=&#8221;true&#8221; </p>
<p>-OPT PROF_adminUserName=admin</p>
<p>-OPT PROF_adminPassword=admin</p>
<p>-OPT installLocation=&#8221;/opt/IBM/WebSphere/AppServer&#8221;</p>
<p>添加特征脚本：</p>
<p>-OPT silentInstallLicenseAcceptance=&#8221;true&#8221;</p>
<p>-OPT installType=&#8221;addFeature&#8221;</p>
<p>-OPT feature=&#8221;languagepack.console.all&#8221;</p>
<p>-OPT feature=&#8221;languagepack.server.all&#8221;</p>
<p>-OPT feature=&#8221;samplesSelected&#8221;</p>
<p>-OPT PROF_enableAdminSecurity=&#8221;true&#8221; </p>
<p>-OPT PROF_adminUserName=admin</p>
<p>-OPT PROF_adminPassword=admin</p>
<p>-OPT PROF_samplesPassword=admin</p>
<p>-OPT installLocation=&#8221;/opt/IBM/WebSphere/AppServer&#8221;</p>
<p>或者只安装websphere：</p>
<p>-OPT silentInstallLicenseAcceptance=&#8221;true&#8221;</p>
<p>-OPT installType=&#8221;installNew&#8221;</p>
<p>-OPT profileType=&#8221;none&#8221;</p>
<p>-OPT feature=&#8221;languagepack.console.all&#8221;</p>
<p>-OPT feature=&#8221;languagepack.server.all&#8221;</p>
<p>-OPT feature=&#8221;samplesSelected&#8221;</p>
<p>-OPT PROF_enableAdminSecurity=&#8221;true&#8221; </p>
<p>-OPT PROF_adminUserName=admin</p>
<p>-OPT PROF_adminPassword=admin</p>
<p>-OPT installLocation=&#8221;/opt/IBM/WebSphere/AppServer&#8221;</p>
<p>参考：</p>
<p>http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rxml_manageprofiles.html</p>
<p>http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/welcome_express.html</p>
<p>注意：</p>
<p>1、在联合节点之前要在/etc/hosts中加入相关的IP 地址及主机名：</p>
<p>例如：</p>
<p>192.168.11.44   rhost1</p>
<p>192.168.11.45   rhost2</p>
<p>2、注意防火墙设置，添加服务端口或关闭防火墙。</p>
<p>否则会导致不能联合节点</p>
<p>创建部署管理器概要：</p>
<p>./manageprofiles.sh -create    -profileName Dmgr001  -templatePath &#8220;/opt/IBM/WebSphere/AppServer/profileTemplates/management&#8221;   -serverType DEPLOYMENT_MANAGER  -nodeName Dmgr001Node  -cellName Dmgr001NodeCell   -hostName rhost2 -dmgrAdminPassword admin -dmgrAdminUserName admin -isDefault -defaultPorts</p>
<p>-enableAdminSecurity true</p>
<p>添加密码：</p>
<p>-adminUserName  admin -adminPassword  admin</p>
<p>./manageprofiles.sh -create -profileName Dmgr001 -templatePath &#8220;/opt/IBM/WebSphere/AppServer/profileTemplates/management&#8221;   -serverType DEPLOYMENT_MANAGER  -nodeName Dmgr001Node  -cellName Dmgr001NodeCell -hostName 192.168.11.36 -isDefault –defaultPorts</p>
<p>./manageprofiles.sh -create    -profileName Dmgr001  -templatePath &#8220;/opt/IBM/WebSphere/AppServer/profileTemplates/management&#8221;   -serverType DEPLOYMENT_MANAGER  -nodeName Dmgr001Node  -cellName Dmgr001NodeCell   -hostName rhost -adminUserName  admin -adminPassword admin -isDefault -defaultPorts</p>
<p>创建一个自定义可管理概要并添加到部署管理概要：</p>
<p>./manageprofiles.sh -create   -profileName Custom01   -templatePath&#8221;/opt/IBM/WebSphere/AppServer/profileTemplates/managed&#8221;   -nodeName CustomNode01   -cellName CustomNodeCell01   -hostName localhost   -isDefault    -dmgrHost localhost   -dmgrPort 8879   -defaultPorts</p>
<p>先创建自定义概要再用addNode 添加到部署管理概要：</p>
<p>./manageprofiles.sh -create   -profileName Custom001   -templatePath &#8220;/opt/IBM/WebSphere/AppServer/profileTemplates/managed&#8221;   -nodeName CustomNode001   -cellName CustomNodeCell001 -hostName wangtietang -isDefault  -defaultPorts</p>
<p>addNode.bat 192.168.11.36 8879 -profileName Custom001 -username admin -password admin</p>
<p>注意联合节点时在主机/etc/hosts中加入相关的服务器信息，例如：192.168.11.36  rhost2</p>
<p>添加部署管理器节点：</p>
<p>manageprofiles.bat -create    -profileName Dmgr001  -templatePath &#8220;D:\Program Files\IBM\WebSphere\AppServer\profileTemplates\management&#8221;   -serverType DEPLOYMENT_MANAGER  -nodeName Dmgr001Node  -cellName Dmgr001NodeCell   -hostName 192.168.11.2 -dmgrAdminPassword admin -dmgrAdminUserName admin -enableAdminSecurity true -adminUserName  admin -adminPassword  admin  -isDefault -defaultPorts </p>
<p>未启用安全添加节点及server及联合节点：</p>
<p>manageprofiles.bat -create   -profileName Custom01   -templatePath &#8220;D:\Program Files\IBM\WebSphere\AppServer\profileTemplates\managed&#8221;   -nodeName CustomNode01   -cellName CustomNodeCell01   -hostName 192.168.11.2 -isDefault    -dmgrHost 192.168.11.2 -dmgrPort 8879 -defaultPorts</p>
<p>启用安全时添加节点及server：</p>
<p>manageprofiles.bat -create   -profileName Custom001   -templatePath &#8220;D:\Program Files\IBM\WebSphere\AppServer\profileTemplates\managed&#8221;    -nodeName CustomNode001   -cellName CustomNodeCell001 -hostName 192.168.11.2 -isDefault  -defaultPorts</p>
<p>启用安全时联合节点：</p>
<p>addNode.bat 192.168.11.2 8879 -profileName Custom001 -username admin -password admin</p>
<p>启用安全时添加节点及server：</p>
<p>manageprofiles.bat -create   -profileName Custom002   -templatePath &#8220;D:\Program Files\IBM\WebSphere\AppServer\profileTemplates\managed&#8221;    -nodeName CustomNode002   -cellName CustomNodeCell002 -hostName 192.168.11.2 -isDefault  -defaultPorts</p>
<p>启用安全时联合节点：</p>
<p>addNode.bat 192.168.11.2 8879 -profileName Custom002 -username admin -password admin</p>
<p>或</p>
<p>默认：</p>
<p>./manageprofiles.sh -create   -profileName Custom001   -templatePath &#8220;/opt/IBM/WebSphere/AppServer/profileTemplates/managed&#8221; -hostName rhost2 -isDefault  -defaultPorts</p>
<p>./addNode.sh rhost1 8879 -profileName Custom001 -username admin -password admin</p>
<p>例式：</p>
<p>./install -options /opt/setup/setup.txt -silent</p>
<p>-OPT silentInstallLicenseAcceptance=&#8221;true&#8221;</p>
<p>-OPT installType=&#8221;installNew&#8221;</p>
<p>-OPT profileType=&#8221;cell&#8221;</p>
<p>-OPT feature=&#8221;languagepack.console.all&#8221;</p>
<p>-OPT feature=&#8221;languagepack.server.all&#8221;</p>
<p>-OPT feature=&#8221;samplesSelected&#8221;</p>
<p>-OPT PROF_enableAdminSecurity=&#8221;true&#8221; </p>
<p>-OPT PROF_adminUserName=admin</p>
<p>-OPT PROF_adminPassword=admin</p>
<p>-OPT PROF_samplesPassword=&#8221;admin&#8221;</p>
<p>-OPT installLocation=&#8221;/opt/IBM/WebSphere/AppServer&#8221;</p>
<p>-OPT PROF_appServerProfileName=&#8221;MyServer01&#8243;</p>
<p>-OPT PROF_appServerNodeName=&#8221;MyNode01&#8243;</p>
<p>-OPT PROF_cellName=&#8221;MyCell01&#8243;</p>
<p>-OPT PROF_dmgrAdminUserName=admin</p>
<p>-OPT PROF_dmgrAdminPassword=admin</p>
<p>-OPT PROF_dmgrHost=&#8221;192.168.11.36&#8243;</p>
<p>-OPT PROF_dmgrProfileName=&#8221;MyDmgr01&#8243;</p>
<p>-OPT PROF_defaultPorts</p>
<p>-OPT PROF_hostName=&#8221;192.168.11.36&#8243;</p>
<p>-OPT PROF_isDefault</p>
<p>-OPT PROF_nodeName=&#8221;MyNode01&#8243;</p>
<p>IBM HTTP Server 静默安装：安装并创建plugin</p>
<p>脚本，双击打开： </p>
<p>#静默安装，是否接受license</p>
<p>-OPT silentInstallLicenseAcceptance=&#8221;true&#8221;</p>
<p>#安装目录</p>
<p>-OPT installLocation=&#8221;/opt/IBM/HTTPServer&#8221;</p>
<p>#HTTP监听端口</p>
<p>-OPT httpPort=&#8221;80&#8243;</p>
<p>#管理监听端口</p>
<p>-OPT adminPort=&#8221;8008&#8243;</p>
<p>#是否创建管理员权限，以进行IBM HTTP Server 管理服务器认证，用于使用WebSphere Application Server管理控制台进行IHS管理服务认证</p>
<p>-OPT createAdminAuth=&#8221;true&#8221;</p>
<p>#管理员用户名称</p>
<p>-OPT adminAuthUser=&#8221;admin&#8221;</p>
<p>#管理员用户密码</p>
<p>-OPT adminAuthPassword=&#8221;admin&#8221;</p>
<p>#管理员用户密码确认</p>
<p>-OPT adminAuthPasswordConfirm=&#8221;admin&#8221;</p>
<p># ********************************************************************</p>
<p># Set this to &#8220;true&#8221; to perform steps to setup IBM HTTP Administration </p>
<p># Server on Linux and UNIX operating systems.  When set to &#8220;true&#8221;, the </p>
<p># installation grants a user ID write access to the necessary IBM HTTP </p>
<p># Server and plug-in configuration files.  </p>
<p># ********************************************************************</p>
<p>#</p>
<p>-OPT runSetupAdmin=&#8221;true&#8221;</p>
<p># *****************************************************************************</p>
<p># Set createAdminUserGroup to &#8220;true&#8221; to create a user ID and group used </p>
<p># to setup the IBM HTTP Administration Server on Linux and UNIX operating </p>
<p># systems.  If the user ID or Group previously exists, set createAdminUserGroup </p>
<p># to &#8220;false&#8221;.</p>
<p># *****************************************************************************</p>
<p>-OPT createAdminUserGroup=www</p>
<p># **********************************************************************</p>
<p># User ID and Group name used to setup IBM HTTP Administration Server on</p>
<p># Linux and UNIX operating systems.  </p>
<p># **********************************************************************</p>
<p>-OPT setupAdminUser=&#8221;www&#8221;</p>
<p>-OPT setupAdminGroup=&#8221;www&#8221;</p>
<p>-OPT installPlugin=&#8221;true&#8221;</p>
<p># **********************************************************************************</p>
<p>#</p>
<p># Web server Definition Name</p>
<p>#</p>
<p># A web server definition allows for Web server administration through the WebSphere</p>
<p># admin console.</p>
<p>#</p>
<p>#  Note : No spaces are allowed in the Web server definition name.</p>
<p># **********************************************************************************</p>
<p>-OPT webserverDefinition=&#8221;webserver1&#8243;</p>
<p># **********************************************************************************</p>
<p>#</p>
<p># WebSphere Application Server Machine HostName</p>
<p>#</p>
<p># Enter the hostname of the WebSphere Application Server machine.</p>
<p>#</p>
<p>#  Note : Hostname is required when installPlugin is set to true.  No spaces are </p>
<p>#         allowed in the Hostname definition.</p>
<p># **********************************************************************************</p>
<p>-OPT washostname=&#8221;rhost1&#8243;</p>
<p># *******************************************</p>
<p># End features for WebSphere Plugin for the</p>
<p># IBM HTTP Server.</p>
<p># *******************************************</p>
<p>转载于 http://blog.csdn.net/myloon/archive/2009/11/13/4809290.aspx</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1432.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mq6 for aix 安装并打补丁 安装记录</title>
		<link>http://www.evanjiang.net.cn/archives/1430.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1430.html#comments</comments>
		<pubDate>Fri, 15 Jan 2010 14:06:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ibm unix]]></category>
		<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1430</guid>
		<description><![CDATA[<p>一、	创建用户名与组：
创建用户组：
#smitty mkgroup
* Group NAME                               [mqm]
  ADMINISTRATIVE group?                  [...]]]></description>
			<content:encoded><![CDATA[<p>一、	创建用户名与组：<br />
创建用户组：<br />
#smitty mkgroup<br />
* Group NAME                               [mqm]<br />
  ADMINISTRATIVE group?                     true                                 +<br />
  Group ID                                 [205]                                 #<br />
  USER list                                []                                    +<br />
  ADMINISTRATOR list                       []                                    +<br />
  Projects                                 []                                    +<br />
创建用户名<br />
#smitty mkuser<br />
* User NAME                                [mqm]<br />
  User ID                                  [245]                                 #<br />
  ADMINISTRATIVE USER?                      false                                +<br />
  Primary GROUP                            [mqm]                                 +<br />
  Group SET                                [mqm,staff]                           +<br />
  ADMINISTRATIVE GROUPS                    []                                    +<br />
  ROLES                                    []                                    +<br />
  Another user can SU TO USER?              true                                 +<br />
  SU GROUPS                                [ALL]                                 +<br />
  HOME directory                           [/var/mqm]<br />
  Initial PROGRAM                          [/usr/bin/ksh]<br />
  User INFORMATION                         []<br />
  EXPIRATION date (MMDDhhmmyy)             [0]<br />
二、给mqm用户设置密码：<br />
    a.用root用户登陆<br />
b.passwd mqm.<br />
三、用mqm用户进入，进入第一次，系统会提示重新修改密码：再次修改密码.<br />
Mqm用户最终修改过的密码为：mqm123456<br />
四、用root进入,进入mq的安装文件存放路径：<br />
#cd /usr/mqm_install/mq6<br />
# smitty install_latest ,按下面载屏来修改<br />
<span id="more-1430"></span></p>
<p>这里ACCEPT new license agreements?一定要设置成yes ,用tab来切换。切换后，按F4 键，再按回车。选yes ,再按回车，再按回车</p>
<p>之后，就进入正常安装流程。屏幕字符会一路向下翻滚。显示安装成功的组件信息，大概貌过了一分钟，安装完成，然后按padn键，按到最后，见到botton字符，然后按F10退出smitty安装界面。<br />
五、安装成功会在/usr/mqm目录下面有如下目录与文件，安装不成功只会有licenses文件。</p>
<p>六、安装完成后的测试<br />
验证安装<br />
    1、mqm用户登录<br />
       创建队列venus.queue.manager<br />
       crtmqm -q venus.queue.manager<br />
       启动队列管理器<br />
　　　 strmqm<br />
       启用MQSC命令<br />
       runmqsc<br />
       进入环境后，定义名为ORANGE.QUEUE的本地队列<br />
       define qlocal (orange.queue)<br />
       end  (停止MQSC)</p>
<p>　　　　现在，已定义下列各项：名为venus.queue.manager的缺省队列管理器，名为ORANGE.QUEUE的队列</p>
<p>        转到/opt/mqm/samp/bin目录下，使用amqsput样本程序来将消息放入队列，以且使用amqsget样本程序来从队列取回消息<br />
        dspmq  命令可显示MQM队列状态<br />
        ./amqsput ORANGE.QUEUE<br />
        输入一行文字     for example &#8221; TEST IS&#8221;，然后以空行结束，退出<br />
　　　　./amqsget ORANGE.QUEUE<br />
        可显示刚才放入队列的消息，成功提示即证明完成。</p>
<p>七、mq补丁的安装:<br />
安装时，一定要先停掉上面为了测试安装而启动的队列管理器与队列，否则下面打补丁会不成功。会报错。<br />
#cd /usr/mqm_install/mq6pack<br />
#smitty update_all<br />
按下面的截屏来输入相关设置参数</p>
<p>这里ACCEPT new license agreements?一定要设置成yes ,用tab来切换。切换后，按F4 键，再按回车。选yes ,再按回车，再按回车</p>
<p>之后，就进入正常安装流程。屏幕字符会一路向下翻滚。显示安装成功的组件信息，大概过了一分钟，安装完成，然后按padn键，按到最后，见到botton字符，然后按F10退出smitty安装界面。</p>
<p>八、查看mq补丁升级后的版本：<br />
#/usr/mqm/bin/dspmqver<br />
如下截图所示</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1430.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>drupal CMS 系统安装ubercart 报内存不足的解决办法</title>
		<link>http://www.evanjiang.net.cn/archives/1428.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1428.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 05:02:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1428</guid>
		<description><![CDATA[<p>这些天，新开一个网站，主要是面向女性网站的，网址为：http://www.ladyfeel.net 女情网，想着在经营这个网站时，增加这个网站的购物车功能，就在网上找到这个ubercart ，一个drupal兼容性的很好的购物车模块。谁知。在装那些match的插件时，总是提示内存不足。。页面错误提示：Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) 等类似信息。上网找了找。找到这些信息：
I got this error:
&#8220;Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2761 bytes) in /home/gotantan/public_html/rwolfefamily/modules/views/views_cache.inc on line 146&#8243;</p>
<p>I found this solution:</p>
<p>http://drupal.org/node/76156</p>
<p>&#8220;That indicates that Drupal needed more memory than PHP was allowed to give it. </p>
<p>Increase [...]]]></description>
			<content:encoded><![CDATA[<p>这些天，新开一个网站，主要是面向女性网站的，网址为：http://www.ladyfeel.net 女情网，想着在经营这个网站时，增加这个网站的购物车功能，就在网上找到这个ubercart ，一个drupal兼容性的很好的购物车模块。谁知。在装那些match的插件时，总是提示内存不足。。页面错误提示：Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) 等类似信息。上网找了找。找到这些信息：<br />
I got this error:<br />
&#8220;Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2761 bytes) in /home/gotantan/public_html/rwolfefamily/modules/views/views_cache.inc on line 146&#8243;</p>
<p>I found this solution:</p>
<p>http://drupal.org/node/76156</p>
<p>&#8220;That indicates that Drupal needed more memory than PHP was allowed to give it. </p>
<p>Increase PHP&#8217;s memory limit, either by adding:</p>
<p>memory_limit = 12M to your php.ini file (recommended, if you have access)<br />
ini_set(&#8216;memory_limit&#8217;, &#8217;12M&#8217;); in your sites/default/settings.php file<br />
php_value memory_limit 12M in your .htaccess file in the Drupal root<br />
Some hosts allow a PHP.ini in the root of your site.</p>
<p>Depending on the amount of modules you have enabled and their &#8216;impact&#8217; on the site you may need to increase the memory_limit even more (sometimes to 30 MB or more). Experiment with what memory value works for your needs.</p>
<p>You may need to restart your server before the php.ini settings take effect.&#8221;</p>
<p><span id="more-1428"></span>俺试了试，都不行，就认为可能是俺没权限重启外国主机。致使设置不能生效。那联络上外国主机技术支持客服。跟对方沟通后。对方给了俺以下信息，就了无信息：<br />
Your PHP.INI file is the file you need to modify in order to increase your memory limit.</p>
<p>the settings you will need to modify are these:</p>
<p>max_execution_time = 30 ; Maximum execution time of each script, in seconds (set this to something high like 300)</p>
<p>max_input_time = 60 ; Maximum amount of time each script may spend parsing request data (set this to something high like 600)</p>
<p>memory_limit = 10M ; Maximum amount of memory a script may consume (set this to something like 500M)</p>
<p>Then in the php config icon of your account, set your site to the php5 (single php.ini) settings as the Fast CGI is not compatible with some drupal installations. if you find that fast cgi works, great if not, just stay on the php 5 setting.</p>
<p>Also, you do Not need to , and you cannot reboot the server on bluehost. We have a special modification to our server that allows the php.ini files to be initialized on the fly and it does not need to be restarted every time a change is made. Therefore, make the changes in the php.ini and refresh your site a couple of times and the new settings will be applied. </p>
<p>To see if the settings you are making in your account are taking affect, put a phpinfo.php file in your account and use the <? phpinfo(); ?></p>
<p>Lastly, do not use the php_flag variable in our server. The .htaccess file does not recognize that flag and it will result in your account producing a 500 error, just make your modifications to the php.ini file itself.</p>
<p>If the above memory fix does not solve your problem, there may be a file in the drupal that is limiting your memory usage. (as this line suggests here: &#8220;ini_set(&#8216;memory_limit&#8217;, &#8217;12M&#8217;); in your sites/default ttings.php file&#8221;)</p>
<p>If all the above doesn&#8217;t work, contact the bluehost support and drupal to see if there are any other fixes to your problem and/or any other files you may need to modify.</p>
<p>Thanks</p>
<p>没办法之下，那俺只好死马当活马医。最好终于解决这个问题。原来问题是在php.ini设置的允许内存不够大。之前设成32,64,128,256m都不行。最好，俺抱着试一试的心理，将允许内存大小设为1024m，却发现，可以成功安装上ubercart，在创建内存的选项里，终于见到产品的选项。。。至此，问题，得以解决。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1428.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IBM WebSphere MQ V6.0 for redhat4</title>
		<link>http://www.evanjiang.net.cn/archives/1426.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1426.html#comments</comments>
		<pubDate>Sat, 09 Jan 2010 09:00:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1426</guid>
		<description><![CDATA[<p>WebSphere MQ简介
Websphere MQ是IBM的商业消息中间件(Commercial Messaging Middleware)。Websphere MQ提供一个具有工业标准、安全、可靠的消息传输系统。它的功能是控制和管理一个集成的商业应用，使得组成这个商业应用的多个分支程序(模块)之间通过传递消息完成整个工作流程。Websphere MQ基本由一个消息传输系统和一个应用程序接口组成，其资源是消息和队列(Messaging and Queuing)。
消息：消息就是一个信息单元，这个信息单元可以是一个请求（Request message），也可以是一个应答(Reply message)，或者是一个报告(Report message)或一份报文(Datagram   messge)。一个消息包含两个因素——消息描述(用于定义诸如消息传输目标等)和数据消息(如应用程序数据或数据库查询等)。程序之间的通信通过传递消息而非直接调用程序。
队列:一个安全的存储消息的地方，消息的存储一般是顺序的，队列是消息分阶段地传送和接收。因为消息存放在队列中，所以应用程序可以相互独立的运行，以不同的速度，在不同的时间，在不同的地点。
消息传输系统：用于确保队列之间的消息提供，包括网络中不同系统上的远程队列之间的消息提供。并保证网络故障或关闭后的恢复。
应用程序接口：应用程序和消息系统之间通过Websphere MQ API实现的接口Websphere MQ API在所有Websphere MQ平台上是一致的。API只有14个调用，2个关键动词：发送(PUT)和接收(GET)。
        IBM Websphere MQ 保证了消息可靠性传输及只传递一次（once and only once）的特点
安装环境
WebSphere MQ 不支持含有空格的主机名，如果将MQ 安装在主机名包含空格的主机上，MQ将不能创建队列管理器（queue managers）
硬件要求
Websphere MQ for Linux,Version 6.0(x86 platform) 支持任何X86平台架构的主机
最低要求
512MB RAM
1GHZ CPU
1.5G的硬盘空间
1024*768的显示器
支持的操作系统
目前支持Red Hat Enterprise Linux AS V3.0 V4.0
    [...]]]></description>
			<content:encoded><![CDATA[<p>WebSphere MQ简介<br />
Websphere MQ是IBM的商业消息中间件(Commercial Messaging Middleware)。Websphere MQ提供一个具有工业标准、安全、可靠的消息传输系统。它的功能是控制和管理一个集成的商业应用，使得组成这个商业应用的多个分支程序(模块)之间通过传递消息完成整个工作流程。Websphere MQ基本由一个消息传输系统和一个应用程序接口组成，其资源是消息和队列(Messaging and Queuing)。<br />
消息：消息就是一个信息单元，这个信息单元可以是一个请求（Request message），也可以是一个应答(Reply message)，或者是一个报告(Report message)或一份报文(Datagram   messge)。一个消息包含两个因素——消息描述(用于定义诸如消息传输目标等)和数据消息(如应用程序数据或数据库查询等)。程序之间的通信通过传递消息而非直接调用程序。<br />
队列:一个安全的存储消息的地方，消息的存储一般是顺序的，队列是消息分阶段地传送和接收。因为消息存放在队列中，所以应用程序可以相互独立的运行，以不同的速度，在不同的时间，在不同的地点。<br />
消息传输系统：用于确保队列之间的消息提供，包括网络中不同系统上的远程队列之间的消息提供。并保证网络故障或关闭后的恢复。<br />
应用程序接口：应用程序和消息系统之间通过Websphere MQ API实现的接口Websphere MQ API在所有Websphere MQ平台上是一致的。API只有14个调用，2个关键动词：发送(PUT)和接收(GET)。<br />
        IBM Websphere MQ 保证了消息可靠性传输及只传递一次（once and only once）的特点<br />
安装环境<br />
WebSphere MQ 不支持含有空格的主机名，如果将MQ 安装在主机名包含空格的主机上，MQ将不能创建队列管理器（queue managers）<br />
硬件要求<br />
Websphere MQ for Linux,Version 6.0(x86 platform) 支持任何X86平台架构的主机<br />
最低要求<br />
512MB RAM<br />
1GHZ CPU<br />
1.5G的硬盘空间<br />
1024*768的显示器<br />
支持的操作系统<br />
<span id="more-1426"></span>目前支持Red Hat Enterprise Linux AS V3.0 V4.0<br />
        SuSE Linux Enterprise Server (SLES)V8 SP3  ,V9<br />
        注意：目前SuSE8不支持MQ Explorer 图形接口<br />
硬盘空间要求<br />
MQ所需的空间按照安装的组件的多少及队列消息存储的长短来定制<br />
例如：<br />
安装Runtime、Server、Client、Sample programs、SDK等常用组件大概需要50MB空间<br />
MQ软件的基础软件IBMJava2-SDK-1.4.2-0.0及gsk7bas-7.0-x.x需要91MB的空间</p>
<p>安装SSL支持<br />
需要g++环境<br />
Redhat环境中安装libstdc++5 rpm包即可<br />
需要IBM Global Security Kit v7<br />
该软件包已rpm包提供在MQ安装介质包中</p>
<p>操作系统环境要求<br />
c/c++编译环境<br />
命令行下执行<br />
[mqm@myserver12 bin]$ gcc -v<br />
Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.3/specs<br />
Configured with: ../configure &#8211;prefix=/usr &#8211;mandir=/usr/share/man &#8211;infodir=/usr/share/info &#8211;enable-shared &#8211;enable-threads=posix &#8211;disable-checking &#8211;with-system-zlib &#8211;enable-__cxa_atexit &#8211;disable-libunwind-exceptions &#8211;enable-java-awt=gtk &#8211;host=i386-redhat-linux<br />
Thread model: posix<br />
gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)<br />
显示已经安装了gcc 3.4<br />
目前MQ支持gcc/g++ 2.9.5 、3.2、3.3、3.4<br />
WebSphere Server安装设置<br />
创建安装目录<br />
mkdir –p /opt/mqm<br />
mkdir –p /var/mqm/{log,errors}<br />
注意：mqm的安装目录及工作目录必须是以上目录，如果以上目录的空间不够，可以创建一个链接目录,方法如下：<br />
mkdir –p /bigger/mqm<br />
ln –s /bigger/mqm /opt/mqm<br />
创建用户组<br />
groupadd –g 911 mqm<br />
useradd –g 911 –d /var/mqm –u 911 –s /bin/bash mqm<br />
更改目录权限<br />
chown –R mqm:mqm /opt/mqm<br />
chown –R mqm:mqm /var/mqm<br />
注：如果其他用户想有MQ的管理员的权限，比如创建、启动队列管理器，则将其用户名加入到mqm组即可</p>
<p>设置语系环境<br />
$export LANG=zh_CN<br />
注意：上述设置中文，是需要安装mq介质包中相关的语言rpm包</p>
<p>内核参数修改<br />
Websphere MQ 使用System V IPC资源，特别是shared memory和semaphores<br />
需要修改如下资源<br />
/proc/sys/kernel/shmmax  &#8211;  The  maximum  size  of  a  shared  memory  segment.<br />
/proc/sys/kernel/shmmni  &#8211;  The  maximum  number  of  shared  memory  segments.<br />
/proc/sys/kernel/shmall  &#8211;  The  maximum  amount  of  shared  memory that  may  be  allocated.<br />
/proc/sys/kernel/sem        &#8211;  The  maximum  number  and  size  of  semaphore  sets that  may  be  allocated.<br />
/proc/sys/kernel/msgmnb  &#8211;  The  maximum  number  of  bytes  on  a  message  queue.<br />
修改方法如：<br />
echo 268435456 >/proc/sys/kernel/shmmax<br />
意思是将共享内存段的大小更改为256MB<br />
以下是我机器上的设置：<br />
net.ipv4.ip_forward = 0<br />
net.ipv4.conf.default.rp_filter = 1<br />
net.ipv4.conf.default.accept_source_route = 0<br />
kernel.sysrq = 0<br />
kernel.msgmnb=128<br />
kernel.core_uses_pid = 1<br />
kernel.shmmax=524288000<br />
kernel.sem=250 32000 100 128<br />
fs.file-max=65536<br />
kernel.shmmni=4096<br />
net.ipv4.ip_local_port_range=1024 65000<br />
net.core.rmem_default=1048576<br />
net.core.wmem_default=262144<br />
net.core.rmem_max=1048576<br />
net.core.wmem_max=262144<br />
将以上的值直接写入/etc/sysctl.conf 保证系统重启后仍然生效</p>
<p>安装WebSphere MQ 程序<br />
1.        root用户登陆<br />
上传WMQv6023Trial-x86_linux.tar.gz介质包到/tmp<br />
$cd /tmp<br />
$tar –xzvf WMQv6023Trial-x86_linux.tar.gz<br />
2.        执行mqlicense.sh接受产品许可协议<br />
$./mqlicense.sh –accept<br />
3.        安装rpm包：<br />
$rpm –ivh MQSeriesRuntime-6.0.2-3.i386.rpm<br />
$rpm –ivh MQSeriesServer-6.0.2-3.i386.rpm<br />
$rpm –ivh MQSeriesClient-6.0.2-3.i386.rpm<br />
$rpm –ivh MQSeriesSamples-6.0.2-3.i386.rpm<br />
$rpm –ivh MQSeriesMsg_Zh_CN-6.0.2-3.i386.rpm</p>
<p>验证测试MQServer<br />
mqm用户登陆设置<br />
测试环境设置<br />
        创建一个队列管理<br />
$crtmqm –q yql.queue.manager</p>
<p>you will see messages telling you that the queue manager has been created,and that the default WebSphere MQ objects have been created<br />
        启动队列管理<br />
$strmqm</p>
<p>a message tells you when the queue manager has started</p>
<p>        开启MQSC<br />
$runmqsc</p>
<p>将会显示启动了一个MQSC，接下来输入一些语句来定义一个名叫ORANAGER.QUEUE队列<br />
DEFINE QLOCAL(ORANGE.QUEUE)<br />
接着会显示队列创建成功</p>
<p>        停止MQSC<br />
end<br />
上述一系列命令指创建了一个名为yql.queue.manager的队列管理器，并创建了一个名为ORANGE.QUEUE的队列<br />
测试<br />
$cd /opt/mqm/samp/bin<br />
向队列管理器yql.queue.manager中的队列ORANGE.QUEUE上传信息<br />
$./amqsput ORANGE.QUEUE yql.queue.manager<br />
然后会显示如下信息：<br />
Sample AMQSPUT0 start<br />
target queue is ORANGE.QUEUE<br />
输入一些文本，然后敲两下回车<br />
如：jus one test<br />
从队列管理器yql.queue.manager中的队列ORANGE.QUEUE获取信息<br />
$./amqsget ORANGE.QUEUE yql.queue.manager<br />
如果能返回一下信息则成功<br />
Sample AMQSGET0 start<br />
message < jus one test ></p>
<p>WebSphere MQ Client设置<br />
环境设置<br />
        创建一个队列管理器<br />
[mqm@myserver12 bin]$ crtmqm -q lyx.queue.manager<br />
There are 90 days left in the trial period for this copy of WebSphere MQ.<br />
WebSphere MQ queue manager created.<br />
Creating or replacing default objects for lyx.queue.manager.<br />
Default objects statistics : 40 created. 0 replaced. 0 failed.<br />
Completing setup.<br />
Setup completed<br />
        启动队列管理器<br />
[mqm@myserver12 bin]$ strmqm lyx.queue.manager<br />
There are 90 days left in the trial period for this copy of WebSphere MQ.<br />
WebSphere MQ queue manager &#8216;lyx.queue.manager&#8217; starting.<br />
5 log records accessed on queue manager &#8216;lyx.queue.manager&#8217; during the log replay phase.<br />
Log replay for queue manager &#8216;lyx.queue.manager&#8217; complete.<br />
Transaction manager state recovered for queue manager &#8216;lyx.queue.manager&#8217;.<br />
WebSphere MQ queue manager &#8216;lyx.queue.manager&#8217; started.<br />
        设置队列及连接通道、监听<br />
[mqm@myserver12 bin]$ runmqsc<br />
5724-H72 (C) Copyright IBM Corp. 1994, 2005.  ALL RIGHTS RESERVED.<br />
Starting MQSC for queue manager lyx.queue.manager.<br />
定义一个名为REMOTE_QUEUE队列<br />
DEFINE QLOCAL(REMOTE_QUEUE)<br />
     1 : DEFINE QLOCAL(REMOTE_QUEUE)<br />
AMQ8006: WebSphere MQ queue created.<br />
定义一个远程连接CHANNEL2<br />
DEFINE CHANNEL(CHANNEL2) CHLTYPE (SVRCONN) TRPTYPE (TCP) MCAUSER (&#8216;MQM&#8217;)</p>
<p>     2 : DEFINE CHANNEL(CHANNEL2) CHLTYPE (SVRCONN) TRPTYPE (TCP) MCAUSER (&#8216;MQM&#8217;)<br />
AMQ8014: WebSphere MQ channel created.<br />
定义一个监听LISTENER2并监听8899端口，不指定端口则用默认的1414<br />
DEFINE LISTENER(LISTENER2) TRPTYPE (TCP) CONTROL (QMGR) PORT(8899)<br />
     3 : DEFINE LISTENER(LISTENER2) TRPTYPE (TCP) CONTROL (QMGR) PORT(8899)<br />
AMQ8626: WebSphere MQ listener created.<br />
启动监听LISTENER2<br />
START LISTENER(LISTENER2)<br />
     4 : START LISTENER(LISTENER2)<br />
AMQ8021: Request to start WebSphere MQ Listener accepted.<br />
结束<br />
END<br />
     5 : END<br />
4 MQSC commands read.<br />
No commands have a syntax error.<br />
All valid MQSC commands were processed.<br />
        设置环境变量<br />
[mqm@myserver12 bin]$ export MQSERVER=&#8217;CHANNEL2/TCP/myserver12(8899)&#8217;<br />
测试验证<br />
[mqm@myserver12 bin]$ ./amqsput REMOTE_QUEUE lyx.queue.manager<br />
Sample AMQSPUT0 start<br />
target queue is REMOTE_QUEUE<br />
I LOVE you!!!</p>
<p>Sample AMQSPUT0 end<br />
[mqm@myserver12 bin]$ ./amqsget REMOTE_QUEUE lyx.queue.manager<br />
Sample AMQSGET0 start<br />
message <I LOVE you!!!><br />
no more messages<br />
Sample AMQSGET0 end</p>
<p>MQ队列管理操作<br />
1.        创建<br />
$crtmqm -q lyx_queue_manager<br />
2.        启动<br />
$strmq lyx_queue_manager<br />
3.        停止<br />
$endmqm lyx_queue_manager<br />
4.        删除<br />
$dltmqm lyx_queue_manager<br />
5.        查看<br />
[mqm@myserver12 bin]$ dspmq<br />
QMNAME(venus.queue.manager)                               STATUS(Running)<br />
QMNAME(saturn.queue.manager)                              STATUS(Running)<br />
QMNAME(yql.queue.manager)                                 STATUS(Running)<br />
QMNAME(wwf.queue.manager)                                 STATUS(Running)<br />
QMNAME(lyx.queue.manager)                                 STATUS(Running)</p>
<p>总结：在定义队列名称尽量用大写1否则用小写时amqsput/amqsget读不到队列名称</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1426.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IBM MQ 使用指南</title>
		<link>http://www.evanjiang.net.cn/archives/1421.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1421.html#comments</comments>
		<pubDate>Sat, 09 Jan 2010 08:31:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1421</guid>
		<description><![CDATA[<p>随着计算机网络和分布式应用的不断发展，远程消息传递越来越成为应用系统中不可缺少的组成部分。</p>
<p>商业消息中间件的出现保证了消息传输的可靠性，高效率和安全性，同时也减少了系统的开发周期。</p>
<p>目前应用最多的消息中间件产品为IBM MQSeries。</p>
<p>本文就针对MQ的基本操作与配置进行详细的阐述，希望对读者有所帮助。 </p>
<p>一．MQ基本操作 </p>
<p>MQ中有几个很重要的组件：队列管理器（QueueManager）、队列（Queue）和通道（Channel）。其基本的操作方法如下： </p>
<p>创建队列管理器
crtmqm –q QMgrName
-q是指创建缺省的队列管理器 </p>
<p>删除队列管理器
dltmqm QmgrName </p>
<p>启动队列管理器
strmqm QmgrName
如果是启动默认的队列管理器，可以不带其名字

停止队列管理器
endmqm QmgrName 受控停止 </p>
<p>endmqm –i QmgrName 立即停止 </p>
<p>endmqm –p QmgrName 强制停止 </p>
<p>显示队列管理器
dspmq –m QmgrName </p>
<p>运行MQSeries命令
runmqsc QmgrName
如果是默认队列管理器，可以不带其名字 </p>
<p>往队列中放消息
amqsput QName QmgrName
如果队列是默认队列管理器中的队列，可以不带其队列管理器的名字 </p>
<p>从队列中取出消息
amqsget QName QmgrName
如果队列是默认队列管理器中的队列，可以不带其队列管理器的名字 </p>
<p>启动通道
runmqchl –c ChlName –m QmgrName </p>
<p>启动侦听
runmqlsr –t TYPE –p PORT –m QMgrName </p>
<p>停止侦听
endmqlsr -m QmgrName </p>
<p>MQSeries命令 </p>
<p>定义死信队列
DEFINE QLOCAL（QNAME） DEFPSIST（YES） REPLACE </p>
<p>设定队列管理器的死信队列
ALTER QMGR DEADQ（QNAME） [...]]]></description>
			<content:encoded><![CDATA[<p>随着计算机网络和分布式应用的不断发展，远程消息传递越来越成为应用系统中不可缺少的组成部分。</p>
<p>商业消息中间件的出现保证了消息传输的可靠性，高效率和安全性，同时也减少了系统的开发周期。</p>
<p>目前应用最多的消息中间件产品为IBM MQSeries。</p>
<p>本文就针对MQ的基本操作与配置进行详细的阐述，希望对读者有所帮助。 </p>
<p>一．MQ基本操作 </p>
<p>MQ中有几个很重要的组件：队列管理器（QueueManager）、队列（Queue）和通道（Channel）。其基本的操作方法如下： </p>
<p>创建队列管理器<br />
crtmqm –q QMgrName<br />
-q是指创建缺省的队列管理器 </p>
<p>删除队列管理器<br />
dltmqm QmgrName </p>
<p>启动队列管理器<br />
strmqm QmgrName<br />
如果是启动默认的队列管理器，可以不带其名字<br />
<span id="more-1421"></span><br />
停止队列管理器<br />
endmqm QmgrName 受控停止 </p>
<p>endmqm –i QmgrName 立即停止 </p>
<p>endmqm –p QmgrName 强制停止 </p>
<p>显示队列管理器<br />
dspmq –m QmgrName </p>
<p>运行MQSeries命令<br />
runmqsc QmgrName<br />
如果是默认队列管理器，可以不带其名字 </p>
<p>往队列中放消息<br />
amqsput QName QmgrName<br />
如果队列是默认队列管理器中的队列，可以不带其队列管理器的名字 </p>
<p>从队列中取出消息<br />
amqsget QName QmgrName<br />
如果队列是默认队列管理器中的队列，可以不带其队列管理器的名字 </p>
<p>启动通道<br />
runmqchl –c ChlName –m QmgrName </p>
<p>启动侦听<br />
runmqlsr –t TYPE –p PORT –m QMgrName </p>
<p>停止侦听<br />
endmqlsr -m QmgrName </p>
<p>MQSeries命令 </p>
<p>定义死信队列<br />
DEFINE QLOCAL（QNAME） DEFPSIST（YES） REPLACE </p>
<p>设定队列管理器的死信队列<br />
ALTER QMGR DEADQ（QNAME） </p>
<p>定义本地队列<br />
DEFINE QL（QNAME） REPLACE </p>
<p>定义别名队列<br />
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME) </p>
<p>远程队列定义<br />
DEFINE QREMOTE（QRNAME） +<br />
RNAME（AAA） RQMNAME（QMGRNAME） +<br />
XMITQ（QTNAME） </p>
<p>定义模型队列<br />
DEFINE QMODEL（QNAME） DEFTYPE（TEMPDYN） </p>
<p>定义本地传输队列<br />
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +<br />
INITQ（SYSTEM.CHANNEL.INITQ）+<br />
PROCESS(PROCESSNAME) REPLACE </p>
<p>创建进程定义<br />
DEFINE PROCESS（PRONAME） +<br />
DESCR（‘STRING’）+<br />
APPLTYPE（WINDOWSNT）+<br />
APPLICID（’ runmqchl -c SDR_TEST -m QM_ TEST’）<br />
其中APPLTYPE的值可以是：CICS、UNIX、WINDOWS、WINDOWSNT等 </p>
<p>创建发送方通道<br />
DEFINE CHANNEL（SDRNAME） CHLTYPE（SDR）+<br />
CONNAME（‘100.100.100.215(1418)’） XMITQ（QTNAME） REPLACE<br />
其中CHLTYPE可以是：SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。 </p>
<p>创建接收方通道<br />
DEFINE CHANNEL（SDR_ TEST） CHLTYPE（RCVR） REPLACE </p>
<p>创建服务器连接通道<br />
DEFINE CHANNEL（SVRCONNNAME） CHLTYPE（SVRCONN） REPLACE </p>
<p>显示队列的所有属性<br />
DISPLAY QUEUE（QNAME） [ALL] </p>
<p>显示队列的所选属性<br />
DISPLAY QUEUE（QNAME） DESCR GET PUT<br />
DISPLAY QUEUE（QNAME）MAXDEPTH CURDEPTH </p>
<p>显示队列管理器的所有属性<br />
DISPLAY QMGR [ALL] </p>
<p>显示进程定义<br />
DISPLAY PROCESS（PRONAME） </p>
<p>更改属性<br />
ALTER QMGR DESCR（‘NEW DESCRIPTION’）<br />
ALTER QLOCAL（QNAME） PUT（DISABLED）<br />
ALTER QALIAS（QNAME） TARGQ（TARGQNAME） </p>
<p>删除队列<br />
DELETE QLOCAL（QNAME）<br />
DELETE QREMOTE（QRNAME） </p>
<p>清除队列中的所有消息<br />
CLEAR QLOCAL（QNAME） </p>
<p>二．配置一个能够通信的远程连接<br />
以上讲述了MQ的基本命令操作，但只知道这些是没有实际意义的。MQ的最终目的是实现远程通信，所以下面就以一个具体的例子来说明如何实现远程连接。这个例子的目的是建立可以实现消息传递的一对MQ服务器，它们分别基于NT和UNIX平台。<br />
首先在NT端建一队列管理器<br />
crtmqm –q QM_NT<br />
启动队列管理器<br />
strmqm QM_NT<br />
运行MQ控制台命令<br />
runmqsc QM_NT<br />
创建死信队列<br />
DEFINE QL(NT.DEADQ) DEFPSIST(YES) REPLACE<br />
更改队列管理器属性，设置其死信队列<br />
ALTER QMGR DEADQ（NT.DEADQ）<br />
创建进程定义<br />
DEFINE PROCESS（P_NT）+<br />
APPLTYPE（WINDOWSNT）+<br />
APPLICID（’ runmqchl -c SDR_NT -m QM_NT’）<br />
创建本地传输队列<br />
DEFINE QL(QT_NT) USAGE(XMITQ) DEFPSIST(YES) +<br />
INITQ（SYSTEM.CHANNEL.INITQ）+<br />
PROCESS(P_NT) REPLACE<br />
创建远程队列定义，对应于UNIX机器上的本地队列Q_UNIX，传输队列为QT_NT<br />
DEFINE QREMOTE（QR_NT）+<br />
RNAME（Q_UNIX） RQMNAME（QM_UNIX）+<br />
XMITQ（QT_NT）<br />
创建发送方通道，其传输队列为QT_NT，远程主机地址为10.10.10.2，侦听端口为1414<br />
DEFINE CHANNEL（SDR_NT） CHLTYPE（SDR）+<br />
CONNAME（‘10.10.10.2(1414)’） XMITQ（QT_NT） REPLACE<br />
创建服务器连接通道<br />
DEFINE CHANNEL（S_NT） CHLTYPE（SVRCONN） REPLACE </p>
<p>在UNIX端创建队列管理器<br />
crtmqm –q QM_UNIX<br />
启动队列管理器<br />
strmqm QM_UNIX<br />
添加侦听程序<br />
修改/etc/services文件，加入一行：<br />
MQSeries 1414/tcp #MQSeries channel listener<br />
修改/etc/inetd.conf文件，加入一行（启动侦听程序）<br />
MQSeries stream tcp nowait mqm /usr/lpp/mqm/bin/amqcrsta amqcrsta –m QM_UNIX<br />
运行以下命令，以使修改起作用<br />
refresh –s inetd </p>
<p>运行MQ控制台命令<br />
runmqsc QM_UNIX<br />
创建死信队列<br />
DEFINE QL(UNIX.DEADQ) DEFPSIST(YES) REPLACE<br />
更改队列管理器属性，设置其死信队列<br />
ALTER QMGR DEADQ（UNIX.DEADQ）<br />
创建接收方通道，其名字必须与远程发送方相同<br />
DEFINE CHANNEL（SDR_NT） CHLTYPE（RCVR） REPLACE<br />
创建本地队列<br />
DEFINE QL（Q_UNIX） DEFPSIST(YES) REPLACE<br />
创建服务器连接通道<br />
DEFINE CHANNEL（S_UNIX） CHLTYPE（SVRCONN） REPLACE </p>
<p>经过以上操作之后，远程连接的配置工作完成。接下来需要验证配置是否正确。<br />
在NT端启动发送方通道<br />
runmqchl –c SDR_NT –m QM_NT 或 start chl(SDR_NT)<br />
从NT端发送消息到UNIX端<br />
amqsput QR_NT QM_NT<br />
在UNIX端接收消息<br />
/usr/mqm/samp/bin/amqsget Q_UNIX QM_UNIX </p>
<p>若能收到消息，说明配置成功。 </p>
<p>另，在NT下一般情况下在建立队列管理器时会自动建立侦听器，启动队列管理器时则会自动启动侦听程序。当然也可以手动配置侦听程序。<br />
修改\winnt\system32\drivers\etc\services文件，在文件中加入一行：<br />
MQSeries 1414/tcp #MQSeries channel listener<br />
启动侦听程序<br />
runmqlsr –t tcp –p 1414 –m QM_NT </p>
<p>以上说明了怎样建立简单的单向传输网络。消息从NT端传送到UNIX端。建立从UNIX端到NT端的远程连接和以上相仿，要建立双向的传输网络也是同样的道理。 </p>
<p>三．配置JNDI<br />
用JMS实现消息的发送和接收时，经常会用到JNDI。因为JNDI这种方式比较灵活，对于编程也比较简单。<br />
在安装了MQSeries Client for Java之后，在\java\bin目录下找到JMSAdmin.config文件。该文件主要用来说明Context的存储方式及存储地址，对应于文件中的两个参数INITIAL_CONTEXT_FACTORY和PROVIDER_URL。典型的JMSAdmin.config文件内容如下： </p>
<p>#INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldap.LdapCtxFactory<br />
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory<br />
#INITIAL_CONTEXT_FACTORY=com.ibm.ejs.ns.jndi.CNInitialContextFactory<br />
#<br />
#PROVIDER_URL=ldap://polaris/o=ibm,c=us<br />
PROVIDER_URL=file:/d:/temp<br />
#PROVIDER_URL=iiop://localhost/<br />
#<br />
SECURITY_AUTHENTICATION=none </p>
<p>INITIAL_CONTEXT_FACTORY表示JMSAdmin Tool使用的服务提供商。当前有三种受支持的值。com.sun.jndi.ldap.LdapCtxFactory用于LDAP，如果使用它就必须安装一个LDAP服务器。com.sun.jndi.fscontext.RefFSContextFactory用于文件系统上下文，它只需要使用者提供存放上下文的文件路径。com.ibm.ejs.ns.jndi.CNInitialContextFactory是专门为websphere提供的，它需要和websphere的CosNaming资源库一起使用。<br />
PROVIDER_URL表示会话初始上下文的URL，由JMSAdmin tool实现的所有JNDI操作的根。它和INITIAL_CONTEXT_FACTORY一一对应。 </p>
<p>ldap://hostname/contextname 用于LDAP<br />
file:[drive:]/pathname 用于文件系统上下文<br />
iiop://hostname[:port]/[?TargetContext=ctx] 用于访问websphere CosNaming名称空间 </p>
<p>最后还有一个参数SECURITY_AUTHENTICATION，用于说明JNDI是否把安全性凭证传递给了您使用的服务供应商。只有当使用了LDAP服务供应商时，才使用此参数。此参数有三个值，none（匿名认证）、simple（简单认证）和CRAM-MD5认证机制。如果没有提供有效值，缺省值为none。 </p>
<p>确认配置文件之后，可以在\java\bin目录下启动JMSAdmin控制台。也可以在任何目录下用下面的命令来启动控制台：<br />
JMSAdmin –cfg MQ_JAVA_INSTALL_PATH\java\bin\JMSAdmin.config<br />
其中MQ_JAVA_INSTALL_PATH为MQSeries Client for Java安装的根目录。<br />
若启动失败，则好好检查一下您的环境变量是否设置正确。根据我个人的经验，除了把com.ibm.mq.jar和com.ibm.mqjms.jar加入到环境变量外，还要把fscontext.jar和providerutil.jar加入到环境变量。<br />
进入JMSAdmin控制台后，您可以自由定义sub context。对于子上下文的操作，主要有一下命令：<br />
display ctx<br />
define ctx(ctxname)<br />
change ctx(ctxname)<br />
change ctx(=up)<br />
change ctx(=init)<br />
delete ctx(ctxname) </p>
<p>当然，在这里的主要任务并非是用来定义sub context，而是用来定义以下几个对象：<br />
MQQueueConnectionFactory<br />
MQTopicConnectionFactory<br />
MQQueue<br />
MQTopic<br />
（还有其它的一些对象，如MQXAQueueConnectionFactory等，不常用到，在此不作说明。）<br />
可以使用很多动词来操纵目录名称空间中的受管理对象。ALTER、DEFINE、DISPLAY、DELETE、COPY和MOVE，</p>
<p>它们的用法都算比较简单，这里只列举一二以作说明。<br />
例一：定义一QueueConnectionFactory，连接主机10.10.10.18，端口1414<br />
DEFINE QCF(EXAMPLEQCF)+<br />
DESC(Example Queue Connection Factory)+<br />
TRAN(CLIENT)+<br />
HOST(10.10.10.18)+<br />
QMGR(QM_EXAMPLE)+<br />
CHAN(S_EXAMPLE)+<br />
PORT(1414)+<br />
CCSID(1381) </p>
<p>例二：定义一Queue，其对应于MQ中的Q_EXAMPLE<br />
DEFINE Q(EXAMPLEQL)+<br />
DESC(Local queue)+<br />
QMGR(QM_EXAMPLE)+<br />
QUEUE(Q_EXAMPLE)+<br />
CCSID(1381) </p>
<p>四．用JMS实现MQ编程<br />
上面我们说明了怎样用JMSAdmin Tool定义MQ对象的上下文。我们的最终目的是要用JMS来实现MQ编程，以实现在程序中对MQ队列进行收、发消息。所以，下面我们将重点讨论一下MQ的JMS实现。<br />
如果您对JMS编程很熟悉，那么您也就会用JMS来实现MQ编程，因为用JMS来编写MQ程序与编写一般的JMS程序没有太大的差别。举个例子，当我们想发送一条消息到MQ的队列中，再从该队列中取回消息时，我们编程时主要有四个步骤。首先我们要初始化在程序中要用到的对象，然后才可以发送消息到队列中去，再就是收取消息了，最后要清除那些永久对象。这些都和普通的JMS程序相当。程序的源代码如下： </p>
<p>import java.util.Hashtable;<br />
import javax.jms.*;<br />
import javax.naming.*;<br />
import javax.naming.directory.*; </p>
<p>public class sample {<br />
protected QueueConnectionFactory factory=null;<br />
protected QueueConnection connection;<br />
protected QueueSession queueSession;<br />
protected TextMessage outMessage;<br />
protected QueueSender queueSender;<br />
protected QueueReceiver queueReceiver; </p>
<p>public static final String qcfLookup=&#8221;EXAMPLEQCF&#8221;;<br />
public static final String qLookup=&#8221;EXAMPLEQL&#8221;;<br />
public static final String icf = &#8220;com.sun.jndi.fscontext.RefFSContextFactory&#8221;;<br />
public String url =&#8221;file:/d:/temp&#8221;; </p>
<p>public void sampleInit() throws Exception {<br />
Hashtable environment = new Hashtable();<br />
environment.put(Context.INITIAL_CONTEXT_FACTORY, icf);<br />
environment.put(Context.PROVIDER_URL, url);<br />
environment.put(Context.REFERRAL, &#8220;throw&#8221;);<br />
Context ctx=new InitialDirContext(environment);<br />
factory = (QueueConnectionFactory)ctx.lookup(qcfLookup);<br />
Queue q1=null;<br />
q1=(Queue)ctx.lookup(qLookup);<br />
connection = factory.createQueueConnection();<br />
queueSession = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); </p>
<p>queueSender = queueSession.createSender(q1);<br />
queueSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);<br />
outMessage = queueSession.createTextMessage();<br />
queueReceiver = queueSession.createReceiver(q1);<br />
connection.start();<br />
}<br />
public void sendMessageOut(String message) throws JMSException {<br />
outMessage.setText(message);<br />
queueSender.send(outMessage);<br />
}<br />
public String receiveMessage() throws Exception{<br />
return ((TextMessage)queueReceiver.receive()).getText();<br />
}<br />
public void sampleClose() throws JMSException {<br />
queueSession.close();<br />
connection.close();<br />
} </p>
<p>public static void main(String[] args){<br />
String rec;<br />
sample sp = new sample();<br />
try {<br />
sp.sampleInit();<br />
sp.sendMessageOut(&#8220;Hello World!&#8221;);<br />
java.lang.Thread.sleep(4000);<br />
rec=sp.receiveMessage();<br />
System.out.println(&#8220;Receive text is : &#8220;+rec);<br />
sp.sampleClose();<br />
}catch(Exception e) {<br />
e.printStackTrace();<br />
}<br />
}<br />
} </p>
<p>五．远程管理<br />
MQ在WINDOWS平台下具有图形化管理界面，但在UNIX平台下却只能通过命令行来进行操作。</p>
<p>这样就给使用者带来很大的不便。我们都希望能通过图形界面来进行管理配置。为了实现我们的想法，我们就必须建立远程管理。<br />
实现远程管理有以下几个步骤：<br />
1．被管理队列管理器上的命令队列SYSTEM.ADMIN.COMMAND.QUEUE存在并可用。对于MQ 2版本应执行 amqscoma.tst 脚本来创建。<br />
2．使用strmqcsv命令来启动被管理队列管理器上的命令服务器。<br />
3．确定被管理队列管理器上的服务器连接通道SYSTEM.ADMIN.SVRCONN是否存在，如果不存在则创建它。<br />
4．一般Unix、Linux平台中MQ默认的字符集为819，而Windows平台为1381，</p>
<p>所以你必须改变其字符集，使两边的字符集相同。一般改被管理的字符集。<br />
5．如果被管理队列管理器上的操作用户与管理队列管理器上的操作用户不同，</p>
<p>那么你首先要确认管理队列管理器上的操作用户在被管理队列管理器上存在并且有管理MQ的权限，</p>
<p>再者，你需要修改服务器连接通道SYSTEM.ADMIN.SVRCONN的MCAUSER属性为管理队列管理器上的操作用户。</p>
<p>6．启动被管理队列管理器上的侦听器。 </p>
<p>做完这些工作之后，直接在管理队列管理器的MQ管理工具中显示被管理队列管理器即可。</p>
<p>然后你就可以象操作本地队列管理器一样，在被管理队列管理器上定义你需要的MQ对象。 </p>
<p>六．通道维护<br />
在配置远程连接的时候，我们曾经创建过进程定义。那我们为什么要去创建进程定义呢？这就涉及MQ通道维护的概念。<br />
通道长时间没有消息触发就会自动断开连接，不再保持运行状态。时间的长短可以由自己设定，默认值为6000秒。</p>
<p>消息请求再次来临的时候，就必须再次启动通道。有些通道，如服务器连接通道、接收方通道等是自动触发启动的。</p>
<p>当消息请求发送到通道后，通道立即启动，进入运行状态。但也有一些通道不会自动启动，最典型的就是发送方通道。</p>
<p>当有消息请求需要使用通道进行消息传递的时候，发送方通道也不会自动启动并把消息发送到远程队列，</p>
<p>而是把消息留在了与其相关联的传输队列中。<br />
但是，在实际应用中我们又不可能每过一段时间去启动一次通道，或当有消息来再去启动通道。</p>
<p>那应该怎么办？首先我们创建一个进程定义，这个进程定义的目的就是用来启动发送方通道。</p>
<p>然后我们在传输队列的进程名称属性栏指定刚才定义的进程定义名称，再把触发器控制开关打开。</p>
<p>这样，当有消息进入传输队列后，传输队列的触发器会启动触发执行指定的进程，</p>
<p>从而启动发送方通道，把消息传输到远程队列中去。 </p>
<p>显示通道状态:<br />
dis chstatus(*)</p>
<p>SUSPEND QMGR CLUSTER(SALES)</p>
<p>设置队列管理器的自启动<br />
amqmdain</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1421.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MQ for AIX 手册</title>
		<link>http://www.evanjiang.net.cn/archives/1419.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1419.html#comments</comments>
		<pubDate>Sat, 09 Jan 2010 08:29:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[websphare]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1419</guid>
		<description><![CDATA[<p>1 软件安装
#smitty install
Install and Update Software
Install and Update from Latest Available Software
Software to install (用F4选择安装介质, 用F7选择下面的软件)
可选择全部来安装 </p>
<p>2 安装配置
在MQM用户下：
$crtmqm -q MAP /*创建队列管理器*/
$strmqm MAP /*启动队列管理器*/
$runmqsc MAP /*定义管理器资源*/
DEFINE QLOCAL( ) /*接收队列 */
DEFINE QLOCAL( ) USAGE( ) /*传输队列 */
DEFINE QREMOTE( ) RNAME( ) RQMNAME( ) XM99vQ( ) /*发送队列*/
DEFINE CHANNEL( ) CHLTYPE( ) CONNAME( ) TRPTYPE(TCP) XM99vQ( ) DISCINT(0) /*发送通道*/
DEFINE [...]]]></description>
			<content:encoded><![CDATA[<p>1 软件安装<br />
#smitty install<br />
Install and Update Software<br />
Install and Update from Latest Available Software<br />
Software to install (用F4选择安装介质, 用F7选择下面的软件)<br />
可选择全部来安装 </p>
<p>2 安装配置<br />
在MQM用户下：<br />
$crtmqm -q MAP /*创建队列管理器*/<br />
$strmqm MAP /*启动队列管理器*/<br />
$runmqsc MAP /*定义管理器资源*/<br />
DEFINE QLOCAL( ) /*接收队列 */<br />
DEFINE QLOCAL( ) USAGE( ) /*传输队列 */<br />
DEFINE QREMOTE( ) RNAME( ) RQMNAME( ) XM99vQ( ) /*发送队列*/<br />
DEFINE CHANNEL( ) CHLTYPE( ) CONNAME( ) TRPTYPE(TCP) XM99vQ( ) DISCINT(0) /*发送通道*/<br />
DEFINE CHANNEL( ) CHLTYPE(RCVR) TRPTYPE(TCP) /*接收通道*/<br />
end /*退出*/<br />
$runmqlsr -t tcp -m MAP -p 1442 /*启动侦听器*/<br />
$endmqm MAP /*停止MQ服务*/ </p>
<p><span id="more-1419"></span>* CICS权限配置<br />
# 显示队列管理器MAP对cics组的权限<br />
dspmqaut -m MAP -t qmgr -g cics </p>
<p># 设置队列管理器MAP对cics组的权限<br />
setmqaut -m MAP -t qmgr -g cics +all </p>
<p># 设置队列对cics组的权限<br />
setmqaut -m MAP -n *** -t queue -g cics +all </p>
<p># 显示当前的权限配置<br />
dspmqaut -m MAP -n *** -t queue -g cics </p>
<p>* MQ客户端配置<br />
1．安装IBM MQSeries Client </p>
<p>2．设置所有用户环境变量<br />
打开/etc/profile，添加<br />
MQSERVER=&#8221;MAP/TCP/hostname(1442)&#8221;<br />
&#8220;export MQSERVER&#8221; </p>
<p>3．设置CICS环境变量<br />
在文件/var/cics_regions/SDMAP1/environment添加如下行<br />
MQSERVER=&#8221;MAP/TCP/hostname(1442)&#8221;即可。 </p>
<p>4．服务器配置<br />
runmqsc MAP<br />
DEFINE CHANNEL(FS.SERVER) CHLTYPE(SVRCONN) TRPTYPE(TCP) MCAUSER(&#8216;mqm&#8217;) </p>
<p>* MQ服务器远程管理配置<br />
1． 定义通道<br />
$ runmqsc MAP<br />
DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(tcp) mcauser(&#8216;mqm&#8217;)<br />
如果通道已定义则跳过此步。 </p>
<p>2． 启动命令服务器<br />
$ strmqcsv MAP<br />
每次重启MQ队列管理器后必须重启命令服务器。 </p>
<p>3． 远程连接与管理<br />
打开Windows下的“MQSeries 资源管理器”，右键点击“队列管理器”，选“显示队列管理器”，输入队列管理器名称和连接名称确定即可。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1419.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>项目规模估算失准 软件开发成空中楼阁</title>
		<link>http://www.evanjiang.net.cn/archives/1417.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1417.html#comments</comments>
		<pubDate>Fri, 01 Jan 2010 01:58:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[项目管理]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1417</guid>
		<description><![CDATA[<p>   软件项目的估算历来是比较复杂的事，因为软件本身的复杂性、历史经验的可重复性、估算工具的缺乏以及一些人为错误，都会导致软件项目的估算往往和实际情况相差甚远。据有关机构调查发现，约有60％的软件项目的失败是因为估算偏差引起的，而不是因为技术实力不够。因此，估算偏差已被列为软件项目失败的四大原因之一。
    从软件工程学上，我们知道软件需求和估算是软件项目的基础。因为只有准确的了解客户的需求，以之为基础，并使用科学的方法对目标软件系统的规模、工作量和进度做出合理的估算，我们才能在预算内按时按质顺利的完成项目。然而，软件估算作为软件项目的基础领域却常常被人们所忽视。我在近期的一个开发项目中就尝到忽视软件规模估算带来的苦果，结果是项目进行到一半时就发现不但工期严重滞后于计划，而且项目的各种资源也严重的不足和缺乏，项目被迫暂停下马。
常见的项目规模估算失准原因
    一直以来，软件项目的规模估算（Size Estimation）是个争论不休的问题。不论是对软件开发团队还是对软件用户，软件规模估算的重要性都是不容置疑的。因为它能极大的影响着甲方对发包软件的成本估算，乙方对自身开发成本的预测，以及乙方对开发过程的量化管理等诸多方面。而且，只有相对合理和相对准确地估算软件规模，才能对项目的进度安排、资源分配等各个环节进行合理的部署。所以，软件项目的规模估算是软件项目中相当重要的一环。但是，以下的原因却使到我在这次项目的实际操作中对项目规模估算失准了：
    （1）对项目规模估算认识不足
    项目规模估算一般分为两种应用场景：一是招投标的时候用来估价、报价；二是用来安排进度计划和指导项目具体工作的分配。因此，如果对规模估算认识不足的话，将可能会在这两种应用场景中估算失准。例如，如果项目规模低估的话就会造成人力估算低估、成本预算低估、日程过短，最终人力资源耗尽，成本超出预算。最后为了完成项目不得不赶工，不但会影响到项目质量，甚至会导致项目失败。而如果规模高估的话，就会因估价过高而降低了招投标时的竞争力，或在进度安排时提高了开发成本和浪费资源。由于对规模估算的认识不足，使到我在这次项目中就尝到一个大苦果，就是低估项目规模导致项目需要多次的追加预算。我不但多次受到公司领导的批评，而且还受到客户的多次投诉。
    （2）个人经验估算法带有一定的局限性
    一般来说，依靠历史或个人经验的规模估算方法都有一定的局限性。原因是很难在项目分析和计划阶段就对软件的规模进行相对准确的估算。因为估算是依靠评估人员的经验，所以对评估人员的能力要求比较强，并且难以由第三方对评估人员的工作偏差作出修正。在这次项目的初期，我片面的只是根据个人经验进行估算，结果是轻率的估算了项目规模。这是最后导致项目失利的原因之一。另外，不同软件项目使用的技术不一样，这一点也非常影响到软件规模的估算。例如同一个功能,使用JAVA语言和使用Ruby语言所涉及的代码行相差数十行，甚至数百行。即使同为JAVA语言,使用不用的框架所需要编写的代码行也不一样。
    （3）对项目估算时缺乏数据支持
    因为在软件开发初期时对规模估算都是很难准确量化的，所以到底需要多少资源、多长时间或者规模估算到什么的程度才算是合理的是没有一个标准的。但一个好的项目估算，是离不开一个准确的、可信的、客观的数据作为基础。如果在项目规模估算时只凭项目管理人员的经验进行估算，而缺乏大量的数据支持，那么估算最终就会变成常见的&#8221;三拍&#8221;现象：&#8221;首先是项目经理拍脑袋估算，然后是项目经理估算失准时拍马屁的补救，最后是项目失败时拍屁股走人&#8221;。当然，这只是个玩笑。不过由此可见项目规模估算不能只依靠经验来估算，而应该是要有大量的数据来支持。
什么是软件项目的规模估算？
    软件开发项目管理中的一项重要任务是开发项目的规模估算，这是极其重要但却很容易被忽视的一项内容。因为没有正确的规模估算，项目计划就会失去成功的基础。可惜大部分的开发团队都很难做到对项目规模进行准确的估算。
    （1）什么是项目规模估算？
    做好软件项目管理的基础是要做好项目的规划工作，而做好项目规划的前提是要做好软件估算。也就是说，就是没有好的软件估算，项目的规划、跟踪和控制就根本无从谈起。因此，软件估算是项目计划活动的基础之一。
    软件估算一般是通过主观经验和客观分析两种方法进行，包括有四个重要方面：规模估算、工作量估算、进度估算和成本估算。其中，对规模进行估算是为了将项目范围进行量化。规模估算是整个软件估算中最核心、最基础的环节，也是整个软件估算的第一步。规模估算有两个主要作用：一是通过规模估算建立项目基线；二是利用基线对项目生产率和状态进行评价，并确定软件过程的进度目标。也就是说，规模估算是一切估算的基础，是能直接决定和影响到其它三个估算的决策。
   [...]]]></description>
			<content:encoded><![CDATA[<p>   软件项目的估算历来是比较复杂的事，因为软件本身的复杂性、历史经验的可重复性、估算工具的缺乏以及一些人为错误，都会导致软件项目的估算往往和实际情况相差甚远。据有关机构调查发现，约有60％的软件项目的失败是因为估算偏差引起的，而不是因为技术实力不够。因此，估算偏差已被列为软件项目失败的四大原因之一。<br />
    从软件工程学上，我们知道软件需求和估算是软件项目的基础。因为只有准确的了解客户的需求，以之为基础，并使用科学的方法对目标软件系统的规模、工作量和进度做出合理的估算，我们才能在预算内按时按质顺利的完成项目。然而，软件估算作为软件项目的基础领域却常常被人们所忽视。我在近期的一个开发项目中就尝到忽视软件规模估算带来的苦果，结果是项目进行到一半时就发现不但工期严重滞后于计划，而且项目的各种资源也严重的不足和缺乏，项目被迫暂停下马。<br />
常见的项目规模估算失准原因<br />
    一直以来，软件项目的规模估算（Size Estimation）是个争论不休的问题。不论是对软件开发团队还是对软件用户，软件规模估算的重要性都是不容置疑的。因为它能极大的影响着甲方对发包软件的成本估算，乙方对自身开发成本的预测，以及乙方对开发过程的量化管理等诸多方面。而且，只有相对合理和相对准确地估算软件规模，才能对项目的进度安排、资源分配等各个环节进行合理的部署。所以，软件项目的规模估算是软件项目中相当重要的一环。但是，以下的原因却使到我在这次项目的实际操作中对项目规模估算失准了：<br />
    （1）对项目规模估算认识不足<br />
    项目规模估算一般分为两种应用场景：一是招投标的时候用来估价、报价；二是用来安排进度计划和指导项目具体工作的分配。因此，如果对规模估算认识不足的话，将可能会在这两种应用场景中估算失准。例如，如果项目规模低估的话就会造成人力估算低估、成本预算低估、日程过短，最终人力资源耗尽，成本超出预算。最后为了完成项目不得不赶工，不但会影响到项目质量，甚至会导致项目失败。而如果规模高估的话，就会因估价过高而降低了招投标时的竞争力，或在进度安排时提高了开发成本和浪费资源。由于对规模估算的认识不足，使到我在这次项目中就尝到一个大苦果，就是低估项目规模导致项目需要多次的追加预算。我不但多次受到公司领导的批评，而且还受到客户的多次投诉。<br />
    （2）个人经验估算法带有一定的局限性<br />
    一般来说，依靠历史或个人经验的规模估算方法都有一定的局限性。原因是很难在项目分析和计划阶段就对软件的规模进行相对准确的估算。因为估算是依靠评估人员的经验，所以对评估人员的能力要求比较强，并且难以由第三方对评估人员的工作偏差作出修正。在这次项目的初期，我片面的只是根据个人经验进行估算，结果是轻率的估算了项目规模。这是最后导致项目失利的原因之一。另外，不同软件项目使用的技术不一样，这一点也非常影响到软件规模的估算。例如同一个功能,使用JAVA语言和使用Ruby语言所涉及的代码行相差数十行，甚至数百行。即使同为JAVA语言,使用不用的框架所需要编写的代码行也不一样。<br />
  <span id="more-1417"></span>  （3）对项目估算时缺乏数据支持<br />
    因为在软件开发初期时对规模估算都是很难准确量化的，所以到底需要多少资源、多长时间或者规模估算到什么的程度才算是合理的是没有一个标准的。但一个好的项目估算，是离不开一个准确的、可信的、客观的数据作为基础。如果在项目规模估算时只凭项目管理人员的经验进行估算，而缺乏大量的数据支持，那么估算最终就会变成常见的&#8221;三拍&#8221;现象：&#8221;首先是项目经理拍脑袋估算，然后是项目经理估算失准时拍马屁的补救，最后是项目失败时拍屁股走人&#8221;。当然，这只是个玩笑。不过由此可见项目规模估算不能只依靠经验来估算，而应该是要有大量的数据来支持。<br />
什么是软件项目的规模估算？<br />
    软件开发项目管理中的一项重要任务是开发项目的规模估算，这是极其重要但却很容易被忽视的一项内容。因为没有正确的规模估算，项目计划就会失去成功的基础。可惜大部分的开发团队都很难做到对项目规模进行准确的估算。<br />
    （1）什么是项目规模估算？<br />
    做好软件项目管理的基础是要做好项目的规划工作，而做好项目规划的前提是要做好软件估算。也就是说，就是没有好的软件估算，项目的规划、跟踪和控制就根本无从谈起。因此，软件估算是项目计划活动的基础之一。<br />
    软件估算一般是通过主观经验和客观分析两种方法进行，包括有四个重要方面：规模估算、工作量估算、进度估算和成本估算。其中，对规模进行估算是为了将项目范围进行量化。规模估算是整个软件估算中最核心、最基础的环节，也是整个软件估算的第一步。规模估算有两个主要作用：一是通过规模估算建立项目基线；二是利用基线对项目生产率和状态进行评价，并确定软件过程的进度目标。也就是说，规模估算是一切估算的基础，是能直接决定和影响到其它三个估算的决策。<br />
    软件项目的规模估算历来是比较复杂的事，因为软件本身的复杂性、历史经验的缺乏、估算工具缺乏以及一些人为错误，导致软件项目的规模估算往往和实际情况相差甚远。 因此，估算错误已被列入软件项目失败的四大原因之一。<br />
    软件工程师经常会被问到，编一个什么什么样的软件需要多长时间、多少钱。面对这个问题，有不少人很犯难，因为，第一用户的需求太不具体，第二，自己缺乏一个科学的估计方法。这里向大家介绍几种软件项目规模的估计方法。<br />
    概念介绍先介绍一个衡量软件项目规模最常用的概念——LOC（Line of Code），LOC指所有的可执行的源代码行数，包括可交付的工作控制语言（JCL：Job Control Language）语句、数据定义、数据类型声明、等价声明、输入/输出格式声明等。一代码行（1LOC）的价值和人月均代码行数可以体现一个软件生产组织的生产能力。组织可以根据对历史项目的审计来核算组织的单行代码价值。<br />
    例如，某软件公司统计发现该公司每一万行C语言源代码形成的源文件（。c和。h文件）约为250K.某项目的源文件大小为3.75M，则可估计该项目源代码大约为15万行，该项目累计投入工作量为240人月，每人月费用为10000元（包括人均工资、福利、办公费用公滩等），则该项目中1LOC的价值为：（240×10000）/150000＝16元/LOC改项目的人月均代码行数为：150000/240=625LOC/人月方法一、Delphi 法Delphi法是最流行的专家评估技术，在没有历史数据的情况下，这种方式适用于评定过去与将来，新技术与特定程序之间的差别，但专家&#8221;专&#8221;的程度及对项目的理解程度是工作中的难点，尽管Delphi技术可以减轻这种偏差，专家评估技术在评定一个新软件实际成本时通常用得不多，但是，这种方式对决定其它模型的输入时特别有用。Delphi法鼓励参加者就问题相互讨论。这个技术，要求有多种软件相关经验人的参与，互相说服对方。<br />
    Delphi法的步骤是：1、协调人向各专家提供项目规格和估计表格；2、协调人召集小组会各专家讨论与规模相关的因素；3、各专家匿名填写迭代表格；4、协调人整理出一个估计总结，以迭代表的形式返回专家；5、协调人召集小组会，讨论较大的估计差异；6、专家复查估计总结并在迭代表上提交另一个匿名估计；7、重复4-6， 直到达到一个最低和最高估计的一致。</p>
<p>    方法二、 类比法类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目，通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度，因此，用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制，对历史项目的数据分析是可信赖的。<br />
    其基本步骤是：1、整理出项目功能列表和实现每个功能的代码行；2、标识出每个功能列表与历史项目的相同点和不同点，特别要注意历史项目做得不够的地方；3、通过步骤1和2得出各个功能的估计值；4、产生规模估计。<br />
    软件项目中用类比法，往往还要解决可重用代码的估算问题。估计可重用代码量的最好办法就是由程序员或系统分析员详细地考查已存在的代码，估算出新项目可重用的代码中需重新设计的代码百分比、需重新编码或修改的代码百分比以及需重新测试的代码百分比。根据这三个百分比，可用下面的计算公式计算等价新代码行：等价代码行 = [（重新设计% +重新编码% +重新测试%）/3]× 已有代码行比如：有10，000行代码，假定30%需要重新设计，50%需要重新编码，70%需要重新测试，那么其等价的代码行可以计算为：[ （30% + 50% + 70%）/3 ]× 10，000 = 5，000 等价代码行。<br />
    意即：重用这10000代码相当于编写5000代码行的工作量。<br />
    方法三、功能点估计法功能点测量是在需求分析阶段基于系统功能的一种规模估计方法。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。通常的步骤是：1、计算输入，输出，查询，主控文件，和接口需求的数目。<br />
    2、将这些数据进行加权乘。下表为一个典型的权值表。<br />
    功能类型 　权值<br />
    输入 　　　4<br />
    输出 　　　5<br />
    查询 　　　4<br />
    主控文件 　10<br />
    接口 　　　10<br />
    据发现，对一个软件产品的开发，功能点对项目早期的规模估计很有帮助。然而，在了解产品越多后，功能点可以转换为软件规模测量更常用的LOC.方法四、PERT估计法PERT对各个项目活动的完成时间按三种不同情况估计：一个产品的期望规模，一个最低可能估计，一个最高可能估计。用这三个估计用来得到一个产品期望规模和标准偏差的Pert 统计估计。Pert 估计可得到代码行的期望值E， 和标准偏差SD.详细的估计方法，读者可参考笔者所写的《应用PERT进行项目工期估计》一文</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1417.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何认识软件项目估算</title>
		<link>http://www.evanjiang.net.cn/archives/1415.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1415.html#comments</comments>
		<pubDate>Fri, 01 Jan 2010 01:57:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[项目管理]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1415</guid>
		<description><![CDATA[<p>虽然估算是一门科学，更是一门艺术，这个重要的活动不能以随意的方式来进行……因为估算是所有其他项目计划活动的基础，而项目计划又提供了通往成功的软件工程的道路图，所以，没有它我们就会搭错车。——Roger S. Pressman 《软件工程——实践者的研究方法》
    1、估算前的规划
    当我们的办公室内堆满了杂乱无章的文件时，恐怕无法知道对于我们真正有用的文件在哪里，当我们的软件相目中收集了各种需求、意见、问题时，我们也很难从中估算出整个项目的规模、工作量以及成本。因此，在估算之前我们首先要对众多信息进行整理、归类分析，从而得到一个条理清晰的项目计划，在这个计划提供的框架内，才可能开始正确的估算。精心的规划是任何一个软件开发项目成功与否的关键，有了规划就有如成竹在胸，之后无论风云变幻，都有应对入流的方法。当然只有正确的规划，才能给软件开发指引正确的方向。
    软件项目规划的重点是对人员角色、任务进度、经费、设备资源、工作成果等等做出合适的安排，制定出一些计划（包括高层的和细节的），使大家按照计划行事，最终顺利地达到预定的目标。
    1．1、规划的第一步：确定软件范围
    确定软件范围，就是确定目标软件的数据和控制、功能、性能、约束、接口以及可靠性。这项工作和需求分析是很类似的，如果之前已经达成需求分析规约，那么可以直接从《需求分析说明书》中把有用的部分拿来使用。如果还没有开始需求分析，关于确定软件范围的方法方面，我们可以采用许多需求分析技术（如需求诱导），从客户那里得到一个具体的软件范围。当然如果是一次全新的软件边界探索，就应当考虑软件本身可行性问题，包括团队是否具备在技术、财务、时间、资源上游可靠的保障，软件本身在市场上是否有可靠的竞争优势 ，等等。
    获得软件范围，最直接最可靠的来源就是用户对软件的需求描述。例如，在开发一个C/S架构的铁路供电段数据上报系统中，客户向我们提供了以下的目标软件需求描述：
    在供电站总部每天结束前要审核下属节点操作员（30~40个）的供电安全数据报表，要求每个节点必须在下午5：30~6：00之间上传数据。总部系统通过自动分析，整理出整个区内的安全形势报表，并自动反馈到每个节点。各个节点之间通过调制解调器拨号（MODEM）用内部电话线相连，每个节点电脑主机配备一个MODEM。上传数据为制式报表出了制式信息外，系统自动附加操作员姓名、上报时间、上报节点名称。信息一旦上传，节点端就不可以对已提交信息进行修改、删除，只能阅读、查询。节点间数据互相隔离，只有总部才具备对各个节点数据的管理权限，但是对于归档数据（一旦审核完毕的数据，就进行归档）总部不具备删改的权限。系统设置数据库管理员，独立于审核权限，其职责是对历史数据的清理维护。
    通过上面的描述，我们通过提炼和简化，得到软件的一下功能：
    ◆ 节点数据录入、查询、上传
    ◆ 总部数据汇总、查询、反馈
    ◆ 总部与节点的互联
    [...]]]></description>
			<content:encoded><![CDATA[<p>虽然估算是一门科学，更是一门艺术，这个重要的活动不能以随意的方式来进行……因为估算是所有其他项目计划活动的基础，而项目计划又提供了通往成功的软件工程的道路图，所以，没有它我们就会搭错车。——Roger S. Pressman 《软件工程——实践者的研究方法》<br />
    1、估算前的规划<br />
    当我们的办公室内堆满了杂乱无章的文件时，恐怕无法知道对于我们真正有用的文件在哪里，当我们的软件相目中收集了各种需求、意见、问题时，我们也很难从中估算出整个项目的规模、工作量以及成本。因此，在估算之前我们首先要对众多信息进行整理、归类分析，从而得到一个条理清晰的项目计划，在这个计划提供的框架内，才可能开始正确的估算。精心的规划是任何一个软件开发项目成功与否的关键，有了规划就有如成竹在胸，之后无论风云变幻，都有应对入流的方法。当然只有正确的规划，才能给软件开发指引正确的方向。<br />
    软件项目规划的重点是对人员角色、任务进度、经费、设备资源、工作成果等等做出合适的安排，制定出一些计划（包括高层的和细节的），使大家按照计划行事，最终顺利地达到预定的目标。<br />
    1．1、规划的第一步：确定软件范围<br />
    确定软件范围，就是确定目标软件的数据和控制、功能、性能、约束、接口以及可靠性。这项工作和需求分析是很类似的，如果之前已经达成需求分析规约，那么可以直接从《需求分析说明书》中把有用的部分拿来使用。如果还没有开始需求分析，关于确定软件范围的方法方面，我们可以采用许多需求分析技术（如需求诱导），从客户那里得到一个具体的软件范围。当然如果是一次全新的软件边界探索，就应当考虑软件本身可行性问题，包括团队是否具备在技术、财务、时间、资源上游可靠的保障，软件本身在市场上是否有可靠的竞争优势 ，等等。<br />
    获得软件范围，最直接最可靠的来源就是用户对软件的需求描述。例如，在开发一个C/S架构的铁路供电段数据上报系统中，客户向我们提供了以下的目标软件需求描述：<br />
    在供电站总部每天结束前要审核下属节点操作员（30~40个）的供电安全数据报表，要求每个节点必须在下午5：30~6：00之间上传数据。总部系统通过自动分析，整理出整个区内的安全形势报表，并自动反馈到每个节点。各个节点之间通过调制解调器拨号（MODEM）用内部电话线相连，每个节点电脑主机配备一个MODEM。上传数据为制式报表出了制式信息外，系统自动附加操作员姓名、上报时间、上报节点名称。信息一旦上传，节点端就不可以对已提交信息进行修改、删除，只能阅读、查询。节点间数据互相隔离，只有总部才具备对各个节点数据的管理权限，但是对于归档数据（一旦审核完毕的数据，就进行归档）总部不具备删改的权限。系统设置数据库管理员，独立于审核权限，其职责是对历史数据的清理维护。<br />
  <span id="more-1415"></span>  通过上面的描述，我们通过提炼和简化，得到软件的一下功能：<br />
    ◆ 节点数据录入、查询、上传<br />
    ◆ 总部数据汇总、查询、反馈<br />
    ◆ 总部与节点的互联<br />
    ◆ 总部数据库存储<br />
    ◆ 节点数据的本地存储<br />
    在本例中，软件的性能是潜在的。客户虽然没有明确提出，但是由于数据本身的重要性，要求系统在数据上传、反馈、存储过程中安全可靠。客户要求使用MODEM进行拨号连接，那么鉴于MODEM连接过程中可能会出现，由于拨号断开而道导致的数据丢失，在节点本地存放一份数据副本是有必要的。由于系统要求每天上传数据，总部数据库应当是7X24小时不间断服务的，再加上目前总部只有该系统运行接受数据任务，各节点数据量并不大，那么在建议用户选择服务器时，应当考虑性能稳定可靠，但并不一定要购买大容量磁盘阵列和高性能双CPU主机。由于每天上传数据接近下班时间，那么总部汇总数据应当是自动进行的，一旦分析发现重大问题，可以通过与外部网络的设置，向值班人员发送手机讯息、E-MAIL或其他警示。由于不同人员对于上报数据的权限不同，对于系统用户实行分级管理。不同级别的用户，具有对数据的不同管理权力，从而保证在软件使用过程中不发生混乱。<br />
    那么现在一个较为清晰的软件模型已经构造完毕，接下来我们需要进入计划的第二步：确定工作所需资源。<br />
    1．2、规划的第二步：确定工作所需资源<br />
    软件工作所需资源包括：工作环境（软硬件环境、办公室环境）、可复用软件资源（构件、中间件）、人力资源（包括不同各种角色的人员：分析师、设计师、测试师、程序员、项目经理……）。这三种资源的组成比例，可以看作一个金字塔的模式，最上面是人力资源、其次是可复用软件资源、最下面是工作环境。最上面的是组成比例最小的，最下面的是组成比例最大的部分。<br />
    ■ 人力资源<br />
    一个项目到底需要多少种职务的人员构成、多少数量的人员总量，再能成为最有创造力的团队呢？这恐怕是最让项目经理头疼的事情了。任何一个软件工程，都必须在确定软件的工作量之后，才能清楚地知道究竟需要多少人力才能以最小成本和最高效率完成任务。在这之前，不能盲目地进行人力扩充，而且绝对不能为了给公司抬高门面，盲目招收高学历。</p>
<p>    ■ 可复用软件资源<br />
    这是一个容易在计划阶段被忽视的重要资源，很多人总是进入编码阶段才发现可复用资源的价值和存在。经过长期的项目积累或是购买，公司的软件资源库中或许已经积累了大量的可复用资源，但在当前任务中，只能选择有价值的资源。根据不同的应用、时间、来源，可复用软件资源被分为以下几种：<br />
    可直接使用的构件：已有的，能够从第三方厂商获得或已经在以前的项目中开发过的软件。这些构件已经经过验证及确认且可以直接用在当前的项目中。<br />
    具有完全经验的构件：已有的为以前类似于当前要开发的项目建立的规约、设计、代码、或测试数据。当前软件项目组的成员在这些构件所代表的应用领域中具有丰富的经验。因此，对于这类构件进行所需的修改其风险相对较小。<br />
    具有部分经验的构件：已有的为以前与当前要开发的项目相关的项目建立的规约、设计、代码、或测试数据，但需做实质上的修改。当前软件项目组的成员在这些构件所代表的应用领域中仅有有限的经验，因此，对于这类构件进行所需的修改会有相当程度的风险。<br />
    新构件：软件项目组为满足当前项目的特定需要而必须专门开发的软件构件。<br />
    在采用构件的时候，应当以低成本、低风险为使用前提。如果任何一个漂亮的构件的应用，可能会带来潜在出错的风险或者必须经过复杂修改或者效率低下时，我们都应当毫不犹豫地把它抛弃。我们只采用那些能够满足项目的需要且可直接使用的构件，或者具有完全经验的构件，或者经过稍微修改便可使用的构件。<br />
    ■ 环境资源<br />
    “工欲善其事，必先利其器”，要得到高效的开发过程，就必须向工作人员提供良好的软硬件环境，包括开发工具、开发设备、工作环境、管理制度。一般管理人员都会购买可以满足需要的软件开发工具和硬件平台，但是工作环境和管理制度往往被忽视。<br />
    站在人件的角度看，向工作人员提供更轻松自在、安静舒适的办公环境的公司员工往往比整天在狭小隔间中工作的公司员工，产生更高的工作效率。而那些拥有灵活人性化的管理制度的公司，比整天加班的公司更能留住高技术的人才。所以如何在有限资金中，规划一个合理的环境是很重要的事情。<br />
    到此为止，估算前的项目计划已经完成，我们已经形成一个工程开发框架。这是一个有界限的框架，虽然还不够精确，但足以进行估算的工作。<br />
 2、估算的对象<br />
    目前为止，一个较为准确的软件项目估算的定义是：在给定公差范围内，对于姚开发的软件规模的预测，以及对开发软件所需的工作量、成本和日历事件的预测。这个概念指出了一个事实，即估算是一种大约的估计，是将误差限定在一定范围内的估计。<br />
    估算主要包括以下几个重要内容：<br />
    ◆ 规模估算<br />
    软件估算首先要将整个工程的规模估算出来，才能进行下面的其他估算。规模，就是一个工程可量化的结果，是用具体数字来体现项目的描述。规模估算的信息来源是清晰、有界限的用户需求。<br />
    ◆ 工作量估算<br />
    这是对开发软件所需的工作时间的估算，它和进度估算一起决定了开发团队的规模和构建。通常以人时、人天、人月、人年的单位来衡量，这些不同单位之间可以进行合理的转换。<br />
    ◆ 进度估算<br />
    进度时项目自始至终之间的一个时间段。进度以不同阶段的里程碑作为标志。进度估算是针对以阶段为单位的估算，而不是对每一个细小任务都加以估算，对任务的适当分解很重要，分解得越细反而会不准确。因为任何一个软件工程，在各个方面都有与生俱来的不确定性。<br />
    ◆ 成本估算<br />
    包括人力、物质、有形的、无形的支出成本估算，其中以人力成本为主要部分。比较容易被忽视的使学习成本、软件培训成本、人员变动风险成本、开发延期成本等，一些潜在成本消耗。<br />
    3、估算的策略<br />
    在软件估算的众多方法中，存在着“自顶向下”和“自底向上”两种不同的策略，两种策略的出发点不同，适应于不同的场合使用。<br />
    3．1、自顶向下的策略<br />
    这是一种站在客户的角度来看问题的策略。它总是以客户的要求为最高目标，任何估算结果都必须符合这个目标。其工作方法是，由项目经理为主的一个核心小组根据客户的要求，确定一个时间期限，然后根据这个期限，将任务分解，将开发工作进行对号入座，以获得一个估算结果。<br />
    当然由于这完全是从客户要求出发的策略，而由于软件工程是一个综合项目，几乎没有哪个项目能完全保质保量按照预定工期完工，那么这样一个策略就缺少了许多客观性。但是由于这样完成的估算比较容易被客户、甚至被项目经理所接受，在许多公司我们看到这样一个并不科学的策略仍然被坚定地执行着。<br />
    3．2、自底向上的策略<br />
    与自顶向下的策略完全相反，自底向上的策略是一种从技术、人性的角度出发看问题的策略。在这样一个策略指引下，将项目充分讨论得到一个合理的任务分解。在将每个任务的难易程度，每个任务依照项目成员的特点、兴趣特长进行分配，并要求进行估算。最后将估算加起来就是项目的估算值。<br />
    显然自底向上的这种策略具有较为客观的特点，但是它的缺点就是这样一来项目工期就和客户的要求不一致了。而且由于其带来的不确定性，许多项目经理也不会采用这种方法。<br />
    4、估算的方法<br />
    显然估算是建立在客观实际上，对未来尽可能合理的一种预测。那么估算本身的不确定性，决定了它不可能是百分之百准确无误的。在项目刚开始时，人们对产品需求、技术、市场预期、人员素质等因素的了解还远远不够，在这种情况下人们很难作出准确的估计。但是依据某种方法进行估计显然比瞎猜好得多。<br />
    估算方法有很多，大致分为基于分解的技术和基于经验模型两大类。基于分解的技术的方法包括功能点估算法、LOC估算法、MARK II等；基于经验模型的方法包括IBM模型、普特南模型、COCOMO模型等。<br />
    4．1、FP功能点估算法<br />
    功能点估算法是一种在需求分析阶段基于系统功能的一种规模估计方法。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。这种方法的计算公式是：功能点=信息处理规模x技术复杂度。信息处理规模包括各种输入、输出、查询、内部逻辑文件数、外部接口文件数等等；技术复杂度包括性能复杂度、配置项目复杂度、数据通信复杂度、分布式处理复杂度、在线更新复杂度等等。<br />
    4．2、LOC估算法<br />
    这是一种从技术的角度来估算的方法总称，其中又包含许多方法。这类方法以代码（LOC）作为软件工作量的估算单位，在早期的系统开发中较为广泛使用。基于LOC的估算，又有点也有缺点。优点在于方便计算、容易监控、能反映程序员的思维能力；缺点在于代码行数的含糊不清，不能正确反映一项工作的难易程度以及代码的效率。因此在传统的LOC方法进行了许多改进。其中不断被使用，且不断演化的方法包括以下：<br />
    PERT功能点估算法：PERT对各个项目活动的完成时间按三种不同情况估计：一个产品的期望规模，一个最低可能估计，一个最高可能估计。用这三个估计用来得到一个产品期望规模和标准偏差的Pert 统计估计，Pert 估计可得到代码行的期望值和标准偏差SD。<br />
    类比估算法：类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目，通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度，因此，用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制，对历史项目的数据分析是可信赖的。<br />
    Delphi估算法：Delphi法是一种专家评估技术，在没有历史数据的情况下，这种方式适用于评定过去与将来，新技术与特定程序之间的差别。对于需要预测和深度分析的领域，依赖于专家的技术指导，可以获得较为客观的估算。通过专家们的互相讨论，还可以博取众长。<br />
    系统分解：将系统分成若干个易于用LOC估算的部分，将其各个估算结果累加就是LOC的总规模。其中关键是建立起SBS（系统分解结构），它描述了系统的不同组件。SBS还被使用在其他重要的地方，如系统设计、系统分析等。在进行分解的时候，可以采用自由讨论的形式，可以获得更合理的SBS构成。<br />
 4．3、IBM模型估算法<br />
    该模型是Watson和Felix在1977年发布的，是基于IBM联合系统分布负责的60个项目的总结而得到的模型。该模型是一个静态模型，而参考数据只有60多个项目，因此有很大的局限性。<br />
    4．4、COCOMO估算法<br />
    Boehm在其经典著作“软件工程经济学”(software engineering conomics)中，介绍了一种软件估算模型的层次体系， 称为COCOMO(构造性成本模型，COnstructive COst MOdel)，它代表了软件估算的一个综合经验模型。<br />
    COCOMO 模型是适用于三种类型的软件项目：(1)组织模式——较小的、简单的软件项目，有良好应用经验的小型项目组，针对一组不是很严格的需求开展工作(如，为一个热传输系统开发的热分析程序)；(2)半分离模式——一个中等的软件项目(在规模和复杂性上)，具有不同经验水平的项目组必须满足严格的及不严格的需求(如，一个事务处理系统，对于终端硬件和数据库软件有确定需求)；(3)嵌入模式——必须在一组严格的硬件、软件及操作约束下开发的软件项目(如，飞机的航空控制系统)。<br />
    4．5、软件方程式估算法<br />
    软件方程式是一个多变量模型，它假设在软件开发项目的整个生命周期中的一个特定的工作量分布。该模型是从4000 多个当代的软件项目中收集的生产率数据中导出的公式。初期的方程式较为复杂，通过，Putnam 和Myers的努力又提出一组简化的方程式。当然这种方法也是基于长期的参考数据的积累而得到的。<br />
    4．6、WBS估算法<br />
    这是一种基于WBS（工作任务分解）的方法，即先把项目任务进行合理的细分，分到可以确认的程度，如某种材料，某种设备，某一活动单元等。然后估算每个WBS要素的费用。采用这一方法的前提条件或先决步骤是：<br />
    对项目需求作出一个完整的限定。<br />
    制定完成任务所必需的逻辑步骤。<br />
    编制WBS表。<br />
    项目需求的完整限定应包括工作报告书、规格书以及总进度表。工作报告书是指实施项目所需的各项工作的叙述性说明，它应确认必须达到的目标。如果有资金等限制，该信息也应包括在内。规格书是对工时、设备以及材料标价的根据。它应该能使项目人员和用户了解工时、设备以及材料估价的依据。总进度表应明确项目实施的主要阶段和分界点，其中应包括长期定货、原型试验、设计评审会议以及其他任何关键的决策点。如果可能，用来指导成本估算的总进度表应含有项目开始和结束的日历时间。<br />
    除了以上介绍的几种方法外，还有一些其他的方法：类比估算、推测估算、Standard-component估算法、普特南估算法等。当然不同的方法适用于不同的具体环境，有些方法虽然很好但并不一定适合当前的任务。只有量体裁衣，具体问题具体分析，才能得到尽量合理的估算。<br />
    5、估算的戒律<br />
    记住：应该满足于事物的本性所能容许的精确度，当只能近似于真理时，不要去寻求绝对的准确??            ——亚里斯多德<br />
    对于任何一个项目经理，都知道要慎重估算，但是我们仍然会看到人力资源的浪费和财力资源的匮乏，在许多项目中存在。对于宝贵的资源，我们不是用得太多，就是根本不够用。因此，有以下前人总结出来的一些经验以供借鉴。<br />
    不要追求完美：就像没有人能预测出未来，如果还没有完成，就不要企图完美的结果。更何况估算的太精确，反而会失去灵活机动的空间。</p>
<p>    不要为满足预算而估算：如果这个项目的预算根本不能完成100%的任务，那么就不要让你的团队委曲求全。正确地反映客观现状，不仅可以争取应得的权利，而且是完成任务的前提。</p>
<p>    不要随意削减估算结果：有很多老板喜欢把项目经理递交的估算，不假思索地砍掉一部分。这是一种不负责任的做法，如果要削减一定要有理由。<br />
    客观地估算，不贪多不偷减：就像老板不能随便削减你的估算一样，你也同样不能在估算的时候，贪多或是偷减。贪多必然导致会浪费，偷减必然导致不足。这两个结果恐怕都不是一个合格的项目经理的作为。</p>
<p>    客观利用过去的经验：对于以往估算的经验，当然是宝贵的财富，但是如果财富用错了地方就会变成垃圾。在使用经验时，要注意现在和参考经验之间的差异。不要忘记，随着时间的推移，计算机领域技术的更新，许多观念都在发生着改变。<br />
    不要以客户目标作为估算的结果：客户是上帝，软件公司一定要尽力实现客户的需求。但我们要实现的是合理的目标，况且不能为了完成目标而去堆积数字，这样岂不是因果倒置了。<br />
    不要隐匿不确定的成本：软件开发中存在潜在风险，是很正常的事情。现在风险就会带来潜在的成本，如：突然一位程序员离职，导致工作进度路落后。我们不可能估算到任何一种可能发生的情况，但有责任把可能出现的一些关键环节列出来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1415.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD 8.0 releases Gnome2 简体中文安装全攻略(网上转摘）</title>
		<link>http://www.evanjiang.net.cn/archives/1413.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1413.html#comments</comments>
		<pubDate>Fri, 01 Jan 2010 01:52:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1413</guid>
		<description><![CDATA[<p>一、Mini+sys内核源码安装FreeBSD 8.0 releases后，
安装三个主要的基础包，为什么用包不编译，是因为编译时间太长
CODE:
setenv PACKAGEROOT ftp://ftp.freebsdchina.org
pkg_add -r xorg
pkg_add -r gnome2
rehash</p>
<p>上面三个要事觉得慢，可以在三个终端中同步进行。</p>
<p>二、中文环境安装设置</p>
<p>1.安装字体
CODE:
cd /usr/local/lib/X11/fonts/TTF
fetch http://雅黑字体存放路径/msyh.ttf
mkfontdir
mkfontscale
fc-cache  -fv</p>
<p>2.设置csh为中文环境
CODE:
echo &#8220;setenv PACKAGEROOT ftp://ftp.freebsdchina.org&#8221; ~/.cshrc
echo &#8220;setenv LANG zh_CN.UTF-8&#8243; ~/.cshrc
echo &#8220;setenv LC_CTYPE zh_CN.UTF-8&#8243; ~/.cshrc
echo &#8220;setenv LC_ALL zh_CN.UTF-8&#8243; ~/.cshrc
echo &#8220;setenv XMODIFIERS @im=fcitx&#8221; ~/.cshrc

3.设置
CODE:
echo &#8220;/usr/local/bin/gnome-session&#8221; > ~/.xinitrc
echo &#8220;exec fcitx &#038;&#8221; ~/.xinitrc</p>
<p>三、显卡驱动安装</p>
<p>FreeBSD nVidia官方没有提供驱动，只能用ports中的
不过俺看好像也是通过日本的nVidia站点中下载的&#8230;
这个俺还没弄懂为什么，不过俺也不需要懂，能用就成。</p>
<p>1.安装cvsup和更新ports
CODE:
pkg_add -r cvsup
sed &#8216;s:*default host=CHANGE_THIS.FreeBSD.org:*default host=cvsup.freebsdchina.org:&#8217; /usr/share/examples/cvsup/ports-supfile > /usr/ports-supfile
cvsup -g L 2 /usr/ports-supfile</p>
<p>2.通过ports安装nVida显卡驱动
此部分仅FreeBSD 8.0 releases版本安装nVidia驱动有效，未在其它环境测试。
编译nVida显卡驱动需要linux_base-f10，安装linux_base-f10必须先要让系统装载一次linux模块&#8230;.
CODE:
echo [...]]]></description>
			<content:encoded><![CDATA[<p>一、Mini+sys内核源码安装FreeBSD 8.0 releases后，<br />
安装三个主要的基础包，为什么用包不编译，是因为编译时间太长<br />
CODE:<br />
setenv PACKAGEROOT ftp://ftp.freebsdchina.org<br />
pkg_add -r xorg<br />
pkg_add -r gnome2<br />
rehash</p>
<p>上面三个要事觉得慢，可以在三个终端中同步进行。</p>
<p>二、中文环境安装设置</p>
<p>1.安装字体<br />
CODE:<br />
cd /usr/local/lib/X11/fonts/TTF<br />
fetch http://雅黑字体存放路径/msyh.ttf<br />
mkfontdir<br />
mkfontscale<br />
fc-cache  -fv</p>
<p>2.设置csh为中文环境<br />
CODE:<br />
echo &#8220;setenv PACKAGEROOT ftp://ftp.freebsdchina.org&#8221; ~/.cshrc<br />
echo &#8220;setenv LANG zh_CN.UTF-8&#8243; ~/.cshrc<br />
echo &#8220;setenv LC_CTYPE zh_CN.UTF-8&#8243; ~/.cshrc<br />
echo &#8220;setenv LC_ALL zh_CN.UTF-8&#8243; ~/.cshrc<br />
echo &#8220;setenv XMODIFIERS @im=fcitx&#8221; ~/.cshrc<br />
<span id="more-1413"></span><br />
3.设置<br />
CODE:<br />
echo &#8220;/usr/local/bin/gnome-session&#8221; > ~/.xinitrc<br />
echo &#8220;exec fcitx &#038;&#8221; ~/.xinitrc</p>
<p>三、显卡驱动安装</p>
<p>FreeBSD nVidia官方没有提供驱动，只能用ports中的<br />
不过俺看好像也是通过日本的nVidia站点中下载的&#8230;<br />
这个俺还没弄懂为什么，不过俺也不需要懂，能用就成。</p>
<p>1.安装cvsup和更新ports<br />
CODE:<br />
pkg_add -r cvsup<br />
sed &#8216;s:*default host=CHANGE_THIS.FreeBSD.org:*default host=cvsup.freebsdchina.org:&#8217; /usr/share/examples/cvsup/ports-supfile > /usr/ports-supfile<br />
cvsup -g L 2 /usr/ports-supfile</p>
<p>2.通过ports安装nVida显卡驱动<br />
此部分仅FreeBSD 8.0 releases版本安装nVidia驱动有效，未在其它环境测试。<br />
编译nVida显卡驱动需要linux_base-f10，安装linux_base-f10必须先要让系统装载一次linux模块&#8230;.<br />
CODE:<br />
echo &#8220;linux_enable=&#8221;YES&#8221;" >> /etc/rc.conf<br />
kldload linux<br />
pkg_add -r linux_base-f10</p>
<p>nVidia驱动按照自己的显卡型号，选择适应的驱动。驱动在/usr/ports/x11<br />
CODE:<br />
nvidia-driver-173/<br />
nvidia-driver-71/<br />
nvidia-driver-96/<br />
nvidia-driver/</p>
<p>俺是最新的9600GT所以直接选择了nvidia-driver<br />
CODE:<br />
cd /usr/ports/x11/nvidia-driver<br />
make install clean<br />
kldload nvidia</p>
<p>3.让FreeBSD在启动是装载nvidia驱动。<br />
CODE:<br />
echo &#8220;nvidia_load=&#8221;YES&#8221;" >> /boot/loader.conf</p>
<p>四、xorg.conf的配置和Gnome2的启动。<br />
有人说可以不要，但是我觉得我在里面的改动完全都在Gnome2中体现出来。<br />
Xorg -configure<br />
如果是ps/2鼠标<br />
CODE:<br />
cp ~/xorg.conf.new /etc/X11/xorg.conf<br />
echo &#8220;hald_enable=&#8221;YES&#8221;" >> /etc/rc.conf<br />
echo &#8220;dbus_enable=&#8221;YES&#8221;" >> /etc/rc.conf</p>
<p>如果是usb鼠标<br />
CODE:<br />
sed &#8216;s:/dev/sysmouse:/dev/usm0:&#8217; ~/xorg.conf.new > /etc/X11/xorg.conf<br />
echo &#8220;moused_type=&#8221;NO&#8221;" >> /etc/rc.conf<br />
echo &#8220;moused_enable=&#8221;NO&#8221;" >> /etc/rc.conf</p>
<p>startx<br />
如果nvidia进入Gnome2没有加载nvidia的驱动，就编辑/etc/X11/xorg.conf<br />
把<br />
CODE:<br />
Driver          &#8220;nv&#8221;</p>
<p>改为<br />
CODE:<br />
Driver          &#8220;nvidia&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1413.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>怎样做好IT项目成本预算</title>
		<link>http://www.evanjiang.net.cn/archives/1407.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1407.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 13:12:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[项目管理]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1407</guid>
		<description><![CDATA[<p>信息化项目是一个烧钱的游戏，这已经是很多企业管理者脑袋对于信息化项目的一个直观的印象。其实呢，信息化项目比起企业其他项目来说，还是小儿科，如一个新产品的研发或者新生产线的投入，都是动辄十万、百万起步的。那为什么偏偏会给信息化项目扣上这么一顶高帽子呢？根据笔者的了解，这其中有两方面的原因。一是这些信息化项目的投资，其回报是无形的，很难利用金钱来衡量信息化项目的投资回报；二是由于很多信息化项目管理人员没有成本预算的相关知识，所以，他们在做项目报告的时候，根本没有做相关的成本预算或者所作的预算跟最后的成本支出相差甚远，他们只知道没钱了就像老板要钱。长久下去，就在投资者心中形成了这么一个坏印象。
    没有一个好的成本预算，对于信息化项目的影响，是众所周知的，笔者在这里也就不浪费口舌了。下面笔者结合自己的工作经验，谈谈如何来做好信息化项目成本预算，以及减少预算的一些技巧。
    信息化项目的成本，大致可以分为两块，一是有形成本，如软件的授权费用、培训费用、二次开发费用等等；二是无形的成本，如项目所占用的时间、可能给现有生产经营带来的风险、转型过程中的损失等等。前者是可控的、可量化定义的；而后者的话，跟投资回报率一样，很难精确的统计与控制。下面笔者结合一个财物管理软件项目，来谈谈在项目成本预算中，该注意的地方。其实，很多信息化项目的成本预算都是大同小异的，可以相互借鉴。
    一、应用软件的授权费用。
    企业若要实施财务信息化管理项目的话，则第一笔庞大支出就是财务管理软件的授权费用。虽然说，现在市场上也有一些免费的开源软件，或者是一些盗版的财物管理软件，这些都不在这篇文章的讨论之内。
    我们CIO在实施财务信息化管理软件之前，第一件要做的就是打听这个财务管理软件的行情，看看财务管理软件的价格。在打听这个软件价格行情的时候，需要注意几个问题。

    一是买软件跟买衣服一样，价格往往跟品牌联系在一起的。一个著名的牌子，如国内的金蝶、用友的财务管理软件，国外的甲骨文等财物管理软件模块，在价格上还是有不小的差异。不过，有一点要明确的就是，软件的性能与质量，往往跟品牌没有直接的联系。这就好像衣服的质量跟品牌没有一一对应的关系一样。有时候，杂牌的软件，在企业中也能够开发结果；相反，品牌的软件反而在企业中无所作为。所以，CIO为了做成本预算，在打听市场行情的时候，笔者认为最好收集以下不同的品牌的价格行情，然后，再参考其他因素，最终来决定采用哪一款信息化管理软件。如笔者在做财务信息化软件的授权费用预算时，就把财务管理软件根据其知名度与价格的不同，分为一线品牌、二线品牌与三线品牌，然后把其价格填入进去。如此的话，决策者就能一目了然的知道，软件的授权费用。
    二是要区分软件授权费用中所包含的服务内容。不同的软件公司，其软件授权费用中所包含的服务是不同的。如一些大型的财务管理软件，如集团性的财务信息化管理项目，一般是把财务管理软件授权费用、财务管理软件项目实施费用、二次开发费用等锋是区分开来的；而有些财务管理软件，特别是一些小型的财务管理软件企业，一般报价的时候，是把财务管理软件授权费用与培训费用是合并在一起的，但是，其二次开发费用仍然按实际二次开发的数量分计算的。所以，在作信息化项目成本预算的时候，考虑软件授权费用时，需要了解这个软件授权费用中，到底包含哪些服务内容。这对于最后的成本预算准确与否，有着很重大的影响。
    对于软件授权成本的预计，笔者有如下建议：
    1、在做软件授权成本预算之前，先对自己企业的规模有个充分的认识。因为不同规模的软件，其价格有很大的差异。如你是集团企业的，则你若再去考察单个企业版的软件授权价格就没有多大的必要，而且，这也浪费时间。所以，在软件授权成本预计的时候，不要收集所有的相关软件，而只需要收集一些具有代表性的软件价格即可。
    2、为了后续分析比较的需要，最好有一个统一的报价体系。即当上面所说的，若报价中所包含的服务不一样的话，则我们CIO在做成本预算的时候，要进行相关的折换。一般是自己先形成一个统一的报价格式，然后把各个供应商的报价进行处理，要么合并、要么分解。因为只有统一的口径，才有对比的可能性。
    二、后台数据库的成本。
    现在的信息化管理软件，一般都需要有后台数据库的支持。所以，对于后台数据库的成本，也是不容小视的一块支出。
    现在不同的数据库，其软件授权成本也是不同的。甲骨文的Oracle数据库是数据库中的老大，其几个也是数一数二的；而微软的SQLServer相对来说，价格要稍微便宜一点；另外，还有一些免费的数据库，如MYSQL；若企业愿意承担风险的话，那也可以采用盗版的数据库版本，等等。
   [...]]]></description>
			<content:encoded><![CDATA[<p>信息化项目是一个烧钱的游戏，这已经是很多企业管理者脑袋对于信息化项目的一个直观的印象。其实呢，信息化项目比起企业其他项目来说，还是小儿科，如一个新产品的研发或者新生产线的投入，都是动辄十万、百万起步的。那为什么偏偏会给信息化项目扣上这么一顶高帽子呢？根据笔者的了解，这其中有两方面的原因。一是这些信息化项目的投资，其回报是无形的，很难利用金钱来衡量信息化项目的投资回报；二是由于很多信息化项目管理人员没有成本预算的相关知识，所以，他们在做项目报告的时候，根本没有做相关的成本预算或者所作的预算跟最后的成本支出相差甚远，他们只知道没钱了就像老板要钱。长久下去，就在投资者心中形成了这么一个坏印象。<br />
    没有一个好的成本预算，对于信息化项目的影响，是众所周知的，笔者在这里也就不浪费口舌了。下面笔者结合自己的工作经验，谈谈如何来做好信息化项目成本预算，以及减少预算的一些技巧。<br />
    信息化项目的成本，大致可以分为两块，一是有形成本，如软件的授权费用、培训费用、二次开发费用等等；二是无形的成本，如项目所占用的时间、可能给现有生产经营带来的风险、转型过程中的损失等等。前者是可控的、可量化定义的；而后者的话，跟投资回报率一样，很难精确的统计与控制。下面笔者结合一个财物管理软件项目，来谈谈在项目成本预算中，该注意的地方。其实，很多信息化项目的成本预算都是大同小异的，可以相互借鉴。<br />
    一、应用软件的授权费用。<br />
    企业若要实施财务信息化管理项目的话，则第一笔庞大支出就是财务管理软件的授权费用。虽然说，现在市场上也有一些免费的开源软件，或者是一些盗版的财物管理软件，这些都不在这篇文章的讨论之内。<br />
    我们CIO在实施财务信息化管理软件之前，第一件要做的就是打听这个财务管理软件的行情，看看财务管理软件的价格。在打听这个软件价格行情的时候，需要注意几个问题。<br />
<span id="more-1407"></span><br />
    一是买软件跟买衣服一样，价格往往跟品牌联系在一起的。一个著名的牌子，如国内的金蝶、用友的财务管理软件，国外的甲骨文等财物管理软件模块，在价格上还是有不小的差异。不过，有一点要明确的就是，软件的性能与质量，往往跟品牌没有直接的联系。这就好像衣服的质量跟品牌没有一一对应的关系一样。有时候，杂牌的软件，在企业中也能够开发结果；相反，品牌的软件反而在企业中无所作为。所以，CIO为了做成本预算，在打听市场行情的时候，笔者认为最好收集以下不同的品牌的价格行情，然后，再参考其他因素，最终来决定采用哪一款信息化管理软件。如笔者在做财务信息化软件的授权费用预算时，就把财务管理软件根据其知名度与价格的不同，分为一线品牌、二线品牌与三线品牌，然后把其价格填入进去。如此的话，决策者就能一目了然的知道，软件的授权费用。<br />
    二是要区分软件授权费用中所包含的服务内容。不同的软件公司，其软件授权费用中所包含的服务是不同的。如一些大型的财务管理软件，如集团性的财务信息化管理项目，一般是把财务管理软件授权费用、财务管理软件项目实施费用、二次开发费用等锋是区分开来的；而有些财务管理软件，特别是一些小型的财务管理软件企业，一般报价的时候，是把财务管理软件授权费用与培训费用是合并在一起的，但是，其二次开发费用仍然按实际二次开发的数量分计算的。所以，在作信息化项目成本预算的时候，考虑软件授权费用时，需要了解这个软件授权费用中，到底包含哪些服务内容。这对于最后的成本预算准确与否，有着很重大的影响。<br />
    对于软件授权成本的预计，笔者有如下建议：<br />
    1、在做软件授权成本预算之前，先对自己企业的规模有个充分的认识。因为不同规模的软件，其价格有很大的差异。如你是集团企业的，则你若再去考察单个企业版的软件授权价格就没有多大的必要，而且，这也浪费时间。所以，在软件授权成本预计的时候，不要收集所有的相关软件，而只需要收集一些具有代表性的软件价格即可。<br />
    2、为了后续分析比较的需要，最好有一个统一的报价体系。即当上面所说的，若报价中所包含的服务不一样的话，则我们CIO在做成本预算的时候，要进行相关的折换。一般是自己先形成一个统一的报价格式，然后把各个供应商的报价进行处理，要么合并、要么分解。因为只有统一的口径，才有对比的可能性。<br />
    二、后台数据库的成本。<br />
    现在的信息化管理软件，一般都需要有后台数据库的支持。所以，对于后台数据库的成本，也是不容小视的一块支出。<br />
    现在不同的数据库，其软件授权成本也是不同的。甲骨文的Oracle数据库是数据库中的老大，其几个也是数一数二的；而微软的SQLServer相对来说，价格要稍微便宜一点；另外，还有一些免费的数据库，如MYSQL；若企业愿意承担风险的话，那也可以采用盗版的数据库版本，等等。<br />
    一般来说，CIO在选择数据库软件的时候，不像选择应用软件那样的自由，而是会受到一些因素的限制，如：<br />
    可能受到来自前台应用软件的限制。一般来说，一个数据库应用软件其不可能支持所有的数据库系统，出于各种目的，有些是技术上的限制，而有些上商业运营方面的限制，其一般都只是支持几个特定的数据库系统。如你若采用甲骨文的应用软件产品，则它们就推荐你采用他们的数据库版本；采用微软的ERP软件，他们就会推荐你采用微软的数据库系统，等等。这是捆绑销售的一种碗转的形式。<br />
    另外一种就是数据库应用的限制。不同版本的数据库，在性能上还是有差异的。所以，企业要根据不同的性能，采取不同的数据库。若需要进行大量的分析运算或者人工智能的话，可能MYSQL等开源数据库可能不能胜任，要么是无法完成任务，要么就是执行时间过长。而若企业只是一些简单的应用，不涉及到人工智能或者大量数据运算的话，若采用Oracle的等大型的数据库的话，则就显得有点浪费，毕竟企业需要为此付出比较昂贵的代价。<br />
    所以，在数据库成本的预算上，笔者认为需要注意以下几点：<br />
    1、要考虑在应用软件销售的同时，有没有数据库版本的限制。若我们看中的应用软件，其只支持某款特殊的数据库管理系统，那么我们只需要找对应的数据库版本的价格即可。不过，往往这些数据库管理软家的价格是不菲的。因为要不是这里有很大的商业价值，软件公司就不会对数据库软件进行捆绑销售。<br />
    2、若企业自己有比较多的选择余地的话，那笔者个人认为，一些小型的数据库管理软件，甚至是免费的开源管理软件，基本上就可以满足企业的日常办公需求。而没有必要花费比较高的代价去采用那些昂贵的商业数据库系统。毕竟信息化管理效果，跟采用什么样的数据库，两者之间没有多大的联系。也就是说，软件的功能基本上是有前台的程序所决定的，跟后台的数据库没有大大的联系。而且，数据库对于用户来说，都是透明的，他们看到到数据库的存在。对于，在数据库选择的时候，不用像前台应用软件那样，考虑数据库软件的操作性以及页面的美观程度，等等。笔者现在很多信息化管理项目，都采用了开源的数据库系统，都运行的不错。所以，或许在数据库版本的选择上，还可以为信息化管理项目省下一笔不小的开支。<br />
    三、项目的实施费用。<br />
    项目的实施费用在项目的实施成本中，也占据不少的比例。所以，在成本预算中，对其也要进行充分的重视。一般来说，对其进行预算时，需要注意如下几点。<br />
    1、实施费用所包含的内容。有时候，实施费用不仅包括培训的费用，还需要包含实施顾问的住宿费用与来回的车费等等。所以，这在实施费用的预算中，最好能够列清楚。如此的话，对于后续实施费用的支出才会有所控制。<br />
    2、实施费用一般可以有折扣。根据笔者跟软件公司打交道的经验，软件的实施费用往往是可以打折扣的。如有的按天来计费的软件实施公司，会买几送几的商业折扣；而有的按模块进行收费的企业，也可以在整个实施费用的基础上，大个几折，有的甚至可以打到5折。所以，在实施费用这一块的话，CIO要先去市场上打听好行情，如此的话，才能够得出一个比较精确的成本预算。若光听软件公司的一面之词，则往往这个预算支出比实际支出要来得大。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1407.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>软件项目管理FollowMe：如何估算项目</title>
		<link>http://www.evanjiang.net.cn/archives/1405.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1405.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 03:29:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[项目管理]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1405</guid>
		<description><![CDATA[<p> 一个成功的软件项目首先要有一个好的起点，也就是一个合理的项目计划；一个好的项目计划，离不开一个准确的、可信的、客观的项目估算数据作为基础。如何提高估算的准确性，如何利用项目估算的数据来制定项目计划，本文就将带领大家学习、理解软件项目估算的一些最佳实践。
    为什么要对项目进行估算
    对于庞大的、多变的软件项目来说有着太多的不确定性。之所以要先制定项目计划，目的就是为了让项目更加可控。如果项目的计划缺乏数据进行支持，或者根本不进行估算，只凭项目管理人员的经验进行管理，那么项目最终就会变成软件项目常见的“三拍”现象：“首先公司领导拍拍某个项目经理的脑袋，说你来负责这个项目；项目经理拍拍胸脯说没问题；最后项目失败的时候项目经理就只能拍拍屁股走人”。
    当然，这只是个玩笑。不过由此可见项目估算是项目管理人员深入了解项目的第一步，做到“知己知彼，才能百战不殆”。
    常用的软件估算方法
    软件可以通过主观和客观两种方法对其进行估算。
    主观的估算方法可以通过召集项目团队成员，或者邀请各方面的专家，共同对某个项目的属性进行评估。参与评估的每个人都要单独进行估算，如果发现大家对某个项目属性估算的结果存在较大偏差，那么就需要做进一步的讨论，直到取得共识为止。对个别特殊属性进行主观估算时，一定要有直接干系人的参与，例如：对某个文档工作量进行估算时，最好该文档的负责人参与估算，因为他才是最终的执行人。
    客观的估算方法是利用公司提供的各种度量数据进行估算，例如：组织级的生产率，或者其他项目的度量数据。本文主要讲解项目管理人员如何通过客观的方法对项目进行估算。
    项目的哪些属性可以进行估算
    软件项目的属性有很多，建议至少以下属性要在项目计划时对其进行估算：
    1、 项目规模
    2、 项目工作量
    3、 项目所需资源
   [...]]]></description>
			<content:encoded><![CDATA[<p> 一个成功的软件项目首先要有一个好的起点，也就是一个合理的项目计划；一个好的项目计划，离不开一个准确的、可信的、客观的项目估算数据作为基础。如何提高估算的准确性，如何利用项目估算的数据来制定项目计划，本文就将带领大家学习、理解软件项目估算的一些最佳实践。<br />
    为什么要对项目进行估算<br />
    对于庞大的、多变的软件项目来说有着太多的不确定性。之所以要先制定项目计划，目的就是为了让项目更加可控。如果项目的计划缺乏数据进行支持，或者根本不进行估算，只凭项目管理人员的经验进行管理，那么项目最终就会变成软件项目常见的“三拍”现象：“首先公司领导拍拍某个项目经理的脑袋，说你来负责这个项目；项目经理拍拍胸脯说没问题；最后项目失败的时候项目经理就只能拍拍屁股走人”。<br />
    当然，这只是个玩笑。不过由此可见项目估算是项目管理人员深入了解项目的第一步，做到“知己知彼，才能百战不殆”。<br />
    常用的软件估算方法<br />
    软件可以通过主观和客观两种方法对其进行估算。<br />
    主观的估算方法可以通过召集项目团队成员，或者邀请各方面的专家，共同对某个项目的属性进行评估。参与评估的每个人都要单独进行估算，如果发现大家对某个项目属性估算的结果存在较大偏差，那么就需要做进一步的讨论，直到取得共识为止。对个别特殊属性进行主观估算时，一定要有直接干系人的参与，例如：对某个文档工作量进行估算时，最好该文档的负责人参与估算，因为他才是最终的执行人。<br />
    客观的估算方法是利用公司提供的各种度量数据进行估算，例如：组织级的生产率，或者其他项目的度量数据。本文主要讲解项目管理人员如何通过客观的方法对项目进行估算。<br />
    项目的哪些属性可以进行估算<br />
    软件项目的属性有很多，建议至少以下属性要在项目计划时对其进行估算：<br />
    1、 项目规模<br />
    2、 项目工作量<br />
    3、 项目所需资源<br />
    4、 项目各阶段工作量<br />
    5、 项目成本<br />
<span id="more-1405"></span><br />
> 如何对项目规模进行估算<br />
    对项目规模进行估算是为了将项目的范围进行量化，项目规模的估算是整个软件估算中最核心、最基础的环节，也是整个估算的第一步。<br />
    软件项目的规模可以使用功能点估算法和代码行估算法两种方式，但是作为项目初期阶段，建议使用功能点法进行估算会比较合理。具体的功能点估算方法可以参考我之前在ITPUB上发表的相关文章。<br />
    > 如何对项目工作量进行估算<br />
    在项目规模的基础上，可以利用组织级生产率得到项目总的工作量。例如：一个公司组织级生产率如下图所示，在2008年中期时，该组织每开发一个功能点需要花费1.5个人/天的工作量。假如该公司某项目有200个功能点，那么该项目的工作量就可以通过以下公式计算出来：<br />
    项目工作量= 200 * 1.5 = 300 人/天</p>
<p>    > 如何对项目所需资源、各阶段工作量进行估算<br />
    对这些项目属性进行估算的主要方法是通过与组织级度量库中的历史数据进行对比，找到相同规模的历史项目，参考其数据，根据本项目的特点对相关属性进行估算。假如本项目与公司之前的某项目A规模大体相当，项目A历史数据如表1和表2所示：<br />
    表1-项目A使用资源数<br />
人力资源估算<br />
设计人员	2人<br />
需求人员	1人<br />
开发人员	4人<br />
测试人员	3人<br />
    表2-项目A生命周期各阶段工作量分布<br />
瀑布模型生命周期各阶段<br />
立项阶段	2.00%<br />
需求阶段	5.00%<br />
计划阶段	6.00%<br />
设计阶段	22.00%<br />
开发阶段	22.00%<br />
系统测试阶段	25.00%<br />
用户验收阶段	11.00%<br />
结项阶段	7.00%<br />
     两个项目的规模相当，这是我们进行估算的依据，根据之前对项目总工作量的估算（300人/天），那么就可以得到本项目各个阶段的工作量分布，如表3所示：<br />
    表3-本项目各生命周期工作量分布<br />
瀑布模型生命周期各阶段	人/天<br />
立项阶段	2.00%	6<br />
 需求阶段	5.00%	15<br />
计划阶段	6.00%	18<br />
设计阶段	22.00%	66<br />
开发阶段	22.00%	66<br />
系统测试阶段	25.00%	75<br />
用户验收阶段	11.00%	33<br />
结项阶段	7.00%	21<br />
      > 如何对项目工期进行估算<br />
    假设本项目采用瀑布式的开发模型，并且所需资源与组织级度量库中的历史项目A相同，根据表3对各个生命周期阶段工作量的估算，以及表1对各种资源的估算，那么通过表4的计算就可以得到完成本项目所需要的时间。<br />
    假如每月按照21个工作日进行计算，那么本项目估计5.82个月后可以结束。<br />
    表4-对项目周期的估算<br />
生命周期各阶段生命周期各阶段<br />
工时数人/天<br />
参与角色	参与人数	天数<br />
立项阶段	6	PM	1	6<br />
需求阶段	15	需求人员	1	15<br />
计划阶段	18	PM	1	18<br />
设计阶段	66	设计人员	2	33<br />
 开发阶段	66	开发人员	4	16.5<br />
系统测试阶段	75	测试人员	3	 25<br />
用户验收阶段	33	测试人员、需求人员、PM	5	6.6<br />
结项阶段	21	全体成员	10	2.1<br />
项目周期（天）	122.2<br />
    > 如何估算项目的成本<br />
    假如本项目所使用的资源与项目A相同，那么就可以参考组织度量库中2008年各种资源的平均成本，如下图所示：</p>
<p>    经过对项目周期的估算，可以得知本项目大概需要5.82个月的时间。基于以上数据就可以通过表5来对项目的成本进行估算，其结果如下所示：<br />
    表5-本项目成本估算<br />
工种	人数	参考数据（元/月）	估算成本<br />
设计人员	2	8000	16000<br />
需求人员	1	5000	5000<br />
开发人员	4	6000	 24000<br />
测试人员	3	4500	13500<br />
项目经理	1	9000	9000<br />
每月成本（元）	67500<br />
项目为期5.82个月，总成本（元）	39，2850<br />
    至此，对项目的规模、成本、工作量、资源和工期的估算方法和顺序就介绍完了，通过本文的介绍，希望广大项目管理人员可以掌握项目估算的技巧。对于使用客观方法进行估算时，组织级的度量数据是关键核心点。另外，软件项目始终伴随着各种各样的变更，这正所谓“变化是永恒的，不变是短暂的”。 作为一个成熟的项目管理者应该勇于面对变化，在每次重大变化后对项目进行重新估算是十分必要的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1405.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何认识软件项目估算</title>
		<link>http://www.evanjiang.net.cn/archives/1401.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1401.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 03:25:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术感悟]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1401</guid>
		<description><![CDATA[<p>虽然估算是一门科学，更是一门艺术，这个重要的活动不能以随意的方式来进行……因为估算是所有其他项目计划活动的基础，而项目计划又提供了通往成功的软件工程的道路图，所以，没有它我们就会搭错车。——Roger S. Pressman 《软件工程——实践者的研究方法》
    1、估算前的规划
    当我们的办公室内堆满了杂乱无章的文件时，恐怕无法知道对于我们真正有用的文件在哪里，当我们的软件相目中收集了各种需求、意见、问题时，我们也很难从中估算出整个项目的规模、工作量以及成本。因此，在估算之前我们首先要对众多信息进行整理、归类分析，从而得到一个条理清晰的项目计划，在这个计划提供的框架内，才可能开始正确的估算。精心的规划是任何一个软件开发项目成功与否的关键，有了规划就有如成竹在胸，之后无论风云变幻，都有应对入流的方法。当然只有正确的规划，才能给软件开发指引正确的方向。
    软件项目规划的重点是对人员角色、任务进度、经费、设备资源、工作成果等等做出合适的安排，制定出一些计划（包括高层的和细节的），使大家按照计划行事，最终顺利地达到预定的目标。
    1．1、规划的第一步：确定软件范围
    确定软件范围，就是确定目标软件的数据和控制、功能、性能、约束、接口以及可靠性。这项工作和需求分析是很类似的，如果之前已经达成需求分析规约，那么可以直接从《需求分析说明书》中把有用的部分拿来使用。如果还没有开始需求分析，关于确定软件范围的方法方面，我们可以采用许多需求分析技术（如需求诱导），从客户那里得到一个具体的软件范围。当然如果是一次全新的软件边界探索，就应当考虑软件本身可行性问题，包括团队是否具备在技术、财务、时间、资源上游可靠的保障，软件本身在市场上是否有可靠的竞争优势 ，等等。

    获得软件范围，最直接最可靠的来源就是用户对软件的需求描述。例如，在开发一个C/S架构的铁路供电段数据上报系统中，客户向我们提供了以下的目标软件需求描述：
    在供电站总部每天结束前要审核下属节点操作员（30~40个）的供电安全数据报表，要求每个节点必须在下午5：30~6：00之间上传数据。总部系统通过自动分析，整理出整个区内的安全形势报表，并自动反馈到每个节点。各个节点之间通过调制解调器拨号（MODEM）用内部电话线相连，每个节点电脑主机配备一个MODEM。上传数据为制式报表出了制式信息外，系统自动附加操作员姓名、上报时间、上报节点名称。信息一旦上传，节点端就不可以对已提交信息进行修改、删除，只能阅读、查询。节点间数据互相隔离，只有总部才具备对各个节点数据的管理权限，但是对于归档数据（一旦审核完毕的数据，就进行归档）总部不具备删改的权限。系统设置数据库管理员，独立于审核权限，其职责是对历史数据的清理维护。
    通过上面的描述，我们通过提炼和简化，得到软件的一下功能：
    ◆ 节点数据录入、查询、上传
    ◆ 总部数据汇总、查询、反馈
    ◆ 总部与节点的互联
    [...]]]></description>
			<content:encoded><![CDATA[<p>虽然估算是一门科学，更是一门艺术，这个重要的活动不能以随意的方式来进行……因为估算是所有其他项目计划活动的基础，而项目计划又提供了通往成功的软件工程的道路图，所以，没有它我们就会搭错车。——Roger S. Pressman 《软件工程——实践者的研究方法》<br />
    1、估算前的规划<br />
    当我们的办公室内堆满了杂乱无章的文件时，恐怕无法知道对于我们真正有用的文件在哪里，当我们的软件相目中收集了各种需求、意见、问题时，我们也很难从中估算出整个项目的规模、工作量以及成本。因此，在估算之前我们首先要对众多信息进行整理、归类分析，从而得到一个条理清晰的项目计划，在这个计划提供的框架内，才可能开始正确的估算。精心的规划是任何一个软件开发项目成功与否的关键，有了规划就有如成竹在胸，之后无论风云变幻，都有应对入流的方法。当然只有正确的规划，才能给软件开发指引正确的方向。<br />
    软件项目规划的重点是对人员角色、任务进度、经费、设备资源、工作成果等等做出合适的安排，制定出一些计划（包括高层的和细节的），使大家按照计划行事，最终顺利地达到预定的目标。<br />
    1．1、规划的第一步：确定软件范围<br />
    确定软件范围，就是确定目标软件的数据和控制、功能、性能、约束、接口以及可靠性。这项工作和需求分析是很类似的，如果之前已经达成需求分析规约，那么可以直接从《需求分析说明书》中把有用的部分拿来使用。如果还没有开始需求分析，关于确定软件范围的方法方面，我们可以采用许多需求分析技术（如需求诱导），从客户那里得到一个具体的软件范围。当然如果是一次全新的软件边界探索，就应当考虑软件本身可行性问题，包括团队是否具备在技术、财务、时间、资源上游可靠的保障，软件本身在市场上是否有可靠的竞争优势 ，等等。<br />
<span id="more-1401"></span><br />
    获得软件范围，最直接最可靠的来源就是用户对软件的需求描述。例如，在开发一个C/S架构的铁路供电段数据上报系统中，客户向我们提供了以下的目标软件需求描述：<br />
    在供电站总部每天结束前要审核下属节点操作员（30~40个）的供电安全数据报表，要求每个节点必须在下午5：30~6：00之间上传数据。总部系统通过自动分析，整理出整个区内的安全形势报表，并自动反馈到每个节点。各个节点之间通过调制解调器拨号（MODEM）用内部电话线相连，每个节点电脑主机配备一个MODEM。上传数据为制式报表出了制式信息外，系统自动附加操作员姓名、上报时间、上报节点名称。信息一旦上传，节点端就不可以对已提交信息进行修改、删除，只能阅读、查询。节点间数据互相隔离，只有总部才具备对各个节点数据的管理权限，但是对于归档数据（一旦审核完毕的数据，就进行归档）总部不具备删改的权限。系统设置数据库管理员，独立于审核权限，其职责是对历史数据的清理维护。<br />
    通过上面的描述，我们通过提炼和简化，得到软件的一下功能：<br />
    ◆ 节点数据录入、查询、上传<br />
    ◆ 总部数据汇总、查询、反馈<br />
    ◆ 总部与节点的互联<br />
    ◆ 总部数据库存储<br />
    ◆ 节点数据的本地存储<br />
    在本例中，软件的性能是潜在的。客户虽然没有明确提出，但是由于数据本身的重要性，要求系统在数据上传、反馈、存储过程中安全可靠。客户要求使用MODEM进行拨号连接，那么鉴于MODEM连接过程中可能会出现，由于拨号断开而道导致的数据丢失，在节点本地存放一份数据副本是有必要的。由于系统要求每天上传数据，总部数据库应当是7X24小时不间断服务的，再加上目前总部只有该系统运行接受数据任务，各节点数据量并不大，那么在建议用户选择服务器时，应当考虑性能稳定可靠，但并不一定要购买大容量磁盘阵列和高性能双CPU主机。由于每天上传数据接近下班时间，那么总部汇总数据应当是自动进行的，一旦分析发现重大问题，可以通过与外部网络的设置，向值班人员发送手机讯息、E-MAIL或其他警示。由于不同人员对于上报数据的权限不同，对于系统用户实行分级管理。不同级别的用户，具有对数据的不同管理权力，从而保证在软件使用过程中不发生混乱。<br />
    那么现在一个较为清晰的软件模型已经构造完毕，接下来我们需要进入计划的第二步：确定工作所需资源。<br />
    1．2、规划的第二步：确定工作所需资源<br />
    软件工作所需资源包括：工作环境（软硬件环境、办公室环境）、可复用软件资源（构件、中间件）、人力资源（包括不同各种角色的人员：分析师、设计师、测试师、程序员、项目经理……）。这三种资源的组成比例，可以看作一个金字塔的模式，最上面是人力资源、其次是可复用软件资源、最下面是工作环境。最上面的是组成比例最小的，最下面的是组成比例最大的部分。<br />
    ■ 人力资源<br />
    一个项目到底需要多少种职务的人员构成、多少数量的人员总量，再能成为最有创造力的团队呢？这恐怕是最让项目经理头疼的事情了。任何一个软件工程，都必须在确定软件的工作量之后，才能清楚地知道究竟需要多少人力才能以最小成本和最高效率完成任务。在这之前，不能盲目地进行人力扩充，而且绝对不能为了给公司抬高门面，盲目招收高学历。</p>
<p>    ■ 可复用软件资源<br />
    这是一个容易在计划阶段被忽视的重要资源，很多人总是进入编码阶段才发现可复用资源的价值和存在。经过长期的项目积累或是购买，公司的软件资源库中或许已经积累了大量的可复用资源，但在当前任务中，只能选择有价值的资源。根据不同的应用、时间、来源，可复用软件资源被分为以下几种：<br />
    可直接使用的构件：已有的，能够从第三方厂商获得或已经在以前的项目中开发过的软件。这些构件已经经过验证及确认且可以直接用在当前的项目中。<br />
    具有完全经验的构件：已有的为以前类似于当前要开发的项目建立的规约、设计、代码、或测试数据。当前软件项目组的成员在这些构件所代表的应用领域中具有丰富的经验。因此，对于这类构件进行所需的修改其风险相对较小。<br />
    具有部分经验的构件：已有的为以前与当前要开发的项目相关的项目建立的规约、设计、代码、或测试数据，但需做实质上的修改。当前软件项目组的成员在这些构件所代表的应用领域中仅有有限的经验，因此，对于这类构件进行所需的修改会有相当程度的风险。<br />
    新构件：软件项目组为满足当前项目的特定需要而必须专门开发的软件构件。<br />
    在采用构件的时候，应当以低成本、低风险为使用前提。如果任何一个漂亮的构件的应用，可能会带来潜在出错的风险或者必须经过复杂修改或者效率低下时，我们都应当毫不犹豫地把它抛弃。我们只采用那些能够满足项目的需要且可直接使用的构件，或者具有完全经验的构件，或者经过稍微修改便可使用的构件。<br />
    ■ 环境资源<br />
    “工欲善其事，必先利其器”，要得到高效的开发过程，就必须向工作人员提供良好的软硬件环境，包括开发工具、开发设备、工作环境、管理制度。一般管理人员都会购买可以满足需要的软件开发工具和硬件平台，但是工作环境和管理制度往往被忽视。<br />
    站在人件的角度看，向工作人员提供更轻松自在、安静舒适的办公环境的公司员工往往比整天在狭小隔间中工作的公司员工，产生更高的工作效率。而那些拥有灵活人性化的管理制度的公司，比整天加班的公司更能留住高技术的人才。所以如何在有限资金中，规划一个合理的环境是很重要的事情。<br />
    到此为止，估算前的项目计划已经完成，我们已经形成一个工程开发框架。这是一个有界限的框架，虽然还不够精确，但足以进行估算的工作。<br />
  4．3、IBM模型估算法<br />
    该模型是Watson和Felix在1977年发布的，是基于IBM联合系统分布负责的60个项目的总结而得到的模型。该模型是一个静态模型，而参考数据只有60多个项目，因此有很大的局限性。<br />
    4．4、COCOMO估算法<br />
    Boehm在其经典著作“软件工程经济学”(software engineering conomics)中，介绍了一种软件估算模型的层次体系， 称为COCOMO(构造性成本模型，COnstructive COst MOdel)，它代表了软件估算的一个综合经验模型。<br />
    COCOMO 模型是适用于三种类型的软件项目：(1)组织模式——较小的、简单的软件项目，有良好应用经验的小型项目组，针对一组不是很严格的需求开展工作(如，为一个热传输系统开发的热分析程序)；(2)半分离模式——一个中等的软件项目(在规模和复杂性上)，具有不同经验水平的项目组必须满足严格的及不严格的需求(如，一个事务处理系统，对于终端硬件和数据库软件有确定需求)；(3)嵌入模式——必须在一组严格的硬件、软件及操作约束下开发的软件项目(如，飞机的航空控制系统)。<br />
    4．5、软件方程式估算法<br />
    软件方程式是一个多变量模型，它假设在软件开发项目的整个生命周期中的一个特定的工作量分布。该模型是从4000 多个当代的软件项目中收集的生产率数据中导出的公式。初期的方程式较为复杂，通过，Putnam 和Myers的努力又提出一组简化的方程式。当然这种方法也是基于长期的参考数据的积累而得到的。<br />
    4．6、WBS估算法<br />
    这是一种基于WBS（工作任务分解）的方法，即先把项目任务进行合理的细分，分到可以确认的程度，如某种材料，某种设备，某一活动单元等。然后估算每个WBS要素的费用。采用这一方法的前提条件或先决步骤是：<br />
    对项目需求作出一个完整的限定。<br />
    制定完成任务所必需的逻辑步骤。<br />
    编制WBS表。<br />
    项目需求的完整限定应包括工作报告书、规格书以及总进度表。工作报告书是指实施项目所需的各项工作的叙述性说明，它应确认必须达到的目标。如果有资金等限制，该信息也应包括在内。规格书是对工时、设备以及材料标价的根据。它应该能使项目人员和用户了解工时、设备以及材料估价的依据。总进度表应明确项目实施的主要阶段和分界点，其中应包括长期定货、原型试验、设计评审会议以及其他任何关键的决策点。如果可能，用来指导成本估算的总进度表应含有项目开始和结束的日历时间。<br />
    除了以上介绍的几种方法外，还有一些其他的方法：类比估算、推测估算、Standard-component估算法、普特南估算法等。当然不同的方法适用于不同的具体环境，有些方法虽然很好但并不一定适合当前的任务。只有量体裁衣，具体问题具体分析，才能得到尽量合理的估算。<br />
    5、估算的戒律<br />
    记住：应该满足于事物的本性所能容许的精确度，当只能近似于真理时，不要去寻求绝对的准确??            ——亚里斯多德<br />
    对于任何一个项目经理，都知道要慎重估算，但是我们仍然会看到人力资源的浪费和财力资源的匮乏，在许多项目中存在。对于宝贵的资源，我们不是用得太多，就是根本不够用。因此，有以下前人总结出来的一些经验以供借鉴。<br />
    不要追求完美：就像没有人能预测出未来，如果还没有完成，就不要企图完美的结果。更何况估算的太精确，反而会失去灵活机动的空间。</p>
<p>    不要为满足预算而估算：如果这个项目的预算根本不能完成100%的任务，那么就不要让你的团队委曲求全。正确地反映客观现状，不仅可以争取应得的权利，而且是完成任务的前提。</p>
<p>    不要随意削减估算结果：有很多老板喜欢把项目经理递交的估算，不假思索地砍掉一部分。这是一种不负责任的做法，如果要削减一定要有理由。<br />
    客观地估算，不贪多不偷减：就像老板不能随便削减你的估算一样，你也同样不能在估算的时候，贪多或是偷减。贪多必然导致会浪费，偷减必然导致不足。这两个结果恐怕都不是一个合格的项目经理的作为。</p>
<p>    客观利用过去的经验：对于以往估算的经验，当然是宝贵的财富，但是如果财富用错了地方就会变成垃圾。在使用经验时，要注意现在和参考经验之间的差异。不要忘记，随着时间的推移，计算机领域技术的更新，许多观念都在发生着改变。<br />
    不要以客户目标作为估算的结果：客户是上帝，软件公司一定要尽力实现客户的需求。但我们要实现的是合理的目标，况且不能为了完成目标而去堆积数字，这样岂不是因果倒置了。<br />
    不要隐匿不确定的成本：软件开发中存在潜在风险，是很正常的事情。现在风险就会带来潜在的成本，如：突然一位程序员离职，导致工作进度路落后。我们不可能估算到任何一种可能发生的情况，但有责任把可能出现的一些关键环节列出来。<br />
 2、估算的对象<br />
    目前为止，一个较为准确的软件项目估算的定义是：在给定公差范围内，对于姚开发的软件规模的预测，以及对开发软件所需的工作量、成本和日历事件的预测。这个概念指出了一个事实，即估算是一种大约的估计，是将误差限定在一定范围内的估计。<br />
    估算主要包括以下几个重要内容：<br />
    ◆ 规模估算<br />
    软件估算首先要将整个工程的规模估算出来，才能进行下面的其他估算。规模，就是一个工程可量化的结果，是用具体数字来体现项目的描述。规模估算的信息来源是清晰、有界限的用户需求。<br />
    ◆ 工作量估算<br />
    这是对开发软件所需的工作时间的估算，它和进度估算一起决定了开发团队的规模和构建。通常以人时、人天、人月、人年的单位来衡量，这些不同单位之间可以进行合理的转换。<br />
    ◆ 进度估算<br />
    进度时项目自始至终之间的一个时间段。进度以不同阶段的里程碑作为标志。进度估算是针对以阶段为单位的估算，而不是对每一个细小任务都加以估算，对任务的适当分解很重要，分解得越细反而会不准确。因为任何一个软件工程，在各个方面都有与生俱来的不确定性。<br />
    ◆ 成本估算<br />
    包括人力、物质、有形的、无形的支出成本估算，其中以人力成本为主要部分。比较容易被忽视的使学习成本、软件培训成本、人员变动风险成本、开发延期成本等，一些潜在成本消耗。<br />
    3、估算的策略<br />
    在软件估算的众多方法中，存在着“自顶向下”和“自底向上”两种不同的策略，两种策略的出发点不同，适应于不同的场合使用。<br />
    3．1、自顶向下的策略<br />
    这是一种站在客户的角度来看问题的策略。它总是以客户的要求为最高目标，任何估算结果都必须符合这个目标。其工作方法是，由项目经理为主的一个核心小组根据客户的要求，确定一个时间期限，然后根据这个期限，将任务分解，将开发工作进行对号入座，以获得一个估算结果。<br />
    当然由于这完全是从客户要求出发的策略，而由于软件工程是一个综合项目，几乎没有哪个项目能完全保质保量按照预定工期完工，那么这样一个策略就缺少了许多客观性。但是由于这样完成的估算比较容易被客户、甚至被项目经理所接受，在许多公司我们看到这样一个并不科学的策略仍然被坚定地执行着。<br />
    3．2、自底向上的策略<br />
    与自顶向下的策略完全相反，自底向上的策略是一种从技术、人性的角度出发看问题的策略。在这样一个策略指引下，将项目充分讨论得到一个合理的任务分解。在将每个任务的难易程度，每个任务依照项目成员的特点、兴趣特长进行分配，并要求进行估算。最后将估算加起来就是项目的估算值。<br />
    显然自底向上的这种策略具有较为客观的特点，但是它的缺点就是这样一来项目工期就和客户的要求不一致了。而且由于其带来的不确定性，许多项目经理也不会采用这种方法。<br />
    4、估算的方法<br />
    显然估算是建立在客观实际上，对未来尽可能合理的一种预测。那么估算本身的不确定性，决定了它不可能是百分之百准确无误的。在项目刚开始时，人们对产品需求、技术、市场预期、人员素质等因素的了解还远远不够，在这种情况下人们很难作出准确的估计。但是依据某种方法进行估计显然比瞎猜好得多。<br />
    估算方法有很多，大致分为基于分解的技术和基于经验模型两大类。基于分解的技术的方法包括功能点估算法、LOC估算法、MARK II等；基于经验模型的方法包括IBM模型、普特南模型、COCOMO模型等。<br />
    4．1、FP功能点估算法<br />
    功能点估算法是一种在需求分析阶段基于系统功能的一种规模估计方法。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。这种方法的计算公式是：功能点=信息处理规模x技术复杂度。信息处理规模包括各种输入、输出、查询、内部逻辑文件数、外部接口文件数等等；技术复杂度包括性能复杂度、配置项目复杂度、数据通信复杂度、分布式处理复杂度、在线更新复杂度等等。<br />
    4．2、LOC估算法<br />
    这是一种从技术的角度来估算的方法总称，其中又包含许多方法。这类方法以代码（LOC）作为软件工作量的估算单位，在早期的系统开发中较为广泛使用。基于LOC的估算，又有点也有缺点。优点在于方便计算、容易监控、能反映程序员的思维能力；缺点在于代码行数的含糊不清，不能正确反映一项工作的难易程度以及代码的效率。因此在传统的LOC方法进行了许多改进。其中不断被使用，且不断演化的方法包括以下：<br />
    PERT功能点估算法：PERT对各个项目活动的完成时间按三种不同情况估计：一个产品的期望规模，一个最低可能估计，一个最高可能估计。用这三个估计用来得到一个产品期望规模和标准偏差的Pert 统计估计，Pert 估计可得到代码行的期望值和标准偏差SD。<br />
    类比估算法：类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目，通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度，因此，用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制，对历史项目的数据分析是可信赖的。<br />
    Delphi估算法：Delphi法是一种专家评估技术，在没有历史数据的情况下，这种方式适用于评定过去与将来，新技术与特定程序之间的差别。对于需要预测和深度分析的领域，依赖于专家的技术指导，可以获得较为客观的估算。通过专家们的互相讨论，还可以博取众长。<br />
    系统分解：将系统分成若干个易于用LOC估算的部分，将其各个估算结果累加就是LOC的总规模。其中关键是建立起SBS（系统分解结构），它描述了系统的不同组件。SBS还被使用在其他重要的地方，如系统设计、系统分析等。在进行分解的时候，可以采用自由讨论的形式，可以获得更合理的SBS构成。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1401.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IT项目管理-计划-估算</title>
		<link>http://www.evanjiang.net.cn/archives/1399.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1399.html#comments</comments>
		<pubDate>Fri, 18 Dec 2009 00:54:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[信息管理]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1399</guid>
		<description><![CDATA[<p>  对于软件项目，估算有很重要的地位，估算步骤最好是能够先估算规模，再根据生产率得到总体工作量，再根据总体工作量预计项目各阶段周期。类别估算，参数估算，专家法或三点法估算，功能点估算等都常在软件项目中使用。
    在没有充分的历史数据积累的情况下建议参与专家法通过类别方式进行估算，有了足够的历史数据来检验和校正估算参数和可以过渡到功能点估算和专家估算。项目在进行过程中需要不断的积累和收集历史项目的实际执行数据，形成工作量比例分布，生产率等实际的估算参数基准。
    1.主体任务工作量
    估算在软件生命周期中的需求，设计，编码，测试等活动是项目的主体工作任务，也是估算的重点。对于软件项目在计划阶段很难直接估算到功能点的代码行，因此一般采 用对功能点或用例点进行估算，这样就可以得到需求的规模。需求规模/需求生产率可以得到需求阶段的工作量，再根据工作量比例分布即可以得到设计，编码等阶 段的工作量估算数据。
    对于软件项目历史数据足够和积累了更多的经验后，可以根据各阶段产出物的规模/生产率分别来得到各阶段的工作量。
    设计工作量 = 设计规模（设计类，接口等数量）/设计生产率编码工作量 = 代码行/代码生产率测试工作量 = 测试用例数/测试生产率通过以上方法基本就可以得到主体任务的规模和工作量估算数据。
    2.评审任务工作量
    估算项目究竟应该安排哪些评审，在哪个阶段安排，评审的覆盖率要达到多少等都应该根据项目质量计划和质量策略来确定。评审是预防和保证质量，投入适量的评审可以大大的减少缺陷的泄漏和返工。
    评审工作量的安排并不是越多越好，项目总周期和工作量是一定的，评审安排太多则后期主体任务和返工工作量则会被压缩。评审的关键是发现可能导致项目重大工作量偏差的缺陷泄漏，而不是要100%防止任何缺陷的泄漏。
    对于评审的工作量 = 评审人数*产出物的规模/评审速率对于不同类型的工件都应该有一个最合适的评审速率，因此评审的工作量应该是根据待评审工件的实际规模确定的，而不是先确定了工作量而在评审过程中随意的去改变评审的速度，这样的话评审很难真正发现关键缺陷。
    3.返工的工作量
   [...]]]></description>
			<content:encoded><![CDATA[<p>  对于软件项目，估算有很重要的地位，估算步骤最好是能够先估算规模，再根据生产率得到总体工作量，再根据总体工作量预计项目各阶段周期。类别估算，参数估算，专家法或三点法估算，功能点估算等都常在软件项目中使用。<br />
    在没有充分的历史数据积累的情况下建议参与专家法通过类别方式进行估算，有了足够的历史数据来检验和校正估算参数和可以过渡到功能点估算和专家估算。项目在进行过程中需要不断的积累和收集历史项目的实际执行数据，形成工作量比例分布，生产率等实际的估算参数基准。<br />
    1.主体任务工作量<br />
    估算在软件生命周期中的需求，设计，编码，测试等活动是项目的主体工作任务，也是估算的重点。对于软件项目在计划阶段很难直接估算到功能点的代码行，因此一般采 用对功能点或用例点进行估算，这样就可以得到需求的规模。需求规模/需求生产率可以得到需求阶段的工作量，再根据工作量比例分布即可以得到设计，编码等阶 段的工作量估算数据。<br />
    对于软件项目历史数据足够和积累了更多的经验后，可以根据各阶段产出物的规模/生产率分别来得到各阶段的工作量。<br />
    设计工作量 = 设计规模（设计类，接口等数量）/设计生产率编码工作量 = 代码行/代码生产率测试工作量 = 测试用例数/测试生产率通过以上方法基本就可以得到主体任务的规模和工作量估算数据。<br />
  <span id="more-1399"></span>  2.评审任务工作量<br />
    估算项目究竟应该安排哪些评审，在哪个阶段安排，评审的覆盖率要达到多少等都应该根据项目质量计划和质量策略来确定。评审是预防和保证质量，投入适量的评审可以大大的减少缺陷的泄漏和返工。<br />
    评审工作量的安排并不是越多越好，项目总周期和工作量是一定的，评审安排太多则后期主体任务和返工工作量则会被压缩。评审的关键是发现可能导致项目重大工作量偏差的缺陷泄漏，而不是要100%防止任何缺陷的泄漏。<br />
    对于评审的工作量 = 评审人数*产出物的规模/评审速率对于不同类型的工件都应该有一个最合适的评审速率，因此评审的工作量应该是根据待评审工件的实际规模确定的，而不是先确定了工作量而在评审过程中随意的去改变评审的速度，这样的话评审很难真正发现关键缺陷。<br />
    3.返工的工作量<br />
    对于返工主要是因为缺陷引起的，缺陷可能是评审缺陷也可能是后期系统测试的Bug.在软件项目中对于文档缺陷的修改和Bug的修复应该有不同的返工速率，这是需要历史版本收集和校验的重要参数数据。<br />
    根据项目历史版本一般可以得到项目的缺陷密度预测数据，因此在估算出当前项目的规模后就很容易得到项目的总缺陷数预计，自然就可以计算返工工作量了。<br />
    各阶段的返工工作量 = （项目规模*缺陷密度）/各阶段的返工速率<br />
    4.总结<br />
    对于软件项目估算，历史项目积累的经验数据越多，越稳定则估算越趋于准确。估算是项目计划的一个重点，估算不准确会造成后期项目计划频繁修改，也就谈不上相应的基线和跟踪控制。<br />
    估算出项目总体规模后并不代表项目估算完成，估算数据最终要应用的各个工作包和相关的任务上。因此必须根据各阶段的规模，各阶段的生产率，评审和返工等生产率估算项目中存在的各种类型任务的规模和工作量。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1399.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>成功IT经理的十一个显著特征(转摘于网上）</title>
		<link>http://www.evanjiang.net.cn/archives/1397.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1397.html#comments</comments>
		<pubDate>Wed, 16 Dec 2009 09:52:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[信息管理]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1397</guid>
		<description><![CDATA[<p>俺在技术岗位上工作已经有三十多年，担任IT经理和CIO也已经超过了二十年。在这段时间里，俺见过很多优秀的IT经理，其中甚至有一些是非常出色的。当然，工作表现不怎么样的IT经理也见过一些。 俺认为，任何IT经理想要拥有成功的IT管理生涯，都必须具备十一个显著特征。尽管会有一些人认为具备这十一个特征还远远不够，也会有一些人觉得技术技能同样重要，凭借自己多年的职场经验，俺仍然坚信这十一个显著特征对于今天的IT经理来说是最为重要的。
　　1、了解公司需求的能力
　　所有的IT经理都需要知道如何才能够了解公司的需求，因为这同自己的技术职责密切相关。不管自己在公司当中的位置如何，作为一名IT经理，你都有必要了解公司的真正需求，只有在此基础上才能做出“正确的事情”。太多的IT经理在制定“IT议程”之前都没有真正了解公司的目标和需求。迅速掌握了解公司技术需求的能力会让你了解自己更多的职责。如果IT经理在制定计划时由于缺乏了解公司需求的技能而“错过了公司的目标”，公司可能会蒙受数万美元的损失。了解公司的技术需求是IT经理职业生涯发展的一个重要组成部分。
　　2、制定前景规划的能力
　　想要成为一名优秀的IT经理，你必须要能够确定自己的目标，并且制定出前景规划，让你手下的员工了解你希望大家通过努力能够取得的成绩。想要成为一名优秀的IT经理，你要担负起自己的职责，领导整个小组向着目标前进。能够制定出计划并且清楚的向自己手下的员工说明的IT经理能够在工作中取得巨大的成功，因为你手下的员工会按照你的要求去做。清楚的向自己手下的员工说明自己的前景规划会让他们了解工作的中心，让他们了解你会带领他们向明确的目标前进。
　　3、制定计划的能力
　　一旦知道了自己想要实现的目标，成功的IT经理会知道如何去制定计划，以实现自己的目标。这意味着要正确估计眼前的形势，知道哪些事应该摆在优先的位置，制定出大胆而又切实可行的计划。对于一名想要取得“高度成功”的IT经理来说，制定计划是一个非常基础的步骤。但可惜有太多的IT经理没有能够做到这一点。在这种情况下，他们所取得的工作成绩要比公司有能力取得的成绩小的多。拥有制定计划的能力，通过计划的实行来实现公司的目标会让你承担更多的工作职责。事先制定计划表明你是一个积极主动而不是一个消极被动的人。
　　4、组建小组的能力
　　成功的IT经理知道组建一个有深度而又有技能的IT小组的重要性。既要知道如何改进现有的IT小组，又要知道如何白手起家，建立一个新的IT小组。我所见过的所有优秀的IT经理都有根据手头的工作任务建立一个有力的工作小组的能力，有正确预计未来工作需求以使整个小组做好应对新挑战的准备的能力。强有力的职业IT经理能够有效的组建自己手下的员工队伍。他们了解职业生涯的重要性，并且愿意把职业生涯的构建作为一种工具，来组建强有力的工作小组，更加独立的开展工作。
　　5、集中使用资源的能力
　　如果想要取得成功，IT经理要集中公司所有的IT工作人员、资金和技术资源，处理最关键最重要的事情。公司技术资源的使用要同公司的需求和目标保持同步，并且要通过多产有效的方式。任何有清楚的职业发展目标的IT经理都知道集中使用资源的重要性。
　　6、贯彻“客户服务”理念的能力
　　对于任何IT公司来说，高水平的客户服务都是非常重要的。成功的IT经理会在员工的心目中贯彻一种客户优先的文化理念——不管是内部用户还是外部客户。优秀的IT经理知道自己职业生涯的存在和发展是由于客户需要他们提供的技术，支持他们提供的服务。这也正是成功的IT经理要同客户建立出色的关系的原因。
　　7、管理项目的能力
　　公司能够以可以预见的有效方式制定出项目计划是所有IT经理开展工作的基础。任何IT经理想要取得成功，都要对项目进行有效的管理。不管你的职业生涯发展方向如何，强有力的项目管理技能都能够增加你获得成功的机会。
　　8、应对变化、进行管理的能力
　　迅速的发展变化是技术的本质特征。每一个IT经理都要了解如何有效的应对变化、进行管理。不能有效的应对变化会影响IT经理职业生涯的发展。
　　9、领导员工并激发其工作热情的能力
　　如果工作热情得不到有效的激发，IT工作人员就无法在工作中发挥出自己最大的能量。成功的IT经理总是能够对员工进行强有力的领导并激发他们的工作热情。成功的管理人员知道如何发挥他人的潜质，这是一项非常重要的技能。
　　10、有效沟通的能力
　　成功的IT经理能够通过多种不同的方式同不同的员工进行沟通。通常，职业生涯的成功在很大的程度上依赖于有效的沟通技能。想要成为成功的IT经理，必须能够同各种人进行有效的沟通，既包括技术人员也包括非技术人员，要同高级经理交换对项目进展状况的看法。很多IT经理就是因为做不到这一点而极大的影响了自己的工作成绩。能够在自己的职业生涯中取得最大的成功的IT经理能够同所有人进行有效的沟通：员工、同行、外部客户、销售商和高层管理人员。
　　11、追踪并衡量工作表现的能力
　　确定目标并以此来衡量工作表现是非常重要的。成功的IT经理能够通过明确的方式来衡量小组的工作表现，并且通过反馈信息来改进工作表现。
　　总结
　　最好的IT经理，也就是那些拥有成功职业生涯的IT经理，拥有上面所提到的每一种技能，能够胜任自己在小组和整个公司中的工作任务。
　　当然，对于IT经理来说，想要在自己的职业生涯中取得更大的发展和成功，还需要掌握其他的一些技能，例如积极主动的工作以及同销售商进行成功的谈判。但是，如果仔细对成功IT职业生涯所需要的技能进行研究，上面所提到的十一点无疑是最最重要的。
　　想要在任何公司中打造成功的IT管理生涯都是一项重大的挑战，因为IT经理的角色总是处在不断的变化之中，并且要受到周围所有人的审视和挑剔。如果你能够在个人的职业生涯发展中学习并掌握上面所提到的十一项技能，你就能够取得更大的成功，也会感受到更多的职责。</p>
]]></description>
			<content:encoded><![CDATA[<p>俺在技术岗位上工作已经有三十多年，担任IT经理和CIO也已经超过了二十年。在这段时间里，俺见过很多优秀的IT经理，其中甚至有一些是非常出色的。当然，工作表现不怎么样的IT经理也见过一些。 俺认为，任何IT经理想要拥有成功的IT管理生涯，都必须具备十一个显著特征。尽管会有一些人认为具备这十一个特征还远远不够，也会有一些人觉得技术技能同样重要，凭借自己多年的职场经验，俺仍然坚信这十一个显著特征对于今天的IT经理来说是最为重要的。<br />
　　1、了解公司需求的能力<br />
　　所有的IT经理都需要知道如何才能够了解公司的需求，因为这同自己的技术职责密切相关。不管自己在公司当中的位置如何，作为一名IT经理，你都有必要了解公司的真正需求，只有在此基础上才能做出“正确的事情”。太多的IT经理在制定“IT议程”之前都没有真正了解公司的目标和需求。迅速掌握了解公司技术需求的能力会让你了解自己更多的职责。如果IT经理在制定计划时由于缺乏了解公司需求的技能而“错过了公司的目标”，公司可能会蒙受数万美元的损失。了解公司的技术需求是IT经理职业生涯发展的一个重要组成部分。<br />
　　2、制定前景规划的能力<br />
　　想要成为一名优秀的IT经理，你必须要能够确定自己的目标，并且制定出前景规划，让你手下的员工了解你希望大家通过努力能够取得的成绩。想要成为一名优秀的IT经理，你要担负起自己的职责，领导整个小组向着目标前进。能够制定出计划并且清楚的向自己手下的员工说明的IT经理能够在工作中取得巨大的成功，因为你手下的员工会按照你的要求去做。清楚的向自己手下的员工说明自己的前景规划会让他们了解工作的中心，让他们了解你会带领他们向明确的目标前进。<br />
　　3、制定计划的能力<br />
　　一旦知道了自己想要实现的目标，成功的IT经理会知道如何去制定计划，以实现自己的目标。这意味着要正确估计眼前的形势，知道哪些事应该摆在优先的位置，制定出大胆而又切实可行的计划。对于一名想要取得“高度成功”的IT经理来说，制定计划是一个非常基础的步骤。但可惜有太多的IT经理没有能够做到这一点。在这种情况下，他们所取得的工作成绩要比公司有能力取得的成绩小的多。拥有制定计划的能力，通过计划的实行来实现公司的目标会让你承担更多的工作职责。事先制定计划表明你是一个积极主动而不是一个消极被动的人。<br />
　<span id="more-1397"></span>　4、组建小组的能力<br />
　　成功的IT经理知道组建一个有深度而又有技能的IT小组的重要性。既要知道如何改进现有的IT小组，又要知道如何白手起家，建立一个新的IT小组。我所见过的所有优秀的IT经理都有根据手头的工作任务建立一个有力的工作小组的能力，有正确预计未来工作需求以使整个小组做好应对新挑战的准备的能力。强有力的职业IT经理能够有效的组建自己手下的员工队伍。他们了解职业生涯的重要性，并且愿意把职业生涯的构建作为一种工具，来组建强有力的工作小组，更加独立的开展工作。<br />
　　5、集中使用资源的能力<br />
　　如果想要取得成功，IT经理要集中公司所有的IT工作人员、资金和技术资源，处理最关键最重要的事情。公司技术资源的使用要同公司的需求和目标保持同步，并且要通过多产有效的方式。任何有清楚的职业发展目标的IT经理都知道集中使用资源的重要性。<br />
　　6、贯彻“客户服务”理念的能力<br />
　　对于任何IT公司来说，高水平的客户服务都是非常重要的。成功的IT经理会在员工的心目中贯彻一种客户优先的文化理念——不管是内部用户还是外部客户。优秀的IT经理知道自己职业生涯的存在和发展是由于客户需要他们提供的技术，支持他们提供的服务。这也正是成功的IT经理要同客户建立出色的关系的原因。<br />
　　7、管理项目的能力<br />
　　公司能够以可以预见的有效方式制定出项目计划是所有IT经理开展工作的基础。任何IT经理想要取得成功，都要对项目进行有效的管理。不管你的职业生涯发展方向如何，强有力的项目管理技能都能够增加你获得成功的机会。<br />
　　8、应对变化、进行管理的能力<br />
　　迅速的发展变化是技术的本质特征。每一个IT经理都要了解如何有效的应对变化、进行管理。不能有效的应对变化会影响IT经理职业生涯的发展。<br />
　　9、领导员工并激发其工作热情的能力<br />
　　如果工作热情得不到有效的激发，IT工作人员就无法在工作中发挥出自己最大的能量。成功的IT经理总是能够对员工进行强有力的领导并激发他们的工作热情。成功的管理人员知道如何发挥他人的潜质，这是一项非常重要的技能。<br />
　　10、有效沟通的能力<br />
　　成功的IT经理能够通过多种不同的方式同不同的员工进行沟通。通常，职业生涯的成功在很大的程度上依赖于有效的沟通技能。想要成为成功的IT经理，必须能够同各种人进行有效的沟通，既包括技术人员也包括非技术人员，要同高级经理交换对项目进展状况的看法。很多IT经理就是因为做不到这一点而极大的影响了自己的工作成绩。能够在自己的职业生涯中取得最大的成功的IT经理能够同所有人进行有效的沟通：员工、同行、外部客户、销售商和高层管理人员。<br />
　　11、追踪并衡量工作表现的能力<br />
　　确定目标并以此来衡量工作表现是非常重要的。成功的IT经理能够通过明确的方式来衡量小组的工作表现，并且通过反馈信息来改进工作表现。<br />
　　总结<br />
　　最好的IT经理，也就是那些拥有成功职业生涯的IT经理，拥有上面所提到的每一种技能，能够胜任自己在小组和整个公司中的工作任务。<br />
　　当然，对于IT经理来说，想要在自己的职业生涯中取得更大的发展和成功，还需要掌握其他的一些技能，例如积极主动的工作以及同销售商进行成功的谈判。但是，如果仔细对成功IT职业生涯所需要的技能进行研究，上面所提到的十一点无疑是最最重要的。<br />
　　想要在任何公司中打造成功的IT管理生涯都是一项重大的挑战，因为IT经理的角色总是处在不断的变化之中，并且要受到周围所有人的审视和挑剔。如果你能够在个人的职业生涯发展中学习并掌握上面所提到的十一项技能，你就能够取得更大的成功，也会感受到更多的职责。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1397.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再议 如何做好项目经理</title>
		<link>http://www.evanjiang.net.cn/archives/1395.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1395.html#comments</comments>
		<pubDate>Sat, 12 Dec 2009 05:12:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[项目管理]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1395</guid>
		<description><![CDATA[<p>看到不少的朋友都在需求如何做好项目经理的问题，见到建设性的建议也不是很多。在此开辟一个版块，逐步的分享下一些心得。 我也做了6年的项目经理，虽然时间也不算长，但大小项目也经历了不少。
记得一本书上提到，如果你喜欢一个人，让他去做项目经理，那会让一个人经历磨练，很快的成熟；如果你狠一个人，让他去做项目经理，这样会在短期内给一个人最大的打击，让自己感到自身的渺小，如同风中的树叶不受自己控制&#8230;呵呵，的确我也经历过无数这样的事情。
由于工作比较忙，只有抽空不断更新此帖。希望大家不要随意灌水，多给些有建设性的意见。
先传个入门级的读物吧
项目经理: 重大局不做瓶颈
水平很高的顾问未必能做好项目经理，因为在某种意义上，你可能太相信自己了，你不放心也不相信你的项目成员能和你一样能把工作做得很出色，所以所有的事情你都想自己干，但项目内容实在太多，你忙不过来，项目成员在旁边却无事可干，干着急帮不上忙，偶尔帮上了，还被你臭一顿。只有无限同情地看着你，看着这个可怜的所谓项目经理。 </p>
<p>久而久之，项目变成了你一个人的项目，项目成员成了看客，你天天埋怨底下这帮人真笨，没本事，什么都要靠你自己；项目成员天天想这个项目经理实在没水平，根本不会安排工作，跟着这样的人，完全是在浪费时间，一点成就感也没有。 </p>
<p>项目经理，为什么你总是项目工作进展的瓶颈？ </p>
<p>我刚开始做项目经理的时候也有同样的烦恼，也完全束手无策，现在好多了。因为从心态上，我知道自己一定不是这个世界上把事情做得最好的人，我相信就在我的项目组里一定有做得比我好的人，只是我没发现，或者我没告诉别人要做什么，怎么做。 </p>
<p>作为项目经理，如果你还没把你能干的事情交给别人干，那你实在是太可怜了，或者说你根本不会当项目经理。就好像我们很多管理者整天忙于业务一样，总是忙于喂“猴子”，帮所有的人喂“猴子”，自己饿死了，底下的人却一身轻松地潇洒而去。 </p>
<p>刚做项目经理的时候，事情往往不太容易想明白，而事情没想明白就觉得任务无法分下去，即便勉强分下去了，拿出来的东西也不是自己要的。于是很烦，觉得还不如自己干。咨询就是这么奇怪的一件事情，等你完全想明白的时候，事情也做完了。这样反反复复几次，顾问成员觉得你总在变，让人无所适从，于是开始质疑，在你分配工作的时候，问了几个问题你就被问倒了，所以你也不敢再指挥了。于是你威信扫地，无法指挥了，你觉得指挥别人比自己干还累，也不愿意再指挥了。就这样陷入了恶性循环，你只好自己单干。 </p>
<p>项目经理永远要记住的是：项目总体的质量是你控制的，项目内容的质量是靠项目成员保证的。项目总体的质量是指项目边界，项目内容核心关注的点，主要观点的正确性等。 </p>
<p>所以，项目经理首先要判断的是该做什么，不该做什么？一旦决定要做，就开始和项目成员讨论思路，如果自己没有思路，就让项目成员拿思路，讨论到一定程度，就分头去干，干了再讨论，反复几轮就清楚了，而不要等待，等待没有结果，行动才有结果，有些弯路是必须要走的。 </p>
<p>而对于项目成员，永远不要期待在咨询项目中，项目经理告诉你一个明白无比的思路和做事的方式，除非你撞大运了，遇到了一个巨牛无比的项目经理，所以，从项目成员来讲，该忍受的还得忍受，互相帮助才可能把项目做好。 </p>
<p>对于项目经理而言，如果你想得明白，工作模版是你控制项目质量的好工具，所以你的工作是和项目成员讨论模版，并且让他们理解模版，至于根据模版完成的内容，一般而言，你就无能为力了，得靠你的项目成员了。 </p>
<p>对于咨询项目而言，项目经理必须要有一个本事，能抓住重点，当你的项目成员给你100页的报告时，你清楚地知道最关键的是什么？一句话能说清楚，一页PPT能说清楚，十页PPT能说清楚，100页也能说清楚，这是真本事。反过来说，当你分配任务的时候，你要清楚地告诉项目成员里面的关键点在哪里，如果你实在不知道，就让项目成员告诉你，如果他也不知道，那就讨论，实在讨论不清楚了，就开始做，做了再讨论，反反复复，总有清楚的一天。 </p>
<p>项目经理该做什么？ </p>
<p>如果一个4个以上项目成员的项目团队，项目经理还在做具体的事情，花很多时间写具体的文档，那这个项目肯定存在问题了。因为你已经花了太多的经历在具体细节上，意味着更重要的事情你没有关注。在我看来，项目经理最应该做的三件事情是：项目总体计划和控制、沟通和协调资源、处理项目之外的事情。 </p>
<p>• 项目总体计划和控制 </p>
<p>计划只是控制的一个手段，你必须想清楚整个项目的大阶段，在项目进度出问题的时候，如何快速推进。我一般会列出大的阶段性计划和关键要求，具体的阶段的详细计划，我都会安排一个项目成员来总体负责这个阶段的事情，因为我已经没精力了。有问题我们可以讨论，但必须有一双眼睛盯着这件事情。 </p>
<p>另外，我常用的一个手段是文档模板，通过文档模板来控制项目内容和质量，这个非常有用，如果把文档模板只是理解为格式，那就没意思了，文档模板是框架的确立，至少要细化到3级目录，有时候甚至具体的表格、具体的问题和关键字段，详细程度视重要程度而言，这个工作对项目经理而言是非常重要的，会花很多时间。当然，对我而言，我也不会自己写一个扔出去，而是通过讨论，拿笔划划，让项目成员准备初稿，然后一轮一轮的讨论，通过讨论使大家明白这个过程和内容要求。 </p>
<p>• 沟通和协调资源 </p>
<p>有人说项目管理的工作就是沟通、沟通、再沟通。一点没错。项目经理需要沟通的人太多了，客户、项目成员、公司、家里人，一堆人，不花时间怎么能解决问题？所以你必须花大量的时间去沟通。我判断一个项目的成功状态是你到底花了多长时间和客户在一起沟通，对一个项目经理而言，比较理想的状态是你随时可以推开客户方任何一个人的办公室的门去聊，除了有秘书挡架的之外（有秘书挡架的要通过mail、书面材料来补）。一个好的项目经理，在两到三周就能达到这个状态。这个状态的背后意味着你能帮助客户解决问题或者给他帮助和启发，否则就是推门进去了，客户也会把你踹出来。 </p>
<p>另外一个重要工作当然是协调资源，这方面内容很多。最重要的一点是，如果你发现某个问题项目组所有人都搞不定了或者不经济了，想别的办法吧，找别人吧，客户方的，公司的，外面的都可以。这个工作比较难，也很烦琐，所以总体上往往还是要自力更生，艰苦奋斗。借助项目外的资源来解决目标明确的具体问题，协调资源的次序一定是：客户、自己的公司、外部资源，搞错次序了，就复杂且麻烦了。 </p>
<p>• 处理项目之外的事情 </p>
<p>项目经理还有一个很重要的工作就是控制项目范围，怎么控制？要敢于向客户说“不”，但这个“不”不是乱说的，如果你拒绝客户，你就拒绝了自己。这远远不是一个说话的艺术问题，而是是否能站在客户立场上，帮助客户解决问题的问题。即使项目无法很好解决，你需要告诉客户怎么解决，给人一条出路，而不是堵回去。在此基础上再分析在项目的时间、成本、质量和范围约束下，我们能做什么。给客户解决方案，小到参考文档，大到运作项目、整合资源都不是简单的事情，需要投入很多的精力，而不要让项目成员在这方面花太多的时间。所以从这个意义上讲，项目经理的职责是让项目成员在一个相对安全的项目环境中工作。 </p>
<p>做该做的，充分调动项目成员的能力，让他们也参与项目管理的过程中来，决不是推卸责任，对于项目工作和人员培养都是很有好处的，项目经理的眼睛如果只盯在项目本身，项目很难有好的结果。总之，你始终要清醒地认识到，你带领的是一个团队，而不是你自己。 </p>
<p>项目经理需要攘内安外，对外眼观六路，耳听八方，为项目组营造良好的大环境，对内管理有度，控制有法，给项目成员有发挥的空间，又不至于失控。 </p>
<p>一句话，项目经理首先是一个负责任的人，同时又要给项目成员以责任。
项目推进不动，项目经理往往是关键。要当好项目经理就要多思考，同时必须应用正确的方法。否则事倍功半，几头受气（风箱中的老鼠？）。
扼守承诺，善于沟通，抓住重点，排除干扰，控制主线。控制好这几点，也基本能胜任项目经理。学会中庸之道，不走极端。</p>
<p>项目推进不动，项目经理往往是关键。要当好项目经理就要多思考，同时必须应用正确的方法。否则事倍功半，几头受气（风箱中的老鼠？）。
扼守承诺，善于沟通，抓住重点，排除干扰，控制主线。控制好这几点，也基本能胜任项目经理。学会中庸之道，不走极端。</p>
<p>例舉一個項目管理的場景，請幫忙分析一下。
1 基本組織架構為部門式，人力資源歸屬各部門。
2 項目管理辦公室成員牽頭各項目的推動，依照任務性質分派到其他部門，項目依據項目經理之職級呈現為弱矩陣項目，或平衡矩陣。
      部分項目推動過程的缺失表現為，進度不良，質量不良。項目經理分派任務本身說明不詳細，或者未按照組織要求提供文檔。</p>
<p>先謝謝</p>
<p>现代企业管理模式，大家都逐步在探索矩阵式的管理。为的目的是加快市场反馈速度，提高管理效率。但如何平衡项目管理和部门管理的职责分配，有效的调动资源而不出现多头领导，是一个值得研究的地方。
以我的经验，是企业必须建立一套科学的考核体系，平衡项目和职能部门之间的权利，从利益上找到共同点。而且更强调项目的重要性，对项目经理的授权要充分，当然对项目经理的考核和奖惩都是最严格的。这样才能提高效率，让大家都做实事，而不要相互扯皮</p>
<p>矩陣式項目管理優勢在于人力等資源的共享，但是發揮優勢是需要團隊合作等企劃文化支撐。否則只能降低管理效率。</p>
<p>弱矩陣模式下的項目經理其職能類似跟單，其工作的完成一部分是自己的努力，大部分是依靠其他團隊成員的合作。哪些工作需要自己去完成，哪些工作可以指派其他成員完成，是需要依據環境思量的。指派給別人完成的任務，要要盡力準備，創作出容易完成的環境，如果只是自己圖清閑，把任務一概推給別人處理，效果可想而至。</p>
<p>這也是對你4樓關于項目經理職能論述的一個側面補充吧。
补充得不错，  </p>
<p>还有矩阵式管理中，横向（项目管理）管理更强还是纵向（职能部门管理）权利更强，是由公司的战略和运营模式决定的。而一个公司的战略和运营模式，又是根据内外环境，比如自身资源优势，行业市场环境，竞争者分布而影响的。作为一个初创的公司，生存为最重要的前提，所以强调以项目为导向，其他部门全力配合项目经理完成项目，尽快产生现金流。做到一定规模，生存不是首要问题后，就要解决规范，体系和稳定性问题。此时应该职能管理和项目并重。当发展比较顺利，市场定位准确，产品日益成熟，有稳定的客户群后，要解决的就是如何大量复制的问题。此时对稳定性和标准，规范提出了高要求。有时不得不拒绝一些非标准化的特殊需求。以标准化推进市场占有率。职能部门的管理权力会略强于项目管理。
为了达到最好的平衡，需要在项目和职能部门之间做好平衡。而我更偏向于项目略大于职能的管理模式。一切都是项目，一切都是目标管理。只是团队中来自于不同的专业部门临时组合在一起，完成一个共同的目标。职能部门的作用就是培训，规范本部门的工作，做到更专业化，提高效率。项目经理的责任，就是如何挑选适合项目的资源，并如何更好的整合在一起。
对于每个人所在的行业都会认为自己现阶段所处的这个行业需要学习的太多，要创新的却更多，就像现代社会的网络、电脑、软件，和这些有关的我们统称为“IT人士”，他们需要更快的学习创新速度因为这个行业新成代谢太快，而我也是其中一员，但在这些行业里有共同的一句话：“做好每件事之前先考虑做好一个人”，一个软件项目经理人也不例外。 </p>
<p>　　一个项目的成功百分百归功于这个项目团队，而失败则百分百责任于项目经理人一人，可能失败的责任归于一人用之过大，但其实不然，如：1、项目的失败可能来源于一些外在的因素，这就表示项目经理人对项目的风险评估不够彻底；2、项目中因团队关键人员被调或流动，导致项目延期或无法进行所带来的损失，这就表明人力资源储备有限，更重要的是项目经理人是否有考虑过项目进行中团队某位或很多人员流动该怎样让项目能如期完成；3、项目大部分功能完成后需要客户的初验，这时就需要很多功能上的完善与增加，这可能无法避免但有些更荒唐的是客户看了之后可能对您说：“这和我想要的是两码事”这个时候您只能有权利做一件事，那就是尽情的晕吧！因为有些项目经理人根本就没有和客户说过一句话甚至更惨，没见过一次面，项目的初定和需求直接来源于业务人员，我们的大部分客户都不知道怎样把现实中的实物用程序的方式来展示去实现，所以项目经理人最起码也要用喝一个下午茶的工夫去告诉我们的客户：“您的这个想法我们需要进一步细化，我们将会通过****样的方式帮您实现，您看可以吗？”必须让他回答。 本文转自项目管理者联盟</p>
<p>　　以上总结于项目成败的三点：1、项目经理人对项目的风险评估是否彻底；2、项目经理人是否在团队人员缺失的情况下，能极力挽回项目进度，并能按期完成任务；3、项目经理人是否和客户有更为深入的交谈，项目经理人必须考虑是否真正为客户解决了实际问题。 </p>
<p>　　做好一个项目经理（先从自己做起）：</p>
<p>　　第一：项目前的资源整合；尽量为项目开发提供一个好的环境，一个舒适的工作空间和项目预计所需要的工作工具（尽量提供最好的），就像一个开发人员有一台好的机器，你想想他有多带劲！还有就是召集这个项目需要切实用到的一切人力资源；</p>
<p>　　第二：能力测试；针对软件行业流动性很大的特点，并不排除您的项目团队中有陌生的面孔，也有可能是其他项目团队的派调过来的人手，或是其他合作公司的开发人员，这时您可能需要能力测试这一环节，测试并不是对团员能力的质疑,而是测试该把某个队员放在某个位置，或扮演项目开发中的什么角色比较合适。这种测试有很多方法，可以是做一些游戏或让你的团队一起去完成一个与项目无关的事情，来观察团队每个人员的特性与习性，然后就是针对项目中的每个技术环节做一个特定的测试，目的是为更好的跳过技术陷阱，测试的方法可以自订，但对于团队人员不能让他们感受到这是种测试，这样你就可以让每个团队人员在自己的适合的岗位上发挥自己最大的潜力！项目管理者联盟文章，深入探讨。</p>
<p>　　第三：个人执行力；怎样让自己具备有一个很好的执行力，首先，要端正所有项目经理人的观点（自己不光是该项目的领导人更是该团队中的普通一员），请把您对您的上级，公司领导的热情与尊敬复制到您对团队人员的身上，现代社会注重人文与个人魅力，以前的命令式做法已行不通，一个出色的领导人注重的是亲和力，要让你的团队人员感觉到“做好这个项目需要得到他们的帮助！”。</p>
<p>　　第四：团队精神与士气；如果在一个项目中您要是感觉到您正在扮演一个传递员的工作而每件队员与队员之间能解决的事情都需要经过您这台“服务器”的话，就说明您的这个团队中“神经系统”出了问题，人员的情绪千变万化，队员在生活中或工作中遇到了困难，这时项目经理人需要有迅速的洞察力“发现它就要解决掉它”，怎样让一个团队有一个更好的机动性和更强劲的动力，个人认为最简单快捷的方式就是在项目中抽出活动资金带着您的团队去&#8221;happy&#8221;！(对团队人员而言，一次活动互相接触的次数，大于在上班时间1个月所接触的次数。) 最好是制定活动计划和活动内容（最好是能让所有人都喜欢的），并严格规定不能缺席。</p>
<p>　　第五：分配任务的重要性；在分配任务时所有项目经理人都会发生的错误，就是在会议上当着整个团队强调某个队员任务的重要性，您提高了一个队员的积极性却降低了其他队员的士气，在分配任务到个人时还要注意把这个任务分配给某个人是否有想好还有更好的人选，不要主观地认为某个队员手头上的工作不太紧而分配给他，这样将会带来不可估计的后果，对项目本身而言，任务分配到个人有多有少有复杂有简单，这不能用天枰衡量，但怎样让每个队员心中平衡这可能就需要一个好的考核办法与项目奖金的分配制度，最好是公开透明的。 </p>
<p>　　总的来说，做好一个项目经理人难，需要不断的努力、思考和完善！
项目管理知识体系，是一个较大的知识系统，这也就让很多初学者摸不到头脑，感觉入门很难。
学习都是一个循序渐进的过程。
要把项目保证完成，首先要做的就是风险管理。只要做好了风险管理，基本能够保证你的项目在可控的范围之内，并能够按照范围内的指标完成。
第二步，要想把项目做好，就必须做好沟通管理。项目经理必须起到一个有效传达信息，平衡投资者，项目团队和客户之间的交流。</p>
<p>说到项目管理，大家都会想到铁三角  时间-质量-成本 中间覆盖的就是项目范围。这是一个经典的模型，项目经理必须深悟此道，融会贯通。
投资者，项目团队，客户也是一个三角，项目经理就在其中，重要性显而易见
人，工具，制度  这个是通用的管理模型，同样适合于项目管理。要把项目做得漂亮，提高项目的效率，项目经理就必须在三者之间结合内外环境状况，得到最佳的平衡。</p>
<p>项目管理虽然兴起在西方，但中国的项目管理实践历史已经非常悠久。好的项目经理，并不一定要考证。管理关键在于行，而不在于知。</p>
]]></description>
			<content:encoded><![CDATA[<p>看到不少的朋友都在需求如何做好项目经理的问题，见到建设性的建议也不是很多。在此开辟一个版块，逐步的分享下一些心得。 我也做了6年的项目经理，虽然时间也不算长，但大小项目也经历了不少。<br />
记得一本书上提到，如果你喜欢一个人，让他去做项目经理，那会让一个人经历磨练，很快的成熟；如果你狠一个人，让他去做项目经理，这样会在短期内给一个人最大的打击，让自己感到自身的渺小，如同风中的树叶不受自己控制&#8230;呵呵，的确我也经历过无数这样的事情。<br />
由于工作比较忙，只有抽空不断更新此帖。希望大家不要随意灌水，多给些有建设性的意见。<br />
先传个入门级的读物吧<br />
项目经理: 重大局不做瓶颈<br />
水平很高的顾问未必能做好项目经理，因为在某种意义上，你可能太相信自己了，你不放心也不相信你的项目成员能和你一样能把工作做得很出色，所以所有的事情你都想自己干，但项目内容实在太多，你忙不过来，项目成员在旁边却无事可干，干着急帮不上忙，偶尔帮上了，还被你臭一顿。只有无限同情地看着你，看着这个可怜的所谓项目经理。 </p>
<p>久而久之，项目变成了你一个人的项目，项目成员成了看客，你天天埋怨底下这帮人真笨，没本事，什么都要靠你自己；项目成员天天想这个项目经理实在没水平，根本不会安排工作，跟着这样的人，完全是在浪费时间，一点成就感也没有。 </p>
<p>项目经理，为什么你总是项目工作进展的瓶颈？ </p>
<p>我刚开始做项目经理的时候也有同样的烦恼，也完全束手无策，现在好多了。因为从心态上，我知道自己一定不是这个世界上把事情做得最好的人，我相信就在我的项目组里一定有做得比我好的人，只是我没发现，或者我没告诉别人要做什么，怎么做。 </p>
<p>作为项目经理，如果你还没把你能干的事情交给别人干，那你实在是太可怜了，或者说你根本不会当项目经理。就好像我们很多管理者整天忙于业务一样，总是忙于喂“猴子”，帮所有的人喂“猴子”，自己饿死了，底下的人却一身轻松地潇洒而去。 </p>
<p>刚做项目经理的时候，事情往往不太容易想明白，而事情没想明白就觉得任务无法分下去，即便勉强分下去了，拿出来的东西也不是自己要的。于是很烦，觉得还不如自己干。咨询就是这么奇怪的一件事情，等你完全想明白的时候，事情也做完了。这样反反复复几次，顾问成员觉得你总在变，让人无所适从，于是开始质疑，在你分配工作的时候，问了几个问题你就被问倒了，所以你也不敢再指挥了。于是你威信扫地，无法指挥了，你觉得指挥别人比自己干还累，也不愿意再指挥了。就这样陷入了恶性循环，你只好自己单干。 </p>
<p>项目经理永远要记住的是：项目总体的质量是你控制的，项目内容的质量是靠项目成员保证的。项目总体的质量是指项目边界，项目内容核心关注的点，主要观点的正确性等。 </p>
<p><span id="more-1395"></span>所以，项目经理首先要判断的是该做什么，不该做什么？一旦决定要做，就开始和项目成员讨论思路，如果自己没有思路，就让项目成员拿思路，讨论到一定程度，就分头去干，干了再讨论，反复几轮就清楚了，而不要等待，等待没有结果，行动才有结果，有些弯路是必须要走的。 </p>
<p>而对于项目成员，永远不要期待在咨询项目中，项目经理告诉你一个明白无比的思路和做事的方式，除非你撞大运了，遇到了一个巨牛无比的项目经理，所以，从项目成员来讲，该忍受的还得忍受，互相帮助才可能把项目做好。 </p>
<p>对于项目经理而言，如果你想得明白，工作模版是你控制项目质量的好工具，所以你的工作是和项目成员讨论模版，并且让他们理解模版，至于根据模版完成的内容，一般而言，你就无能为力了，得靠你的项目成员了。 </p>
<p>对于咨询项目而言，项目经理必须要有一个本事，能抓住重点，当你的项目成员给你100页的报告时，你清楚地知道最关键的是什么？一句话能说清楚，一页PPT能说清楚，十页PPT能说清楚，100页也能说清楚，这是真本事。反过来说，当你分配任务的时候，你要清楚地告诉项目成员里面的关键点在哪里，如果你实在不知道，就让项目成员告诉你，如果他也不知道，那就讨论，实在讨论不清楚了，就开始做，做了再讨论，反反复复，总有清楚的一天。 </p>
<p>项目经理该做什么？ </p>
<p>如果一个4个以上项目成员的项目团队，项目经理还在做具体的事情，花很多时间写具体的文档，那这个项目肯定存在问题了。因为你已经花了太多的经历在具体细节上，意味着更重要的事情你没有关注。在我看来，项目经理最应该做的三件事情是：项目总体计划和控制、沟通和协调资源、处理项目之外的事情。 </p>
<p>• 项目总体计划和控制 </p>
<p>计划只是控制的一个手段，你必须想清楚整个项目的大阶段，在项目进度出问题的时候，如何快速推进。我一般会列出大的阶段性计划和关键要求，具体的阶段的详细计划，我都会安排一个项目成员来总体负责这个阶段的事情，因为我已经没精力了。有问题我们可以讨论，但必须有一双眼睛盯着这件事情。 </p>
<p>另外，我常用的一个手段是文档模板，通过文档模板来控制项目内容和质量，这个非常有用，如果把文档模板只是理解为格式，那就没意思了，文档模板是框架的确立，至少要细化到3级目录，有时候甚至具体的表格、具体的问题和关键字段，详细程度视重要程度而言，这个工作对项目经理而言是非常重要的，会花很多时间。当然，对我而言，我也不会自己写一个扔出去，而是通过讨论，拿笔划划，让项目成员准备初稿，然后一轮一轮的讨论，通过讨论使大家明白这个过程和内容要求。 </p>
<p>• 沟通和协调资源 </p>
<p>有人说项目管理的工作就是沟通、沟通、再沟通。一点没错。项目经理需要沟通的人太多了，客户、项目成员、公司、家里人，一堆人，不花时间怎么能解决问题？所以你必须花大量的时间去沟通。我判断一个项目的成功状态是你到底花了多长时间和客户在一起沟通，对一个项目经理而言，比较理想的状态是你随时可以推开客户方任何一个人的办公室的门去聊，除了有秘书挡架的之外（有秘书挡架的要通过mail、书面材料来补）。一个好的项目经理，在两到三周就能达到这个状态。这个状态的背后意味着你能帮助客户解决问题或者给他帮助和启发，否则就是推门进去了，客户也会把你踹出来。 </p>
<p>另外一个重要工作当然是协调资源，这方面内容很多。最重要的一点是，如果你发现某个问题项目组所有人都搞不定了或者不经济了，想别的办法吧，找别人吧，客户方的，公司的，外面的都可以。这个工作比较难，也很烦琐，所以总体上往往还是要自力更生，艰苦奋斗。借助项目外的资源来解决目标明确的具体问题，协调资源的次序一定是：客户、自己的公司、外部资源，搞错次序了，就复杂且麻烦了。 </p>
<p>• 处理项目之外的事情 </p>
<p>项目经理还有一个很重要的工作就是控制项目范围，怎么控制？要敢于向客户说“不”，但这个“不”不是乱说的，如果你拒绝客户，你就拒绝了自己。这远远不是一个说话的艺术问题，而是是否能站在客户立场上，帮助客户解决问题的问题。即使项目无法很好解决，你需要告诉客户怎么解决，给人一条出路，而不是堵回去。在此基础上再分析在项目的时间、成本、质量和范围约束下，我们能做什么。给客户解决方案，小到参考文档，大到运作项目、整合资源都不是简单的事情，需要投入很多的精力，而不要让项目成员在这方面花太多的时间。所以从这个意义上讲，项目经理的职责是让项目成员在一个相对安全的项目环境中工作。 </p>
<p>做该做的，充分调动项目成员的能力，让他们也参与项目管理的过程中来，决不是推卸责任，对于项目工作和人员培养都是很有好处的，项目经理的眼睛如果只盯在项目本身，项目很难有好的结果。总之，你始终要清醒地认识到，你带领的是一个团队，而不是你自己。 </p>
<p>项目经理需要攘内安外，对外眼观六路，耳听八方，为项目组营造良好的大环境，对内管理有度，控制有法，给项目成员有发挥的空间，又不至于失控。 </p>
<p>一句话，项目经理首先是一个负责任的人，同时又要给项目成员以责任。<br />
项目推进不动，项目经理往往是关键。要当好项目经理就要多思考，同时必须应用正确的方法。否则事倍功半，几头受气（风箱中的老鼠？）。<br />
扼守承诺，善于沟通，抓住重点，排除干扰，控制主线。控制好这几点，也基本能胜任项目经理。学会中庸之道，不走极端。</p>
<p>项目推进不动，项目经理往往是关键。要当好项目经理就要多思考，同时必须应用正确的方法。否则事倍功半，几头受气（风箱中的老鼠？）。<br />
扼守承诺，善于沟通，抓住重点，排除干扰，控制主线。控制好这几点，也基本能胜任项目经理。学会中庸之道，不走极端。</p>
<p>例舉一個項目管理的場景，請幫忙分析一下。<br />
1 基本組織架構為部門式，人力資源歸屬各部門。<br />
2 項目管理辦公室成員牽頭各項目的推動，依照任務性質分派到其他部門，項目依據項目經理之職級呈現為弱矩陣項目，或平衡矩陣。<br />
      部分項目推動過程的缺失表現為，進度不良，質量不良。項目經理分派任務本身說明不詳細，或者未按照組織要求提供文檔。</p>
<p>先謝謝</p>
<p>现代企业管理模式，大家都逐步在探索矩阵式的管理。为的目的是加快市场反馈速度，提高管理效率。但如何平衡项目管理和部门管理的职责分配，有效的调动资源而不出现多头领导，是一个值得研究的地方。<br />
以我的经验，是企业必须建立一套科学的考核体系，平衡项目和职能部门之间的权利，从利益上找到共同点。而且更强调项目的重要性，对项目经理的授权要充分，当然对项目经理的考核和奖惩都是最严格的。这样才能提高效率，让大家都做实事，而不要相互扯皮</p>
<p>矩陣式項目管理優勢在于人力等資源的共享，但是發揮優勢是需要團隊合作等企劃文化支撐。否則只能降低管理效率。</p>
<p>弱矩陣模式下的項目經理其職能類似跟單，其工作的完成一部分是自己的努力，大部分是依靠其他團隊成員的合作。哪些工作需要自己去完成，哪些工作可以指派其他成員完成，是需要依據環境思量的。指派給別人完成的任務，要要盡力準備，創作出容易完成的環境，如果只是自己圖清閑，把任務一概推給別人處理，效果可想而至。</p>
<p>這也是對你4樓關于項目經理職能論述的一個側面補充吧。<br />
补充得不错，  </p>
<p>还有矩阵式管理中，横向（项目管理）管理更强还是纵向（职能部门管理）权利更强，是由公司的战略和运营模式决定的。而一个公司的战略和运营模式，又是根据内外环境，比如自身资源优势，行业市场环境，竞争者分布而影响的。作为一个初创的公司，生存为最重要的前提，所以强调以项目为导向，其他部门全力配合项目经理完成项目，尽快产生现金流。做到一定规模，生存不是首要问题后，就要解决规范，体系和稳定性问题。此时应该职能管理和项目并重。当发展比较顺利，市场定位准确，产品日益成熟，有稳定的客户群后，要解决的就是如何大量复制的问题。此时对稳定性和标准，规范提出了高要求。有时不得不拒绝一些非标准化的特殊需求。以标准化推进市场占有率。职能部门的管理权力会略强于项目管理。<br />
为了达到最好的平衡，需要在项目和职能部门之间做好平衡。而我更偏向于项目略大于职能的管理模式。一切都是项目，一切都是目标管理。只是团队中来自于不同的专业部门临时组合在一起，完成一个共同的目标。职能部门的作用就是培训，规范本部门的工作，做到更专业化，提高效率。项目经理的责任，就是如何挑选适合项目的资源，并如何更好的整合在一起。<br />
对于每个人所在的行业都会认为自己现阶段所处的这个行业需要学习的太多，要创新的却更多，就像现代社会的网络、电脑、软件，和这些有关的我们统称为“IT人士”，他们需要更快的学习创新速度因为这个行业新成代谢太快，而我也是其中一员，但在这些行业里有共同的一句话：“做好每件事之前先考虑做好一个人”，一个软件项目经理人也不例外。 </p>
<p>　　一个项目的成功百分百归功于这个项目团队，而失败则百分百责任于项目经理人一人，可能失败的责任归于一人用之过大，但其实不然，如：1、项目的失败可能来源于一些外在的因素，这就表示项目经理人对项目的风险评估不够彻底；2、项目中因团队关键人员被调或流动，导致项目延期或无法进行所带来的损失，这就表明人力资源储备有限，更重要的是项目经理人是否有考虑过项目进行中团队某位或很多人员流动该怎样让项目能如期完成；3、项目大部分功能完成后需要客户的初验，这时就需要很多功能上的完善与增加，这可能无法避免但有些更荒唐的是客户看了之后可能对您说：“这和我想要的是两码事”这个时候您只能有权利做一件事，那就是尽情的晕吧！因为有些项目经理人根本就没有和客户说过一句话甚至更惨，没见过一次面，项目的初定和需求直接来源于业务人员，我们的大部分客户都不知道怎样把现实中的实物用程序的方式来展示去实现，所以项目经理人最起码也要用喝一个下午茶的工夫去告诉我们的客户：“您的这个想法我们需要进一步细化，我们将会通过****样的方式帮您实现，您看可以吗？”必须让他回答。 本文转自项目管理者联盟</p>
<p>　　以上总结于项目成败的三点：1、项目经理人对项目的风险评估是否彻底；2、项目经理人是否在团队人员缺失的情况下，能极力挽回项目进度，并能按期完成任务；3、项目经理人是否和客户有更为深入的交谈，项目经理人必须考虑是否真正为客户解决了实际问题。 </p>
<p>　　做好一个项目经理（先从自己做起）：</p>
<p>　　第一：项目前的资源整合；尽量为项目开发提供一个好的环境，一个舒适的工作空间和项目预计所需要的工作工具（尽量提供最好的），就像一个开发人员有一台好的机器，你想想他有多带劲！还有就是召集这个项目需要切实用到的一切人力资源；</p>
<p>　　第二：能力测试；针对软件行业流动性很大的特点，并不排除您的项目团队中有陌生的面孔，也有可能是其他项目团队的派调过来的人手，或是其他合作公司的开发人员，这时您可能需要能力测试这一环节，测试并不是对团员能力的质疑,而是测试该把某个队员放在某个位置，或扮演项目开发中的什么角色比较合适。这种测试有很多方法，可以是做一些游戏或让你的团队一起去完成一个与项目无关的事情，来观察团队每个人员的特性与习性，然后就是针对项目中的每个技术环节做一个特定的测试，目的是为更好的跳过技术陷阱，测试的方法可以自订，但对于团队人员不能让他们感受到这是种测试，这样你就可以让每个团队人员在自己的适合的岗位上发挥自己最大的潜力！项目管理者联盟文章，深入探讨。</p>
<p>　　第三：个人执行力；怎样让自己具备有一个很好的执行力，首先，要端正所有项目经理人的观点（自己不光是该项目的领导人更是该团队中的普通一员），请把您对您的上级，公司领导的热情与尊敬复制到您对团队人员的身上，现代社会注重人文与个人魅力，以前的命令式做法已行不通，一个出色的领导人注重的是亲和力，要让你的团队人员感觉到“做好这个项目需要得到他们的帮助！”。</p>
<p>　　第四：团队精神与士气；如果在一个项目中您要是感觉到您正在扮演一个传递员的工作而每件队员与队员之间能解决的事情都需要经过您这台“服务器”的话，就说明您的这个团队中“神经系统”出了问题，人员的情绪千变万化，队员在生活中或工作中遇到了困难，这时项目经理人需要有迅速的洞察力“发现它就要解决掉它”，怎样让一个团队有一个更好的机动性和更强劲的动力，个人认为最简单快捷的方式就是在项目中抽出活动资金带着您的团队去&#8221;happy&#8221;！(对团队人员而言，一次活动互相接触的次数，大于在上班时间1个月所接触的次数。) 最好是制定活动计划和活动内容（最好是能让所有人都喜欢的），并严格规定不能缺席。</p>
<p>　　第五：分配任务的重要性；在分配任务时所有项目经理人都会发生的错误，就是在会议上当着整个团队强调某个队员任务的重要性，您提高了一个队员的积极性却降低了其他队员的士气，在分配任务到个人时还要注意把这个任务分配给某个人是否有想好还有更好的人选，不要主观地认为某个队员手头上的工作不太紧而分配给他，这样将会带来不可估计的后果，对项目本身而言，任务分配到个人有多有少有复杂有简单，这不能用天枰衡量，但怎样让每个队员心中平衡这可能就需要一个好的考核办法与项目奖金的分配制度，最好是公开透明的。 </p>
<p>　　总的来说，做好一个项目经理人难，需要不断的努力、思考和完善！<br />
项目管理知识体系，是一个较大的知识系统，这也就让很多初学者摸不到头脑，感觉入门很难。<br />
学习都是一个循序渐进的过程。<br />
要把项目保证完成，首先要做的就是风险管理。只要做好了风险管理，基本能够保证你的项目在可控的范围之内，并能够按照范围内的指标完成。<br />
第二步，要想把项目做好，就必须做好沟通管理。项目经理必须起到一个有效传达信息，平衡投资者，项目团队和客户之间的交流。</p>
<p>说到项目管理，大家都会想到铁三角  时间-质量-成本 中间覆盖的就是项目范围。这是一个经典的模型，项目经理必须深悟此道，融会贯通。<br />
投资者，项目团队，客户也是一个三角，项目经理就在其中，重要性显而易见<br />
人，工具，制度  这个是通用的管理模型，同样适合于项目管理。要把项目做得漂亮，提高项目的效率，项目经理就必须在三者之间结合内外环境状况，得到最佳的平衡。</p>
<p>项目管理虽然兴起在西方，但中国的项目管理实践历史已经非常悠久。好的项目经理，并不一定要考证。管理关键在于行，而不在于知。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1395.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>恢复Unix系统被删除的文件</title>
		<link>http://www.evanjiang.net.cn/archives/1393.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1393.html#comments</comments>
		<pubDate>Sat, 12 Dec 2009 05:06:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[数据恢复]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1393</guid>
		<description><![CDATA[<p>与DOS/Windows不同，Unix文件被删除后很难恢复，这是由Unix独特的文件系统结构决定的。所以，要想恢复这些文件，就需要另辟蹊径。Unix文件系统的特殊性决定了它不能像Windows系统那样恢复被删除的文件。 </p>
<p>Unix 文件目录不像DOS/Windows那样，文件即使被删除之后仍保存有完整的文件名、文件长度、始簇号(即文件占有的第一个磁盘块号)等重要信息。相反， 它的文件信息全部依靠一种被称为i节点的数据结构来描述，而i节点在相应文件被删除之后即被清空，因此，要想直接恢复被删除的文件内容几乎是不可能的，必 须另辟蹊径。本文结合实际，讨论几种文件恢复策略及其关键步骤的具体实现。　 </p>
<p>不过，需要说明的是，Unix系统下文件系统恢复的具体实现依赖于不同操作系统和不同版本的具体文件系统结构和磁盘块分配算法（见附文）。本文只是试图总结出一种一般性的思路和策略，限于篇幅，不能详细讨论它们的具体实现过程。 </p>
<p>Unix文件系统结构 </p>
<p>我们知道，Unix是以文件卷作为其文件系统存储格式的，而不同的Unix系统，文件卷格式是有差异的，甚至即使是同一Unix操作系统的不同版本，其文 件系统也未必完全相同，例如: SCO Unix 4.1版与5.0版文件系统结构就有明显差异，但只要是Unix系统，其文件卷的基本结构是一致的。 </p>
<p>不管是什么Unix系统，不管什么版本，其文件卷至少包括引导块、超级块、i节点表、数据区等几个部分。 </p>
<p>1. 引导块 </p>
<p>位于文件卷最开始的第一扇区，这512字节是文件系统的引导代码，为根文件系统所特有，其他文件系统这512字节为空。 </p>
<p>2. 超级块 </p>
<p>位于文件系统第二扇区，紧跟引导块之后，用于描述本文件系统的结构。如i节点长度、文件系统大小等，其结构存放于/usr/include/sys/filsys.h中，其结构如下: </p>
<p>struct filsys </p>
<p>{ ushort s_isize; /*磁盘索引节点区所占用的数据块数*/ </p>
<p>daddr_t s_fsize; /*整个文件系统的数据块数*/ </p>
<p>short s_nfree; /*在空闲块登录表中当前登记的空闲块数目*/ </p>
<p>daddr_t s_free[NICFREE]; /*空闲块登记表*/ </p>
<p>short s_ninode; /*空闲索引节点数*/ </p>
<p>ino_t s_inode[NICINOD]; /*空闲节点登记表*/ </p>
<p>char s_flock; /*加锁标志位*/ </p>
<p>char s_ilock; /*节点加锁标志位*/ </p>
<p>char s_fmod; /*超级块修改标志*/ </p>
<p>char s_ronly; /*文件系统只读标志*/ </p>
<p>time_t s_time; /*超级块上次修改的时间*/ [...]]]></description>
			<content:encoded><![CDATA[<p>与DOS/Windows不同，Unix文件被删除后很难恢复，这是由Unix独特的文件系统结构决定的。所以，要想恢复这些文件，就需要另辟蹊径。Unix文件系统的特殊性决定了它不能像Windows系统那样恢复被删除的文件。 </p>
<p>Unix 文件目录不像DOS/Windows那样，文件即使被删除之后仍保存有完整的文件名、文件长度、始簇号(即文件占有的第一个磁盘块号)等重要信息。相反， 它的文件信息全部依靠一种被称为i节点的数据结构来描述，而i节点在相应文件被删除之后即被清空，因此，要想直接恢复被删除的文件内容几乎是不可能的，必 须另辟蹊径。本文结合实际，讨论几种文件恢复策略及其关键步骤的具体实现。　 </p>
<p>不过，需要说明的是，Unix系统下文件系统恢复的具体实现依赖于不同操作系统和不同版本的具体文件系统结构和磁盘块分配算法（见附文）。本文只是试图总结出一种一般性的思路和策略，限于篇幅，不能详细讨论它们的具体实现过程。 </p>
<p>Unix文件系统结构 </p>
<p>我们知道，Unix是以文件卷作为其文件系统存储格式的，而不同的Unix系统，文件卷格式是有差异的，甚至即使是同一Unix操作系统的不同版本，其文 件系统也未必完全相同，例如: SCO Unix 4.1版与5.0版文件系统结构就有明显差异，但只要是Unix系统，其文件卷的基本结构是一致的。 </p>
<p>不管是什么Unix系统，不管什么版本，其文件卷至少包括引导块、超级块、i节点表、数据区等几个部分。 </p>
<p>1. 引导块 </p>
<p>位于文件卷最开始的第一扇区，这512字节是文件系统的引导代码，为根文件系统所特有，其他文件系统这512字节为空。 </p>
<p>2. 超级块 </p>
<p><span id="more-1393"></span>位于文件系统第二扇区，紧跟引导块之后，用于描述本文件系统的结构。如i节点长度、文件系统大小等，其结构存放于/usr/include/sys/filsys.h中，其结构如下: </p>
<p>struct filsys </p>
<p>{ ushort s_isize; /*磁盘索引节点区所占用的数据块数*/ </p>
<p>daddr_t s_fsize; /*整个文件系统的数据块数*/ </p>
<p>short s_nfree; /*在空闲块登录表中当前登记的空闲块数目*/ </p>
<p>daddr_t s_free[NICFREE]; /*空闲块登记表*/ </p>
<p>short s_ninode; /*空闲索引节点数*/ </p>
<p>ino_t s_inode[NICINOD]; /*空闲节点登记表*/ </p>
<p>char s_flock; /*加锁标志位*/ </p>
<p>char s_ilock; /*节点加锁标志位*/ </p>
<p>char s_fmod; /*超级块修改标志*/ </p>
<p>char s_ronly; /*文件系统只读标志*/ </p>
<p>time_t s_time; /*超级块上次修改的时间*/ </p>
<p>short s_dinfo[4]; /*设备信息*/ </p>
<p>daddr_t s_tfree; /*空闲块总数*/ </p>
<p>ino_t s_tinode; /*空闲节点总数*/ </p>
<p>char s_fname[6]; /*文件系统名称*/ </p>
<p>char s_fpack[6]; </p>
<p>long s_fill[13]; /*填空位*/ </p>
<p>long s_magic; /*指示文件系统的幻数*/ </p>
<p>long s_type; /*新文件系统类型*/ }; </p>
<p>3. i节点表 </p>
<p>i节点表存放在超级块之后，其长度是由超级块中的s_isize字段决定的，其作用是用来描述文件的属性、长度、属主、属组、数据块表等，其数据结构在/usr/include/sys/ino.h中，如下: </p>
<p>struct dinode </p>
<p>{ ushort di_mode; </p>
<p>short di_nlink; </p>
<p>ushort di_uid; </p>
<p>ushort di_gid; </p>
<p>off_t di_size; </p>
<p>char di_addr[40]; </p>
<p>time_t di_atime; </p>
<p>time_t di_mtime; </p>
<p>time_t di_ctime; }; </p>
<p>4. 目录结构 </p>
<p>Unix所有文件均存放于目录中，目录本身也是一个文件。目录存放文件的机制如下: 首先，目录文件本身也象普通文件一样，占用一个索引节点; 其次，由这个索引节点得到目录内容的存放位置; 再次，从其内容中取出一个个的文件名和它对应的节点号，从而访问一个文件。 </p>
<p>由此可知文件名是依靠目录来描述的，文件的内容和其他信息则由索引节点来描述。 </p>
<p>被删文件的恢复策略 </p>
<p>Unix 下删除一个文件的过程很简单，那就是释放索引节点表和文件占用的数据块，清空文件占用的索引节点，但不清除文件内容。但删除文件与删除目录的处理不尽相 同，不同命令删除文件的过程也不相同。 Unix 删除一个文件的具体步骤是: 根据文件i节点的地址表逐一释放文件占用的磁盘数据块，然后清空相应的节点，最后释放i节点。 删除一个目录的过程是: 首先逐一删除目录里的所有文件，然后删除目录。目录本身也是一个文件，故删除方法与删除文件一致。 </p>
<p>要恢复被删除的文件，只能根据删除后留下的东西去做文章。文件被删除后留下了什么呢？由上述分析可知: 其一，留下了文件的内容; 其二，留下了“现场”。文件的恢复策略只能从这两个方面来分析。 </p>
<p>1.根据磁盘现场进行恢复 </p>
<p>如果文件被删除，现场未被破坏(即文件被删除后硬盘未发生过写操作)，而且假定只删除了一个文件，那么可根据系统的分配算法进行恢复。因为系统建立一个文 件时，必定根据某一特定的分配算法决定文件占用的数据块位置。而当该文件被删除后，它所占用的数据块被释放，又回到系统的分配表中，这时如果重新建立一个 文件，系统根据原来的分配算法分配出的数据块必定跟该文件原来占用的数据块一致。而且我们知道，Unix文件最后一个数据块尾部多出的字节是全部置0的， 据此只要调用系统的数据分配算法，在系统中一块一块地申请数据块，只要发现一个分配出的数据块中尾部全为0，即可认为文件结束，由此可确定文件长度和内 容，进而实现恢复。方法如下: </p>
<p>● 申请一个索引节点，即向系统申请创建一个新文件名而不写入任何内容。如: #>/tmp/xx。 </p>
<p>● 调用系统分配数据块算法getnextfreeblock()得到一个数据块号，记入某一地址表变量中。 </p>
<p>● 读出这个数据块，判断其尾部是否全部连续为0，若不是，则回到第二步，若是，则进行第四步。 </p>
<p>● 首先用系统函数fstat得到/tmp/xx的i节点号，然后将第二步所得的地址表写入索引节点的地址表中(注意间址问题)，并根据数据块个数和最后一块中有效数据长度计算出文件大小，写入i节点的di_size字段。 </p>
<p>● 回写系统的索引节点表即可。 </p>
<p>需要说明的是: 第一，系统分配数据块的算法因不同的Unix版本而不同; 第二，有的Unix如SCO Unix 5.0版，其空闲数据块的分配和回收是使用一种动态链表的数据结构来实现的，它们的文件恢复更加容易，只要在空闲链表中的表尾去寻找即可。 </p>
<p>2. 根据内容恢复 </p>
<p>若现场已被破坏，即硬盘发生过写操作，那么只好根据内容来恢复。而且，由于Unix是一个多进程、多用户系统，它每一次开关机或硬件、通信故障等都会记录 系统日志、.sh_history等，硬盘现场被破坏的可能性极大。因此讨论按内容恢复的方法具有更大的实用价值。笔者经过实际探索得出下列四种恢复策略 供参考。 </p>
<p>● 关键字搜索法 </p>
<p>如果知道被删除的文件内容中若干字节的内容，而且该文件长度又不超过一个磁盘 块，那么可以在整个文件系统中搜索这一字节串，得出一个文件所在的数据块，将它们的块号填入一个i节点，即可恢复一个文件。搜索文件系统的算法很简单，说 明如下: 首先，用“#df －k”命令确定文件系统的设备文件名(如/dev/root); 然后，用下述函数搜索，若成功，返回数据块号，反之返回-1。其中fsname是文件系统的设备名，如/dev/root，comp()参数是实现搜索条 件的函数。 </p>
<p>long searchfs(char *fsname , int comp()) </p>
<p>{ FILE *fp; </p>
<p>char buf[1024]; </p>
<p>long i=0; </p>
<p>fp=fopen(fsname,&#8221;r&#8221;); </p>
<p>while (!feof(fp)) </p>
<p>{ fread(buf,1024,1,fp); </p>
<p>if (comp()) /* 检查是否符合搜索条件 */ </p>
<p>return i; /* 若成功返回块号 */ </p>
<p>i++; </p>
<p>} </p>
<p>fclose(fp); </p>
<p>return -1; /* 未找到符合条件的块，返回-1*/ } </p>
<p>● 精确长度搜索法 </p>
<p>如果知道被删除文件的精确长度(字节数)，那么可根据一个数据块的大小，计算出文件的最后一个数据块中数据的精确长度，该数据块中其他字节必然是全0。根 据这一条件，通过搜索整个文件系统，找出其中符合条件的数据块，若出现多个块符合要求，则还需要根据其他条件区分。但不管怎样，根据精确长度分析也是恢复 数据的一个策略。 </p>
<p>● 内容关联法 </p>
<p>如果知道文件内容中存在某种可实现的关联，例如文件的校验和或者文件内容的某种上下文关系，那么也可通过搜索整个文件系统，通过反复尝试寻找符合关联条件的磁盘数据块，进而恢复一个文件。 </p>
<p>● 环境比较法 </p>
<p>如果知道删除文件所在的文件系统的安装过程，那么，另找一台完全相同的机器，按原来完全相同的步骤安装相同版本的Unix和相应的其他软件。可以想象，新 的机器环境会与原来的环境基本相同，比较两个机器上相同文件系统的内容，可以推断出被删除文件的大致位置，至少可以大大减少查找的范围，一旦查找的范围足 够小时，就可以用逐个观察和尝试的方法结合其他条件恢复数据，降低恢复的难度，增加恢复的可靠性。 (作者单位: 中国人民银行抚州市中心支行 ) </p>
<p>链接 </p>
<p>SCO Unix磁盘块分配算法 </p>
<p>由于一个磁盘块的大小为1024字节，所以一个位图块可以管理0&#215;400×8=0&#215;2000个磁盘块。那么，下一个位图块的块号就是0x61d+ 0&#215;2000=0x261d。这与位图索引块中的数据是相符的。那么，位图块0x61d管理着块号为0x61d-0x261c的磁盘块。由以上数据可见， 在这个位图块中，第一个被使用的磁盘块块号是0x61d，即位图块本身。第一个空闲块块号由0&#215;187401处字节0x1c的第2位指示，是0&#215;627。 由于该位图块是文件卷中的第一个位图块，所以0&#215;627号磁盘块也是文件卷中的第一个空闲块。当我们向系统申请磁盘块时，系统通过超级块、位图索引块、位 图块来寻找那些标志位为1的块，然后将相应的标置位置0。</p>
<p>当释放一个磁盘块时，系统就将相应的标志位置1。现在，我们就可以判断出文 件卷中的每一个磁盘块是否被使用了。但是仅凭这些还不能完全恢复误删的文件，我们还得了解SCO Unix分配磁盘块的算法。为了使一个文件所占用的磁盘块相对集中，SCO Unix是按照特定的算法来选择空闲块分配给文件的。假设某文件所占用的最后一个磁盘块的块号为m，现在要再分配一磁盘块给该文件，若该文件是新文件，则 m=0。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1393.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nessus的安装和使用（下）</title>
		<link>http://www.evanjiang.net.cn/archives/1389.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1389.html#comments</comments>
		<pubDate>Thu, 10 Dec 2009 14:36:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[安全工具]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1389</guid>
		<description><![CDATA[<p>**********</p>
<p>We are going to ask you some question for each client certificate</p>
<p>If some question has a default answer, you can force an empty answer by</p>
<p>entering a single dot &#8216;.&#8217;</p>
<p>*********</p>
<p>User #1 name (e.g. Nessus username): admin</p>
<p>Client certificates life time in days [365]:admin</p>
<p>Country (two letter code) [CN]: CN</p>
<p>State or province name [BJ]:</p>
<p>Location (e.g. town) [BJ]:</p>
<p>Organization [Test]:</p>
<p>Organization unit [...]]]></description>
			<content:encoded><![CDATA[<p>**********</p>
<p>We are going to ask you some question for each client certificate</p>
<p>If some question has a default answer, you can force an empty answer by</p>
<p>entering a single dot &#8216;.&#8217;</p>
<p>*********</p>
<p>User #1 name (e.g. Nessus username): admin</p>
<p>Client certificates life time in days [365]:admin</p>
<p>Country (two letter code) [CN]: CN</p>
<p>State or province name [BJ]:</p>
<p>Location (e.g. town) [BJ]:</p>
<p>Organization [Test]:</p>
<p>Organization unit [Test]:</p>
<p>e-mail []: admin@test.com</p>
<p>Generating RSA private key, 1024 bit long modulus</p>
<p><span id="more-1389"></span><br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.++++++</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.++++++</p>
<p>e is 65537 (0&#215;10001)</p>
<p>You are about to be asked to enter information that will be incorporated</p>
<p>into your certificate request.</p>
<p>What you are about to enter is what is called a Distinguished Name or a DN.</p>
<p>There are quite a few fields but you can leave some blank</p>
<p>For some fields there will be a default value,</p>
<p>If you enter &#8216;.&#8217;, the field will be left blank.</p>
<p>&#8212;&#8211;</p>
<p>Country Name (2 letter code) [FR]:State or Province Name (full name)</p>
<p>[Some-State]:Locality Name (eg, city) []:Organization Name (eg, company)</p>
<p>[Internet Widgits Pty Ltd]:Organizational Unit Name (eg, section) []:Common</p>
<p>Name (eg, your name or your server&#8217;s hostname) []:Email Address []:Using</p>
<p>configuration from /tmp/nessus-mkcert.6217/stdC.cnf</p>
<p>Check that the request matches the signature</p>
<p>Signature ok</p>
<p>The Subject&#8217;s Distinguished Name is as follows</p>
<p>countryName           <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> RINTABLE:&#8217;CN&#8217;</p>
<p>stateOrProvinceName   <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> RINTABLE:&#8217;BJ&#8217;</p>
<p>localityName          <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> RINTABLE:&#8217;BJ&#8217;</p>
<p>organizationName      <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> RINTABLE:&#8217;Test&#8217;</p>
<p>organizationalUnitName:PRINTABLE:&#8217;Test&#8217;</p>
<p>commonName            <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> RINTABLE:&#8217;admin&#8217;</p>
<p>emailAddress          :IA5STRING:&#8217;admin@test.com&#8217;</p>
<p>Certificate is to be certified until May 25 17:37:42 2008 GMT (365 days)</p>
<p>Write out database with 1 new entries</p>
<p>Data Base Updated</p>
<p>User rules</p>
<p>&#8212;&#8212;&#8212;-</p>
<p>nessusd has a rules system which allows you to restrict the hosts</p>
<p>that has the right to test. For instance, you may want</p>
<p>him to be able to scan his own host only.</p>
<p>Please see the nessus-adduser(8) man page for the rules syntax</p>
<p>Enter the rules for this user, and hit ctrl-D once you are done:</p>
<p>(the user can have an empty rules set)</p>
<p>User added to Nessus.</p>
<p>Another client certificate? n</p>
<p>Your client certificates are in /tmp/nessus-mkcert.6217                             ；证书在/tmp/nessus-mkcert.6217,要妥善保存</p>
<p>You will have to copy them by hand</p>
<p>7.将证书放到nessus的证书目录下</p>
<p>[root@test8 /]# cd /tmp/nessus-mkcert.6217/</p>
<p>[root@test8 nessus-mkcert.6217]# ls</p>
<p>01.pem                   index.txt      req_admin.pem stdC.cnf</p>
<p>cert_admin.pem           index.txt.old serial</p>
<p>cert_nessuswx_admin.pem key_admin.pem serial.old</p>
<p>[root@test8 nessus-mkcert.6217]# cp *.pem /opt/nessus/com/nessus/CA/</p>
<p>8安装并启用NessussClient</p>
<p>[root@test8 /]# mv NessusClient-1[1].0.2-es4.i386 NessusClient.rpm</p>
<p>[root@test8 /]# rpm -ivh NessusClient.rpm</p>
<p>[root@test8 /]#NessussClient<br />
在“File”菜单中点击“Connect”出现以下对话框：</p>
<p>“Hostname”: nessus服务器名称或地址</p>
<p>“Port”:nessus服务端口地址；</p>
<p>“Login”和”Password”为用户名和密码；</p>
<p>“Use SSL encryption”启用SSL协议</p>
<p>”Authentication by certificate”用证书方式认证</p>
<p>一般可以通过用户名和密码登陆进行检测，如需安全的证书人证登陆请将</p>
<p>“Use SSL encryption”和”Authentication by certificate”</p>
<p>9.建立扫描任务</p>
<p>在“File” 菜单点击“Scan Assistant”，用Scan Assistant定制检测任务。</p>
<p>10。启用扫描</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1389.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nessus的安装和使用（上）</title>
		<link>http://www.evanjiang.net.cn/archives/1387.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1387.html#comments</comments>
		<pubDate>Thu, 10 Dec 2009 14:35:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[安全工具]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1387</guid>
		<description><![CDATA[<p>1。到[url]http://www.[/url]nessus.org/注册一个帐号，下载最新的安装文件.并到你注册的邮箱查收注册码保存。</p>
<p>Nessus-3.0.5-es4.i386.rpm</p>
<p>NessusClient-1[1].0.2-es4.i386.rpm</p>
<p>2。安装Nessus-3.0.5-es4.i386</p>
<p>[root@test8 sbin] rpm -ivh Nessus-3.0.5-es4.i386.rpm</p>
<p>Preparing&#8230;                ########################################### [100%]</p>
<p>1:Nessus                 ########################################### [100%]</p>
<p>**** This host seems to be running under VMware.</p>
<p>**** Nessus performance is abysmal when running under [...]]]></description>
			<content:encoded><![CDATA[<p>1。到[url]http://www.[/url]nessus.org/注册一个帐号，下载最新的安装文件.并到你注册的邮箱查收注册码保存。</p>
<p>Nessus-3.0.5-es4.i386.rpm</p>
<p>NessusClient-1[1].0.2-es4.i386.rpm</p>
<p>2。安装Nessus-3.0.5-es4.i386</p>
<p>[root@test8 sbin] rpm -ivh Nessus-3.0.5-es4.i386.rpm</p>
<p>Preparing&#8230;                ########################################### [100%]</p>
<p>1:Nessus                 ########################################### [100%]</p>
<p>**** This host seems to be running under VMware.</p>
<p>**** Nessus performance is abysmal when running under VMware</p>
<p>**** We do not recommand you use this setup in production</p>
<p>**** This host seems to be running under VMware.</p>
<p>**** Nessus performance is abysmal when running under VMware</p>
<p>**** We do not recommand you use this setup in production</p>
<p>nessusd (Nessus) 3.0.5. for Linux</p>
<p>(C) 1998 &#8211; 2007 Tenable Network Security, Inc.</p>
<p>Processing the Nessus plugins&#8230;</p>
<p>[##################################################]</p>
<p><span id="more-1387"></span></p>
<p>All plugins loaded</p>
<p>- Please run /opt/nessus//sbin/nessus-add-first-user to add an admin user</p>
<p>- Register your Nessus scanner at [url]http://www.[/url]nessus.org/register/ to obtain</p>
<p>   all the newest plugins</p>
<p>- You can start nessusd by typing /sbin/service nessusd start</p>
<p>3.添加检测用户帐号和密码</p>
<p>[root@test8 sbin]# ./nessus-add-first-user</p>
<p>**** This host seems to be running under VMware.</p>
<p>**** Nessus performance is abysmal when running under VMware</p>
<p>**** We do not recommand you use this setup in production</p>
<p>**** This host seems to be running under VMware.</p>
<p>**** Nessus performance is abysmal when running under VMware</p>
<p>**** We do not recommand you use this setup in production</p>
<p>Using /var/tmp as a temporary file holder</p>
<p>Add a new nessusd user</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Login : admin</p>
<p>Authentication (pass/cert) [pass] : pass</p>
<p>Login password :</p>
<p>Login password (again) :</p>
<p>User rules</p>
<p>&#8212;&#8212;&#8212;-</p>
<p>nessusd has a rules system which allows you to restrict the hosts</p>
<p>that admin has the right to test. For instance, you may want</p>
<p>him to be able to scan his own host only.</p>
<p>Please see the nessus-adduser(8) man page for the rules syntax</p>
<p>Enter the rules for this user, and hit ctrl-D once you are done :</p>
<p>(the user can have an empty rules set)</p>
<p>Login             : admin</p>
<p>Password          : ***********</p>
<p>DN                :</p>
<p>Rules             :</p>
<p>Is that ok ? (y/n) [y] y</p>
<p>user added.</p>
<p>Thank you. You can now start Nessus by typing :</p>
<p>/opt/nessus//sbin/nessusd -D</p>
<p>4。注册Nessus</p>
<p>[root@test8 sbin]#/opt/nessus/bin/nessus-fetch &#8211;register AA2A-8930-320E-A2FF-3BC3</p>
<p>5。启用Nessus服务</p>
<p>[root@test8 sbin]# ./nessusd -D</p>
<p>**** This host seems to be running under VMware.</p>
<p>**** Nessus performance is abysmal when running under VMware</p>
<p>**** We do not recommand you use this setup in production</p>
<p>nessusd (Nessus) 3.0.5. for Linux</p>
<p>(C) 1998 &#8211; 2007 Tenable Network Security, Inc.</p>
<p>Processing the Nessus plugins&#8230;</p>
<p>[##################################################]</p>
<p>All plugins loaded</p>
<p>6。基于安全考虑创建CA证书</p>
<p>[root@test8 bin]# ./nessus-mkcert-client</p>
<p>Do you want to register the users in the Nessus server</p>
<p>as soon as you create their certificates ? (y/n): y</p>
<p>This script will now ask you the relevant information to create the SSL</p>
<p>client certificates for Nessus.</p>
<p>Client certificates life time in days [365]:365</p>
<p>Your country (two letter code) [FR]: CN</p>
<p>Your state or province name [none]: BJ</p>
<p>Your location (e.g. town) [Paris]: BJ</p>
<p>Your organization [none]: Test</p>
<p>Your organizational unit [none]:Test</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1387.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>端口扫描工具nmap使用介绍</title>
		<link>http://www.evanjiang.net.cn/archives/1385.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1385.html#comments</comments>
		<pubDate>Thu, 10 Dec 2009 14:29:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[安全工具]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1385</guid>
		<description><![CDATA[<p>nmap 使用介绍</p>
<p>nmap是目前为止最广为使用的国外端口扫描工具之一。我们可以从http://www.insecure.org/进行下载，可以很容易的安装到Windows和unix操作系统中，包括mac os x（通过configure、make 、make install等命令）也可以直接从http：//www.insecure.org/下载windows二进制（包括所需要的winpcap）也可以从http：//www.nmapwin.org/获得nmap的图形windows。</p>
<p>扫描主机</p>
<p>$ nmap -sT 192.168.1.18
Starting nmap 3.48(http://www.insecure.org/nmap/)at 2007-10-10 18:13 EDT
Interesting ports on gamebase(192.168.1.18)
port                  state                serverice
22/tcp     [...]]]></description>
			<content:encoded><![CDATA[<p>nmap 使用介绍</p>
<p>nmap是目前为止最广为使用的国外端口扫描工具之一。我们可以从http://www.insecure.org/进行下载，可以很容易的安装到Windows和unix操作系统中，包括mac os x（通过configure、make 、make install等命令）也可以直接从http：//www.insecure.org/下载windows二进制（包括所需要的winpcap）也可以从http：//www.nmapwin.org/获得nmap的图形windows。</p>
<p>扫描主机</p>
<p>$ nmap -sT 192.168.1.18<br />
Starting nmap 3.48(http://www.insecure.org/nmap/)at 2007-10-10 18:13 EDT<br />
Interesting ports on gamebase(192.168.1.18)<br />
port                  state                serverice<br />
22/tcp              open                ssh<br />
111/tcp            open                sunrpc<br />
 &#8230;&#8230;&#8230;.<br />
$ nmap -sR 192.168.1.18<br />
Startingnmap 3.48(http://www.insecure.org/nmap/)at 2007-10-10 18:13 EDT<br />
Interesting ports on gamebase(192.168.1.18)<br />
port                  state                serverice<br />
22/tcp              open                ssh<br />
111/tcp            open                sunrpc<br />
 &#8230;&#8230;&#8230;.</p>
<p>我们可以使用ping扫描的方法（-sP），与fping的工作方式比较相似，它发送icmp回送请求到指定范围的ip地址并等待响应。现在很多主机在扫描的时候都做了处理，阻塞icmp请求，这种情况下。nmap将尝试与主机的端口80进行连接，如果可以接收到响应（可以是syn/ack，也可以是rst），那么证明主机正在运行，反之，则无法判断主机是否开机或者是否在网络上互连。</p>
<p>扫描tcp端口</p>
<p>这里-sR是怎样在打开的端口上利用RPC命令来判断它们是否运行了RPC服务。</p>
<p>nmap可以在进行端口扫描的tcp报文来做一些秘密的事情。首先，要有一个SYN扫描（-sS),它只做建立TCP连接的前面一些工作，只发送一个设置SYN标志的TCP报文，一个RESET报文，那么nmap假设这个端口是关闭的，那么就不做任何事情。如果接收到一个响应，它并不象正常的连接一样对这个报文进行确认，而是发送一个RET报文，TCP的三次握手还没有完成，许多服务将不会记录这次连接。</p>
<p>有的时候，nmap会告诉我们端口被过滤，这意味着有防火墙或端口过滤器干扰了nmap，使其不能准确的判断端口是打开还是关闭的，有的防火墙只能过滤掉进入的连接。</p>
<p><span id="more-1385"></span>扫描协议</p>
<p>如果试图访问另一端无程序使用的UDP端口，主机将发回一个icmp“端口不可达”的提示消息，IP协议也是一样。每个传输层的IP协议都有一个相关联的编号，使用最多的是ICMP(1)、TCP(6)和UDP(17)。所有的IP报文都有一个“协议”域用于指出其中的传输层报文头所使用的协议。如果我们发送一个没有传输层报文头的原始IP报文并把其协议域编号为130[该编号是指类似IPSEC协议的被称为安全报文外壳或SPS协议]，就可以判断这个协议是否在主机上实现了。如果我们得到的是ICMP协议不可达的消息，意味着该协议没有被实现，否则就是已经实现了，用法为-sO.</p>
<p>隐蔽扫描行为</p>
<p>nmap给出了几个不同的扫描选项，其中一些可以配套着隐藏扫描行为，使得不被系统日志、防火墙和IDS检测到。提供了一些随机的和欺骗的特性。具体例子如下：</p>
<p>FTP反弹，在设计上，FTP自身存在一个很大的漏洞，当使用FTP客户机连接到FTP服务器时，你的客户机在TCP端口21上与FTP服务器对话，这个TCP连接称为控制连接。FTP服务器现在需要另一条与客户机连接，该连接称为数据连接，在这条连接上将传送实际的文件数据，客户机将开始监听另一个TCP端口上从服务器发挥的数据连接，接下来执行一个PORT命令到服务器，告诉它建立一条数据连接到客户机的IP地址和一个新打开的端口，这种操作方法称为主动传输。许多客户机使用网络地址转换或通过防火墙与外界连接，所以主动传输FTP就不能正常工作，因为由服务器建立的客户机的连接通常不允许通过。</p>
<p>被动传输是大多数FTP客户机和服务器所使用的方法，因为客户机既建立控制连接又建立数据连接，这样可以通过防火墙或NAT。</p>
<p>FTP的PORT命令，用来告诉FTP连接的服务器，使得与刚刚打开的用于数据连接的端口之间建立一个连接。由于我们不仅指定端口而且指定连接所用的IP地址，所以客户端也可以通过PORT命令让服务器连接到任何地方。所以我们一样可以让nmap用这个方法进行防火墙穿透。nmap做的所有工作是与一台服务器建立一个主动模式的FTP连接，并发送一个包含它试图扫描的主机IP地址和端口号的PORT命令。</p>
<p>nmap -b aaa@ftp.target.com -p 6000 192.168.1.226<br />
nmap 与ftp服务器的对话的例子：<br />
server：220  target ftp server version 4 ready<br />
client:user  anonymous<br />
server: 331 Guest login ok ,send e-mail as password<br />
client:pass<br />
server :230 login successful<br />
client:PORT 192,168,1.226,23,112<br />
server:200 PORT command successful<br />
client:LIST<br />
server:150 Opening ASCII connection for &#8216;/bin/ls&#8217;<br />
server:226 Transfer complete</p>
<p>PORT命令起作用，可以制造是别人进行端口扫描，扫描任何FTP服务器所能访问的主机，绕过防火墙和端口过滤器，但还是存在一些危险的，如果对方登陆到了你的这个匿名FTP服务器上，从日志查找到相应的匿名FTP连接，从而知道你的IP地址，这样就直接暴露了。</p>
<p>nmap -sI 空闲扫描，主要是欺骗端口扫描的源地址。</p>
<p>nmap -f 可以把TCP头分片的IP报文进行一些隐蔽的扫描。不完整的TCP报文不被防火墙阻塞也不被IDS检测到。</p>
<p>nmap-D<br />
选择几台肉鸡，并使用-D标志在命令行中指定它们。namp通过诱骗的IP地址来进行欺骗式端口扫描，而系统管理员可以同时看到不同的端口扫描，而只有一个是真实的，很好的保护了自己。</p>
<p>os指纹识别<br />
这个是nmap最有用的功能之一，就是可以鉴别远程主机。通过简单的执行网络扫描，nmap通常可以告诉你远程主机所运行的OS，甚至详细到版本号。当你指定-Q标志时，nmap将用几种不同的技术从主机返回IP报文中寻找这些鉴别信息。通过发送特别设计的TCP和UDP头，nmap可以得到远程主机对TCP/IP协议栈的处理方法。它将分析结果与保存在文件中的已知特征信息进行比较。</p>
<p>OS鉴别选项也可以让nmap对TCP报文进行分析以决定另外一些信息，如系统的启动时间，TCP序列号，预测的序列号使我们更容易截获报文并猜测序列号从而伪造TCP连接。</p>
<p>nmap命令使用详细解释</p>
<p>-P0 -PT -PS -PU -PE -PP -PM -PB 当nmap进行某种类型的端口或协议扫描时，通常都会尝试先ping 主机，这种尝试可使nmap不会浪费时间在那些未开机的主机上，但是许多主机与防火墙会阻塞ICMP报文，我们希望能通过控制使用。</p>
<p>-P0  告诉nmap不ping 主机，只进行扫描</p>
<p>-PT  告诉nmap使用TCP的ping</p>
<p>-PS  发送SYN报文。</p>
<p>-PU  发送一个udp ping</p>
<p>-PE  强制执行直接的ICMP ping </p>
<p>-PB  这是默认类型，可以使用ICMP ping 也可以使用TCP ping .</p>
<p>-6   该标志允许IPv6支持</p>
<p>-v  -d  使用-v选项可得到更详细的输出，而-d选项则增加调试输出。</p>
<p>-oN  按照人们阅读的格式记录屏幕上的输出，如果是在扫描多台机器，则该选项很有用。</p>
<p>-oX  以xml格式向指定的文件记录信息</p>
<p>-oG  以一种易于检索的格式记录信息，即每台主机都以单独的行来记录所有的端口和0s信息。</p>
<p>-oA  使用为基本文件名，以普通格式(-oN)、XML格式(-oX)和易于检索的格式（-oG）jilu  xinxi  </p>
<p>-oM  把输出格式化为机器可阅读的文件</p>
<p>-oS  把输出进行傻瓜型排版</p>
<p>&#8211;resume如果你取消了扫描，但生成了供人或者供机器阅读的文件，那么可以把该文件提供给nmap继续让它扫描。</p>
<p>-iR-iL可以不在命令行中指定目标主机，而是使用-iR选项随即产生待扫描的主机，或者使用-iL选项从一个包含主机名或IP地址列表的文件中读取目标主机，这些主机名或IP地址使用空格、制表符或换行隔开。</p>
<p>-F nmap只扫描在nmap内建的服务文件中已知的端口，如果不指定该选项，nmap将扫描端口1-1024及包含在nmap-services文件中的所有其他端口。如果用-sO选项扫描协议，nmap将用它内建的协议文件(nmap-protocols文件)而不是默认地扫描所有256个协议。</p>
<p>-A nmap使用所有的高级扫描选项</p>
<p>-p 参数可以是一个单独的端口、一个用逗号隔开的端口列表、一个使用“-”表示的端口范围或者上述格式的任意组合。如果没有指定该选项，nmap将对包含前1024个端口的所有端口进行一次快速扫描。</p>
<p>-e在多穴主机中，可以指定你用来进行网络通信的网络接口。</p>
<p>-g可以选择一个源端口，从该端口执行所有的扫描。</p>
<p>&#8211;ttlnmap其发送的任何报文在到中间路由器的跳后会失效。</p>
<p>&#8211;packet-trace 可以显示扫描期间nmap发送和接收的各个报文的详细列表，这对调试非常有用。要与-o选项之一联合使用，需要根权限，以将所有的数据记录到文件。</p>
<p>&#8211;scanflags可以使用这个选项手工的指定欲在扫描报文中设置的TCP标志。也可以指定TCP标志的OOred值的整数形式，或者标志的字符串表示形式。</p>
<p>以上介绍的就是nmap在windows下和unix中的命令介绍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1385.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris root 密码恢复笔记</title>
		<link>http://www.evanjiang.net.cn/archives/1383.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1383.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:27:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[sun unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/archives/1383.html</guid>
		<description><![CDATA[<p>Solaris root密码恢复</p>
<p>前提条件：cd-rom中要放入Solaris引导盘.
• 到 OK 提示符下
1．通过按 Stop +A .
2．SC上请输入break -> console -f  也可以进入。</p>
<p>• 在OK 提示符下输入以下命令
#ok boot cdrom -s
• 挂启动盘到 /mnt
可以通过df 命令查看,如果是看到d0这种盘符,用/usr/sbin/metastat d0可以找到对应的磁盘名称，如果系统无法登陆的话，可以自己手工将/dev/dsk/c?t?d?s?一个个的试mount，这要看人品了。如果是做了镜像的md盘两个盘都要mount上修改shadow文件.</p>
<p>$ df -k /
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/md/dsk/d0       20655025 [...]]]></description>
			<content:encoded><![CDATA[<p>Solaris root密码恢复</p>
<p>前提条件：cd-rom中要放入Solaris引导盘.<br />
• 到 OK 提示符下<br />
1．通过按 Stop +A .<br />
2．SC上请输入break -> console -f  也可以进入。</p>
<p>• 在OK 提示符下输入以下命令<br />
#ok boot cdrom -s<br />
• 挂启动盘到 /mnt<br />
可以通过df 命令查看,如果是看到d0这种盘符,用/usr/sbin/metastat d0可以找到对应的磁盘名称，如果系统无法登陆的话，可以自己手工将/dev/dsk/c?t?d?s?一个个的试mount，这要看人品了。如果是做了镜像的md盘两个盘都要mount上修改shadow文件.</p>
<p>$ df -k /<br />
Filesystem            kbytes    used   avail capacity  Mounted on<br />
/dev/md/dsk/d0       20655025 8564261 11884214    42%    /<br />
$ /usr/sbin/metastat d0<br />
d0: Mirror<br />
    Submirror 0: d10<br />
      State: Okay<br />
    Submirror 1: d20<br />
      State: Okay<br />
    Pass: 1<br />
    Read option: roundrobin (default)<br />
    Write option: parallel (default)<br />
    Size: 41945472 blocks (20 GB)<br />
<span id="more-1383"></span><br />
d10: Submirror of d0<br />
    State: Okay<br />
    Size: 41945472 blocks (20 GB)<br />
    Stripe 0:<br />
        Device     Start Block  Dbase        State Reloc Hot Spare<br />
        c0t0d0s0          0     No            Okay   Yes </p>
<p>d20: Submirror of d0<br />
    State: Okay<br />
    Size: 41945472 blocks (20 GB)<br />
    Stripe 0:<br />
        Device     Start Block  Dbase        State Reloc Hot Spare<br />
        c0t1d0s0          0     No            Okay   Yes </p>
<p>Device Relocation Information:<br />
Device   Reloc  Device ID<br />
c0t0d0   Yes    id1,sd@SFUJITSU_MAW3147NCSUN146G000749C0CPN1____DAC0P7C0CPN1<br />
c0t1d0   Yes    id1,sd@SFUJITSU_MAW3147NCSUN146G000749C0CP9E____DAC0P7C0CP9E<br />
$<br />
#mount /dev/dsk/c0t0d0s0 /mnt<br />
• 删除root口令信息,编辑/mnt/etc/shadow文件中的root行第二列,<br />
如下所示:<br />
root:IZg8892D8K3eI:14554::::::<br />
# vi /mnt/etc/shadow<br />
• unmount  下 /mnt 再将第二块盘mount来修改shadow<br />
#umount /mnt<br />
• 重启主机进入多用户状态<br />
#reboot<br />
• 重启输入root直接回车就可以进系统了,密码是空的,然后重置root密码:<br />
#passwd</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1383.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>老生常谈  SCO 安装 Informix</title>
		<link>http://www.evanjiang.net.cn/archives/1381.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1381.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 01:22:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[informix]]></category>
		<category><![CDATA[sco unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1381</guid>
		<description><![CDATA[<p>informix for sco 系统安装
1.  建立informix 用户组及用户。 </p>
<p>    1.
    2.  scoadmin -> account manager -> group -> add new group
        加入 informix 组</p>
<p>   scoadmin -> account manager -> user -> add    new     [...]]]></description>
			<content:encoded><![CDATA[<p>informix for sco 系统安装<br />
1.  建立informix 用户组及用户。 </p>
<p>    1.<br />
    2.  scoadmin -> account manager -> group -> add new group<br />
        加入 informix 组</p>
<p>   scoadmin -> account manager -> user -> add    new        加入  用户，注 意 home directory 应该是你希望安装 informix 的地方，<br />
        使用 /usr/informix .<br />
        Login group 改为 informix , membership 中加入 informix 组</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;&#8212;&#8212;<br />
    *NOTE:*  一定要先建 informix 组，再建 informix 用户，其中道理不言而喻。<br />
     &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;                                                        核心参数</p>
<p>    1.  Login in as root<br />
    2.  scoadmin -> hardware manager/kernel -> parameters<br />
        修改以下参数<br />
        SHMMAX        134217728<br />
        SHMMIN        1<br />
        SEMMSL                150<br />
        MAXUP                2048</p>
<p>        然后 relink kernel, 重新启动。<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
    *NOTE:*  一般的值，必须根据实际调整，根据他人介绍 可以参照<br />
    /etc/conf/cf.d/mtune 中各项的最大值修改，也可添加到与mtune<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>3.  修改 informix 用户的 .profile 文件</p>
<p>    1.  Login in as informix<br />
    2.  vi .profile<br />
        加入如下环境变量<br />
        INFORMIXDIR=/usr/informix            # informix 用户的绝对路径<br />
        ONCONFIG=onconfig                      # informix 数据库配置文件名称<br />
        INFORMIXSERVER=online                # informix 数据库server的名称<br />
                                                              # 在 onconfig 文件中也有定义，需要使用相同名称<br />
        LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql<br />
                                                              # esql 编译 .ec 需要使用的 Lib 库文件目录<br />
        PATH 中计入 /usr/informix/bin           # informix 命令所在路径 </p>
<p>        最后，export 以上各项。<br />
<span id="more-1381"></span><br />
    For example:<br />
    我安装的服务器配置为<br />
    INFORMIXDIR=/usr/informix<br />
    INFORMIXSERVER=online<br />
    TERMCAP=$INFORMIXDIR/etc/termcap<br />
    ONCONFIG=onconfig<br />
    PATH=$INFORMIXDIR/bin:$PATH<br />
    LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$LD_LIBRARY_PATH<br />
    export INFORMIXDIR INFORMIXSERVER ONCONFIG TERMCAP PATH LD_LIBRARY_PATH </p>
<p>     &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
    *NOTE:*  一般的值，必须根据实际调整，根据他人介绍 可以参照<br />
    /etc/conf/cf.d/mtune 中各项的最大值修改，也可添加到与mtune<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>4.  安装 informix 系统应用程序 </p>
<p>    1.  Login in as informix,<br />
        确认 .profile 的环境变量已经导入，可以通过 &#8220;env | more&#8221; 方式查看。</p>
<p>    2.  如果安装文件为 *.cpi 方式，假设文件存放在 /tmp/file.cpi, 在 informix 用户目录下执行<br />
        $ cpio -iBdumcv -I /tmp/file.cpi        # 也可以通过 &#8220;cpio -iBdumcv < /tmp/file.cpi" 执行<br />
        $  ./installserver                              # 安装应用程序<br />
                                                             # 输入序列号 AA#****** ,  KEY ***** (注意大小写)</p>
<p>5.  准备数据库存储空间(下面描述均已建立chunk 名为 rootdbs）</p>
<p>    5.1 文件方式</p>
<p>        1.  Login in as informix</p>
<p>        2.  文件型数据库存储位置 ( 我习惯使用 /usr/informix/dbs 目录 )<br />
            $ cat /dev/null > rootdbs                     # rootdbs 使用，这个是必须的，但是名字可以随便<br />
               以下的 ***dbs 都是可选的，但是 phydbs(物理日志)、logdbs(逻辑日志)、tmpdbs(临时表)、idxdbs(索引) 等都<br />
               独立出来可以提升系统的性能<br />
            $ cat /dev/null > datadbs<br />
            &#8230;&#8230;<br />
            $ chmod 660 rootdbs<br />
            $ chown informix:informix rootdbs</p>
<p>            *NOTE:* ***dbs就是文件，怎么生成都可以， > rootdbs,  vi 、touch 都可以</p>
<p>    5.2 裸设备方式<br />
         裸设备的效能更好一些，但是相对于设置就比较的麻烦了。</p>
<p>         1. Login in as root</p>
<p>         2. 建立裸设备</p>
<p>            # divvy -m /dev/hd0a<br />
            hd0a 为第一块硬盘第一个分区， hd1 代表第二块硬盘，如果是 sas 等串口硬盘，估计是 rhd0 等等了(可能不对)</p>
<p>                        +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+&#8212;+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+<br />
                        | Name              | Type       | New FS | # | First Block | Last Block |<br />
                        +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+&#8212;+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+<br />
                        | boot              | EAFS       |  no    | 0 |            0|       30719|<br />
                        | swap              | NON FS     |  no    | 1 |        30720|      816127|<br />
                        | root              | HTFS       |  no    | 2 |       816128|     8329691|<br />
                        |                   | NOT USED   |  no    | 3 |            -|           -|<br />
                        |                   | NOT USED   |  no    | 4 |            -|           -|<br />
                        |                   | NOT USED   |  no    | 5 |            -|           -|<br />
                        | recover           | NON FS     |  no    | 6 |      8329692|     8329701|<br />
                        | hd0a              | WHOLE DISK |  no    | 7 |            0|     8377865|<br />
                        +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+&#8212;+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+<br />
                        8329702 1K blocks for divisions, 48163 1K blocks reserved for the system</p>
<p>                         n[ame]       Name or rename a division.<br />
                         c[reate]     Create a new file system on this division.<br />
                         d[elete]     Delete a file system on this division.<br />
                         t[ype]       Select or change filesystem type on new filesystems.<br />
                         p[revent]    Prevent a new file system from being created on this division.<br />
                         s[tart]      Start a division on a different block.<br />
                         e[nd]        End a division on a different block.<br />
                         r[estore]    Restore the original division table.</p>
<p>                        Enter your choice or q to quit:</p>
<p>            Type 选择 non fs, Name 填写 rootdbs, </p>
<p>                    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
            *NOTE:* divvy 内的 Block 大小为 1K, 据说 chunk(或者说是dbs)的大小不能超过<br />
             2G, 建议每一个都设置为 2000000, 也就是 End &#8211; Start + 1 = 2000000。<br />
             Informix 9.4 的版本支持 Big chunk了，通过 &#8216;onmode -BC 1&#8242; or &#8216;onmode -BC 2&#8242; 使用新的页空间<br />
                      &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>            按照上述分割好裸设备后，在 /dev 目录下面会自动生成chunk名为 Name 的设备名，比如我分割裸设备为 rootdbs<br />
            /dev 目录下面会有 /dev/rootdbs 文件。</p>
<p>            # chmod 660 rootdbs<br />
            # chown informix:informix rootdbs<br />
            # su &#8211; informix<br />
            $ mkdir dbs                 # 数据库连接文件放此目录<br />
            $ cd dbs<br />
            $ ln -s /dev/rootdbs rootdbs</p>
<p>                     &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
           *NOTE:* 关于这里,必须说两句,大家应该养成良好的习惯,就是chunk的路径用链接.<br />
                   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>6.  编辑各种配置文件 </p>
<p>    6.1 编辑 onconfig 文件</p>
<p>        Login in as informix</p>
<p>        $ cp onconfig.std onconfig</p>
<p>        *NOTE:* 这里的 onconfig 名称需要和 .profile 内的 ONCONFIG=onconfig 设置保持一致.</p>
<p>        $ vi onconfig<br />
        修改如下参数<br />
        ROOTPATH    /usr/informix/dbs/rootdbs<br />
        ROOTSIZE        2000000<br />
        MSGPATH     /usr/informix/online.log<br />
        TAPEDEV     /dev/null<br />
        LTAPEDEV    /dev/null<br />
        DBSERVERNAME    online</p>
<p>        *NOTE:* DBSERVERNAME 同.profile中INFORMIXSERVER名字，和sqlhosts 第三个字段保持一致，<br />
        这点非常重要.</p>
<p>    6.2 编辑 sqlhosts 文件</p>
<p>        原来一般为<br />
        demo_on        onipcshm        on_hostname     on_servername<br />
        demo_se        seipcpip        se_hostname     sqlexec</p>
<p>        更改为<br />
        demo_on        onipcshm        on_hostname     on_servername<br />
        #demo_se        seipcpip        se_hostname     sqlexec<br />
        online         ontlitcp        hostname        online_service</p>
<p>        &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
        *NOTE:* 这几个字段&#8217;online&#8217;是SERVER名，在onconfig 中&#8217;DBSERVERNAME&#8217;,<br />
        .profile 中&#8217;INFORMIXSERVER&#8217; 是一个名称，ontlitcp 表示通过 tcp/ip 方式,<br />
        &#8216;hostname&#8217; 是在 /etc/hostname 中设置的名称,<br />
        &#8216;online_service&#8217; 是在 /etc/services 中的 tcp/ip 端口名称。<br />
        这里要注意的是这个配置和在linux下的是完全不一样的,linux下的不是ontlitcp.(没玩过Linux上的informix，不清楚是什么)<br />
        &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>    6.2 编辑/etc/services 文件</p>
<p>        在 /etc/services 中加入 online_service  8888/tcp 即可，再次强调 online_service<br />
        这个名称一定要 sqlhosts 的保持一致，数字可选，但是请使用 文件中没有的端口号，<br />
        1-1024是系统端口号，不要大于 65535 (2的16次方)</p>
<p>7.  检查上述设置并初始化</p>
<p>    1.  Login in as informix</p>
<p>    2.  通过字符界面<br />
        $ onmonitor<br />
        Parameters -> Initialize 方式可以初始化。</p>
<p>    3.  命令方式<br />
        $ oninit -ivy<br />
        -i 表示初始化 (这个参数可别用在已经有数据的生产上，那会死人的)<br />
        -v verbose (这个单词不知道怎么解释，反正你能看到启动的各种信息输出，比较直观)<br />
        -y 全部提示问题都回答 y</p>
<p>    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
    *NOTE:* 2,3 可选任意一种, 建议选择命令方式。如果出错了可以查看<br />
    online.