<?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>开源小站 &#187; ubuntu</title>
	<atom:link href="http://www.litrin.net/tag/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.litrin.net</link>
	<description>It is Cool to OpenSource</description>
	<lastBuildDate>Fri, 03 Feb 2012 04:33:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>&#8216;xterm-256color&#8217;: unknown terminal type.</title>
		<link>http://www.litrin.net/2011/10/06/xterm-256color-unknown-terminal-type/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=xterm-256color-unknown-terminal-type</link>
		<comments>http://www.litrin.net/2011/10/06/xterm-256color-unknown-terminal-type/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 07:53:22 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1573</guid>
		<description><![CDATA[把我的Mac pro升级到Lion之后，照旧通过终端ssh连接到了Ubuntu Server。其他的命令操作均无异常，只是在习惯性的输入了top命令之后，系统没有正常启动top界面，反而出现如下的提示： root@www:~# top &#8216;xterm-256color&#8217;: unknown terminal type. 然而在Centos的主机下却不会出现问题。 说起终端的类型，尽管现在的终端大多都是一个PC而已，事实上在N多年前，终端类型可能仅仅只是体现了厂商的品牌而已，不同的终端类型多如牛毛。他们对于光标、控制字符以及颜色的定义相互都不兼容，历史遗留的问题了。包括之前也发觉很多主机商“backspace”键无效，必须使用ctrl+h进行退格的问题。 在Mac的终端下操作： LitrindeMacBook-Pro:~ litrin$ echo $TERM vt100 LitrindeMacBook-Pro:~ litrin$ infocmp vt100 # Reconstructed via infocmp from file: /usr/share/terminfo/76/vt100 vt100&#124;vt100-am&#124;dec vt100 (w/advanced video), am, mc5i, msgr, xenl, xon, cols#80, it#8, lines#24, vt#3, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{&#124;&#124;}}~~, bel=^G, blink=\E[5m$&#60;2&#62;, bold=\E[1m$&#60;2&#62;, clear=\E[H\E[J$&#60;50&#62;, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C$&#60;2&#62;, cup=\E[%i%p1%d;%p2%dH$&#60;5&#62;, [...]]]></description>
			<content:encoded><![CDATA[<p>把我的Mac pro升级到Lion之后，照旧通过终端ssh连接到了Ubuntu Server。其他的命令操作均无异常，只是在习惯性的输入了top命令之后，系统没有正常启动top界面，反而出现如下的提示：<br />
root@www:~# top<br />
&#8216;xterm-256color&#8217;: unknown terminal type.<br />
然而在Centos的主机下却不会出现问题。</p>
<p><span id="more-1573"></span></p>
<p>说起终端的类型，尽管现在的终端大多都是一个PC而已，事实上在N多年前，终端类型可能仅仅只是体现了厂商的品牌而已，不同的终端类型多如牛毛。他们对于光标、控制字符以及颜色的定义相互都不兼容，历史遗留的问题了。包括之前也发觉很多主机商“backspace”键无效，必须使用ctrl+h进行退格的问题。</p>
<p>在Mac的终端下操作：</p>
<pre>LitrindeMacBook-Pro:~ litrin$ echo $TERM
vt100</pre>
<pre>LitrindeMacBook-Pro:~ litrin$ infocmp vt100
#	Reconstructed via infocmp from file: /usr/share/terminfo/76/vt100
vt100|vt100-am|dec vt100 (w/advanced video),
	am, mc5i, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$&lt;2&gt;, bold=\E[1m$&lt;2&gt;,
	clear=\E[H\E[J$&lt;50&gt;, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C$&lt;2&gt;,
	cup=\E[%i%p1%d;%p2%dH$&lt;5&gt;, cuu=\E[%p1%dA,
	cuu1=\E[A$&lt;2&gt;, ed=\E[J$&lt;50&gt;, el=\E[K$&lt;3&gt;, el1=\E[1K$&lt;3&gt;,
	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, ka1=\EOq,
	ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, kf0=\EOy,
	kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt,
	kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, lf1=pf1, lf2=pf2,
	lf3=pf3, lf4=pf4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8,
	rev=\E[7m$&lt;2&gt;, ri=\EM$&lt;5&gt;, rmacs=^O, rmam=\E[?7l,
	rmkx=\E[?1l\E&gt;, rmso=\E[m$&lt;2&gt;, rmul=\E[m$&lt;2&gt;,
	rs2=\E&gt;\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$&lt;2&gt;,
	sgr0=\E[m\017$&lt;2&gt;, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[7m$&lt;2&gt;, smul=\E[4m$&lt;2&gt;, tbc=\E[3g,</pre>
<p>说明了主机的默认终端类型正是导致出现问题的“xterm-256color”，对于每一种终端的定义，需要在terminfo文件中定义，Mac下这个文件保存在/usr/share/terminfo/目录下，而这个故障出现的最终原因是Ubuntu或者说Debian系的Linux默认没有xterm-256color终端的定义，而Lion操作系统升级之后，默认的终端类型从之前的vt100变成了xterm-color。</p>
<p>扯了这么多，解决方案有两种，都很简单：</p>
<ol>
<li>让server端支持xterm-256color：apt-get install ncurses-term，安装终端支持。</li>
<li>在Mac下终端的“偏好设置”，“设置”选项卡，“高级”选项，“声明终端为：”修改为“xterm-color”或者其他的类型，看个人喜好了。</li>
</ol>
<p>个人推荐还是采用方法2解决，此外，你也可以通过定义其他类型的终端，解决其他类似的问题。</p>
<p>&nbsp;</p>
<p><span style="font-family: Arial, Helvetica, sans-serif; color: #ffffff; background-color: #000000;">2011－10－05（<strong>PST</strong>）来自：<a rel="nofollow" target="_blank" style="color: #ffffff;" href="http://zh.wikipedia.org/wiki/史蒂夫·乔布斯">乔布斯</a>的MacBook Pro</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/10/06/xterm-256color-unknown-terminal-type/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hadoop的单机部署</title>
		<link>http://www.litrin.net/2011/08/19/hadoop%e7%9a%84%e5%8d%95%e6%9c%ba%e9%83%a8%e7%bd%b2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hadoop%25e7%259a%2584%25e5%258d%2595%25e6%259c%25ba%25e9%2583%25a8%25e7%25bd%25b2</link>
		<comments>http://www.litrin.net/2011/08/19/hadoop%e7%9a%84%e5%8d%95%e6%9c%ba%e9%83%a8%e7%bd%b2/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 13:23:08 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[DataBase]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1528</guid>
		<description><![CDATA[&#160; 要说最近最热的云计算，不得不提Hadoop。这个项目就是为集群运算而生的。依赖于它的项目n多，个人感觉hadoop已经逐渐成为一个“基于Java的分布式运算中间件”。 这里安装的hadoop为ver 0.21.0版本，包含了HDFS分布式文件系统。平台为老一套的Ubuntu 1104 server for amd64。 既然是Java Base的，首先要准备jdk环境。默认1104已经把java从apt中剔除了——跟oracle收购sun不无关系，尽管openjdk还在，我还是建议安装sun-jdk。具体实现如下： echo “deb http://archive.canonical.com/ natty partner” &#62;&#62; /etc/apt/sources.list #添加源 apt-get update apt-get install sun-java-jdk 文件多而大，耐心等待。 基础环境 默认apt方式安装的jdk目录为/usr/lib/jvm/java-6-sun ，等待jdk完成之后， echo "/usr/lib/jvm/java-6-sun"  &#62; /etc/jvm 官方建议关闭ipv6，尽管我不清楚有什么影响 echo "blacklist ipv6" &#62;&#62; /etc/modprobe.d/blacklist 建立用户/组，没什么要解释的 addgroup hadoop adduser --ingroup hadoop hadoop 修改环境变量，vi /etc/bash.bashrc，在末尾添加： export JAVA_HOME=/usr/lib/jvm/java-6-sun export JDK_HOME=$JAVA_HOME export PATH=$PATH:$JAVA_HOME/bin 切换用户到hadoop, su &#8211; hadoop 调通ssh，具体参见这里之前的东西。 mkdir [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>要说最近最热的云计算，不得不提<a rel="nofollow" target="_blank" href="http://hadoop.apache.org" target="_blank">Hadoop</a>。这个项目就是为集群运算而生的。依赖于它的项目n多，个人感觉hadoop已经逐渐成为一个“基于Java的分布式运算中间件”。</p>
<p>这里安装的hadoop为ver 0.21.0版本，包含了HDFS分布式文件系统。平台为老一套的Ubuntu 1104 server for amd64。</p>
<p>既然是Java Base的，首先要准备jdk环境。默认1104已经把java从apt中剔除了——跟oracle收购sun不无关系，尽管openjdk还在，我还是建议安装sun-jdk。具体实现如下：</p>
<p><span id="more-1528"></span><br />
echo “deb http://archive.canonical.com/ natty partner” &gt;&gt; /etc/apt/sources.list #添加源<br />
apt-get update<br />
apt-get install sun-java-jdk</p>
<p>文件多而大，耐心等待。</p>
<p><strong>基础环境</strong></p>
<p><strong></strong>默认apt方式安装的jdk目录为/usr/lib/jvm/java-6-sun ，等待jdk完成之后，</p>
<pre>echo "/usr/lib/jvm/java-6-sun"  &gt; /etc/jvm</pre>
<p>官方建议关闭ipv6，尽管我不清楚有什么影响</p>
<pre>echo "blacklist ipv6" &gt;&gt; /etc/modprobe.d/blacklist</pre>
<p>建立用户/组，没什么要解释的</p>
<pre>addgroup hadoop
adduser --ingroup hadoop hadoop</pre>
<p>修改环境变量，vi /etc/bash.bashrc，在末尾添加：</p>
<pre>export JAVA_HOME=/usr/lib/jvm/java-6-sun
export JDK_HOME=$JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin</pre>
<p>切换用户到hadoop, su &#8211; hadoop</p>
<p>调通ssh，具体参见<a title="用publickey验证登录SSH服务器" href="http://www.litrin.net/2006/04/10/%e7%94%a8publickey%e9%aa%8c%e8%af%81%e7%99%bb%e5%bd%95ssh%e6%9c%8d%e5%8a%a1%e5%99%a8/" target="_blank">这里</a>之前的东西。</p>
<pre>mkdir .ssh
cd .ssh
ssh-keygen -t rsa
cat id_rsa.pub &gt;&gt; authorized_keys
ssh localhost</pre>
<p><strong>配置Hadoop</strong></p>
<p>我默认已经使用hadoop用户进行操作，root权限可以不用了。</p>
<p>将下载后的hadoop保存在适当的目录下，我选择了/opt/hadoop目录。</p>
<p>修改/opt/hadoop/conf/hadoop-env.sh文件中，添加 export JAVA_HOME=/usr/lib/jvm/java-6-sun</p>
<p>cd /opt/hadoop/conf 一堆的配置文件要改。</p>
<p>conf/core-site.xml:</p>
<pre>&lt;configuration&gt;
     &lt;property&gt;
         &lt;name&gt;fs.default.name&lt;/name&gt;&lt;!--文件系统名称--&gt;
        &lt;!--&lt;value&gt;hdfs://localhost:9000&lt;/value&gt;单机，不使用集群文件系统 --&gt;&lt;value&gt;/date/hadoop&lt;/value&gt;
     &lt;/property&gt;
&lt;/configuration&gt;</pre>
<p>conf/hdfs-site.xml:</p>
<pre>&lt;configuration&gt;
     &lt;property&gt;
         &lt;name&gt;dfs.replication&lt;/name&gt;
         &lt;value&gt;1&lt;/value&gt;
     &lt;/property&gt;
&lt;/configuration&gt;</pre>
<p>conf/mapred-site.xml:</p>
<pre>&lt;configuration&gt;
     &lt;property&gt;
         &lt;name&gt;mapred.job.tracker&lt;/name&gt;
         &lt;value&gt;localhost:9001&lt;/value&gt;
     &lt;/property&gt;
&lt;/configuration&gt;</pre>
<p>需要注意的是，不同的版本号之间，配置方式有细微的不同。</p>
<p>配置OK!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/08/19/hadoop%e7%9a%84%e5%8d%95%e6%9c%ba%e9%83%a8%e7%bd%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux 3</title>
		<link>http://www.litrin.net/2011/08/17/linux-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux-3</link>
		<comments>http://www.litrin.net/2011/08/17/linux-3/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 09:15:24 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1523</guid>
		<description><![CDATA[最近Linux更新到了3.x的版本，彻底抛弃了2.x。赶着这波热乎劲，把系统内核升级到了3.0.2。贴个uname -a炫耀下： Linux www 3.0.13.0.1 #2 SMP Wed Aug 17 16:05:25 CST 2011 x86_64 x86_64 x86_64 GNU/Linux 作为debian系的Ubuntu，相对制作kernel包还是比较容易的。 wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.2.tar.bz2 apt-get install build-essential kernel-package tar vzxf  linux-3.0.2.tar.bz2 cd linux-3.0.2 make menuconfig make-kpkg &#8211;initrd  kernel_image kernel-headers 漫长的编译之后上层目录会出现 linux-headers-* 和linux-image-*连个包，直接dpkg -i 就OK了，很方便。 话说回来，这次2-&#62;3的升级有点不知所云，没有什么较大的新特性的引入，仅仅是Linus大神认为的2.6.39的版本号太大了。也不知道今后linux是否还延续“单数不稳定的传统”。相比2.2-&#62;2.4, 2.4-&#62;2.6的跨越，反而成了讽刺。]]></description>
			<content:encoded><![CDATA[<p>最近Linux更新到了3.x的版本，彻底抛弃了2.x。赶着这波热乎劲，把系统内核升级到了3.0.2。贴个uname -a炫耀下：</p>
<pre>Linux www 3.0.13.0.1 #2 SMP Wed Aug 17 16:05:25 CST 2011 x86_64 x86_64 x86_64 GNU/Linux</pre>
<p><span id="more-1523"></span>作为debian系的Ubuntu，相对制作kernel包还是比较容易的。</p>
<p>wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.2.tar.bz2</p>
<p>apt-get install build-essential kernel-package</p>
<p>tar vzxf  linux-3.0.2.tar.bz2</p>
<p>cd linux-3.0.2</p>
<p>make menuconfig</p>
<p>make-kpkg &#8211;initrd  kernel_image kernel-headers</p>
<p>漫长的编译之后上层目录会出现 linux-headers-* 和linux-image-*连个包，直接dpkg -i 就OK了，很方便。</p>
<p>话说回来，这次2-&gt;3的升级有点不知所云，没有什么较大的新特性的引入，仅仅是Linus大神认为的2.6.39的版本号太大了。也不知道今后linux是否还延续“单数不稳定的传统”。相比2.2-&gt;2.4, 2.4-&gt;2.6的跨越，反而成了讽刺。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/08/17/linux-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu上Coreseek+php的安装</title>
		<link>http://www.litrin.net/2011/06/16/ubuntu%e4%b8%8acoreseekphp%e7%9a%84%e5%ae%89%e8%a3%85/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu%25e4%25b8%258acoreseekphp%25e7%259a%2584%25e5%25ae%2589%25e8%25a3%2585</link>
		<comments>http://www.litrin.net/2011/06/16/ubuntu%e4%b8%8acoreseekphp%e7%9a%84%e5%ae%89%e8%a3%85/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 02:23:30 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[DataBase]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1489</guid>
		<description><![CDATA[Coreseek是一个基于sphinx引擎，支持与mmseg中文分词模块合作完成中文的全文搜索引擎。相对sql这类操作，Coreseek负载可谓是微不足道。当然类似的索引服务器还有给予Java的solr等。我选择coreseek的主要原因之一是他可以通过配置后可以与现有的mysql客户端兼容，并可以直接嵌入到mysql中成为mysql的引擎之一。 首先，下载安装包，我选择的是最新的stable版， 不过不客气的说，即便是coreseek的stable版本，不论是从稳定性、兼容性还是灵活性上都不能算是完善，至少无法跟apache这类经典应用相提并论。 安装ubuntu开发包： apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev   解压： tar xzvf coreseek-3.2.14.tar.gz cd coreseek-3.2.14 应该看到有mmseg csft testpack 至少3个目录 安装mmseg中文分词模块 cd mmseg-3.2.14 ./bootstrap ./configure &#8211;prefix=/usr/local/mmseg3 #不喜欢这个官方目录配置，更换目录后配置无法生效郁闷了很久，稍后再说 make make install cd ../testpack /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml #测试结果，请确保终端可以看到utf8中文，应该可以看到分词后的结果 安装Python包 虽然coreseek支持直接的mysql连接，但考虑到分词、分表的情况，这种设置不是很灵活。我的方案是通过python脚本的预处理，将mysql的数据整理后传输到coreseek建立索引。这样还有一个优势就是“万能数据源”——memcache、redis这类几乎不指望coreseek官方支持的妖异存储方案，只要有python的api，均可以索引。 官方的安装手册中介绍的python接口是基于ActivePython 替代系统python语言的方式进行的。ActivePython属于第三方封包，远没有系统自带python来的方便，刚开始用系统python测试了数次，均不成功，后来根据出错信息，找到了原因。 apt-get install python-dev python-sqlite python-mysqldb python-memcache 安装coreseek cd ../csft-3.2.14 [...]]]></description>
			<content:encoded><![CDATA[<p>Coreseek是一个基于sphinx引擎，支持与mmseg中文分词模块合作完成中文的全文搜索引擎。相对sql这类操作，Coreseek负载可谓是微不足道。当然类似的索引服务器还有给予Java的solr等。我选择coreseek的主要原因之一是他可以通过配置后可以与现有的mysql客户端兼容，并可以直接嵌入到mysql中成为mysql的引擎之一。</p>
<p>首先，下载安装包，我选择的是<a rel="nofollow" target="_blank" href="http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz">最新的stable版</a>， 不过不客气的说，即便是coreseek的stable版本，不论是从稳定性、兼容性还是灵活性上都不能算是完善，至少无法跟apache这类经典应用相提并论。</p>
<p><span id="more-1489"></span><br />
安装ubuntu开发包：<br />
apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev</p>
<p><strong> </strong><br />
解压：<br />
tar xzvf coreseek-3.2.14.tar.gz<br />
cd coreseek-3.2.14</p>
<p>应该看到有mmseg csft testpack 至少3个目录</p>
<p><strong>安装mmseg中文分词模块</strong></p>
<p>cd mmseg-3.2.14<br />
./bootstrap<br />
./configure &#8211;prefix=/usr/local/mmseg3 #不喜欢这个官方目录配置，更换目录后配置无法生效郁闷了很久，稍后再说<br />
make<br />
make install<br />
cd ../testpack<br />
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml #测试结果，请确保终端可以看到utf8中文，应该可以看到分词后的结果</p>
<p><strong>安装Python包</strong></p>
<p>虽然coreseek支持直接的mysql连接，但考虑到分词、分表的情况，这种设置不是很灵活。我的方案是通过python脚本的预处理，将mysql的数据整理后传输到coreseek建立索引。这样还有一个优势就是“万能数据源”——memcache、redis这类几乎不指望coreseek官方支持的妖异存储方案，只要有python的api，均可以索引。</p>
<p>官方的安装手册中介绍的python接口是基于<a rel="nofollow" target="_blank" href="http://www.activestate.com/activepython" target="_blank">ActivePython</a> 替代系统python语言的方式进行的。ActivePython属于第三方封包，远没有系统自带python来的方便，刚开始用系统python测试了数次，均不成功，后来根据出错信息，找到了原因。</p>
<p>apt-get install python-dev python-sqlite python-mysqldb python-memcache</p>
<p><strong>安装coreseek</strong></p>
<p>cd ../csft-3.2.14<br />
./buildconf.sh<br />
./configure &#8211;prefix=/usr/local/coreseek &#8211;without-unixodbc &#8211;with-mmseg &#8211;with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ &#8211;with-mmseg-libs=/usr/local/mmseg3/lib/ &#8211;with-mysql &#8211;with-python<br />
make<br />
make install</p>
<p>cd ../testpack<br />
/usr/local/coreseek/bin/indexer -c etc/csft.conf &#8211;all<br />
/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索 #没什么问题了</p>
<p><strong>安装libsphinxclient</strong></p>
<p>coreseek官方教程中建议php使用直接include一个php文件进行操作，事实上php有独立的sphinx模块可以直接操作coreseek (coreseek就是sphinx！)已经进入了php的官方函数库，而且效率的提升不是一点点！但php模块依赖于libsphinxclient包。</p>
<p>cd ../csft-3.2.14/api/libsphinxclient<br />
./configure<br />
make<br />
make install<br />
ldconfig</p>
<p><strong>安装php-sphinx支持 </strong></p>
<p>apt-get install php5-dev<br />
wget http://pecl.php.net/get/sphinx-1.1.0.tgz<br />
tar vzxf  sphinx-1.1.0.tgz<br />
cd  sphinx-1.1.0<br />
phpize<br />
./configure<br />
make<br />
make install</p>
<p>确信成功后修改php.ini，还是遵从ubuntu的配置规则<br />
echo “extension=sphinx.so”  &gt; /etc/php5/conf.d/sphinx.ini</p>
<p>如果使用apache或者fast-cgi的话，请重起。察看phpinfo() 如下则安装成功。</p>
<h2><a name="module_sphinx">sphinx</a></h2>
<table border="0" cellpadding="3" width="600">
<tbody>
<tr>
<th>sphinx support</th>
<th>enabled</th>
</tr>
<tr>
<th>Version</th>
<th>1.1.0</th>
</tr>
<tr>
<th>Revision</th>
<th>$Revision: 303462 $</th>
</tr>
</tbody>
</table>
<p> </p>
<p><strong>配置coreseek</strong></p>
<p>说容易也容易，说麻烦也麻烦的工作，照贴一份吧前面说过，我用的是python数据源</p>
<p>/usr/local/coreseek/etc/coreseek.conf</p>
<pre>python
{
           path = /usr/local/coreseek/DBSource #python 数据源脚本的存放路径
}
source Blog #索引库1 “Blog”
{
          type = python #类型为python
          name = Blog.MainSource #调用python的class
}
index Blog
{
    source          = Blog #数据源名称
    path            = /data/sphinx/Blog #数据文件存放路径
    docinfo         = extern
    mlock           = 0
    morphology      = none
    min_word_len    = 1
    html_strip      = 0
   charset_dictpath = /usr/local/mmseg3/etc/ #mmseg中文分词库的位置，本文开头时我说不能修改mmseg的安装路径就错在这里
   charset_type        = zh_cn.utf-8
}
source UserInfo #索引库2 “UserInfo” 其余同上
{
    type = python
    name = UserInfo.MainSource
}
index UserInfo
{
     source          = UserInfo
     path            = /data/sphinx/UserInfo
     docinfo         = extern
     mlock           = 0
    morphology      = none
    min_word_len    = 1
    html_strip      = 0
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type        = zh_cn.utf-8
}

searchd #服务器配置
{
    listen          =   9312  #显而易见，默认的监听端口
    listen          =   172.18.196.90:3306:mysql41 #兼容mysql方式的监听，我们配置了php-sphinx，故除了命令行方式外意义不大，可以关闭
    pid_file        =   /var/run/coreseek.pid
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/06/16/ubuntu%e4%b8%8acoreseekphp%e7%9a%84%e5%ae%89%e8%a3%85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>定制deb安装包</title>
		<link>http://www.litrin.net/2011/06/11/%e5%ae%9a%e5%88%b6deb%e5%ae%89%e8%a3%85%e5%8c%85/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25ae%259a%25e5%2588%25b6deb%25e5%25ae%2589%25e8%25a3%2585%25e5%258c%2585</link>
		<comments>http://www.litrin.net/2011/06/11/%e5%ae%9a%e5%88%b6deb%e5%ae%89%e8%a3%85%e5%8c%85/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 06:44:42 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1486</guid>
		<description><![CDATA[选择一个合适的Linux发行版的重要因素就是是否有足够丰富的软件以及软件的维护是否方便。对于正常情况下的使用，Ubuntu继承自Debian系的deb已经可以满足，部分情况下还是无法摆脱需要编译安装的情况。对于有点洁癖的管理员，或者需要大规模部署的情况，每台机器的编译显然不现实，于是就需要定制deb包。 本文以Ubuntu下的操作为例，同样适用于Debian。 修改现有deb包 这种情况往往是现有的deb包已经满足使用，只是需要修改部分文件，例如批量部署apache服务器而不希望每台主机上去修改配置。 下载现有的deb包：可以直接从安装源中找到需要的deb文件，或者通过网易的镜像站 http://mirrors.163.com/ubuntu/pool/ 解包： dpkg -X apache2-common_2.0.55-4ubuntu2.13_i386.deb apache2 ＃将apache2的包解压 修改配置 cd apache2 这样，你会看到apache2目录下的文件结构很眼熟，跟安装后的文件存放路径完全一致。你可以根据需要修改对应的文件。 提取配置文件 dpkg -e ../dpkg -X apache2-common_2.0.55-4ubuntu2.13_i386.deb 会多出一个DEBIAN目录，决定了部分安装参数，同样也可以定制修改。 重新封包 cd .. dpkg -b apache2 myApache2.deb 安装测试 dpkg -i myApache2.deb 通过deb-source制作deb包 这种方式往往是需要为原有的包进行小幅度优化，例如修改nginx软件的header识别信息，并适用-O3参数重新编译。 获取source包 mkdir nginx cd nginx apt-get source nginx  ＃等待下载 修改代码 下载完成后会出现一个nginx*的目录，既是nginx的源码，如果需要修改，则直接进入该目录下修改源码。例如我修改src/core/nginx.h，定制了nginx的头部信息。 修改编译信息 源码目录下，相比直接在nginx官网下载的会增加几个目录，其中debian目录下就是deb包特有的配置。修改方式可以参考上种方式。 debian/rules是一个可执行文件，直接编辑可以修改。例如我直接将头部的CFLAGS += -O2 变态的修改为 CFLAGS += -O3 -msse3 -mmmx -maccumulate-outgoing-args（没有经过测试，仅作为示例） [...]]]></description>
			<content:encoded><![CDATA[<p>选择一个合适的Linux发行版的重要因素就是是否有足够丰富的软件以及软件的维护是否方便。对于正常情况下的使用，Ubuntu继承自Debian系的deb已经可以满足，部分情况下还是无法摆脱需要编译安装的情况。对于有点洁癖的管理员，或者需要大规模部署的情况，每台机器的编译显然不现实，于是就需要定制deb包。</p>
<p>本文以Ubuntu下的操作为例，同样适用于Debian。</p>
<p><span id="more-1486"></span></p>
<p><strong>修改现有deb包</strong></p>
<p>这种情况往往是现有的deb包已经满足使用，只是需要修改部分文件，例如批量部署apache服务器而不希望每台主机上去修改配置。</p>
<ol>
<li>下载现有的deb包：可以直接从安装源中找到需要的deb文件，或者通过网易的镜像站 <a rel="nofollow" target="_blank" href="http://mirrors.163.com/ubuntu/pool/">http://mirrors.163.com/ubuntu/pool/<br />
</a></li>
<li>解包：<br />
dpkg -X <a rel="nofollow" target="_blank" href="http://mirrors.163.com/ubuntu/pool/main/a/apache2/apache2-common_2.0.55-4ubuntu2.13_i386.deb">apache2-common_2.0.55-4ubuntu2.13_i386.deb</a> apache2 ＃将apache2的包解压</li>
<li>修改配置<br />
cd apache2<br />
这样，你会看到apache2目录下的文件结构很眼熟，跟安装后的文件存放路径完全一致。你可以根据需要修改对应的文件。</li>
<li>提取配置文件<br />
dpkg -e ../dpkg -X <a rel="nofollow" target="_blank" href="http://mirrors.163.com/ubuntu/pool/main/a/apache2/apache2-common_2.0.55-4ubuntu2.13_i386.deb">apache2-common_2.0.55-4ubuntu2.13_i386.deb</a><br />
会多出一个DEBIAN目录，决定了部分安装参数，同样也可以定制修改。</li>
<li>重新封包<br />
cd ..<br />
dpkg -b apache2 myApache2.deb</li>
<li>安装测试<br />
dpkg -i myApache2.deb</li>
</ol>
<p><strong>通过deb-source制作deb包</strong></p>
<p>这种方式往往是需要为原有的包进行小幅度优化，例如修改nginx软件的header识别信息，并适用-O3参数重新编译。</p>
<ol>
<li>获取source包<br />
mkdir nginx<br />
cd nginx<br />
apt-get source nginx  ＃等待下载</li>
<li>修改代码<br />
下载完成后会出现一个nginx*的目录，既是nginx的源码，如果需要修改，则直接进入该目录下修改源码。例如我修改src/core/nginx.h，定制了nginx的头部信息。</li>
<li>修改编译信息<br />
源码目录下，相比直接在nginx官网下载的会增加几个目录，其中debian目录下就是deb包特有的配置。修改方式可以参考上种方式。<br />
debian/rules是一个可执行文件，直接编辑可以修改。例如我直接将头部的CFLAGS += -O2 变态的修改为 CFLAGS += -O3 -msse3 -mmmx -maccumulate-outgoing-args（没有经过测试，仅作为示例）</li>
<li>准备编译环境和依赖包<br />
apt-get install dpkg-buildpackage<br />
下载打包工具<br />
apt-get build-dep nginx<br />
很多情况下不能完成编译就是因为没有执行这一步</li>
<li>重新打包<br />
dpkg-buildpackage -uc -d<br />
完成后上一级目录将会出现一个或多个deb文件，视情况而定安装测试。</li>
</ol>
<p><strong>源码制作deb</strong></p>
<p>这种方法相对比较少见了，事实上前两种方法几乎已经解决了80％的应用，即便没有对应的Ubuntu包，也可以从丰富的Debian库中找到合适的deb，这种情况只有少数项目才会需要，例如安装 支持中文分词的索引服务器<a rel="nofollow" target="_blank" href="http://www.coreseek.com/">coreseek</a>。</p>
<ol>
<li>下载，解压源码<br />
wget http://&#8230;<br />
tar &#8230;.<br />
这一步没什么说的，下载，解压而已。</li>
<li>预编译<br />
./configure &#8230;<br />
make<br />
也没什么特殊的，参考官方安装手册的操作</li>
<li>打包<br />
apt-get install checkinstall #下载打包工具<br />
checkinstall -D -y -install=no -default make install<br />
一定记得要测试一下，相比前两种方法出错概率较高。</li>
</ol>
<p>&nbsp;</p>
<p>看到网上很多安装教程都是编译安装的，抱着“没有必要重新发明轮子”的原则，我还是建议尽量使用deb的方式安装。同时建议社区尽可能的提供rpm和deb等安装包，在方便用户的同时同样也有利于产品的优化。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/06/11/%e5%ae%9a%e5%88%b6deb%e5%ae%89%e8%a3%85%e5%8c%85/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LAMP的常用扩展安装</title>
		<link>http://www.litrin.net/2011/05/16/lamp%e7%9a%84%e5%b8%b8%e7%94%a8%e6%89%a9%e5%b1%95%e5%ae%89%e8%a3%85/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lamp%25e7%259a%2584%25e5%25b8%25b8%25e7%2594%25a8%25e6%2589%25a9%25e5%25b1%2595%25e5%25ae%2589%25e8%25a3%2585</link>
		<comments>http://www.litrin.net/2011/05/16/lamp%e7%9a%84%e5%b8%b8%e7%94%a8%e6%89%a9%e5%b1%95%e5%ae%89%e8%a3%85/#comments</comments>
		<pubDate>Mon, 16 May 2011 01:57:56 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[DataBase]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1467</guid>
		<description><![CDATA[之前已经弄过许多篇关于LAMP搭建的东西，都是基于最简单包的，这次说说几个比较常用扩展的安装： FreeBSD + Apache + PHP + Mysql (恶搞版) FreeBSD + Apache + PHP + Mysql + Oracle Ubuntu + Apache + PHP + Mysql ，比较简单，正常server版安装结束的最后一步可以选择安装LAMP Ubuntu + nginx + php Ubuntu + php + Oracle Memcache 说起Memcache，这年头稍微大点的网站几乎是必不可少的。内存Key-value一对一数据库，但数据易失。新浪的团队也有个项目是memcachedb，就是以速度为代价，部分数据回写硬盘。但似乎不是memcache的本意，个人觉得不如直接写sql，仁者见仁吧。 For Ubuntu apt-get install memcached php5-memcache /etc/init.d/memcached start For FreeBSD cd /usr/ports/databases/memcached make install clean cd /usr/ports/databases/pecl-memcache make [...]]]></description>
			<content:encoded><![CDATA[<p>之前已经弄过许多篇关于LAMP搭建的东西，都是基于最简单包的，这次说说几个比较常用扩展的安装：</p>
<ul>
<li><a title="用FreeBSD的ports安装apache+php+mysql" href="http://www.litrin.net/2005/11/09/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql/" target="_blank">FreeBSD + Apache + PHP + Mysql</a> (<a title="用FreeBSD的ports安装apache+php+mysql·改" href="http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/" target="_blank">恶搞版</a>)</li>
<li><a title="FreeBSD+apache+PHP+OCI支持Oracle" href="http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/" target="_blank">FreeBSD + Apache + PHP + Mysql + Oracle</a></li>
<li>Ubuntu + Apache + PHP + Mysql ，比较简单，正常server版安装结束的最后一步可以选择安装LAMP</li>
<li><a title="Ubuntu下安装Nginx+php(FastCGI)" href="http://www.litrin.net/2010/10/27/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85nginxphpfastcgi/" target="_blank">Ubuntu + nginx + php</a></li>
<li><a title="配置Ubuntu的php支持OCI8" href="http://www.litrin.net/2009/09/15/%e9%85%8d%e7%bd%aeubuntu%e7%9a%84php%e6%94%af%e6%8c%81oci8/" target="_blank">Ubuntu + php + Oracle</a></li>
</ul>
<p><span id="more-1467"></span></p>
<p><strong>Memcache</strong></p>
<p>说起Memcache，这年头稍微大点的网站几乎是必不可少的。内存Key-value一对一数据库，但数据易失。新浪的团队也有个项目是memcachedb，就是以速度为代价，部分数据回写硬盘。但似乎不是memcache的本意，个人觉得不如直接写sql，仁者见仁吧。</p>
<ul>
<li>For Ubuntu<br />
apt-get install memcached php5-memcache<br />
/etc/init.d/memcached start</li>
<li>For FreeBSD<br />
cd /usr/ports/databases/memcached<br />
make install clean<br />
cd /usr/ports/databases/pecl-memcache<br />
make install clean<br />
echo”memcached_enable=YES” &gt;&gt; /etc/rc.conf<br />
/usr/local/etc/rc.d/memcached start</li>
</ul>
<p><strong>Redis</strong></p>
<p>也是一个Key-value数据库，比起Memcache速度慢一点，但会回写硬盘，数据不丢失。处理Feed之类SQL吃上劲的应用必备。</p>
<ul>
<li>For Ubuntu //11.04可行，8.04不行，官方似乎从904以后才加入的。之前的版本不妨用<a rel="nofollow" target="_blank" href="http://ftp.us.debian.org/debian/pool/main/r/redis/" target="_blank">debian包<br />
</a>apt-get install redis-server php-redis //同样的<a rel="nofollow" target="_blank" href="http://ftp.us.debian.org/debian/pool/main/p/php-radius/" target="_blank">debian包下载</a><br />
/etc/init.d/redis-server start</li>
<li>For Freebsd<br />
cd /usr/ports/databases/redis<br />
make install clean<br />
echo &#8216;redis_enable=”YES”&#8216; &gt;&gt; /etc/rc.conf<br />
/usr/local/etc/rc.d/redis restart<br />
cd /usr/ports/databases/php5-redis<br />
make install clean //敲的条件反射了</li>
</ul>
<p>说起redis的PHP支持类，由于redis是明文的传输，所以很多人会选择<a rel="nofollow" target="_blank" href="https://github.com/jdp/redisent" target="_blank">redisend</a>这类基于socket连接方式的php类——说白了就是模拟telnet 6379。根据实际测试的结果，C扩展至少有40%以上的提升，而且内存更少，加包和拆包的过程更迅速。更何况redisend的前一个版本一堆问题，后一个版本又是php5.3 only的天上一脚，地上一脚的维护也是麻烦。不是万不得已还是少用为妙。</p>
<p><strong>PHP-FPM</strong></p>
<p>这个是给Nginx做fastcgi扩展的，相比php-cgi, spawn-cgi不但性能上有提升，配置上也灵活的多，但FreeBSD不支持，Ubuntu也不官方推荐。这里使用了ubuntu的非官方库。</p>
<p>echo “deb <a rel="nofollow" target="_blank" href="http://php53.dotdeb.org">http://php53.dotdeb.org</a> stable all” &gt;&gt; /etc/apt/sources.list<br />
apt-get update; apt-get upgrade<br />
apt-get install php5-fpm</p>
<p>会直接覆盖之前官方支持的PHP包，请慎重考虑。</p>
<p>/etc/init.d/php5-fpm start</p>
<p><strong>PHP-GD</strong></p>
<p>最常见的缺失，但很容易。</p>
<ul>
<li>For Ubuntu<br />
apt-get install php5-gd</li>
<li>For FreeBSD<br />
cd /usr/ports/graphics/php5-gd<br />
make install clean</li>
</ul>
<p><strong>Minify</strong></p>
<p>Minify是一个基于PHP5的CSS/JS优化包，其实这不属于Php的扩展。</p>
<ol>
<li><a rel="nofollow" target="_blank" href="http://code.google.com/p/minify/">http://code.google.com/p/minify/</a> 下载最新的minify，解压后，将min目录拷贝至网站根目录下。</li>
<li>确认是否开启了apache 的mod_rewrite，Ubuntu默认不开启，需要a2enmod,选择rewrite后,/etc/init.d/apache2 restart 重起apache</li>
<li>网站根目录下编辑.htaccess内容如下：
<pre>RewriteEngine On
        RewriteBase /
         RewriteRule ^(.*\.(css|js))\S?$ min/index.php?f=$1 [L]</pre>
</li>
<li>如果系统已经安装了memcache包，不妨用MC替代文件方式存储优化后的信息，编辑min/config.php，末尾添加
<pre class="php">require 'lib/Minify/Cache/Memcache.php';
$memcache = new Memcache;
$memcache-&gt;connect('localhost', 11211); //根据本地配置调整
$min_cachePath = new Minify_Cache_Memcache($memcache);</pre>
</li>
</ol>
<p><strong>TokyoTyrant (ttServer)</strong></p>
<p>TykyoTyrant想必web game, social game的公司用的很多，大概是由于某家企鹅公司的框架所限吧。这东西就是一个“支持lua扩展并可持续化”的key-value。个人觉得完全可以通过memcache + redis两者取代。</p>
<ul>
<li>for Ubuntu (natty ok, hardy not support)<br />
apt-get install tokyotyrant<br />
/etc/init.d/tokyotyrant 52~53行稍作修改：<br />
52 #SERVERHOST=”$RUNDIR/$NAME.sock”<br />
53 SERVERPORT=1978<br />
即可通过/etc/init.d/tokyotyrant start命令启动1978端口的监听</li>
</ul>
<ul>
<li>for Freebsd<br />
cd /usr/ports/databases/tokyotyrant/<br />
make install clean</li>
</ul>
<div>tokyotyrant有自己的php模块，但习惯上都是通过memcache模块进行操作的，命令等价于memcahce的操作。</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/05/16/lamp%e7%9a%84%e5%b8%b8%e7%94%a8%e6%89%a9%e5%b1%95%e5%ae%89%e8%a3%85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu的AppArmor引发的Mysql问题</title>
		<link>http://www.litrin.net/2011/04/08/ubuntu%e7%9a%84apparmor%e5%bc%95%e5%8f%91%e7%9a%84mysql%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu%25e7%259a%2584apparmor%25e5%25bc%2595%25e5%258f%2591%25e7%259a%2584mysql%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2011/04/08/ubuntu%e7%9a%84apparmor%e5%bc%95%e5%8f%91%e7%9a%84mysql%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 02:56:29 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1430</guid>
		<description><![CDATA[这些天一台ubuntu server的mysql数据目录/var/lib/mysql所在分区快用光了，于是想把Mysql的数据目录移到一个相对空闲的分区下，直接修改了my.cnf中的配置，系统提示无法启动Mysql。又自做聪明的使用了链接文件访问，仍然无效。完全排除了所有linux文件系统权限的可能之后，我回忆起了之前在Redhat系操作系统上发生过的SeLinux导致的类似问题。看了一下官档，果然！Ubuntu在710之后，增加了一个类似于Selinux的权限控制服务叫做AppArmor，名字就很有意思：应用铠甲，让我想起了Diablo2中的暗金⋯⋯ 首先，解决那个Mysql的问题： #sudo nano /etc/apparmor.d/usr.sbin.mysqld ＃好吧，我承认，我sudo出了习惯 发现了有两行配置： /home/mysql/ r, /home/mysql/** rwk, 修改掉 /data/mysql/ r, /data/mysql/** rwk, 重启AppArmor /etc/init.d/apparmor reload 重启Mysql，一切OK! 当然你可以直接关闭apparmor服务避免类似的问题，但从安全角度考虑，我不建议这么做，毕竟修改两行参数的事，不复杂。 事实上，这个应用是Novell主导的，想必Suse上也有同样的设置。在/etc/apparmor.d目录下的增减文件可以在Linux文件系统权限之外基于程序对文件系统的访问操作进行限制。如果你想要限制一个/a/b的文件，对应的配置文件就是/etc/apparmor.d/a.b。内容应该很好理解了。 感觉上相比Selinux而言AppArmor简单一点，不知安全程度如何。但就我个人而言，我更加信任相对复杂的SeLinux。 ps: 之前我还碰到过ssh上去不能读写移动硬盘的问题，估计也于此有关。]]></description>
			<content:encoded><![CDATA[<p>这些天一台ubuntu server的mysql数据目录/var/lib/mysql所在分区快用光了，于是想把Mysql的数据目录移到一个相对空闲的分区下，直接修改了my.cnf中的配置，系统提示无法启动Mysql。又自做聪明的使用了链接文件访问，仍然无效。完全排除了所有linux文件系统权限的可能之后，我回忆起了之前在Redhat系操作系统上发生过的SeLinux导致的类似问题。看了一下官档，果然！Ubuntu在710之后，增加了一个类似于Selinux的权限控制服务叫做AppArmor，名字就很有意思：应用铠甲，让我想起了Diablo2中的暗金⋯⋯</p>
<p><span id="more-1430"></span>首先，解决那个Mysql的问题：</p>
<pre>#sudo nano /etc/apparmor.d/usr.sbin.mysqld ＃好吧，我承认，我sudo出了习惯</pre>
<p>发现了有两行配置：</p>
<pre>/home/mysql/ r,
/home/mysql/** rwk,</pre>
<p>修改掉</p>
<pre>/data/mysql/ r,
/data/mysql/** rwk,</pre>
<p>重启AppArmor</p>
<pre>/etc/init.d/apparmor reload</pre>
<p>重启Mysql，一切OK!<br />
当然你可以直接关闭apparmor服务避免类似的问题，但从安全角度考虑，我不建议这么做，毕竟修改两行参数的事，不复杂。</p>
<p>事实上，这个应用是Novell主导的，想必Suse上也有同样的设置。在/etc/apparmor.d目录下的增减文件可以在Linux文件系统权限之外基于程序对文件系统的访问操作进行限制。如果你想要限制一个/a/b的文件，对应的配置文件就是/etc/apparmor.d/a.b。内容应该很好理解了。</p>
<p>感觉上相比Selinux而言AppArmor简单一点，不知安全程度如何。但就我个人而言，我更加信任相对复杂的SeLinux。</p>
<p>ps:</p>
<p>之前我还碰到过ssh上去不能读写移动硬盘的问题，估计也于此有关。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/04/08/ubuntu%e7%9a%84apparmor%e5%bc%95%e5%8f%91%e7%9a%84mysql%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安装Subversion服务器</title>
		<link>http://www.litrin.net/2011/01/05/%e5%ae%89%e8%a3%85subversion%e6%9c%8d%e5%8a%a1%e5%99%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25ae%2589%25e8%25a3%2585subversion%25e6%259c%258d%25e5%258a%25a1%25e5%2599%25a8</link>
		<comments>http://www.litrin.net/2011/01/05/%e5%ae%89%e8%a3%85subversion%e6%9c%8d%e5%8a%a1%e5%99%a8/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 02:53:19 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1380</guid>
		<description><![CDATA[SVN虽说已经老了，可能逐步要被Git这类的新型版本控制服务软件代替了。但就单单兼容性和整合度来说，唯一与之媲美的只有更加古老的CVS了。 总之，没什么可以解释的，直接切入正题吧。服务器又是我近期一贯使用的Ubuntu Server。版本是1004 LTS。 $sudo apt-get update #迟早会像我一样条件反射的打这条命令的 $ sudo apt-get install subversion subversion-tools $cd /data/subversion   $ svnadmin create ExampleProject #建立SVN项目ExampleProject 修改ExampleProject下的passwd 建立用户名，authz建立工作组和权限。 如果您仅仅只是在内网中使用SVN的话，到这一步其实已经结束了，直接执行 $sudo  svnserve -d -r /data/subversion   之后就netstat -an可以看到3690的监听就说明svn的服务已经起来了，可以通过TortroseSVN这类的工具连接server://IP/ExampleProject的方式进行访问。 如果你需要通过http方式访问的话，那么继续。 $ sudo apt-get install mod_svn apache2 编辑/etc/apache2/mods-available/dav_svn.conf，在末尾加上： &#60;Location /svn/&#62;         DAV svn         SVNParentPath /data/subversion         AuthType Basic         AuthName "SVN repository"         AuthUserFile /data/subversion/.htpasswd [...]]]></description>
			<content:encoded><![CDATA[<p>SVN虽说已经老了，可能逐步要被Git这类的新型版本控制服务软件代替了。但就单单兼容性和整合度来说，唯一与之媲美的只有更加古老的CVS了。</p>
<p>总之，没什么可以解释的，直接切入正题吧。服务器又是我近期一贯使用的Ubuntu Server。版本是1004 LTS。</p>
<p>$sudo apt-get update #迟早会像我一样条件反射的打这条命令的<br />
$ sudo apt-get install subversion subversion-tools</p>
<p><span id="more-1380"></span></p>
<p>$cd /data/subversion  <br />
$ svnadmin create ExampleProject #建立SVN项目ExampleProject<br />
修改ExampleProject下的passwd 建立用户名，authz建立工作组和权限。</p>
<p>如果您仅仅只是在内网中使用SVN的话，到这一步其实已经结束了，直接执行<br />
$sudo  svnserve -d -r /data/subversion  <br />
之后就netstat -an可以看到3690的监听就说明svn的服务已经起来了，可以通过<a rel="nofollow" target="_blank" href="http://tortoisesvn.net/downloads.html" target="_blank">TortroseSVN</a>这类的工具连接server://IP/ExampleProject的方式进行访问。</p>
<p>如果你需要通过http方式访问的话，那么继续。</p>
<p>$ sudo apt-get install mod_svn apache2</p>
<p>编辑/etc/apache2/mods-available/dav_svn.conf，在末尾加上：</p>
<pre>&lt;Location /svn/&gt;
        DAV svn
        SVNParentPath /data/subversion

        AuthType Basic
        AuthName "SVN repository"

        AuthUserFile /data/subversion/.htpasswd
        require valid-user

        &lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;
                Require valid-user
        &lt;/LimitExcept&gt;
&lt;/Location&gt;</pre>
<p>重启apache2<br />
$sudo apache2ctl restart</p>
<p>$htpasswd -c /data/subversion/.htpasswd UserName1</p>
<p>$htpasswd -m /data/subversion/.htpasswd UserName2 注意，参数变了！</p>
<p>之前编辑的passwd文件可以不要理会了，直接编辑authz文件的工作组和权限就好了。</p>
<p>如果之前一直都没有问题的话，直接连接server://IP/svn/ExampleProject就可以访问了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/01/05/%e5%ae%89%e8%a3%85subversion%e6%9c%8d%e5%8a%a1%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu下安装Nginx+php(FastCGI)</title>
		<link>http://www.litrin.net/2010/10/27/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85nginxphpfastcgi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu%25e4%25b8%258b%25e5%25ae%2589%25e8%25a3%2585nginxphpfastcgi</link>
		<comments>http://www.litrin.net/2010/10/27/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85nginxphpfastcgi/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 04:46:13 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1330</guid>
		<description><![CDATA[Nginx是近期最火的www服务器软件，它的种种优势这里就不在累述了，直接进入正题吧。 安装nginx 老一套的把戏 sudo apt-get install nginx 安装好之后sudo /etc/init.d/nginx restart 启动服务，正常情况下，你应该可以访问它获得经典的Welcome to nginx!欢迎界面。 安装php5 不同于apache的mod方式，nginx只限于fastcgi模式调用php。说道fastcgi，之前一直有兄弟问过我CGI和FastCGI的区别。其实FastCGI就是一个预先启动的进程，减少了CGI方式每次启动解释器的资源耗用。当然，这个方式带来的缺陷就是很容易因为解释器的挂死而失效。 sudo apt-get install php5-cgi 修改nginx的配置，使其支持php5 sudo /etc/nginx/sites-available/default location ~ \.php$ { fastcgi_pass   127.0.0.1:9000; fastcgi_index  index.php; fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name; include fastcgi_params; } 需要注意的是，默认nginx默认配置中注释掉的那一段中对于fastcgi_param的那段配置是有问题的，需要设置正确的路径。 如果你重启nginx的话，这里是无法正常使用php的，原理是php的fastcgi进程还没有启动。 sudo php-cgi -b 127.0.0.1:9000  &#38; //与上面的fastcgi_pass设置是同一端口 正常情况下，nginx已经支持了php。 由于这种方式容易出现问题导致php失效。这里我建议使用spawn-fcgi守护进程。 sudo apt-get install spawn-fcgi sudo spawn-fcgi -a 127.0.0.1 -p [...]]]></description>
			<content:encoded><![CDATA[<p>Nginx是近期最火的www服务器软件，它的种种优势这里就不在累述了，直接进入正题吧。</p>
<p><strong>安装nginx</strong><br />
老一套的把戏 sudo apt-get install nginx</p>
<p>安装好之后sudo /etc/init.d/nginx restart 启动服务，正常情况下，你应该可以访问它获得经典的Welcome to nginx!欢迎界面。</p>
<p><span id="more-1330"></span><strong>安装php5</strong></p>
<p>不同于apache的mod方式，nginx只限于fastcgi模式调用php。说道fastcgi，之前一直有兄弟问过我CGI和FastCGI的区别。其实FastCGI就是一个预先启动的进程，减少了CGI方式每次启动解释器的资源耗用。当然，这个方式带来的缺陷就是很容易因为解释器的挂死而失效。</p>
<p>sudo apt-get install php5-cgi</p>
<p><strong>修改nginx的配置，使其支持php5</strong></p>
<p>sudo /etc/nginx/sites-available/default</p>
<pre>location ~ \.php$ {
 fastcgi_pass   127.0.0.1:9000;
 fastcgi_index  index.php;
 fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
 include fastcgi_params;
 }
</pre>
<p>需要注意的是，默认nginx默认配置中注释掉的那一段中对于fastcgi_param的那段配置是有问题的，需要设置正确的路径。</p>
<p>如果你重启nginx的话，这里是无法正常使用php的，原理是php的fastcgi进程还没有启动。</p>
<p>sudo php-cgi -b 127.0.0.1:9000  &amp; //与上面的fastcgi_pass设置是同一端口</p>
<p>正常情况下，nginx已经支持了php。</p>
<p>由于这种方式容易出现问题导致php失效。这里我建议使用spawn-fcgi守护进程。</p>
<p>sudo apt-get install spawn-fcgi</p>
<p>sudo spawn-fcgi -a 127.0.0.1 -p 9000 -c 5 -f /usr/bin/php5-cgi //其中的 -c意味着同时同时启动5个进程</p>
<p>为了更加方便，不妨修改下nginx的启动脚本</p>
<p>sudo nano /etc/init.d/nginx //修改</p>
<pre>start)
 echo -n "Starting $DESC: "
 test_nginx_config
 start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
 --exec $DAEMON -- $DAEMON_OPTS || true
 echo -n "Starting Php FastCGI"
 /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -c 5 -f /usr/bin/php5-cgi
 echo "$NAME."
</pre>
<pre>stop)
 echo -n "Stopping $DESC: "
 start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
 --exec $DAEMON || true
 echo -n "Stopping Php FastCGI"
 killall php5-cgi
 echo "$NAME."
 ;;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/10/27/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85nginxphpfastcgi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubuntu上Xen的快速部署</title>
		<link>http://www.litrin.net/2010/10/08/ubuntu%e4%b8%8axen%e7%9a%84%e5%bf%ab%e9%80%9f%e9%83%a8%e7%bd%b2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu%25e4%25b8%258axen%25e7%259a%2584%25e5%25bf%25ab%25e9%2580%259f%25e9%2583%25a8%25e7%25bd%25b2</link>
		<comments>http://www.litrin.net/2010/10/08/ubuntu%e4%b8%8axen%e7%9a%84%e5%bf%ab%e9%80%9f%e9%83%a8%e7%bd%b2/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 02:02:29 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1324</guid>
		<description><![CDATA[上篇CentOS上Xen的快速部署中给的承诺，现在兑现。 注意的是本文的实例采用的是Ubuntu804 Server的LTS版本，采用这个版本而不是习惯上采用最新版本的Ubuntu主要是考虑到几个因素： 至少在904之后，Ubuntu从支持库中移除了Kernel-xen的包，仅保留xen-server的支持包。这也就意味着Xen已经得不到官方支持，804成了目前唯一提供官方支持的xen版本。当然你可以手工编译自己的内核或者使用debian的对应包强行安装Xen，但出错的概率比较大（本人在1004的版本上尝试过几次才顺利启动）。 1004的grub设置变动很大，尚没有搞懂手动修改启动顺序的正确方法。设置错误会直接损坏grub导致无法启动。 这次主机比上次的好，至少支持硬件虚拟化，方便很多。 安装Xen支持 Ubuntu的标志性命令，非常容易。 #sudo apt-get install ubuntu-xen-server xen 如果使用的是804以后的版本，在此之后，如果使用debian包，则下载linux linux-modules linux-headers的带xen的包，并使用sudo dpkg -i 方法安装。 直接编译内核的同学，可以直接load /boot/config-xxxx-xxx文件并手工添加xen的支持(make menuconfig) 用xen内核重启。 #sudo nano /etc/xen/xend-config.sxp 将#(vnc-listen &#8217;127.0.0.1&#8242;)修改为(vnc-listen &#8217;0.0.0.0&#8242;) 安装来宾操作系统：方法1，直接安装 这种方式的前提是你的cpu支持硬件虚拟化 建立虚拟硬盘，如果使用实际裸分区，可跳过 #sudo mkdir /xen #sudo dd if=/dev/zero of=/xen/2003_disk bs=1 count=0 seek=5G 编辑配置文件/etc/xen/2003 kernel = '/usr/lib64/xen/boot/hvmloader'#64位内核，32位的则替换为'/usr/lib/xen/boot/hvmloader' builder='hvm' memory = 512 #内存 shadow_memory = 8 name [...]]]></description>
			<content:encoded><![CDATA[<p>上篇<a title="Permanent Link: CentOS上Xen的快速部署" rel="bookmark" href="http://www.litrin.net/2010/09/16/centos%e4%b8%8axen%e7%9a%84%e5%bf%ab%e9%80%9f%e9%83%a8%e7%bd%b2/">CentOS上Xen的快速部署</a>中给的承诺，现在兑现。</p>
<p>注意的是本文的实例采用的是Ubuntu804 Server的LTS版本，采用这个版本而不是习惯上采用最新版本的Ubuntu主要是考虑到几个因素：</p>
<ol>
<li>至少在904之后，Ubuntu从支持库中移除了Kernel-xen的包，仅保留xen-server的支持包。这也就意味着Xen已经得不到官方支持，804成了目前唯一提供官方支持的xen版本。当然你可以手工编译自己的内核或者使用<a rel="nofollow" target="_blank" href="http://security.debian.org/debian-security/pool/updates/main/l/">debian的对应包</a>强行安装Xen，但出错的概率比较大（本人在1004的版本上尝试过几次才顺利启动）。</li>
<li>1004的grub设置变动很大，尚没有搞懂手动修改启动顺序的正确方法。设置错误会直接损坏grub导致无法启动。</li>
</ol>
<p>这次主机比上次的好，至少支持硬件虚拟化，方便很多。</p>
<p><span id="more-1324"></span></p>
<p><strong>安装Xen支持</strong></p>
<p>Ubuntu的标志性命令，非常容易。<br />
#sudo apt-get install <a title="ubuntu" href="http://www.litrin.net/tag/ubuntu/">ubuntu</a>-xen-server xen</p>
<p>如果使用的是804以后的版本，在此之后，如果使用debian包，则下载linux linux-modules linux-headers的带xen的包，并使用sudo dpkg -i 方法安装。<br />
直接编译内核的同学，可以直接load /boot/config-xxxx-xxx文件并手工添加xen的支持(make menuconfig)</p>
<p>用xen内核重启。</p>
<p>#sudo nano /etc/xen/xend-config.sxp<br />
将#(vnc-listen &#8217;127.0.0.1&#8242;)修改为(vnc-listen &#8217;0.0.0.0&#8242;)</p>
<p><strong>安装来宾操作系统：方法1，直接安装</strong></p>
<p>这种方式的前提是你的cpu支持硬件虚拟化</p>
<p>建立虚拟硬盘，如果使用实际裸分区，可跳过<br />
#sudo mkdir /xen<br />
#sudo dd if=/dev/zero of=/xen/2003_disk bs=1 count=0 seek=5G<br />
编辑配置文件/etc/xen/2003</p>
<pre>kernel = '/usr/lib64/xen/boot/hvmloader'#64位内核，32位的则替换为'/usr/lib/xen/boot/hvmloader'
builder='hvm'
memory = 512 #内存
shadow_memory = 8
name = "2003"
vif = [ 'type=ioemu, bridge=eth0' ]
disk = [
   'tap:aio:/xen/2003_disk,hda,w',
   #'phy:/dev/sda5,hda,w', #挂装裸分区方式
   'phy:/dev/cdrom,hdc:cdrom,r'
]

boot = "dc"
device_model = '/usr/lib64/xen/bin/qemu-dm'
vnc=1
vncpasswd=''
serial='pty'
sdl=1</pre>
<p>启动虚拟机<br />
sudo xm create /etc/xen/2003</p>
<p>用vnc客户端直接连接主机，即可开始典型的图形化安装过程。</p>
<p><strong>安装来宾操作系统：方法2，xen-create-image</strong></p>
<p>sudo xen-create-image &#8211;hostname=xen-ubuntu &#8211;size=5gb &#8211;memory=256mb &#8211;partitions=with-data &#8211;dist=lucid &#8211;ip=192.168.103.101 &#8211;gateway=192.168.103.254 &#8211;netmask=255.255.254.0  &#8211;mirror=http://cn.archive.ubuntu.com/ubuntu  &#8211;boot &#8211;passwd &#8211;role udev &#8211;dir=/etc/xen &#8211;force</p>
<p>系统会自动完成xen的配置并从制定的源中下载安装操作系统。</p>
<p><strong>部分操作（照贴过来的）</strong></p>
<p>xm console &lt;NAME&gt; 连接到虚拟机控制台<br />
xm create &lt;NAME&gt; 根据配置文件创建主机，如果您一直follow之前的操作并且完成了虚拟主机的安装，这条命令实际上等于启动一台虚拟机<br />
xm shutdown &lt;NAME&gt; 关机<br />
xm reboot &lt;NAME&gt; 重启<br />
xm destroy &lt;NAME&gt; 删除主机<br />
xentop 各主机之前的资源占用情况</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/10/08/ubuntu%e4%b8%8axen%e7%9a%84%e5%bf%ab%e9%80%9f%e9%83%a8%e7%bd%b2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CentOS上Xen的快速部署</title>
		<link>http://www.litrin.net/2010/09/16/centos%e4%b8%8axen%e7%9a%84%e5%bf%ab%e9%80%9f%e9%83%a8%e7%bd%b2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=centos%25e4%25b8%258axen%25e7%259a%2584%25e5%25bf%25ab%25e9%2580%259f%25e9%2583%25a8%25e7%25bd%25b2</link>
		<comments>http://www.litrin.net/2010/09/16/centos%e4%b8%8axen%e7%9a%84%e5%bf%ab%e9%80%9f%e9%83%a8%e7%bd%b2/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 05:57:43 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1312</guid>
		<description><![CDATA[背景描述 一台托管在外的服务器，环境为CentOS5.5，跑LAMP。由于运行环境和成本控制的考虑，需要同时配置PHP4+Mysql和PHP5+Mysql两种环境。起初计划采用两个apache环境，不同的端口来解决。考虑到目前Xen技术上已经成熟，于是考虑在真实主机上安装ngnix和mysql。通过xen安装两套虚拟环境分别配置不同的Php版本，前端使用ngnix代理的方式实现多个虚拟主机合并到同一个80号的目的。 本文同样适用于Redhat和小白鼠Fedora. 真实主机（主机名:www）上配置Xen CentOS的Xen还是比较容易设置的 #yum install kernel-xen xen等待安装，安装结束后，修改grub配置，确保主机通过xen内核启动后，重启主机。 主机启动后，首先确认 #uname -r ，内核版本号后面应该跟随一个xen标记，如：2.6.18-194.11.3.el5xen 需要解释的是，由于这台主机的要求网络结构是“一个出口”，即逻辑上虚拟主机的网络拓扑应该是路由方式，而Centos默认Xen的结构是网桥模式，这里需要修改下相应的配置。 /etc/xen/xend-config.sxp文件中 (network-script network-bridge) (vif-script vif-bridge) 注释掉 (network-script network-route) (vif-script     vif-route) 去掉注释 重启xen服务使设置生效，/etc/init.d/xend restart 配置虚拟主机 相比之前参考的很多文档，Centos的虚拟主机配置相对比较容易，至少没有那么复杂，因为Centos提供了一个比较方便的工具virt-install 我准备给虚拟主机都安装CentOS5.5，为了方便，我将光盘挂装到了 /mnt并设置了ngnix可以直接通过http://www/方式访问光盘中的文件，如果您之前通过http或者其他方式网络安装过操作系统，这一步应该很好理解。 正题来了：  virt-install -n CentOSVM1 -r 512 -f /xen/CentOSVM1.img  -l http://www/  &#8211;network=network:default -p -s 10 &#8211;nographics &#8211;vcpus=2 解释： -n CentOSVM1 设置虚拟服务器名称 -r 512 设置内存大小 -f [...]]]></description>
			<content:encoded><![CDATA[<p>背景描述</p>
<p>一台托管在外的服务器，环境为CentOS5.5，跑LAMP。由于运行环境和成本控制的考虑，需要同时配置PHP4+Mysql和PHP5+Mysql两种环境。起初计划采用两个apache环境，不同的端口来解决。考虑到目前Xen技术上已经成熟，于是考虑在真实主机上安装ngnix和mysql。通过xen安装两套虚拟环境分别配置不同的Php版本，前端使用ngnix代理的方式实现多个虚拟主机合并到同一个80号的目的。</p>
<p>本文同样适用于Redhat和小白鼠Fedora.</p>
<p><span id="more-1312"></span></p>
<p><strong>真实主机（主机名:www）上配置Xen</strong></p>
<p>CentOS的Xen还是比较容易设置的<br />
#yum install kernel-xen xen等待安装，安装结束后，修改grub配置，确保主机通过xen内核启动后，重启主机。</p>
<p>主机启动后，首先确认<br />
#uname -r ，内核版本号后面应该跟随一个xen标记，如：2.6.18-194.11.3.el5<strong>xen</strong></p>
<p>需要解释的是，由于这台主机的要求网络结构是“一个出口”，即逻辑上虚拟主机的网络拓扑应该是路由方式，而Centos默认Xen的结构是网桥模式，这里需要修改下相应的配置。<br />
/etc/xen/xend-config.sxp文件中<br />
(network-script network-bridge)<br />
(vif-script vif-bridge)<br />
注释掉<br />
(network-script network-route)<br />
(vif-script     vif-route)<br />
去掉注释<br />
重启xen服务使设置生效，/etc/init.d/xend restart</p>
<p><strong>配置虚拟主机</strong></p>
<p>相比之前参考的很多文档，Centos的虚拟主机配置相对比较容易，至少没有那么复杂，因为Centos提供了一个比较方便的工具virt-install</p>
<p>我准备给虚拟主机都安装CentOS5.5，为了方便，我将光盘挂装到了 /mnt并设置了ngnix可以直接通过<a rel="nofollow" target="_blank" href="http://www/">http://www/</a>方式访问光盘中的文件，如果您之前通过http或者其他方式网络安装过操作系统，这一步应该很好理解。</p>
<p>正题来了：</p>
<p> virt-install -n CentOSVM1 -r 512 -f /xen/CentOSVM1.img  -l <a rel="nofollow" target="_blank" href="http://mirrors.163.com/FreeBSD/releases/i386/8.1-RELEASE/8.1-RELEASE/">http://www/</a>  &#8211;network=network:default -p -s 10 &#8211;nographics &#8211;vcpus=2</p>
<p>解释：<br />
-n CentOSVM1 设置虚拟服务器名称<br />
-r 512 设置内存大小<br />
-f /xen/CentOSVM1.img  虚拟磁盘文件的保存路径，如果有重名可以使用&#8211;force参数强制重建。<br />
-l <a rel="nofollow" target="_blank" href="http://mirrors.163.com/FreeBSD/releases/i386/8.1-RELEASE/8.1-RELEASE/">http://www/</a> 安装文件的访问方式，支持nfs http ftp smb等多种方式。如果你对你的带宽比较自信，可以使用<a rel="nofollow" target="_blank" href="http://mirrors.163.com/centos/5.5/os/i386/">http://mirrors.163.com/centos/5.5/os/i386/</a>网易的镜像站<br />
&#8211;network=network:default 网络连接方式，我选择的是route中的default<br />
-p 我的机器不支持硬件虚拟化，-p参数不使用类似技术。现在新的CPU连Atom这样的都支持了，-p可以不加。<br />
-s 10磁盘文件的大小，单位是G<br />
&#8211;nographics 不使用图形界面，可以不加此参数，然后加入&#8211;vnc看看图形效果<br />
&#8211;vcpus=2 虚拟CPU的个数</p>
<p>剩下的就是等待安装的过程，由于之前的设置，网络这块直接DHCP就可以通过了。安装过程中报错找不到安装媒体的大多都是网络设置错误。</p>
<p>整个过程中可以通过ctrl+]回到真实主机，通过在真实主机中使用xm console CentOSVM1回到CentOSVM1的控制台。</p>
<p>OK，可以开始第二台主机的安装了，照旧吧：<br />
 virt-install -n CentOSVM2 -r 512 -f /xen/CentOSVM2.img  -l <a rel="nofollow" target="_blank" href="http://mirrors.163.com/FreeBSD/releases/i386/8.1-RELEASE/8.1-RELEASE/">http://www/</a>  &#8211;network=network:default -p -s 10 &#8211;nographics &#8211;vcpus=1</p>
<p><strong>部分操作</strong></p>
<p>xm console &lt;NAME&gt; 连接到虚拟机控制台<br />
xm create &lt;NAME&gt; 根据配置文件创建主机，如果您一直follow之前的操作并且完成了虚拟主机的安装，这条命令实际上等于启动一台虚拟机<br />
xm shutdown &lt;NAME&gt; 关机<br />
xm reboot &lt;NAME&gt; 重启<br />
xm destroy &lt;NAME&gt; 删除主机<br />
xentop 各主机之前的资源占用情况</p>
<p><strong>关于Ubuntu的xen</strong></p>
<p>记得804的时候，通过apt-get install ubuntu-xen-server xen的方式可以搭建起xen的环境，但不知出于什么目的，904以后，apt源里面移出了linux-xen内核的安装包。你当然可以下载到类似的替代安装包，但这无疑给安装带来了麻烦。</p>
<p>ubunt desktop和server的安装盘都无法通过网络安装程序，如果需要部署Ubuntu的虚拟机，你需要下载alternate安装盘。</p>
<p>暂时就这么多，改日写个ubuntu的安装文档出来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/09/16/centos%e4%b8%8axen%e7%9a%84%e5%bf%ab%e9%80%9f%e9%83%a8%e7%bd%b2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>通过motd信息简化巡检操作</title>
		<link>http://www.litrin.net/2010/08/17/%e9%80%9a%e8%bf%87motd%e4%bf%a1%e6%81%af%e7%ae%80%e5%8c%96%e5%b7%a1%e6%a3%80%e6%93%8d%e4%bd%9c/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%2580%259a%25e8%25bf%2587motd%25e4%25bf%25a1%25e6%2581%25af%25e7%25ae%2580%25e5%258c%2596%25e5%25b7%25a1%25e6%25a3%2580%25e6%2593%258d%25e4%25bd%259c</link>
		<comments>http://www.litrin.net/2010/08/17/%e9%80%9a%e8%bf%87motd%e4%bf%a1%e6%81%af%e7%ae%80%e5%8c%96%e5%b7%a1%e6%a3%80%e6%93%8d%e4%bd%9c/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 01:57:41 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1300</guid>
		<description><![CDATA[作为一个Unix系统的管理员，手工巡检几乎成了工作中一个重要的部分。这里不放使用Linux的motd通告信息实现简单的信息通告，至少能省去了不少手工命令的时间。 motd即Message Of ToDay，每天的信息。大部分的固定文本信息放置在/etc/motd下，如果没有你可以直接创建一个，然后修改其中的内容制作一个主机登录Banner以便于区分多台主机。对于Ubuntu来说，特别是启用了server中“landscope管理系统”后，这里没有效果，你需要修改的文件为/etc/motd.tail。 对于部分相对比较保守的Unix版本而言剩下可供修改的并不多，只有通过/etc/issue的方法，除了使用现有的字符，issue还支持参数如下： /l 显示终端机接口号 /m 显示内核的硬件版本 /n 显示主机名 /o 显示 域名 /r 显示操作系统的版本，类似于uname -r  /t 显示本地端时间 /s 操作系统的名称 /v 操作系统的版本 对于比较激进的操作系统（ubuntu就曾经因为motd爆出安全漏洞）那就更灵活了。 Ubuntu： 修改/etc/init.d/bootmisc.sh脚本，其中： uname -snrvm &#62; /var/run/motd         [ -f /etc/motd.tail ] &#38;&#38; cat /etc/motd.tail &#62;&#62; /var/run/motd 我要加入uptime和df -h的信息就修改为： uname -snrvm &#62; /var/run/motd         [ -f /etc/motd.tail ] &#38;&#38; cat /etc/motd.tail &#62;&#62; /var/run/motd [...]]]></description>
			<content:encoded><![CDATA[<p>作为一个Unix系统的管理员，手工巡检几乎成了工作中一个重要的部分。这里不放使用Linux的motd通告信息实现简单的信息通告，至少能省去了不少手工命令的时间。</p>
<p>motd即Message Of ToDay，每天的信息。大部分的固定文本信息放置在/etc/motd下，如果没有你可以直接创建一个，然后修改其中的内容制作一个主机登录Banner以便于区分多台主机。对于Ubuntu来说，特别是启用了server中“landscope管理系统”后，这里没有效果，你需要修改的文件为/etc/motd.tail。</p>
<p><span id="more-1300"></span></p>
<p>对于部分相对比较保守的Unix版本而言剩下可供修改的并不多，只有通过/etc/issue的方法，除了使用现有的字符，issue还支持参数如下：</p>
<p>/l 显示终端机接口号<br />
/m 显示内核的硬件版本<br />
/n 显示主机名<br />
/o 显示 域名<br />
/r 显示操作系统的版本，类似于uname -r <br />
/t 显示本地端时间<br />
/s 操作系统的名称<br />
/v 操作系统的版本</p>
<p>对于比较激进的操作系统（ubuntu就曾经因为motd爆出安全漏洞）那就更灵活了。</p>
<p>Ubuntu：</p>
<p>修改/etc/init.d/bootmisc.sh脚本，其中：</p>
<pre class="bash" name='code'>        uname -snrvm &gt; /var/run/motd
        [ -f /etc/motd.tail ] &amp;&amp; cat /etc/motd.tail &gt;&gt; /var/run/motd</pre>
<p>我要加入uptime和df -h的信息就修改为：</p>
<pre class="bash" name='code'>        uname -snrvm &gt; /var/run/motd
        [ -f /etc/motd.tail ] &amp;&amp; cat /etc/motd.tail &gt;&gt; /var/run/motd
        uptime &gt;&gt; /var/run/motd
        df -h &gt;&gt; /var/run/motd</pre>
<p>重启服务：</p>
<p>/etc/init.d/bootmisc.sh stop<br />
/etc/init.d/bootmisc.sh start // 不支持restart reload等操作</p>
<p>登录查看，成功！</p>
<p>FreeBSD：</p>
<p>其实是一个原理，方式类似：</p>
<p>ee /etc/rc.d/motd</p>
<pre class="bash" name='code'>        uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\) $,\1 (\3) #\2,' &gt; ${T}
        awk '{if (NR == 1) {if ($1 == "FreeBSD") {next} else {print "\n"$0}} else {print}}' &lt; /etc/motd &gt;&gt; ${T}</pre>
<p>改为：</p>
<pre class="bash" name='code'>        uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\) $,\1 (\3) #\2,' &gt; ${T}
        awk '{if (NR == 1) {if ($1 == "FreeBSD") {next} else {print "\n"$0}} else {print}}' &lt; /etc/motd &gt;&gt; ${T}

        uptime &gt;&gt; ${T}
        df -h &gt;&gt; ${T} </pre>
<p>重启</p>
<p> /etc/rc.d/motd stop;  /etc/rc.d/motd start</p>
<p>成功！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/08/17/%e9%80%9a%e8%bf%87motd%e4%bf%a1%e6%81%af%e7%ae%80%e5%8c%96%e5%b7%a1%e6%a3%80%e6%93%8d%e4%bd%9c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个怪异的Cron问题</title>
		<link>http://www.litrin.net/2010/08/13/%e4%b8%80%e4%b8%aa%e6%80%aa%e5%bc%82%e7%9a%84cron%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25b8%2580%25e4%25b8%25aa%25e6%2580%25aa%25e5%25bc%2582%25e7%259a%2584cron%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2010/08/13/%e4%b8%80%e4%b8%aa%e6%80%aa%e5%bc%82%e7%9a%84cron%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:24:22 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1297</guid>
		<description><![CDATA[一个朋友向我咨询他遇到的一个问题。 Centos的操作系统，自然是主流应用的WWW。近期无缘无故的Cron失效，所有的任务都无法执行。多次重启主机，重启Cron服务均是如此。 起先我由于没有拿到控制台，怀疑是Cron经典的环境变量问题，修改了半天也是白忙。总算此兄开恩，将root的权限给了我。:) 登入主机，crontab -l，所有命令都正常，单独执行也都OK。跑到/var/spool/cron下也没有发现有什么文件权限之类的问题。 每天都被cron mail挤爆信箱的我觉的从邮件入手吧。谁知那位兄弟没有配置邮件系统，而且直接disable了sendmail服务。 这里需要说明的是，Crontab 默认会将定时执行的结果通过mail返回给用户。如果没有启动Sendmail服务，系统（确切的应该是sendmail程序）将会把每一个结果保存为一个文件，放置在/var/spool/clientmqueue下。 cd /var/spool/clientmqueue 呵呵，果然！等了半个多小时愣是没有给list出来。du -sh 也是个费时费力的操作了。 mv * 太慢，直接 ls &#124; xargs rm 操作，清空了所有的文件，重试了一下，搞定！ 解决此类方法的建议： 开启sendmail服务，这是最佳途径。 每条命令使用 &#8216;&#62;&#62;&#8217;  指向一个日志文件，如果觉得返回没有必要，就直接  &#62;&#62; /dev/null 2&#62;&#38;1 丢弃掉。 更加变态的方式就是再加一条cron，定期清空 /var/spool/clientmqueue PS： 之前没有弄过，完成测试的时候才理清的一个Cron问题： 30 3 * * 1 dosomething ,是每周一3点半执行是确信无疑的了。 30 3 1 * 1 dosomething, 是当1号是周一的时候执行吗？不是！是1号，或者周一的时候执行。crontab中的星期是一个“或”的概念，而非其他的“和”的概念。]]></description>
			<content:encoded><![CDATA[<p>一个朋友向我咨询他遇到的一个问题。</p>
<p>Centos的操作系统，自然是主流应用的WWW。近期无缘无故的Cron失效，所有的任务都无法执行。多次重启主机，重启Cron服务均是如此。</p>
<p>起先我由于没有拿到控制台，怀疑是Cron经典的环境变量问题，修改了半天也是白忙。总算此兄开恩，将root的权限给了我。:)</p>
<p><span id="more-1297"></span></p>
<p>登入主机，crontab -l，所有命令都正常，单独执行也都OK。跑到/var/spool/cron下也没有发现有什么文件权限之类的问题。</p>
<p>每天都被cron mail挤爆信箱的我觉的从邮件入手吧。谁知那位兄弟没有配置邮件系统，而且直接disable了sendmail服务。</p>
<p>这里需要说明的是，Crontab 默认会将定时执行的结果通过mail返回给用户。如果没有启动Sendmail服务，系统（确切的应该是sendmail程序）将会把每一个结果保存为一个文件，放置在/var/spool/clientmqueue下。</p>
<p>cd /var/spool/clientmqueue 呵呵，果然！等了半个多小时愣是没有给list出来。du -sh 也是个费时费力的操作了。</p>
<p>mv * 太慢，直接 ls | xargs rm 操作，清空了所有的文件，重试了一下，搞定！</p>
<p>解决此类方法的建议：</p>
<ol>
<li>开启sendmail服务，这是最佳途径。</li>
<li>每条命令使用 &#8216;&gt;&gt;&#8217;  指向一个日志文件，如果觉得返回没有必要，就直接  &gt;&gt; /dev/null 2&gt;&amp;1 丢弃掉。</li>
<li>更加变态的方式就是再加一条cron，定期清空 /var/spool/clientmqueue</li>
</ol>
<p>PS：</p>
<p>之前没有弄过，完成测试的时候才理清的一个Cron问题：</p>
<p>30 3 * * 1 dosomething ,是每周一3点半执行是确信无疑的了。<br />
30 3 1 * 1 dosomething, 是当1号是周一的时候执行吗？不是！是1号，或者周一的时候执行。crontab中的星期是一个“或”的概念，而非其他的“和”的概念。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/08/13/%e4%b8%80%e4%b8%aa%e6%80%aa%e5%bc%82%e7%9a%84cron%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>利用Ubuntu搭建私有云</title>
		<link>http://www.litrin.net/2010/08/11/%e5%88%a9%e7%94%a8ubuntu%e6%90%ad%e5%bb%ba%e7%a7%81%e6%9c%89%e4%ba%91/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2588%25a9%25e7%2594%25a8ubuntu%25e6%2590%25ad%25e5%25bb%25ba%25e7%25a7%2581%25e6%259c%2589%25e4%25ba%2591</link>
		<comments>http://www.litrin.net/2010/08/11/%e5%88%a9%e7%94%a8ubuntu%e6%90%ad%e5%bb%ba%e7%a7%81%e6%9c%89%e4%ba%91/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 06:30:09 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1293</guid>
		<description><![CDATA[这一段时间大家都在谈云计算，Ubuntu也是在它的server版本中增加了Eucalyptus软件包，用以支持一个与亚马逊EC2兼容的企业云。作为一个弹性扩展方式，Cloud的确很方便。 闲来无事，测试了一下。报下配置，理论上用虚拟机是完全可以的： 1台Dell 台式机，用以安装Cluster，双核+2G+250G；一台Asus本本，用以安装Node，双核+2G+160G；当然，我的测试中还有我自己的ubuntu本本充当客户端，这台机器可以省略，将客户端放在上述主机中的任何一台——前提是只要不是生产环境。 1. 安装Cluster主机 貌似这里没什么好说的，我用的是Ubuntu 910 x86_64 server，我的网络已经开启了DHCP（ip:192.168.103.223），没有太多的配置。安装的最后，系统会询问你安装的软件包。选择 Install Ubuntu Enterprise Cloud Cluster。系统会要求配置postfix以发送验证邮件，internet Site选项即可。Name your cluster 也没什么特别，我就用了My Cloud。 a list of available IP addresses on your network 选项是用于虚拟机的IP段，这里用一个空的Ip段即可。 2. 安装Node主机 同样没什么可以多说的，但要求Node主机跟Cluster在同一个网段内即可（ip:192.168.103.233）。选择 Install Ubuntu Enterprise Cloud Node。由于Cluster主机已经启动了，向导直接就通过了。 3. 调试Cloud 在Cluster上执行 sudo euca_conf &#8211;no-rsync &#8211;discover-nodes ，系统会提示发现Node并将Node加如Cloud。 用客户端访问https://192.168.103.223:8443 (建议使用Linux+Firefox)，默认的用户名和密码都是admin，比较汗。登录后在Credentials选项卡中download Credentials下载打包好的验证文件。我的文件名~/euca2-admin-x509.zip    4. 配置客户端  据说有一个基于Firefox插件的图形化客户端，没有测试过，各位可以测试下。我还是比较笨的用命令行。 sudo apt-get install ec2-api-tools   euca2ools mkdir ~/.euca cd ~/.euca unzip ~/euca2-admin-x509.zip chmod -R 0700 ~/.euca  ~/.euca/eucarc  echo ”[ -r ~/.euca/eucarc ] &#38;&#38; . ~/.euca/eucarc” &#62;&#62; ~/.bashrc 重新开一个终端，让配置生效，或者。。。重启吧。]]></description>
			<content:encoded><![CDATA[<p>这一段时间大家都在谈云计算，Ubuntu也是在它的server版本中增加了Eucalyptus软件包，用以支持一个与亚马逊EC2兼容的企业云。作为一个弹性扩展方式，Cloud的确很方便。</p>
<p>闲来无事，测试了一下。报下配置，理论上用虚拟机是完全可以的：<br />
1台Dell 台式机，用以安装Cluster，双核+2G+250G；一台Asus本本，用以安装Node，双核+2G+160G；当然，我的测试中还有我自己的ubuntu本本充当客户端，这台机器可以省略，将客户端放在上述主机中的任何一台——前提是只要不是生产环境。</p>
<p><span id="more-1293"></span></p>
<p><strong>1. 安装Cluster主机</strong></p>
<p>貌似这里没什么好说的，我用的是Ubuntu 910 x86_64 server，我的网络已经开启了DHCP（ip:192.168.103.223），没有太多的配置。安装的最后，系统会询问你安装的软件包。选择 Install Ubuntu Enterprise Cloud Cluster。系统会要求配置postfix以发送验证邮件，internet Site选项即可。Name your cluster 也没什么特别，我就用了My Cloud。<br />
a list of available IP addresses on your network 选项是用于虚拟机的IP段，这里用一个空的Ip段即可。</p>
<p><strong>2. 安装Node主机</strong></p>
<p>同样没什么可以多说的，但要求Node主机跟Cluster在同一个网段内即可（ip:192.168.103.233）。选择 Install Ubuntu Enterprise Cloud Node。由于Cluster主机已经启动了，向导直接就通过了。</p>
<p><strong>3. 调试Cloud</strong></p>
<p>在Cluster上执行 sudo euca_conf &#8211;no-rsync &#8211;discover-nodes ，系统会提示发现Node并将Node加如Cloud。<br />
用客户端访问<a rel="nofollow" target="_blank" href="https://192.168.103.223:8443">https://192.168.103.223:8443</a> (建议使用Linux+Firefox)，默认的用户名和密码都是admin，比较汗。登录后在Credentials选项卡中download Credentials下载打包好的验证文件。我的文件名~/euca2-admin-x509.zip   </p>
<p><strong>4. 配置客户端</strong> </p>
<p>据说有一个基于<a rel="nofollow" target="_blank" href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609" target="_blank">Firefox插件的图形化客户端</a>，没有测试过，各位可以测试下。我还是比较笨的用命令行。</p>
<p>sudo apt-get install ec2-api-tools   euca2ools</p>
<p>mkdir ~/.euca<br />
cd ~/.euca<br />
unzip ~/euca2-admin-x509.zip<br />
chmod -R 0700 ~/.euca<br />
 ~/.euca/eucarc <br />
echo ”[ -r ~/.euca/eucarc ] &amp;&amp; . ~/.euca/eucarc” &gt;&gt; ~/.bashrc</p>
<p>重新开一个终端，让配置生效，或者。。。重启吧。</p>
<p><strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/08/11/%e5%88%a9%e7%94%a8ubuntu%e6%90%ad%e5%bb%ba%e7%a7%81%e6%9c%89%e4%ba%91/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>virtual server上安装ubuntu</title>
		<link>http://www.litrin.net/2010/01/11/virtual-server%e4%b8%8a%e5%ae%89%e8%a3%85ubuntu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=virtual-server%25e4%25b8%258a%25e5%25ae%2589%25e8%25a3%2585ubuntu</link>
		<comments>http://www.litrin.net/2010/01/11/virtual-server%e4%b8%8a%e5%ae%89%e8%a3%85ubuntu/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 08:07:19 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1141</guid>
		<description><![CDATA[都说MS 的virtual server仅能够支持MS自家的系统。比如解决了的xorg桌面的显示问题。  这次在virtual server上安装ubuntu 804 server，每次跳出启动选项之后，选择好语言之后，启动安装程序，虚拟机马上重启。一开始以为是ACPI的问题，关闭了acpi之后，故障依旧。久而久之发现问题的规律是只会出现在成功启用了“硬件辅助虚拟化功能”的虚拟机上。    多次失败之后，找到了解决方法：  利用光盘启动好之后，选择好语言之后，进入Ubuntu的启动选项界面。 如果您安装的是desktop版本，按F4键，选择“安全图形模式”。Server版本直接跳过这一步。 按F6，修改启动参数，原版本为 &#8216;XXXXXX quiet splash &#8211;&#8217; ，删除掉后面的 &#8216;&#8211;&#8217; ，当然，你也可以直接删除quiet splash跳过飞溅界面。添加 vga=791 noreplace-paravirt ，直接按回车启动。 完成安装。 第一次启动载入grub时，直接esc编辑grub 设置，将kenerl那一行的末尾同样加上vga=791 noreplace-paravirt ，按b键启动。 这种方法似乎也支持Fedora一类的Linux。  noreplace-paravirt这个模块，网络上解释的很少。根据字面分析大致是一旦启用了硬件虚拟化支持以后，内核的一部分机器码将会被替换，强制操作系统关闭这个功能之后，系统才能正常启动。 PS:关于vga=791的解释 vga的模式分为如下几种，以及相互对应的数字标识 16 進位表示: pixel 640&#215;480 800&#215;600 1024&#215;768 1280&#215;1024 text 80&#215;30 100&#215;37 128&#215;48 160&#215;64 256 0&#215;301 0&#215;303 0&#215;305 0&#215;307 32k 0&#215;310 0&#215;313 0&#215;316 0&#215;319 64k [...]]]></description>
			<content:encoded><![CDATA[<p>都说MS 的virtual server仅能够支持MS自家的系统。比如<a href="http://www.litrin.net/2008/02/19/virtual-server-virtual-pc%e4%b8%8blinux%e6%a1%8c%e9%9d%a2%e7%9a%84%e9%97%ae%e9%a2%98/" target="_blank">解决了的xorg桌面的显示问题</a>。 </p>
<p>这次在virtual server上安装ubuntu 804 server，每次跳出启动选项之后，选择好语言之后，启动安装程序，虚拟机马上重启。一开始以为是ACPI的问题，关闭了acpi之后，故障依旧。久而久之发现问题的规律是只会出现在成功启用了“硬件辅助虚拟化功能”的虚拟机上。 </p>
<p><span id="more-1141"></span> </p>
<p>多次失败之后，找到了解决方法： </p>
<ol>
<li>利用光盘启动好之后，选择好语言之后，进入Ubuntu的启动选项界面。</li>
<li>如果您安装的是desktop版本，按F4键，选择“安全图形模式”。Server版本直接跳过这一步。</li>
<li>按F6，修改启动参数，原版本为 &#8216;XXXXXX quiet splash &#8211;&#8217; ，删除掉后面的 &#8216;&#8211;&#8217; ，当然，你也可以直接删除quiet splash跳过飞溅界面。添加 <strong>vga=791 noreplace-paravirt </strong>，直接按回车启动。</li>
<li>完成安装。</li>
<li>第一次启动载入grub时，直接esc编辑grub 设置，将kenerl那一行的末尾同样加上<strong>vga=791 noreplace-paravirt ，</strong>按b键启动。</li>
</ol>
<div id="attachment_1142" class="wp-caption alignleft" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/01/MSVS-ubutnu.png"><img class="size-medium wp-image-1142" style="vertical-align: middle;" title="ms virtual server 安装 ubuntu Linux " src="http://www.litrin.net/wp-content/uploads/2010/01/MSVS-ubutnu-300x248.png" alt="ms virtual server 安装 ubuntu Linux" width="300" height="248" /></a><p class="wp-caption-text">ms virtual server 安装 ubuntu Linux </p></div>
<p>这种方法似乎也支持Fedora一类的Linux。 </p>
<p>noreplace-paravirt这个模块，网络上解释的很少。根据字面分析大致是一旦启用了硬件虚拟化支持以后，内核的一部分机器码将会被替换，强制操作系统关闭这个功能之后，系统才能正常启动。</p>
<p>PS:关于vga=791的解释</p>
<p>vga的模式分为如下几种，以及相互对应的数字标识</p>
<p>16 進位表示:</p>
<blockquote>
<table id="table1" border="0" cellpadding="3">
<tbody>
<tr>
<td align="right">pixel</td>
<td>640&#215;480</td>
<td>800&#215;600</td>
<td>1024&#215;768</td>
<td>1280&#215;1024</td>
</tr>
<tr>
<td align="right">text</td>
<td align="right">80&#215;30</td>
<td align="right">100&#215;37</td>
<td align="right">128&#215;48</td>
<td align="right">160&#215;64</td>
</tr>
<tr>
<td align="right">256</td>
<td align="right">0&#215;301</td>
<td align="right">0&#215;303</td>
<td align="right">0&#215;305</td>
<td align="right">0&#215;307</td>
</tr>
<tr>
<td align="right">32k</td>
<td align="right">0&#215;310</td>
<td align="right">0&#215;313</td>
<td align="right">0&#215;316</td>
<td align="right">0&#215;319</td>
</tr>
<tr>
<td align="right">64k</td>
<td align="right">0&#215;311</td>
<td align="right">0&#215;314</td>
<td align="right">0&#215;317</td>
<td align="right">0x31A</td>
</tr>
<tr>
<td align="right">16M</td>
<td align="right">0&#215;312</td>
<td align="right">0&#215;315</td>
<td align="right">0&#215;318</td>
<td align="right">0x31B</td>
</tr>
</tbody>
</table>
</blockquote>
<p>10 進位表示:</p>
<blockquote>
<table id="table2" border="0" cellpadding="3">
<tbody>
<tr>
<td align="right">pixel</td>
<td>640&#215;480</td>
<td>800&#215;600</td>
<td>1024&#215;768</td>
<td>1280&#215;1024</td>
</tr>
<tr>
<td align="right">text</td>
<td align="right">80&#215;30</td>
<td align="right">100&#215;37</td>
<td align="right">128&#215;48</td>
<td align="right">160&#215;64</td>
</tr>
<tr>
<td align="right">256</td>
<td align="right">769</td>
<td align="right">771</td>
<td align="right">773</td>
<td align="right">775</td>
</tr>
<tr>
<td align="right">32k</td>
<td align="right">784</td>
<td align="right">787</td>
<td align="right">790</td>
<td align="right">793</td>
</tr>
<tr>
<td align="right">64k</td>
<td align="right">785</td>
<td align="right">788</td>
<td align="right">791</td>
<td align="right">794</td>
</tr>
<tr>
<td align="right">16M</td>
<td align="right">786</td>
<td align="right">789</td>
<td align="right">792</td>
<td align="right">795</td>
</tr>
</tbody>
</table>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/01/11/virtual-server%e4%b8%8a%e5%ae%89%e8%a3%85ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为GIMP的退出叫好</title>
		<link>http://www.litrin.net/2009/12/22/%e4%b8%bagimp%e7%9a%84%e9%80%80%e5%87%ba%e5%8f%ab%e5%a5%bd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25b8%25bagimp%25e7%259a%2584%25e9%2580%2580%25e5%2587%25ba%25e5%258f%25ab%25e5%25a5%25bd</link>
		<comments>http://www.litrin.net/2009/12/22/%e4%b8%bagimp%e7%9a%84%e9%80%80%e5%87%ba%e5%8f%ab%e5%a5%bd/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 02:00:33 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[开源7788]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[业界话题]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1136</guid>
		<description><![CDATA[自从第一次接触Linux的桌面版，我就认识了GIMP这个软件。印象最深的就是那个戴着“南瓜帽”的小狐狸形象。近期得到消息，Ubuntu这个目前拥有最大Linux Desktop份额的发行版从下一版本（1004）后正式将GIMP排除在默认安装包之外。 从GIMP本身说起，这是一个很强大的图片编辑软件，很多功能已经达到或者超过了昂贵的Photoshop。曾经用它处理过几次图片，效果也很让我满意。但作为Linux桌面版必备的软件，它的利用率可能是最低的了——有太多太多的软件可以替代它的位置，而且不同于OpenOffice，你无法要求每一个Linux用户都修改图片，或者已经被PS浸染的人回过头来用这个甚至买不到一本参考书的GIMP。 就像windows这个系统始终被诟病的捆绑，捆绑的仅仅是几乎人人都会用到的浏览器而已，甚至稍微常用点的MS office都不在捆绑之列。如果有一天windows将他们的Virtual Studio绑进操作系统，那会是多么滑稽的事。 Linux的开发者目前存在的最大问题似乎就在这里，对最终受众的技能要求过高。我也曾见过论坛上新手问诸如文本编辑器之类的问题，却被老手们“强迫”使用vi这类巨复杂的工具来实现。仿佛只有把事情搞的复杂了，搞的小众了才能显示出“老手”的能耐。计算机作为机器最终是要为人服务的，没有必要为了更好的为机器服务一次让人去学他们本身就不感兴趣的东西。 想起当初redhat曾经在自带游戏里边放置了一个叫做x-bill的游戏。这个游戏主要的内容似乎是和一个虚拟的Bill先生抢占PC，Bill先生会在每台机器上做一个windows标记，你的任务就是做企鹅标记，并把windows标记的PC扔进垃圾桶。说实在的这个游戏确实很无趣，但这个游戏本身的设计到被选入Redhat发行包的整个过程都代表了很多Linuxer的理念。可惜的是，你不能要求每一个用户都参与到这个游戏中，不能仅仅依靠一腔热情的完成这个游戏。 只有包容所有受众的、不令人望而生畏的操作系统才是最好的。为GIMP的退居二线而叫好！]]></description>
			<content:encoded><![CDATA[<p>自从第一次接触Linux的桌面版，我就认识了GIMP这个软件。印象最深的就是那个戴着“南瓜帽”的小狐狸形象。近期得到消息，Ubuntu这个目前拥有最大Linux Desktop份额的发行版从下一版本（1004）后正式将GIMP排除在默认安装包之外。</p>
<p>从GIMP本身说起，这是一个很强大的图片编辑软件，很多功能已经达到或者超过了昂贵的Photoshop。曾经用它处理过几次图片，效果也很让我满意。但作为Linux桌面版必备的软件，它的利用率可能是最低的了——有太多太多的软件可以替代它的位置，而且不同于OpenOffice，你无法要求每一个Linux用户都修改图片，或者已经被PS浸染的人回过头来用这个甚至买不到一本参考书的GIMP。</p>
<p><span id="more-1136"></span></p>
<p>就像windows这个系统始终被诟病的捆绑，捆绑的仅仅是几乎人人都会用到的浏览器而已，甚至稍微常用点的MS office都不在捆绑之列。如果有一天windows将他们的Virtual Studio绑进操作系统，那会是多么滑稽的事。</p>
<p>Linux的开发者目前存在的最大问题似乎就在这里，对最终受众的技能要求过高。我也曾见过论坛上新手问诸如文本编辑器之类的问题，却被老手们“强迫”使用vi这类巨复杂的工具来实现。仿佛只有把事情搞的复杂了，搞的小众了才能显示出“老手”的能耐。计算机作为机器最终是要为人服务的，没有必要为了更好的为机器服务<strong>一次</strong>让人去学他们本身就不感兴趣的东西。</p>
<p>想起当初redhat曾经在自带游戏里边放置了一个叫做x-bill的游戏。这个游戏主要的内容似乎是和一个虚拟的Bill先生抢占PC，Bill先生会在每台机器上做一个windows标记，你的任务就是做企鹅标记，并把windows标记的PC扔进垃圾桶。说实在的这个游戏确实很无趣，但这个游戏本身的设计到被选入Redhat发行包的整个过程都代表了很多Linuxer的理念。可惜的是，你不能要求每一个用户都参与到这个游戏中，不能仅仅依靠一腔热情的完成这个游戏。</p>
<p>只有包容所有受众的、不令人望而生畏的操作系统才是最好的。为GIMP的退居二线而叫好！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/12/22/%e4%b8%bagimp%e7%9a%84%e9%80%80%e5%87%ba%e5%8f%ab%e5%a5%bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu下安装oracle11G up2</title>
		<link>http://www.litrin.net/2009/11/30/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85oracle11g-up2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu%25e4%25b8%258b%25e5%25ae%2589%25e8%25a3%2585oracle11g-up2</link>
		<comments>http://www.litrin.net/2009/11/30/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85oracle11g-up2/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 07:39:38 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1118</guid>
		<description><![CDATA[oracle的11G总算到了up2，这次的升级个人感觉最大的改善就是将clustter包成了标准包的一部分，看起来今后oracle数据库要越发的使用更多的机器了。目前官方只提供了Solaris和Linux的安装包，Win以及其他操作系统看起来还是要等。 oracle官方建议的linux仅限于Redhat, Suse, Asianux以及oracle自家的linux。但作为测试的一部分，我选择了ubuntu的新版本910 AMD64 server作为平台。不过理论上使用ubuntu Desktop或者Xubuntu更省力一点。系统内存为8G，根据建议（如下），设置了8G的swap。 之前还有一篇solaris下10up2的安装可以参考 Between 0 MB and 256 MB 3 times the size of RAM Between 256 MB and 512 MB 2 times the size of RAM Between 512 MB and 2 GB 1.5 times the size of RAM Between 2 GB and 16 GB Equal to the size of [...]]]></description>
			<content:encoded><![CDATA[<p>oracle的11G总算到了up2，这次的升级个人感觉最大的改善就是将clustter包成了标准包的一部分，看起来今后oracle数据库要越发的使用更多的机器了。目前官方只提供了<a rel="nofollow" target="_blank" href="http://www.oracle.com/technology/software/products/database/index.html">Solaris和Linux的安装包</a>，Win以及其他操作系统看起来还是要等。</p>
<p>oracle官方建议的linux仅限于Redhat, Suse, Asianux以及oracle自家的linux。但作为测试的一部分，我选择了ubuntu的新版本910 AMD64 server作为平台。不过理论上使用ubuntu Desktop或者Xubuntu更省力一点。系统内存为8G，根据建议（如下），设置了8G的swap。</p>
<p><a href="http://www.litrin.net/2007/11/15/solaris%e4%b8%8b%e5%ae%89%e8%a3%85oracle-10-up-2/" target="_blank">之前还有一篇solaris下10up2的安装可以参考</a></p>
<table title="RAM and Swap Space Relationship" dir="ltr" border="1" cellspacing="0" cellpadding="3" width="100%" frame="hsides" rules="groups" summary="RAM and swap space relationship">
<tbody>
<tr align="left" valign="top">
<td id="r2c1-t6" align="left">Between 0 MB and 256 MB</td>
<td align="left">3 times the size of RAM</td>
</tr>
<tr align="left" valign="top">
<td id="r3c1-t6" align="left">Between 256 MB and 512 MB</td>
<td align="left">2 times the size of RAM</td>
</tr>
<tr align="left" valign="top">
<td id="r4c1-t6" align="left">Between 512 MB and 2 GB</td>
<td align="left">1.5 times the size of RAM</td>
</tr>
<tr align="left" valign="top">
<td id="r5c1-t6" align="left">Between 2 GB and 16 GB</td>
<td align="left">Equal to the size of RAM</td>
</tr>
<tr align="left" valign="top">
<td id="r6c1-t6" align="left">More than 16 GB</td>
<td align="left">16 GB</td>
</tr>
</tbody>
</table>
<p><span id="more-1118"></span></p>
<p>安装完毕后还是个人习惯性的那一套：<br />
#sudo apt-get update<br />
#sudo apt-get upgrade</p>
<p>升级结束后安装必要的库：<br />
#sudo apt-get install gnome-core unzip build-essential libaio-dev(ms libaio 就可以)</p>
<p>设置环境变量：<br />
修改/etc/bash.bashrc，在末尾添加如下内容<br />
<code>ORACLE_HOME=/opt/oracle/product/11.2.0/Db_1<br />
export ORACLE_HOME<br />
ORACLE_BASE=/opt/oracle<br />
export ORACLE_BASE<br />
NLS_LANG=american_america.zhs16gbk<br />
export NLS_LANG<br />
PATH=$PATH:$ORACLE_HOME/bin<br />
ORACLE_SID=orcl<br />
export ORACLE_SID<br />
</code><br />
修改内核参数：（官方文档没有提及，保险起见，还是添加了）<br />
<code><br />
fs.file-max = 6815744<br />
fs.aio-max-nr = 1048576<br />
kernel.shmall = 2097152<br />
kernel.shmmax = 2147483648<br />
kernel.shmmni = 4096<br />
kernel.sem = 250 32000 100 128<br />
net.ipv4.ip_local_port_range = 9000 65500<br />
net.core.rmem_default = 262144<br />
net.core.rmem_max = 4194304<br />
net.core.wmem_default = 262144<br />
net.core.wmem_max = 1048576<br />
</code></p>
<p><code>重起机器。</code></p>
<p><code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/11/30/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85oracle11g-up2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>配置Ubuntu的php支持OCI8</title>
		<link>http://www.litrin.net/2009/09/15/%e9%85%8d%e7%bd%aeubuntu%e7%9a%84php%e6%94%af%e6%8c%81oci8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%2585%258d%25e7%25bd%25aeubuntu%25e7%259a%2584php%25e6%2594%25af%25e6%258c%2581oci8</link>
		<comments>http://www.litrin.net/2009/09/15/%e9%85%8d%e7%bd%aeubuntu%e7%9a%84php%e6%94%af%e6%8c%81oci8/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 09:48:03 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1085</guid>
		<description><![CDATA[PHP的OCI模块支持Oracle总是比较让人头痛。这趟弄个ubuntu的安装文档。 通过ubuntu-server安装盘安装LAMP。当然，正常情况下，建议安装好openssh服务器，免得麻烦。 虽然ubuntu的server支持root直接登录，既然是ubutu，还是遵循它的sudo吧。 安装结束后，启动server。 首先，经典的更新 #sudo apt-get update; sudo apt-get upgrade 添加所需的包 #sudo apt-get install php5-dev build-essential php-pear libaio1 差点忘了，要装unzip： #sudo apt-get install unzip 按照oracle官方网站的要求http://www.oracle.com/technology/tech/oci/instantclient/index.html 下载Instant Client ，我老老实实的下载了basic和sdk两个包，理论上下载basic-lit和sdk就可以。 设立目录，解压缩： #sudo mkdir /opt/oracle #sudo cp ~/*.zip /opt/oracle #cd /opt/oracle #sudo unzip ./*.zip #sudo mv instantclient_11_1 instantclient 设置instantclient： #sudo ln –s libclntsh.so.11.1 libclntsh.so #sudo ln –s libocci.so.11.1 libocci.so [...]]]></description>
			<content:encoded><![CDATA[<p>PHP的OCI模块支持Oracle总是比较让人头痛。这趟弄个ubuntu的安装文档。</p>
<p>通过ubuntu-server安装盘安装LAMP。当然，正常情况下，建议安装好openssh服务器，免得麻烦。</p>
<p>虽然ubuntu的server支持root直接登录，既然是ubutu，还是遵循它的sudo吧。</p>
<p>安装结束后，启动server。</p>
<p>首先，经典的更新<br />
#sudo apt-get update; sudo apt-get upgrade</p>
<p><span id="more-1085"></span></p>
<p>添加所需的包<br />
#sudo apt-get install php5-dev build-essential php-pear libaio1</p>
<p>差点忘了，要装unzip：<br />
#sudo apt-get install unzip</p>
<p>按照oracle官方网站的要求<a rel="nofollow" target="_blank" href="http://www.oracle.com/technology/tech/oci/instantclient/index.html">http://www.oracle.com/technology/tech/oci/instantclient/index.html</a> 下载<span>Instant Client ，我老老实实的下载了basic和sdk两个包，理论上下载basic-lit和sdk就可以。</span></p>
<p>设立目录，解压缩：<br />
#sudo mkdir /opt/oracle<br />
#sudo cp ~/*.zip /opt/oracle<br />
#cd /opt/oracle<br />
#sudo unzip ./*.zip<br />
#sudo mv instantclient_11_1 instantclient</p>
<p>设置instantclient：<br />
#sudo ln –s libclntsh.so.11.1 libclntsh.so<br />
#sudo ln –s libocci.so.11.1 libocci.so<br />
#sudo export ORACLE_HOME=/opt/oracle/instantclien</p>
<p>添加lib库位置：<br />
#cd /etc/ld.so.conf.d<br />
#sudo nano liboci.conf  //添加一行：/opt/oracle/instantclient<br />
#sudo ldconfig</p>
<p>准备OCI8库：<br />
#sudo mkdir /tmp/src<br />
#cd /tmp/src<br />
#sudo pecl download oci8<br />
#sudo tar vzxf oci8-1.3.5.tgz //我下载的版本是135<br />
#cd oci8-1.3.5</p>
<p>编译OCI8：<br />
#sudo phpize //比较容易出错的地方，如果报错，你可能没有安装php5-dev包<br />
#sudo ./configure &#8211;with-oci8=share,instantclient,$ORACLE_HOME<br />
#sudo make; sudo make install</p>
<p>设置php5支持：<br />
正常情况下编译完成后会有提示：Installing shared extensions:     /usr/lib/php5/20060613/<br />
到此目录下确认是否存在oci8.so<br />
#cd /etc/php5/conf.d<br />
#sudo nano oci8.ini //添加一行：extension=oci8.so<br />
#sudo apache2ctl restart</p>
<p>经过上述步骤，oci8模块就会成功安装，可以通过phpinfo页面确认是否存在oci8模块</p>
<h2><a name="module_oci8">oci8</a></h2>
<table border="0" cellpadding="3" width="600">
<tbody>
<tr>
<td>OCI8 Support</td>
<td>enabled</td>
</tr>
<tr>
<td>Version</td>
<td>1.3.5</td>
</tr>
<tr>
<td>Revision</td>
<td>$Revision: 1.269.2.16.2.38.2.32 $</td>
</tr>
<tr>
<td>Active Persistent Connections</td>
<td>0</td>
</tr>
<tr>
<td>Active Connections</td>
<td>0</td>
</tr>
<tr>
<td>Oracle Instant Client Version</td>
<td>11.1</td>
</tr>
<tr>
<td>Temporary Lob support</td>
<td>enabled</td>
</tr>
<tr>
<td>Collections support</td>
<td>enabled</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="0" cellpadding="3" width="600">
<tbody>
<tr>
<th>Directive</th>
<th>Local Value</th>
<th>Master Value</th>
</tr>
<tr>
<td>oci8.connection_class</td>
<td><em>no value</em></td>
<td><em>no value</em></td>
</tr>
<tr>
<td>oci8.default_prefetch</td>
<td>100</td>
<td>100</td>
</tr>
<tr>
<td>oci8.events</td>
<td>Off</td>
<td>Off</td>
</tr>
<tr>
<td>oci8.max_persistent</td>
<td>-1</td>
<td>-1</td>
</tr>
<tr>
<td>oci8.old_oci_close_semantics</td>
<td>Off</td>
<td>Off</td>
</tr>
<tr>
<td>oci8.persistent_timeout</td>
<td>-1</td>
<td>-1</td>
</tr>
<tr>
<td>oci8.ping_interval</td>
<td>60</td>
<td>60</td>
</tr>
<tr>
<td>oci8.privileged_connect</td>
<td>Off</td>
<td>Off</td>
</tr>
<tr>
<td>oci8.statement_cache_size</td>
<td>20</td>
<td>20</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/09/15/%e9%85%8d%e7%bd%aeubuntu%e7%9a%84php%e6%94%af%e6%8c%81oci8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>实战Linux 虚拟服务器</title>
		<link>http://www.litrin.net/2009/08/05/%e5%ae%9e%e6%88%98linux-%e8%99%9a%e6%8b%9f%e6%9c%8d%e5%8a%a1%e5%99%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25ae%259e%25e6%2588%2598linux-%25e8%2599%259a%25e6%258b%259f%25e6%259c%258d%25e5%258a%25a1%25e5%2599%25a8</link>
		<comments>http://www.litrin.net/2009/08/05/%e5%ae%9e%e6%88%98linux-%e8%99%9a%e6%8b%9f%e6%9c%8d%e5%8a%a1%e5%99%a8/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 06:51:29 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1062</guid>
		<description><![CDATA[也不知最近怎么了，一直钻到怪圈里——先是研究把多台主机逻辑上虚拟成一台主机的clustter技术，接着又是把一台主机虚拟成多台主机的虚拟化及技术。 虚拟化，不管是intel-vt还是AMD-v，现在已经逐渐成了标配，MS虚拟化大行其道了。MS也在很久之前推出Virtual server和hyper-v服务器，具体暂时可以参考这里。考虑到redhat的设置相对没有难度，没事找事的我选择ubuntu server来部署。 安装一套干净的ubuntu server版，我选择了804.3 64bit版本。服务器是Dell 2950 双Xeon 5130, 4GRam 137G 硬盘。硬件支持intel-vt。 安装到最后，选择开启openssh服务器。可以离开机房，远程联机操作了。 安装virt-manager——这个软件就是redhat系统的虚拟机管理软件，ms是目前最方便的虚拟机管理程序。比较方便的apt-get，当然，如果你本机的系统是linux可以直接把virt-manager装在本机通过远程管理。方便起见，这里还是按照ssh的x-forwarding的方式介绍。 sudo apt-get install virt-manager gnome-core qemu libvirt-bin 比较漫长的等待，系统需要下载n多的包。可以出去休息一下。安装结束后不要忘记重新启动。 稍作修改，典型的ubuntu ‘sudo’问题 sudo nano /usr/bin/virt-manager  #!/bin/sh exec sudo python “/usr/share/virt-manager/virt-manager.py” “$@” 设置ssh的x11转接后 sudo virt-manager 应该可以看到KVM了。 选择file-&#62;open connection-&#62;选择QEMU, Local连接到主机。右击，选择new，有很详细的向导，这里不再解释了。貌似系统还支持多种cpu平台，没有做测试。不知道是什么缘故，virt-manager对于鼠标的支持有些问题——系统的鼠标和虚拟系统的鼠标总是不同步。有些时候还是比较让人讨厌。建议安装好系统之后还是用远程连接到虚拟机上进行操作吧。 ps:本想通过virt-manager + xen来实现，无奈全部修改好了之后，用virt-manager一连接到主机就崩溃，搜索了ubuntu的bugzilla发觉这似乎是64bit的通病，于是只能用Qemu。如果各位有成功部署的话希望能够共享经验。]]></description>
			<content:encoded><![CDATA[<p>也不知最近怎么了，一直钻到怪圈里——先是研究把多台主机逻辑上虚拟成一台主机的clustter技术，接着又是把一台主机虚拟成多台主机的虚拟化及技术。</p>
<p>虚拟化，不管是intel-vt还是AMD-v，现在已经逐渐成了标配，MS虚拟化大行其道了。MS也在很久之前推出Virtual server和hyper-v服务器，具体暂时可以参考<a href="http://www.litrin.net/2008/02/19/virtual-server-virtual-pc%e4%b8%8blinux%e6%a1%8c%e9%9d%a2%e7%9a%84%e9%97%ae%e9%a2%98/" target="_blank">这里</a>。考虑到redhat的设置相对没有难度，没事找事的我选择ubuntu server来部署。</p>
<p><span id="more-1062"></span></p>
<p>安装一套干净的ubuntu server版，我选择了804.3 64bit版本。服务器是Dell 2950 双Xeon 5130, 4GRam 137G 硬盘。硬件支持intel-vt。</p>
<p>安装到最后，选择开启openssh服务器。可以离开机房，远程联机操作了。</p>
<p>安装virt-manager——这个软件就是redhat系统的虚拟机管理软件，ms是目前最方便的虚拟机管理程序。比较方便的apt-get，当然，如果你本机的系统是linux可以直接把virt-manager装在本机通过远程管理。方便起见，这里还是按照ssh的x-forwarding的方式介绍。</p>
<p>sudo apt-get install virt-manager gnome-core qemu libvirt-bin</p>
<p>比较漫长的等待，系统需要下载n多的包。可以出去休息一下。安装结束后不要忘记重新启动。</p>
<p>稍作修改，典型的ubuntu ‘sudo’问题</p>
<p>sudo nano /usr/bin/virt-manager</p>
<p> #!/bin/sh<br />
exec <strong><span style="color: #ff0000;">sudo</span></strong> python “/usr/share/virt-manager/virt-manager.py” “$@”</p>
<p><a href="http://www.litrin.net/2009/06/01/ssh%e7%9a%84x%ef%bc%8dforwarding/" target="_blank">设置ssh的x11转接</a>后</p>
<p>sudo virt-manager</p>
<p>应该可以看到KVM了。</p>
<div id="attachment_1066" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2009/08/virt-manager_main.png"><img class="size-medium wp-image-1066" title="virt-manager_main" src="http://www.litrin.net/wp-content/uploads/2009/08/virt-manager_main-300x226.png" alt="virt-manager" width="300" height="226" /></a><p class="wp-caption-text">virt-manager</p></div>
<p>选择file-&gt;open connection-&gt;选择QEMU, Local连接到主机。右击，选择new，有很详细的向导，这里不再解释了。貌似系统还支持多种cpu平台，没有做测试。不知道是什么缘故，virt-manager对于鼠标的支持有些问题——系统的鼠标和虚拟系统的鼠标总是不同步。有些时候还是比较让人讨厌。建议安装好系统之后还是用远程连接到虚拟机上进行操作吧。</p>
<div id="attachment_1067" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2009/08/virt-manager_ui.png"><img class="size-medium wp-image-1067" title="virt-manager 界面" src="http://www.litrin.net/wp-content/uploads/2009/08/virt-manager_ui-300x275.png" alt="2003的安装" width="300" height="275" /></a><p class="wp-caption-text">2003的安装系统资源管理</p></div>
<div class="mceTemp mceIEcenter" style="text-align: left;">ps:本想通过virt-manager + xen来实现，无奈全部修改好了之后，用virt-manager一连接到主机就崩溃，搜索了ubuntu的bugzilla发觉这似乎是64bit的通病，于是只能用Qemu。如果各位有成功部署的话希望能够共享经验。</div>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/08/05/%e5%ae%9e%e6%88%98linux-%e8%99%9a%e6%8b%9f%e6%9c%8d%e5%8a%a1%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 810</title>
		<link>http://www.litrin.net/2008/11/03/ubuntu-810/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu-810</link>
		<comments>http://www.litrin.net/2008/11/03/ubuntu-810/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 00:39:47 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=495</guid>
		<description><![CDATA[自10月30号官方发布了Ubuntu810的正式release之后，第一时间做了dist-upgrade。 这次810的发布，对于像我这样一直更新的人来说，最显眼的变化就属桌面上的那只“山羊”了。跟之前那只“苍鹭”相比，制作更加的复杂和精良。看起来，Ubuntu团队中interface team的能力那是与日俱增。 之前我碰到的那个休眠和wifi灯的问题 已经得到修复，不过我这里又出现了caplock灯不会正常工作的问题——X下切换大小写时没有灯亮起来，除了麻烦一点不影响正常是使用，也就作罢。 升级之后，我的realplayer无法正常工作，只得重装。也算是小问题之一。 话在讲回来，在正常升级后的两天之内，系统升级了3次，每次至少10个包，算上发布前最后一周的那个“是不是集成进Opengoffice3“的那个讨论，可以看得出，这次发布有不少的”赶工“嫌疑。毕竟发布时部分时区已经到了31号，再不发布的话，恐怕只能叫做Ubuntu811了。 litrin@litrin-Ubuntu:~$ lsb_release  -a No LSB modules are available. Distributor ID:    Ubuntu Description:    Ubuntu 8.10 Release:    8.10 Codename:    intrepid]]></description>
			<content:encoded><![CDATA[<p>自10月30号官方发布了Ubuntu810的正式release之后，第一时间做了dist-upgrade。</p>
<p>这次810的发布，对于像我这样一直更新的人来说，最显眼的变化就属桌面上的那只“山羊”了。跟之前那只“苍鹭”相比，制作更加的复杂和精良。看起来，Ubuntu团队中interface team的能力那是与日俱增。</p>
<p>之前我碰到的那个<a href="http://www.litrin.net/?q=node/485" target="_blank">休眠和wifi灯的问题</a> 已经得到修复，不过我这里又出现了caplock灯不会正常工作的问题——X下切换大小写时没有灯亮起来，除了麻烦一点不影响正常是使用，也就作罢。</p>
<p>升级之后，我的realplayer无法正常工作，只得重装。也算是小问题之一。</p>
<p>话在讲回来，在正常升级后的两天之内，系统升级了3次，每次至少10个包，算上发布前最后一周的那个“是不是集成进Opengoffice3“的那个讨论，可以看得出，这次发布有不少的”赶工“嫌疑。毕竟发布时部分时区已经到了31号，再不发布的话，恐怕只能叫做Ubuntu811了。</p>
<hr />litrin@litrin-Ubuntu:~$ lsb_release  -a<br />
No LSB modules are available.<br />
Distributor ID:    Ubuntu<br />
Description:    Ubuntu 8.10<br />
Release:    8.10<br />
Codename:    intrepid</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2008/11/03/ubuntu-810/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

