<?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>简单.生活</title>
	<atom:link href="http://www.mike.org.cn/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mike.org.cn</link>
	<description>To make something special ,you just have to believe it’s special</description>
	<lastBuildDate>Thu, 19 Apr 2012 16:43:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>If Everyone Cared</title>
		<link>http://www.mike.org.cn/articles/if-everyone-cared/</link>
		<comments>http://www.mike.org.cn/articles/if-everyone-cared/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 16:14:30 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[音乐天堂]]></category>
		<category><![CDATA[思考]]></category>
		<category><![CDATA[经典]]></category>
		<category><![CDATA[音乐]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2471</guid>
		<description><![CDATA[　　第一次听到是筷子兄弟翻唱的[你在哪里]，在网上找到这首原曲[If Everyone Cared]。 　　在[If Everyone Cared]MV所讲述的故事中，Nickelback表现出对现实社会的自由意志，撼动人心。如果人人都关注自己的事情和社会的不公现象，在决心和勇气之下，那么世界一定会因他们而改变。 　　 　　MV中的故事： 　 　　1984. Bod Geldof, music journalist turned punk rock frontman, was inspired by a news report about Africa’s famine epidemic and began his fight against the world hunger. Geldof organized the world’s first global charity concert “Live Aid”. Performances by 100 artists around the world were viewed [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">你可能感兴趣的：</font></b></td>
    </tr>
    
        <tr>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="迪克牛仔┊《咆哮2002》" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fdikeniuzi-roaring-2002%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4925203.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">迪克牛仔┊《咆哮2002》</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="3 idiots经典台词和原声音乐" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2F3-idiots-classic-lines-and-acoustic-music%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://www.mike.org.cn/wp-content/uploads/wumidefault.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">3 idiots经典台词和原声音乐</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Savage Garden┊I Knew I Loved You" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fsavage-garden-i-knew-i-loved-you%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4926684.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Savage Garden┊I Knew I Loved You</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="功夫熊猫经典对白！" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fkung-fu-panda-classic-white%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://www.mike.org.cn/wp-content/uploads/wumidefault.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">功夫熊猫经典对白！</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Bon Jovi┊Joey" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fbon-jovi-joey%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4925155.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Bon Jovi┊Joey</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>　　第一次听到是筷子兄弟翻唱的[你在哪里]，在网上找到这首原曲[If Everyone Cared]。</p>
<p>　　在[If Everyone Cared]MV所讲述的故事中，Nickelback表现出对现实社会的自由意志，撼动人心。如果人人都关注自己的事情和社会的不公现象，在决心和勇气之下，那么世界一定会因他们而改变。</p>
<p>　　<object width="500" height="368"><param name="movie" value="http://player.youku.com/player.php/sid/XMzE5NjczMTQ4/v.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999" /><embed src="http://player.youku.com/player.php/sid/XMzE5NjczMTQ4/v.swf" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="500" height="368" flashvars="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999"></embed></object></p>
<p>　　MV中的故事：<br />
 　<br />
　　1984. Bod Geldof, music journalist turned punk rock frontman, was inspired by a news report about Africa’s famine epidemic and began his fight against the world hunger. Geldof organized the world’s first global charity concert “Live Aid”. Performances by 100 artists around the world were viewed by 1.6 billion people. Live Aid raised 150 million Pounds in one day.<span id="more-2471"></span></p>
<p>　　1984年Bod Geldof这个出身音乐记者的朋克摇滚前沿人，被一则报导非洲饥荒的新闻深深打动，开始了他与世界饥荒的战斗。他组织了世界上首次全球义演，取名”生命之助”。在这场演出中，来自世界各地的一百位艺人为十六亿观众进行了表演。生命之助在短短一天内筹到了一亿五千万英镑的善款。 </p>
<p>　　1976. Betty Williams, a receptionist and a mother of two, witnessed three children killed during the political turmoil in Northern Ireland. Within two days of the tragic event, Williams obtained 6,000 signatures petitioning for peace. She then led 10,000 people on a peace march to the children’s graves. The peaceful march was disrupted by protesters. One week later, Williams organized another march, this time the march was 35,000 strong. Betty Williams was awarded the Nobel Peace Prize in 1976.</p>
<p>　　在1976年，北爱尔兰一位名叫Betty Williams的前台接待员，同时也是两个孩子的母亲，亲眼目击了三名儿童在北爱政治冲突中遇害。悲剧发生后两天内她就组织了6000人在她的和平请愿书上签字，之后她又组织了一万人朝遇害儿童的墓地进行和平游行，但这次游行由于反对者的干扰而被迫终止。 但在两周后，一场规模更加宏大的游行开始了，这次参加游行的人数超过了三万五千人。Betty Williams在1976年获得了诺贝尔和平奖。 </p>
<p>　　1961. Two students in Portugal raised their glasses in a toast to freedom. They were imprisoned for seven years. British lawyer Peter Benenson was shocked by the events. To rally support for the students, he wrote a letter to his local paper. The response was so overwhelming that a committee was formed to organize the campaign. It quickly grew into a world-wide movement, known today as Amnesty International.</p>
<p>　　1961年，两个葡萄牙学生只因为他们为自由而举杯就被(当作政治犯)关押了长达7年。英国律师Peter　Benenson(注：1977年获得诺贝尔和平奖)震惊非常，立即给当地报纸去信，表示对学生的支持。此事一出，反响巨大，迅速在全球引起轰动，成立了专门的委员会，这就是我们今天所指的国际特赦组织。(注：国际特赦组织是保护人犯人权的国际性民间组织，致力于争取思想犯的获释，政治犯的公平审判,以及死刑、刑讯逼供的废止等。在数十个国家设有分会,定期调查并报告各国政治犯的状况,总部在伦敦。) </p>
<p>　　1920s. A boy from a small South African village dreamt of a day when equality would prevail over his country. After years of activism, he was charged with “Political Treason” and sentenced to life in prison. In 1990, after 27 years in prison, Nelson Rolihlahla Mandela was finally released. Mandela then led South Africa to its first ever democratic presidential election. Nearly 19 million people voted. Nelson Mandela won the election, ending the racist apartheid regime that divided South Africa for 46 years.</p>
<p>　　20世纪20年代，一个南非村落的小男孩梦想着能够有一天在他的国度里实现人人平等。多年的政治活动使他锒铛入狱，罪名是“叛国罪”。他的梦想也未曾消失。1990年，过了27年牢狱生活的曼德拉出狱了。之后他领导他的祖国进行了第一次民主的总统大选。近一千九百万人参加了投票。曼德拉赢得了选举，结束了南非46年的种族隔离。<br />
　　<br />
　　Never doubt that a small group of committed people can change the world. Indeed, it’s the only thing that has. —–Margret Mead</p>
<p>　　永远不要怀疑一小群有决心的人能改变世界，事实上，也只有他们才能改变世界。 －－玛格丽特·米德(人类学家)</p>
<p>　　歌词：</p>
<p>　　If Everyone Cared<br />
　　如果每个人都学会关心</p>
<p>　　From underneath the trees, we watch the sky<br />
　　我们在树下 注视着星空</p>
<p>　　Confusing stars for satellites<br />
　　围绕着群星的卫星 让我们感到疑惑</p>
<p>　　I never dreamed that you&#8217;d be mine<br />
　　我从未想过 你会属于我</p>
<p>　　But here we are, we&#8217;re here tonight<br />
　　但今晚 此时你就在我身旁</p>
<p>　　Singing Amen, I&#8217;m alive<br />
　　歌颂上帝 我仍活着</p>
<p>　　Singing Amen, I&#8217;m alive<br />
　　歌颂上帝 我仍活着</p>
<p>　　If everyone cared and nobody cried<br />
　　倘若人人能关怀他人 就不会有人哭泣</p>
<p>　　If everyone loved and nobody lied<br />
　　倘若人人都能付出爱 就不会有人撒谎</p>
<p>　　If everyone shared and swallowed their pride<br />
　　倘若人人都能与他人分享并收敛自己的骄傲</p>
<p>　　We&#8217;d see the day when nobody died<br />
　　我们就会看见 没有人逝去的日子</p>
<p>　　And I&#8217;m singing<br />
　　因此 我在这里歌唱着</p>
<p>　　Amen I, I&#8217;m alive<br />
　　上帝 我仍活着</p>
<p>　　Amen I, I&#8217;m alive<br />
　　上帝 我仍活着</p>
<p>　　And in the air the fireflies<br />
　　天空中飞舞的萤火虫</p>
<p>　　Our only light in paradise<br />
　　是我们在天堂唯一的光亮</p>
<p>　　We&#8217;ll show the world they were wrong<br />
　　我们将会告诉世界他们是错误的</p>
<p>　　And teach them all to sing along<br />
　　并教导他们所有人一起歌唱</p>
<p>　　Singing Amen I&#8217;m alive<br />
　　歌颂上帝 我仍活着</p>
<p>　　Singing Amen I&#8217;m alive<br />
　　歌颂上帝 我仍活着</p>
<p>　　And as we lie beneath the stars<br />
　　当我们躺卧在星空下</p>
<p>　　We realize how small we are<br />
　　才知道原来我们是多么地渺小</p>
<p>　　If they could love like you and me<br />
　　如果世上的人能像你和我般地彼此相爱</p>
<p>　　Imagine what the world could be<br />
　　想像着那将会是个多美好的世界</p>
<p>　　If everyone cared and nobody cried<br />
　　倘若人人能关怀他人 就不会有人哭泣</p>
<p>　　If everyone loved and nobody lied<br />
　　倘若人人都能付出爱就不会有人撒谎</p>
<p>　　If everyone shared and swallowed their pride<br />
　　倘若人人都能与他人分享并收敛自己的骄傲</p>
<p>　　We&#8217;d see the day when nobody died<br />
　　我们就会看见 没有人逝去的日子</p>
<p>　　We&#8217;d see the day, we&#8217;d see the day<br />
　　我们将会看见 我们将会看见</p>
<p>　　When nobody died<br />
　　没有人死去的那天</p>
<p>　　We&#8217;d see the day, we&#8217;d see the day<br />
　　我们将会看见 我们将会看见</p>
<p>　　When nobody died<br />
　　没有人死去的那天</p>
<p>　　We&#8217;d see the day when nobody died<br />
　　我们将会看见 没有人逝去的日子</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">你可能感兴趣的：</font></b></td>
    </tr>
    
        <tr>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="迪克牛仔┊《咆哮2002》" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fdikeniuzi-roaring-2002%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4925203.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">迪克牛仔┊《咆哮2002》</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="3 idiots经典台词和原声音乐" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2F3-idiots-classic-lines-and-acoustic-music%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://www.mike.org.cn/wp-content/uploads/wumidefault.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">3 idiots经典台词和原声音乐</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Savage Garden┊I Knew I Loved You" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fsavage-garden-i-knew-i-loved-you%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4926684.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Savage Garden┊I Knew I Loved You</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="功夫熊猫经典对白！" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fkung-fu-panda-classic-white%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://www.mike.org.cn/wp-content/uploads/wumidefault.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">功夫熊猫经典对白！</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Bon Jovi┊Joey" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fbon-jovi-joey%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fif-everyone-cared%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4925155.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Bon Jovi┊Joey</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/if-everyone-cared/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>父亲</title>
		<link>http://www.mike.org.cn/articles/fq/</link>
		<comments>http://www.mike.org.cn/articles/fq/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 16:51:47 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[平凡生活]]></category>
		<category><![CDATA[感悟]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2462</guid>
		<description><![CDATA[　　筷子兄弟[父亲]是优酷[青春感恩记]系列电影之一。一个简单的故事唤起了一个时代对于青春的回忆与感慨。[父亲]片长80分钟左右，有上下两个部分，从父子情和父女情两个角度讲述故事。筷子兄弟[父亲]影片风格也跟”筷子兄弟”此前作品一致，秉承筷子兄弟作品一贯的黑色幽默和怀旧元素穿插，为观众呈现融入生活细微的感动无限。 　　推荐观看：筷子兄弟&#8211;父亲 　　片中一些经典台词： 　　你用一辈子的时间,让我感受到父爱的重量， 　　我却从没对你说一句&#8211;”爸爸，我爱你。” 　　”爸爸，我爱你”。 　　感谢奋斗路上帮助过我的每一个人 　　即便你忘记了过去所有，也从未忘记爱我。 　　 　　父亲　by　筷子兄弟 　　总是向你索取 却不曾说谢谢你 　　 　　直到长大以后 才懂得你不容易 　　 　　每次离开总是 装作轻松的样子 　　 　　微笑着说回去吧 转身泪湿眼底 　　 　　多想和从前一样 牵你温暖手掌 　　可是你不在我身旁 托清风捎去安康 　　 　　时光时光慢些吧 不要再让你变老了 　　我愿用我一切 换你岁月长留 　　一生要强的爸爸 我能为你做些什么 　　微不足道的关心 收下吧 　　 　　谢谢你做的一切 双手撑起我们的家 　　总是竭尽所有 把最好的给我 　　我是你的骄傲吗 还在为我而担心吗 　　你牵挂的孩子啊 长大啦 　　嗯 嗯 嗯&#8230;&#8230;　　 　　多想和从前一样 牵你温暖手掌 　　可是你不在我身旁 托清风捎去安康 　　 　　时光时光慢些吧 不要再让你变老了　 　　我愿用我一切 [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">你可能感兴趣的：</font></b></td>
    </tr>
    
        <tr>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="感悟生活" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fperception-of-life%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4927385.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">感悟生活</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="力克.胡哲－没有肢体的人生" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Flectra-zhe-hu-life-without-limbs%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/09/25/34154286.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">力克.胡哲－没有肢体的人生</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="老男孩" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fll%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/09/11/30171708.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">老男孩</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="世界上最遥远的距离" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fdistance-in-the-world%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4927613.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">世界上最遥远的距离</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Google总部员工的上班生活！！！" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fgoogle-headquarters-staff-to-work-life%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4926863.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Google总部员工的上班生活！！！</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>　　筷子兄弟[父亲]是优酷[青春感恩记]系列电影之一。一个简单的故事唤起了一个时代对于青春的回忆与感慨。[父亲]片长80分钟左右，有上下两个部分，从父子情和父女情两个角度讲述故事。筷子兄弟[父亲]影片风格也跟”筷子兄弟”此前作品一致，秉承筷子兄弟作品一贯的黑色幽默和怀旧元素穿插，为观众呈现融入生活细微的感动无限。</p>
<p>　　推荐观看：<a title="父亲" href="http://www.youku.com/show_page/id_z63805698092811e1a046.html#anchor" target="_blank">筷子兄弟&#8211;父亲</a></p>
<p>　　片中一些经典台词：</p>
<p>　　你用一辈子的时间,让我感受到父爱的重量，<br />
　　我却从没对你说一句&#8211;”爸爸，我爱你。”<br />
　　”爸爸，我爱你”。</p>
<p>　　感谢奋斗路上帮助过我的每一个人</p>
<p>　　即便你忘记了过去所有，也从未忘记爱我。</p>
<p>　　<object width="500" height="368"><param name="movie" value="http://player.youku.com/player.php/sid/XMzM3ODMxMDg0/v.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999" /><embed src="http://player.youku.com/player.php/sid/XMzM3ODMxMDg0/v.swf" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="500" height="368" flashvars="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999"></embed></object></p>
<p>　　父亲　by　筷子兄弟</p>
<p>　　总是向你索取 却不曾说谢谢你 　　<br />
　　直到长大以后 才懂得你不容易<br />
 　　<br />
　　每次离开总是 装作轻松的样子 　　<br />
　　微笑着说回去吧 转身泪湿眼底<br />
　　<br />
　　多想和从前一样 牵你温暖手掌<br />
　　可是你不在我身旁 托清风捎去安康<br />
　　<br />
　　时光时光慢些吧 不要再让你变老了<br />
　　我愿用我一切 换你岁月长留</p>
<p>　　一生要强的爸爸 我能为你做些什么<br />
　　微不足道的关心 收下吧<br />
　　<br />
　　谢谢你做的一切 双手撑起我们的家<br />
　　总是竭尽所有 把最好的给我</p>
<p>　　我是你的骄傲吗 还在为我而担心吗<br />
　　你牵挂的孩子啊 长大啦</p>
<p>　　嗯 嗯 嗯&#8230;&#8230;　　</p>
<p>　　多想和从前一样 牵你温暖手掌<br />
　　可是你不在我身旁 托清风捎去安康<br />
　　<br />
　　时光时光慢些吧 不要再让你变老了　<br />
　　我愿用我一切 换你岁月长留</p>
<p>　　一生要强的爸爸 我能为你做些什么<br />
　　微不足道的关心 收下吧<br />
　　<br />
　　谢谢你做的一切 双手撑起我们的家 　　<br />
　　总是竭尽所有 把最好的给我<br />
　<br />
　　我是你的骄傲吗 还在为我而担心吗<br />
　　你牵挂的孩子啊 长大啦<br />
　　<br />
　　时光时光慢些吧 不要再让你变老了　<br />
　　我愿用我一切 换你岁月长留<br />
 　　<br />
　　我是你的骄傲吗 还在为我而担心吗 　　<br />
　　你牵挂的孩子啊 长大啦 　　<br />
　　感谢一路上有你</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">你可能感兴趣的：</font></b></td>
    </tr>
    
        <tr>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="感悟生活" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fperception-of-life%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4927385.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">感悟生活</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="力克.胡哲－没有肢体的人生" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Flectra-zhe-hu-life-without-limbs%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/09/25/34154286.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">力克.胡哲－没有肢体的人生</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="老男孩" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fll%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/09/11/30171708.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">老男孩</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="世界上最遥远的距离" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fdistance-in-the-world%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4927613.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">世界上最遥远的距离</font>
                    </a>
                </td>
                <td width="101" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Google总部员工的上班生活！！！" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Fgoogle-headquarters-staff-to-work-life%2F&from=http%3A%2F%2Fwww.mike.org.cn%2Farticles%2Ffq%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 95px !important; height: 95px !important;" src="http://static.wumii.com/site_images/2011/04/03/4926863.jpg" width="95px" height="95px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 101px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Google总部员工的上班生活！！！</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/fq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>苏打绿┊十年一刻</title>
		<link>http://www.mike.org.cn/articles/%e8%8b%8f%e6%89%93%e7%bb%bf%e2%94%8a%e5%8d%81%e5%b9%b4%e4%b8%80%e5%88%bb/</link>
		<comments>http://www.mike.org.cn/articles/%e8%8b%8f%e6%89%93%e7%bb%bf%e2%94%8a%e5%8d%81%e5%b9%b4%e4%b8%80%e5%88%bb/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 17:02:02 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[音乐天堂]]></category>
		<category><![CDATA[苏打绿]]></category>
		<category><![CDATA[音乐]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2454</guid>
		<description><![CDATA[可能忙了又忙，可能伤了又伤。可能无数眼泪，在夜晚尝了又尝。可是换来成长，可是换来希望。 苏打绿要站在舞台上，为所有生命发光的人歌唱, 唱出我们的疯狂，也唱出我们的梦想。 那姑娘半顶着妆 身手漂亮 皮黄嘴上流浪 那两人说带着闹歌 舞齐发 百花手上飞扬 年岁的河已三百趟 那江水走遍大街小巷 不管是生旦净末丑 跑龙套也能让你激昂 宁愿舍一顿饭也听你唱 可能忙了又忙 可能伤了又伤 可能无数眼泪 在夜晚尝了又尝 可是换来成长 可是换来希望 如今我站在台上 和你一起分享 那珍珠开在东方 异国芬芳 天鹅顶上荡漾 那文化活在日常 英雄好汉 梆子曲上争仗 将心灵的面具涂画 那角色穿越时空长廊 不管是冰雪与风霜 哪个断肠人在水一方 消磨这一身魂也陪你闯 可能忙了又忙 可能伤了又伤 可能无数眼泪 在夜晚尝了又尝 可是换来成长 可是换来希望 如今我站在台上 这么对你讲 十年的功聚成灿烂那一分钟的梦 生命舞台发光的人绝不是只会说 可能忙了又忙　可能伤了又伤 可能无数眼泪在夜晚尝了又尝 可是换来成长　可是换来希望 如今我站在台上 可能耗尽坚强　可能历经沧桑 可能我的疯狂暂时不得到原谅 可是我知道啊　可是我明白啊 是我的执着搏来　在你面前歌唱 唱着我的幻想　唱着我的荒唐 唱着与你分享打通我们的窗]]></description>
			<content:encoded><![CDATA[<p>可能忙了又忙，可能伤了又伤。可能无数眼泪，在夜晚尝了又尝。可是换来成长，可是换来希望。<br />
苏打绿要站在舞台上，为所有生命发光的人歌唱, 唱出我们的疯狂，也唱出我们的梦想。</p>
<object width="500" height="368"><param name="movie" value="http://player.youku.com/player.php/sid/XMTk0NTI5MTQw/v.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999" /><embed src="http://player.youku.com/player.php/sid/XMTk0NTI5MTQw/v.swf" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="500" height="368" flashvars="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999"></embed></object>
<p>那姑娘半顶着妆 身手漂亮 皮黄嘴上流浪<br />
那两人说带着闹歌 舞齐发 百花手上飞扬<br />
年岁的河已三百趟 那江水走遍大街小巷<br />
不管是生旦净末丑 跑龙套也能让你激昂<br />
宁愿舍一顿饭也听你唱<br />
可能忙了又忙 可能伤了又伤<br />
可能无数眼泪 在夜晚尝了又尝<br />
可是换来成长 可是换来希望<br />
如今我站在台上 和你一起分享</p>
<p>那珍珠开在东方 异国芬芳 天鹅顶上荡漾<br />
那文化活在日常 英雄好汉 梆子曲上争仗<br />
将心灵的面具涂画 那角色穿越时空长廊<br />
不管是冰雪与风霜 哪个断肠人在水一方<br />
消磨这一身魂也陪你闯<br />
可能忙了又忙 可能伤了又伤<br />
可能无数眼泪 在夜晚尝了又尝<br />
可是换来成长 可是换来希望<br />
如今我站在台上 这么对你讲</p>
<p>十年的功聚成灿烂那一分钟的梦<br />
生命舞台发光的人绝不是只会说<br />
可能忙了又忙　可能伤了又伤<br />
可能无数眼泪在夜晚尝了又尝<br />
可是换来成长　可是换来希望<br />
如今我站在台上</p>
<p>可能耗尽坚强　可能历经沧桑<br />
可能我的疯狂暂时不得到原谅<br />
可是我知道啊　可是我明白啊<br />
是我的执着搏来　在你面前歌唱<br />
唱着我的幻想　唱着我的荒唐<br />
唱着与你分享打通我们的窗</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/%e8%8b%8f%e6%89%93%e7%bb%bf%e2%94%8a%e5%8d%81%e5%b9%b4%e4%b8%80%e5%88%bb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>老男孩</title>
		<link>http://www.mike.org.cn/articles/ll/</link>
		<comments>http://www.mike.org.cn/articles/ll/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 14:11:58 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[平凡生活]]></category>
		<category><![CDATA[感悟]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[老男孩]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2442</guid>
		<description><![CDATA[　　老男孩，11度青春系列电影之一。由肖央执导，表现80一代对青春逝去的伤怀，以及他们心中关于理想与现实碰撞的纠结，触动了当代年轻人最柔软的心弦。 　　2010年10月28日的一部电影了，现在才看了下。我真的太忙了，马上就要2012了，我想我应该慢下来了，虽然还有好多事情没做！希望我能如愿。 　　看了很有感触的一部电影，最近才纠结了一把，现在又感伤了。唉，看来了我老了！ 　　”梦想这东西和经典一样，永远不会因为时间而褪色，反而更显珍贵。”电影片尾的台词，还有多少人在坚持着自己最初的梦想呢！ 　　片尾曲的歌词写得太好了，也许是共鸣吧！电影的插曲也很不错，而且还有个给力的歌名[我一定要得到你]！ 　　 　　老男孩　by　筷子兄弟 　　那是我日夜思念 深深爱着的人啊 　　到底我该如何表达 她会接受我吗 　　也许永远都不会跟她说出那句话 　　注定我要浪迹天涯 怎么能有牵挂 　　梦想总是遥不可及 是不是应该放弃 　　花开花落又是一季 春天啊你在哪里 　　青春如同奔流的江河 一去不回来不及道别 　　只剩下麻木的我 没有了当年的热血 　　看那满天飘零的花朵 在最美丽的时刻凋谢 　　有谁会记得这世界他来过　 　　转眼过去 多年世间 多少离合悲欢 　　曾经志在四方少年 羡慕南飞的雁 　　各自奔前程的身影 匆匆渐行渐远 　　未来在哪里平凡 啊谁给我答案 　　那时陪伴我的人哪 你们如今在何方 　　我曾经爱过的人啊 现在是什么模样 　　当初的愿望实现了吗 　　事到如今只好祭奠吗 　　任岁月风干理想 　　再也找不回真的我 　　抬头仰望着漫天星河 　　那时候陪伴我的那颗 　　这里的故事 你是否还记得 　　生活像一把无情刻刀 改变了我们模样 　　未曾绽放就要枯萎吗 我有过梦想 　　青春如同奔流的江河 一去不回来不及道别 　　只剩下麻木的我 没有了当年的热血 　　看那满天飘零的花朵 [...]]]></description>
			<content:encoded><![CDATA[<p>　　老男孩，11度青春系列电影之一。由肖央执导，表现80一代对青春逝去的伤怀，以及他们心中关于理想与现实碰撞的纠结，触动了当代年轻人最柔软的心弦。</p>
<p>　　2010年10月28日的一部电影了，现在才看了下。我真的太忙了，马上就要2012了，我想我应该慢下来了，虽然还有好多事情没做！希望我能如愿。</p>
<p>　　看了很有感触的一部电影，最近才纠结了一把，现在又感伤了。唉，看来了我老了！</p>
<p>　　”梦想这东西和经典一样，永远不会因为时间而褪色，反而更显珍贵。”电影片尾的台词，还有多少人在坚持着自己最初的梦想呢！</p>
<p>　　片尾曲的歌词写得太好了，也许是共鸣吧！电影的插曲也很不错，而且还有个给力的歌名[我一定要得到你]！</p>
<p>　　<object width="500" height="368"><param name="movie" value="http://player.youku.com/player.php/sid/XMjE4MzIzNDE2/v.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999" /><embed src="http://player.youku.com/player.php/sid/XMjE4MzIzNDE2/v.swf" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="500" height="368" flashvars="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999"></embed></object></p>
<p>　　老男孩　by　筷子兄弟</p>
<p>　　那是我日夜思念 深深爱着的人啊<br />
　　到底我该如何表达 她会接受我吗<br />
　　也许永远都不会跟她说出那句话<br />
　　注定我要浪迹天涯 怎么能有牵挂<br />
　　梦想总是遥不可及 是不是应该放弃<br />
　　花开花落又是一季 春天啊你在哪里</p>
<p>　　青春如同奔流的江河 一去不回来不及道别<br />
　　只剩下麻木的我 没有了当年的热血<br />
　　看那满天飘零的花朵 在最美丽的时刻凋谢<br />
　　有谁会记得这世界他来过　</p>
<p>　　转眼过去 多年世间 多少离合悲欢<br />
　　曾经志在四方少年 羡慕南飞的雁<br />
　　各自奔前程的身影 匆匆渐行渐远<br />
　　未来在哪里平凡 啊谁给我答案<br />
　　那时陪伴我的人哪 你们如今在何方<br />
　　我曾经爱过的人啊 现在是什么模样</p>
<p>　　当初的愿望实现了吗<br />
　　事到如今只好祭奠吗<br />
　　任岁月风干理想<br />
　　再也找不回真的我<br />
　　抬头仰望着漫天星河<br />
　　那时候陪伴我的那颗<br />
　　这里的故事 你是否还记得</p>
<p>　　生活像一把无情刻刀 改变了我们模样<br />
　　未曾绽放就要枯萎吗 我有过梦想</p>
<p>　　青春如同奔流的江河 一去不回来不及道别<br />
　　只剩下麻木的我 没有了当年的热血<br />
　　看那满天飘零的花朵 在最美丽的时刻凋谢<br />
　　有谁会记得这世界他 曾经来过</p>
<p>　　当初的愿望实现了吗<br />
　　事到如今只好祭奠吗<br />
　　任岁月风干理想 再也找不回真的我<br />
　　抬头仰望着漫天星河<br />
　　那时候陪伴我的那颗<br />
　　这里的故事 你是否还记得<br />
　　如果有明天 祝福你亲爱的</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ll/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu下配置SVN</title>
		<link>http://www.mike.org.cn/articles/ubuntu-config-svn/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-config-svn/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 13:09:17 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2431</guid>
		<description><![CDATA[　　Subversion简称SVN，是一个开放源代码的版本控制系统，相对于的RCS、CVS，采用了分支管理系统，它的设计目标就是取代CVS。在Subversion管理下，文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器，不同的是，它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本，并可以查看数据的更改细节。互联网上越来越多的控制服务从CVS转移到Subversion。 　　Subversion的设计包括了一个抽象的网络层，这意味着版本库是可以通过各种服务器进程访问的。理论上来会说，Subversion可以使用无限数量的网络协议来实现，甚至可以直接用perl利用相关的接口来编写自定义协议。但日常中，用得最多的就是svn://协议和用mod_dav_svn模块通过Apache服务进行访问。 　　一、Subversion的结构 　　Subversion的官方网站是：http://subversion.tigris.org/ 　　Subversion使用服务端—客户端的结构，当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库，另一端是Subversion的客户端程序，管理着受控数据的一部分在本地的映射(称为工作副本)。在这两端之间，是通过各种仓库存取层(Repository Access，简称RA)的多条通道进行访问的。这些通道中，可以通过不同的网络协议，例如HTTP、SSH等，或本地文件的方式来对仓库进行操作。 　　Subversion是一种开放源码的全新版本控制系统，支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支功能性，Subversion还增加了追踪移动和删除的能力。此外，它支持非ASCII文本和二进制数据，所有这一切都使Subversion不仅对传统的编程任务非常有用，同时也适于 Web 开发、图书创作和其他在传统方式下未采纳版本控制功能的领域。 　　二、安装Subversion 　　大部分的发行版都已经提供Subversion套件，Ubuntu可以通过下面的命令进行安装： ?View Code BASH1 apt-get install subversion 　　Subversion套件提供下列一些常用工具： 　　svn 一个命令行式的客户端程序； 　　svnversion 报告本地工作副本状态(即当前文档的修订版本号)的程序 　　svnadmin 用来创建、调整或修复仓库的工具； 　　svndumpfilter 用于过滤仓库中的数据 　　snvserve 一个定制的、独立的Subversion服务程序，可以作为一个驻留进程或通过ssh调用，以便他人可以通过其访问仓库。 　　三、使用Subversion 　　Subversion一般使用两种后台服务模式：一种是其自己实现的svnserve，可以通过svn协议访问，另一种是借助mod_dav_svn模块，由Apache http服务器来实现，然后通过HTTP或HTTPS协议来访问。 　　1、通过svn协议访问 　　svn协议 　　客户端若要通过svn协议访问仓库，必须在存放仓库的机器上运行svnserve服务程序。启动该程序后，会监听在3690端口，以响应客户端的访问工作。 ?View Code BASH1 2 mkdir /var/local/svndata svnserve -d -r /var/local/svndata 　　注：-d 表示以后台模式运行，-r用于指定服务的根目录。其余参数，请用svnserve -h查看。 　　创建仓库 　　开始必须先用svnadmin在存放仓库的目录中创建必须的文件，以形成仓库。 ?View Code BASH1 svnadmin create /var/local/svndata/dev1 [...]]]></description>
			<content:encoded><![CDATA[<p>　　Subversion简称SVN，是一个开放源代码的版本控制系统，相对于的RCS、CVS，采用了分支管理系统，它的设计目标就是取代CVS。在Subversion管理下，文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器，不同的是，它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本，并可以查看数据的更改细节。互联网上越来越多的控制服务从CVS转移到Subversion。</p>
<p>　　Subversion的设计包括了一个抽象的网络层，这意味着版本库是可以通过各种服务器进程访问的。理论上来会说，Subversion可以使用无限数量的网络协议来实现，甚至可以直接用perl利用相关的接口来编写自定义协议。但日常中，用得最多的就是svn://协议和用mod_dav_svn模块通过Apache服务进行访问。<span id="more-2431"></span></p>
<p>　　一、Subversion的结构</p>
<p>　　Subversion的官方网站是：http://subversion.tigris.org/</p>
<p>　　Subversion使用服务端—客户端的结构，当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库，另一端是Subversion的客户端程序，管理着受控数据的一部分在本地的映射(称为工作副本)。在这两端之间，是通过各种仓库存取层(Repository Access，简称RA)的多条通道进行访问的。这些通道中，可以通过不同的网络协议，例如HTTP、SSH等，或本地文件的方式来对仓库进行操作。</p>
<p>　　Subversion是一种开放源码的全新版本控制系统，支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支功能性，Subversion还增加了追踪移动和删除的能力。此外，它支持非ASCII文本和二进制数据，所有这一切都使Subversion不仅对传统的编程任务非常有用，同时也适于 Web 开发、图书创作和其他在传统方式下未采纳版本控制功能的领域。</p>
<p>　　二、安装Subversion</p>
<p>　　大部分的发行版都已经提供Subversion套件，Ubuntu可以通过下面的命令进行安装：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code20'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243120"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2431code20"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> subversion</pre></td></tr></table></div>

<p>　　Subversion套件提供下列一些常用工具：</p>
<p>　　svn 一个命令行式的客户端程序；<br />
　　svnversion 报告本地工作副本状态(即当前文档的修订版本号)的程序<br />
　　svnadmin 用来创建、调整或修复仓库的工具；<br />
　　svndumpfilter 用于过滤仓库中的数据<br />
　　snvserve 一个定制的、独立的Subversion服务程序，可以作为一个驻留进程或通过ssh调用，以便他人可以通过其访问仓库。</p>
<p>　　三、使用Subversion</p>
<p>　　Subversion一般使用两种后台服务模式：一种是其自己实现的svnserve，可以通过svn协议访问，另一种是借助mod_dav_svn模块，由Apache http服务器来实现，然后通过HTTP或HTTPS协议来访问。</p>
<p>　　1、通过svn协议访问</p>
<p>　　svn协议</p>
<p>　　客户端若要通过svn协议访问仓库，必须在存放仓库的机器上运行svnserve服务程序。启动该程序后，会监听在3690端口，以响应客户端的访问工作。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code21'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243121"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2431code21"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata
<span style="color: #c20cb9; font-weight: bold;">svnserve</span> <span style="color: #660033;">-d</span> <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata</pre></td></tr></table></div>

<p>　　注：-d 表示以后台模式运行，-r用于指定服务的根目录。其余参数，请用svnserve -h查看。</p>
<p>　　创建仓库</p>
<p>　　开始必须先用svnadmin在存放仓库的目录中创建必须的文件，以形成仓库。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code22'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243122"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2431code22"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svnadmin</span> create <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>dev1</pre></td></tr></table></div>

<p>　　设置授权</p>
<p>　　通过svn协议访问远端的仓库，必须建立授权关系。svnserve对于每个仓库，都有一个独立的配置文件和独立的用户、权限管理。权限文件存放在：repository-path/conf/svnserve.conf</p>
<p>　　我这里的位置就是/var/local/svndata/dev1/conf/svnserve.conf，缺省的示例配置文件中和选项都是被注释的。</p>
<p>　　以下是一个简单的例子：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code23'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243123"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2431code23"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span>  <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>dev1<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>svnserve.conf
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>general<span style="color: #7a0874; font-weight: bold;">&#93;</span>
anon-access = <span style="color: #c20cb9; font-weight: bold;">read</span> <span style="color: #666666; font-style: italic;"># 允许匿名用户只读访问，若设置为none表示不允许匿名访问</span>
auth-access = <span style="color: #c20cb9; font-weight: bold;">write</span> <span style="color: #666666; font-style: italic;"># 通过验证的用户可以读和写</span>
password-db = <span style="color: #c20cb9; font-weight: bold;">passwd</span> <span style="color: #666666; font-style: italic;"># 用户保存文件，也可以使用绝对路径来指定位置</span>
authz-db = authz <span style="color: #666666; font-style: italic;"># 权限管理文件</span>
realm = My First Repository <span style="color: #666666; font-style: italic;"># 仓库名称</span></pre></td></tr></table></div>

<p>　　注：配置项前面不能有前置空格，否则后续执行svn命令时，会报Option expected错误。</p>
<p>　　配置用户和权限</p>
<p>　　在svnserve.conf文件中定义的用户和权限配置文件的中加入相关信息：</p>
<p>　　配置用户</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code24'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243124"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2431code24"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span>  <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>dev1<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#定义用户</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">users</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;">#以用户名＝密码对方式进行定义</span>
mike = 000000
easylife = 000000</pre></td></tr></table></div>

<p>　　配置用户权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code25'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243125"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p2431code25"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span>  <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>dev1<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>authz
&nbsp;
<span style="color: #666666; font-style: italic;">#定义组</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">groups</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;">#定义属于组的用户</span>
group1 = mike,easylife 
&nbsp;
<span style="color: #666666; font-style: italic;">#可定义仓库中的某个相对路径，如[/]，或[/project1]</span>
<span style="color: #666666; font-style: italic;">#若是多个仓库共享一个权限文件，可以用仓库名加“:”开头来定义，如：[project2:/]</span>
<span style="color: #666666; font-style: italic;">#这个project2必须是已经由svnadmin create /path/project2创建好的仓库</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;">#定义某个用户的权限，r是只读、w是可写、留空是不允许访问</span>
mike = rw
<span style="color: #666666; font-style: italic;">#定义某个组的权限</span>
<span style="color: #000000; font-weight: bold;">@</span>group1 = rw
<span style="color: #666666; font-style: italic;">#用“*”号表示其他用户</span>
<span style="color: #000000; font-weight: bold;">*</span> = r</pre></td></tr></table></div>

<p>　　注：用户和权限配置文件必须与svnserve.conf中设置的路径相同。若把这两个配置文件放在仓库外，例如：/var/local/svndata/目录，则允许多个仓库共享同样的配置文件。用户和权限配置文件保存后即可生效，不需重启svnserve服务。</p>
<p>　　访问仓库</p>
<p>　　使用SVN客户端</p>
<p>　　进行首次导入</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code26'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243126"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</pre></td><td class="code" id="p2431code26"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> import <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>memadmin  <span style="color: #c20cb9; font-weight: bold;">svn</span>:<span style="color: #000000; font-weight: bold;">//</span>192.168.1.109<span style="color: #000000; font-weight: bold;">/</span>dev1 <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;initialization&quot;</span>
&nbsp;
认证领域: <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #c20cb9; font-weight: bold;">svn</span>:<span style="color: #000000; font-weight: bold;">//</span>192.168.1.109:<span style="color: #000000;">3690</span><span style="color: #000000; font-weight: bold;">&gt;</span> My First Repository
“root”的密码: 
认证领域: <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #c20cb9; font-weight: bold;">svn</span>:<span style="color: #000000; font-weight: bold;">//</span>192.168.1.109:<span style="color: #000000;">3690</span><span style="color: #000000; font-weight: bold;">&gt;</span> My First Repository
用户名: mike
“mike”的密码: 
&nbsp;
<span style="color: #660033;">-----------------------------------------------------------------------</span>
注意<span style="color: #000000; font-weight: bold;">!</span>  你的密码，对于认证域:
&nbsp;
   <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #c20cb9; font-weight: bold;">svn</span>:<span style="color: #000000; font-weight: bold;">//</span>192.168.1.109:<span style="color: #000000;">3690</span><span style="color: #000000; font-weight: bold;">&gt;</span> My First Repository
&nbsp;
只能明文保存在磁盘上<span style="color: #000000; font-weight: bold;">!</span>  如果可能的话，请考虑配置你的系统，让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
&nbsp;
你可以通过在“<span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>.subversion<span style="color: #000000; font-weight: bold;">/</span>servers”中设置选项“store-plaintext-passwords”为“<span style="color: #c20cb9; font-weight: bold;">yes</span>”或“no”，
来避免再次出现此警告。
<span style="color: #660033;">-----------------------------------------------------------------------</span>
保存未加密的密码<span style="color: #7a0874; font-weight: bold;">&#40;</span>yes<span style="color: #000000; font-weight: bold;">/</span>no<span style="color: #7a0874; font-weight: bold;">&#41;</span>? <span style="color: #c20cb9; font-weight: bold;">yes</span>
增加           <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>memadmin<span style="color: #000000; font-weight: bold;">/</span>LICENSE.txt
增加           <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>memadmin<span style="color: #000000; font-weight: bold;">/</span>apps
增加           <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>memadmin<span style="color: #000000; font-weight: bold;">/</span>apps<span style="color: #000000; font-weight: bold;">/</span>SaveList.php
......
增加           <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>memadmin<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>memadmin.php
增加           <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>memadmin<span style="color: #000000; font-weight: bold;">/</span>index.php
&nbsp;
提交后的版本为 <span style="color: #000000;">1</span>。</pre></td></tr></table></div>

<p>　　注意：Linux下，默认会先以当前用户去验证，若用户名不匹配，可在后续的提示中输入指定的用户名。输入一次用户名后，svn会把验证结果保留在本地的~/.subversion/auth/svn.simple目录中，下次使用svn时，就不需要再做验证工作了。(除非修改了远端的验证用户名和密码)</p>
<p>　　从SVN仓库签出</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code27'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243127"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2431code27"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">co</span> <span style="color: #c20cb9; font-weight: bold;">svn</span>:<span style="color: #000000; font-weight: bold;">//</span>192.168.1.109<span style="color: #000000; font-weight: bold;">/</span>dev1<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
A    dev1<span style="color: #000000; font-weight: bold;">/</span>LICENSE.txt
A    dev1<span style="color: #000000; font-weight: bold;">/</span>apps
A    dev1<span style="color: #000000; font-weight: bold;">/</span>apps<span style="color: #000000; font-weight: bold;">/</span>GetListTime.php
......
A    dev1<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>mem_count.php
A    dev1<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>memadmin.php
取出版本 <span style="color: #000000;">1</span>。</pre></td></tr></table></div>

<p>　　2、通过HTTP协议访问版本库</p>
<p>　　通过HTTP协议访问版本库是Subversion的亮点之一，这种方式具备许多svnserve服务器所没有的特性，使用上更加灵活。</p>
<p>　　关于mod_dav_svn模块</p>
<p>　　由于Subversion需要版本化的控制，因此标准的HTTP协议不能满足需求。要让Apache与Subversion协同工作，就要使用WebDAV(Web-based Distributed Authoring and Versiong)Web分布式创作和版本控制协议。WebDAV是HTTP 1.1的扩展，关于WebDAV的规范和工作原理，可以参考IETF RFC 2518。</p>
<p>　　mod_dav_svn是Apache服务器的一个插件模块，作为Subversion与Apache之间的接口，通过它Apache就可以访问版本库，并且可以让客户端也使用HTTP的扩展协议WebDAV/DeltaV进行访问。</p>
<p>　　安装和配置</p>
<p>　　与使用SVN协议的svnserve不同，要通过Apache访问Subversion，除了必须已经部署好Apache和Subversion的基本环境外，当然不可缺少的是Apache的mod_dav_svn模块。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code28'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243128"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2431code28"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#安装mod_dav_svn</span>
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libapache2-svn libsvn1
&nbsp;
<span style="color: #666666; font-style: italic;">#启用mod_dav_svn模块</span>
a2enmod dav_svn</pre></td></tr></table></div>

<p>　　注：Ubuntu缺省是启用mod_dav_svn模块的。</p>
<p>　　创建版本仓库</p>
<p>　　这与使用SVN协议方式的工作是基本相同的。不同点在于需要让运行Apache的用户拥有SVN仓库根路径的所有权,这样做可以在SVN仓库根路径下创建多个版本库，并且所有版本库都使用同一个用户信息文件和访问权限文件来管理。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code29'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243129"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2431code29"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata
<span style="color: #c20cb9; font-weight: bold;">svnadmin</span> create dev2
<span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> www-data.www-data <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　配置mod_dav_svn</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code30'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243130"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2431code30"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>mods-enabled<span style="color: #000000; font-weight: bold;">/</span>dav_svn.conf
&nbsp;
<span style="color: #666666; font-style: italic;">#指定SVN仓库根路径</span>
SVNParentPath <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata</pre></td></tr></table></div>

<p>　　访问SVN</p>
<p>#重启Apache<br />
/etc/init.d/apache2 restart</p>
<p>　　通过浏览器访问http://ip/svn/repos，即可在浏览中浏览SVN库中的内容。</p>
<p>　　加入认证信息</p>
<p>　　上面定义的版本仓库，默认是任何人都可以匿名访问，并且拥有完全的写入、读取、修改、提交、删除版本库中信息的权限。因此，我们需要加入认证信息以做权限的管理。HTTP协议版本就提供了简单的客户端认证方式，这可通过Apache配置完成。</p>
<p>　　Apache提供了一个htpasswd工具来管理，使用该工具可以创建一个文件，其中存放着用户名和加密后的密码信息。而这些就是Subversion可以引用的用户了，根据这些用户信息，配合mod_authz_svn模块即可进行目录的访问控制。</p>
<p>　　创建存放用户名信息的文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code31'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243131"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2431code31"><pre class="bash" style="font-family:monospace;">htpasswd <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>passwdfile mike
New password: 		<span style="color: #000000; font-weight: bold;">&lt;</span>==输入密码
Re-type new password: 　<span style="color: #000000; font-weight: bold;">&lt;</span>==再次输入密码
Adding password <span style="color: #000000; font-weight: bold;">for</span> user mike</pre></td></tr></table></div>

<p>　　htpasswd其它用法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code32'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243132"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2431code32"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#新增用户</span>
htpasswd <span style="color: #660033;">-m</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>passwdfile NewUserName
<span style="color: #666666; font-style: italic;">#修改用户密码</span>
htpasswd <span style="color: #660033;">-m</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>passwdfile oldUserName
<span style="color: #666666; font-style: italic;">#删除用户</span>
htpasswd <span style="color: #660033;">-D</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>passwdfile oldUserName</pre></td></tr></table></div>

<p>　　-m是可选的参数，表示强制使用MD5算法加密，当用-c创建用户名信息文件后，即可修改或添加用户信息。</p>
<p>　　创建存放用户访问权限文件</p>
<p>　　由于采用的是多个版本库使用同一个访问权限控制文件来管理权限，这里就需要使用[repository:/path]的方式定义权限。</p>
<p>　　使用“认证用户(组)=权限”的方式描述每个用户(组)访问版本库的级别：r是只读，rw是可读写，留空是不允许访问。另外，*表示所有用户，可以用于控制匿名用户的访问权限；@表示已经被分组的组名。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code33'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243133"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p2431code33"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>authz
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">groups</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
tester = easylife,test1
developers = dev1,dev2
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>dev1:<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">*</span> = r
mike =rw
<span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">tester</span>=rw
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>dev2:<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">*</span> = r
mike =rw
<span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">developers</span>=rw</pre></td></tr></table></div>

<p>　　修改mod_dav_svn配置文件</p>
<p>　　修改Location标签，加入认证部分配置。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code34'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243134"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code" id="p2431code34"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>mods-enabled<span style="color: #000000; font-weight: bold;">/</span>dav_svn.conf
&nbsp;
<span style="color: #666666; font-style: italic;">#使用基本认证方式，即用户名、密码认证</span>
AuthType Basic 
<span style="color: #666666; font-style: italic;">#在认证对话框中出现的提示信息</span>
AuthName <span style="color: #ff0000;">&quot;Subversion Repository&quot;</span> 
<span style="color: #666666; font-style: italic;">#指定上面创建好的存放用户名信息的文件路径</span>
AuthUserFile <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>passwdfile
<span style="color: #666666; font-style: italic;">#指定上面创建好的存放用户访问权限的文件路径</span>
AuthzSVNAccessFile <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>authz
<span style="color: #666666; font-style: italic;">#限定只有用户输入正确的用户名和密码后才能访问该标签所指向的路径</span>
Require valid-user</pre></td></tr></table></div>

<p>　　访问SVN</p>
<p>　　使用mod_dav_svn模块，通过Apache访问版本仓库，是不需要启动svnserve服务的，一切都已经由dav模块做接口完成数据请求的工作，通过svn客户端以HTTP协议访问版本仓库即可。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code35'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243135"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2431code35"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#重启Apache</span>
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></td></tr></table></div>

<p>　　通过浏览器访问http://ip/svn/repos，输入对应的用户名和密码后，即可在浏览中浏览SVN库中的内容。</p>
<p>　　完整的mod_dav_svn配置示例文件：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code36'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243136"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p2431code36"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span>Location <span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">svn</span><span style="color: #000000; font-weight: bold;">&gt;</span>
	DAV <span style="color: #c20cb9; font-weight: bold;">svn</span>
	SVNParentPath <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata
	AuthType Basic 
	AuthName <span style="color: #ff0000;">&quot;Subversion Repository&quot;</span>
	AuthUserFile <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>passwdfile
	AuthzSVNAccessFile <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>authz
	Require valid-user
	<span style="color: #000000; font-weight: bold;">&lt;</span>LimitExcept GET PROPFIND OPTIONS REPORT<span style="color: #000000; font-weight: bold;">&gt;</span>
	Require valid-user
	Allow from localhost
	<span style="color: #000000; font-weight: bold;">&lt;/</span>LimitExcept<span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;/</span>Location<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>　　mod_dav_svn模块中的其它语句</p>
<p>　　使用mod_dav_svn模块后，还可以使用<Limit>或<LimitExcept>标签进行认证控制。<LimitExcept>表示除了下面的动作需要认证外，其他动作不需验证。<Limit>表示需对特定动作进行控制.甚至完全不用<Limit>或<LimitExcept>标签，表示对所有的动作进行控制。此外，定义“Require mike easylife”的写法，可实现将只有用户信息文件中特定的linuxing和hanry用户才能通过认证。</p>
<p>　　示例：</p>
<p>　　除了下面的动作需要认证外，其他动作不需验证</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code37'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243137"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2431code37"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span>LimitExcept GET PROPFIND OPTIONS REPORT<span style="color: #000000; font-weight: bold;">&gt;</span>
  AuthType Basic
  AuthName <span style="color: #ff0000;">&quot;Subversion Repository&quot;</span>
  AuthUserFile <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>passwdfile
  Require valid-user
<span style="color: #000000; font-weight: bold;">&lt;/</span>LimitExcept<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>　　该标签定义当进行除了指定的若干动作需要进行用户名和密码的认证后才能进行外，其他的动作是不做限制的。例如：只有认证用户可以写操作，同时也允许匿名的读取操作。</p>
<p>　　使用Satisfy允许匿名的读取操作</p>
<p>　　使用Satisfy语句定义后，就不需要加入<Limit>或<LimitExcept>标签也可以实现允许匿名的读取操作。Satisfy Any的设置表示在同时启用了Allow(允许)和Require的情况下，指定相关策略。Satisfy策略一共有两种，All表示用户必须同时满足Allow和Require的条件，而Any则是满足其中之一即可。</p>
<p>　　示例：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2431code38'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p243138"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p2431code38"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span>Location <span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">svn</span><span style="color: #000000; font-weight: bold;">&gt;</span>
	DAV <span style="color: #c20cb9; font-weight: bold;">svn</span>
	SVNParentPath <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata
	Satisfy Any
	AuthType Basic 
	AuthName <span style="color: #ff0000;">&quot;Subversion Repository&quot;</span>
	AuthUserFile <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>passwdfile
	AuthzSVNAccessFile <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>svndata<span style="color: #000000; font-weight: bold;">/</span>authz
	Require valid-user
<span style="color: #000000; font-weight: bold;">&lt;/</span>Location<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>　　这里Satisfy Any用于允许先用匿名方式尝试访问，并根据authz文件中对匿名用户的控制给予访问权限。若没有这句话，则无论authz文件中是否加入了“*=r”的写法，匿名用户都是无法访问的。</p>
<p>　　3、SVN协议与mod_authz_svn模块的区别</p>
<p>　　SVN协议用于客户端使用svn://方式访问版本库，而mod_authz_svn模块让客户端可通过Apache访问版本。它们分别使用不同的服务：svnserve、httpd进行访问。</p>
<p>　　由于用户、组权限不同，权限管理方式也不相同，因此，不建议同时启动两种访问方式。从易用性，管理方便的角度来分析，Apache以mod_authz_svn模块的方式访问版本库会更多人选择。mod_authz_svn方式，使用80端口访问，并且提供https等加密传输，用于用户信息验证的密码保存方式也不是明文的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-config-svn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu下配置Nginx HTTPS</title>
		<link>http://www.mike.org.cn/articles/ubuntu-config-nginx-https/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-config-nginx-https/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 12:14:45 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2427</guid>
		<description><![CDATA[　　HTTPS(全称：Hypertext Transfer Protocol over Secure Socket Layer)，是以安全为目标的HTTP通道，简单讲是HTTP的安全版。即HTTP下加入SSL层，HTTPS的安全基础是SSL。 　　它是一个URI scheme(抽象标识符体系)，句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP，但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行，提供了身份验证与加密通讯方法，现在它被广泛用于万维网上安全敏感的通讯，例如交易支付方面。 　　确认Nginx支持OpenSSL模块 　　运行下面的命令： ?View Code BASH1 2 3 4 5 6 nginx -V &#160; nginx: nginx version: nginx/1.0.0 nginx: built by gcc 4.4.3 &#40;Ubuntu 4.4.3-4ubuntu5&#41; nginx: TLS SNI support enabled nginx: configure arguments: --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module 　　如果没有发现&#8211;with-http_ssl_module这个编译参数，说明不支持。Nginx默认是不支持SSL的，需要加入&#8211;with-http_ssl_module参数重新编译。 　　生成证书 　　SSL证书是数字证书的一种，类似于驾驶证、护照和营业执照的电子副本。SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证；对传送的数据进行加密和隐藏；确保数据在传送中不被改变，即数据的完整性，现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中，因此，仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL协议，实现数据信息在客户端和服务器之间的加密传输，可以防止数据信息的泄露。保证了双方传递信息的安全性，而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。 　　证书分自签证书和CA机构签发的证书，具体生成方法参见：[Ubuntu下配置Apache HTTPS]一文　http://www.mike.org.cn/articles/ubuntu-config-apache-https/ 　　你也可以申请免费的StartSSL [...]]]></description>
			<content:encoded><![CDATA[<p>　　HTTPS(全称：Hypertext Transfer Protocol over Secure Socket Layer)，是以安全为目标的HTTP通道，简单讲是HTTP的安全版。即HTTP下加入SSL层，HTTPS的安全基础是SSL。</p>
<p>　　它是一个URI scheme(抽象标识符体系)，句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP，但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行，提供了身份验证与加密通讯方法，现在它被广泛用于万维网上安全敏感的通讯，例如交易支付方面。<span id="more-2427"></span></p>
<p>　　确认Nginx支持OpenSSL模块</p>
<p>　　运行下面的命令：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2427code42'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242742"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2427code42"><pre class="bash" style="font-family:monospace;">nginx <span style="color: #660033;">-V</span>
&nbsp;
nginx: nginx version: nginx<span style="color: #000000; font-weight: bold;">/</span>1.0.0
nginx: built by <span style="color: #c20cb9; font-weight: bold;">gcc</span> 4.4.3 <span style="color: #7a0874; font-weight: bold;">&#40;</span>Ubuntu 4.4.3-4ubuntu5<span style="color: #7a0874; font-weight: bold;">&#41;</span> 
nginx: TLS SNI support enabled
nginx: configure arguments: <span style="color: #660033;">--user</span>=www <span style="color: #660033;">--group</span>=www <span style="color: #660033;">--prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx --with-http_stub_status_module --with-http_ssl_module</pre></td></tr></table></div>

<p>　　如果没有发现&#8211;with-http_ssl_module这个编译参数，说明不支持。Nginx默认是不支持SSL的，需要加入&#8211;with-http_ssl_module参数重新编译。</p>
<p>　　生成证书</p>
<p>　　SSL证书是数字证书的一种，类似于驾驶证、护照和营业执照的电子副本。SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证；对传送的数据进行加密和隐藏；确保数据在传送中不被改变，即数据的完整性，现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中，因此，仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL协议，实现数据信息在客户端和服务器之间的加密传输，可以防止数据信息的泄露。保证了双方传递信息的安全性，而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。</p>
<p>　　证书分自签证书和CA机构签发的证书，具体生成方法参见：[Ubuntu下配置Apache HTTPS]一文　http://www.mike.org.cn/articles/ubuntu-config-apache-https/</p>
<p>　　你也可以申请免费的StartSSL CA证书:</p>
<p>　　StartSSL(公司名：StartCom)也是一家CA机构，它的根证书很久之前就被一些具有开源背景的浏览器支持(<span class='wp_keywordlink'><a href="http://www.mozillaonline.com/" title="Firefox" target="_blank">Firefox</a></span>浏览器、谷歌Chrome浏览器、苹果Safari浏览器等)。</p>
<p>　　申请地址：http://www.startssl.com</p>
<p>　　具体申请方法可参考以下几篇文章：</p>
<p>　　http://blog.s135.com/startssl/<br />
　　http://www.21andy.com/blog/20100224/1714.html<br />
　　http://www.deepvps.com/apply-startssl-ssl-certificate.html</p>
<p>　　配置Nginx</p>
<p>　　修改nginx.conf中相应的server段，加入如下内容：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2427code43'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242743"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2427code43"><pre class="bash" style="font-family:monospace;">listen <span style="color: #000000;">443</span>;
server_name www.mike.me;
<span style="color: #666666; font-style: italic;">#启用SSL模块</span>
ssl on;
<span style="color: #666666; font-style: italic;">#证书文件放置路径</span>
ssl_certificate <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>private<span style="color: #000000; font-weight: bold;">/</span>yiji.cer;
<span style="color: #666666; font-style: italic;">#私钥文件放置路径</span>
ssl_certificate_key <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>private<span style="color: #000000; font-weight: bold;">/</span>yiji.key;</pre></td></tr></table></div>

<p>　　注：SSL数字证书路径和域名根据实际情况修改。</p>
<p>　　重启Nginx</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2427code44'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242744"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2427code44"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#测试Nginx主配置文件是否正确</span>
nginx <span style="color: #660033;">-t</span>
<span style="color: #666666; font-style: italic;">#平滑重启Nginx</span>
nginx <span style="color: #660033;">-s</span> reload</pre></td></tr></table></div>

<p>　　使用HTTPS协议访问网站</p>
<p>　　访问https://ip或域名，浏览器会弹出安装服务器证明书的窗口。说明服务器已经支持SSL了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-config-nginx-https/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu下安装Memcached</title>
		<link>http://www.mike.org.cn/articles/ubuntu-install-memcached/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-install-memcached/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 16:14:49 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2423</guid>
		<description><![CDATA[　　Memcached是免费、开源(BSD license授权)、高性能分布式的对象内存缓存系统，当初是Danga Interactive为了LiveJournal所发展的，但目前被许多软件(如MediaWiki)所使用。Memcached被广泛用于动态数据的缓存，可大大减低数据库负载与压力，提高数据库系统的性能与容量，从而极大地增加动态网页的效率与网速。 　　Memcached缺乏认证以及安全管制，这代表应该将Memcached服务器放置在防火墙后。 　　Memcached具有多种语言的客户端开发包，包括：Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/ 　　一、安装Memcached 　　A、通过源码编译安装 　　 　　编译前，请先确认gcc、make、patch等编译工具是否已安装，并可正常使用。 　　安装Libevent 　　Libevent是一个异步事件处理软件函式库，以BSD许可证释出。Memcached依赖Libevent，因此必须先编译安装Libevent。 ?View Code BASH1 2 3 4 5 wget http://www.monkey.org/~provos/libevent-2.0.13-stable.tar.gz tar xzvf libevent-2.0.13-stable.tar.gz ./configure make make install 　　安装Memcached ?View Code BASH1 2 3 4 5 6 wget http://memcached.googlecode.com/files/memcached-1.4.7.tar.gz tar xvzf memcached-1.4.7.tar.gz cd memcached-1.4.7 ./configure --prefix=/usr/local/memcached/ make make install 　　创建软链 ?View Code BASH1 ln -s /usr/local/lib/libevent-2.0.so.5 [...]]]></description>
			<content:encoded><![CDATA[<p>　　Memcached是免费、开源(BSD license授权)、高性能分布式的对象内存缓存系统，当初是Danga Interactive为了LiveJournal所发展的，但目前被许多软件(如MediaWiki)所使用。Memcached被广泛用于动态数据的缓存，可大大减低数据库负载与压力，提高数据库系统的性能与容量，从而极大地增加动态网页的效率与网速。</p>
<p>　　Memcached缺乏认证以及安全管制，这代表应该将Memcached服务器放置在防火墙后。</p>
<p>　　Memcached具有多种语言的客户端开发包，包括：Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/<br />
<span id="more-2423"></span><br />
　　一、安装Memcached</p>
<p>　　A、通过源码编译安装<br />
　　<br />
　　编译前，请先确认gcc、make、patch等编译工具是否已安装，并可正常使用。</p>
<p>　　安装Libevent</p>
<p>　　Libevent是一个异步事件处理软件函式库，以BSD许可证释出。Memcached依赖Libevent，因此必须先编译安装Libevent。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code58'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242358"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2423code58"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.monkey.org<span style="color: #000000; font-weight: bold;">/</span>~provos<span style="color: #000000; font-weight: bold;">/</span>libevent-2.0.13-stable.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> xzvf  libevent-2.0.13-stable.tar.gz
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>　　安装Memcached</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code59'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242359"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2423code59"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>memcached.googlecode.com<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>memcached-1.4.7.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf memcached-1.4.7.tar.gz 
<span style="color: #7a0874; font-weight: bold;">cd</span> memcached-1.4.7
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>memcached<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>　　创建软链</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code60'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242360"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2423code60"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>libevent-<span style="color: #000000;">2.0</span>.so.5 <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>libevent-<span style="color: #000000;">2.0</span>.so.5</pre></td></tr></table></div>

<p>　　注：如果你不创建这个软链，启动memcached是可能会报./memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory这样的错误。这是因为memcached无法定位libevent库，libevent默认安装目录是/usr/local/lib/libevent-2.0.so.5，所以这里创建软链解决这个问题。</p>
<p>　　另：我在编译时用&#8211;with-libevent参数指定了libevent的位置，启动依然有这个问题。</p>
<p>　　启动memcache</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code61'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242361"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2423code61"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>memcached <span style="color: #660033;">-d</span> <span style="color: #660033;">-m</span> <span style="color: #000000;">64</span> <span style="color: #660033;">-p</span> <span style="color: #000000;">11211</span> <span style="color: #660033;">-l</span> 127.0.0.1 <span style="color: #660033;">-u</span> nobody <span style="color: #660033;">-c</span> <span style="color: #000000;">1024</span></pre></td></tr></table></div>

<p>　　memcached常用启动参数描述：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code62'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242362"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2423code62"><pre class="bash" style="font-family:monospace;">-d：启动一个守护进程，
-m：分配给Memcache使用的内存数量，单位是MB，默认是64MB，
-u：运行Memcache的用户
-l：监听的服务器IP地址
-p：设置Memcache监听的端口，默认是<span style="color: #000000;">11211</span>注：-p<span style="color: #7a0874; font-weight: bold;">&#40;</span>p为小写<span style="color: #7a0874; font-weight: bold;">&#41;</span>
-c：设置最大并发连接数，默认是<span style="color: #000000;">1024</span>
-P：设置保存Memcache的pid文件注：-P<span style="color: #7a0874; font-weight: bold;">&#40;</span>P为大写<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #660033;">-h</span> 显示帮助</pre></td></tr></table></div>

<p>　　B、通过APT包安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code63'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242363"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2423code63"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> memcached</pre></td></tr></table></div>

<p>　　二、安装Memcache管理器</p>
<p>　　A、环境准备</p>
<p>　　安装Memcache客户端</p>
<p>　　方法一、通过APT安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code64'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242364"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2423code64"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> php5-memcache</pre></td></tr></table></div>

<p>　　方法二、通过pecl安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code65'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242365"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2423code65"><pre class="bash" style="font-family:monospace;">pecl <span style="color: #c20cb9; font-weight: bold;">install</span> memcache</pre></td></tr></table></div>

<p>　　重启Apache</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code66'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242366"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2423code66"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></td></tr></table></div>

<p>　　B、安装MemAdmin</p>
<p>　　MemAdmin是一款可视化的Memcached管理与监控工具，使用PHP开发，体积小，操作简单。</p>
<p>　　主要功能：服务器参数监控：STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新。服务器性能监控：GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控。支持数据遍历，方便对存储内容进行监视。支持条件查询，筛选出满足条件的KEY或VALUE。数组、JSON等序列化字符反序列显示。 兼容memcache协议的其他服务，如Tokyo Tyrant (遍历功能除外)。支持服务器连接池，多服务器管理切换方便简洁。</p>
<p>　　安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code67'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242367"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2423code67"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.junopen.com<span style="color: #000000; font-weight: bold;">/</span>memadmin<span style="color: #000000; font-weight: bold;">/</span>memadmin-1.0.5.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf memadmin-1.0.5.tar.gz 
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-r</span>  memadmin <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　配置访问用户</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code68'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242368"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2423code68"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> memadmin<span style="color: #000000; font-weight: bold;">/</span>config.php
&nbsp;
<span style="color: #666666; font-style: italic;">#根据自己情况修改用户名和密码</span>
<span style="color: #007800;">$config</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'user'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> = <span style="color: #ff0000;">&quot;admin&quot;</span>; <span style="color: #000000; font-weight: bold;">//</span> your username
<span style="color: #007800;">$config</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'passwd'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> = <span style="color: #ff0000;">&quot;admin&quot;</span>; <span style="color: #000000; font-weight: bold;">//</span> your password</pre></td></tr></table></div>

<p>　　访问https://域名(或IP)/memadmin/index.php，输入用户名/密码访问即可。</p>
<p>　　C、安装Memcachepphp</p>
<p>　　Memcachepphp也是一个WEB管理工具，这个程序只有一个文件，部署相当简单。Memcachepphp功能有：管理多个memcache服务器、实时查看各个服务器的内存使用状况、实时查看缓存命中情况、直接浏览缓存内容，删除指定缓存项等。</p>
<p>　　安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code69'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242369"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2423code69"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>livebookmark.net<span style="color: #000000; font-weight: bold;">/</span>memcachephp<span style="color: #000000; font-weight: bold;">/</span>memcachephp.zip
<span style="color: #c20cb9; font-weight: bold;">unzip</span>  memcachephp.zip
<span style="color: #c20cb9; font-weight: bold;">cp</span> memcache.php <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　配置Memcachepphp</p>
<p>　　根据自己的情况修改用户名密码和memcache服务器地址</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2423code70'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p242370"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2423code70"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> memcache.php
&nbsp;
define<span style="color: #7a0874; font-weight: bold;">&#40;</span>‘ADMIN_USERNAME’,<span style="color: #ff0000;">'memcache’);     // Admin Username
define(‘ADMIN_PASSWORD’,'</span>password’<span style="color: #7a0874; font-weight: bold;">&#41;</span>;    <span style="color: #000000; font-weight: bold;">//</span> Admin Password
define<span style="color: #7a0874; font-weight: bold;">&#40;</span>‘DATE_FORMAT’,<span style="color: #ff0000;">'Y/m/d H:i:s’);
define(‘GRAPH_SIZE’,200);
define(‘MAX_ITEM_DUMP’,50);
$MEMCACHE_SERVERS[] = ‘localhost:11211′; // add more as an array
//$MEMCACHE_SERVERS[] = ‘mymemcache-server2:11211′; // add more as an array</span></pre></td></tr></table></div>

<p>　　访问https://域名(或IP)/memadmin/index.php，输入用户名/密码访问即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-install-memcached/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu下配置Apache HTTPS</title>
		<link>http://www.mike.org.cn/articles/ubuntu-config-apache-https/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-config-apache-https/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 15:48:48 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2414</guid>
		<description><![CDATA[　　一、创建证书 　　证书(Cerificate)的基本作用是将一个公钥和安全个体(个人、公司、组织等)的名字绑定在一起。 　　一般情况下，制作证书要经过几个步骤，如上图所示。首先用openssl genrsa生成一个私钥，然后用openssl req生成一个签署请求，最后把请求交给CA，CA签署后就成为该CA认证的证书了。如果在第二步请求时加上-x509参数，那么就直接生成一个self-signed的证书，即自己充当CA认证自己。 　　除了这种方式外，在Debian或者Ubuntu系统中有更加简便的方法制作self-signed证书使用make-ssl-cert命令。该命令在ssl-cert的包里，一般会伴随着Apache的安装而安装，可能单独安装也可以。 　　如果您只是想做一张测试用的电子证书或不想花钱去找个 CA 签署，您可以造一张自签 (Self-signed) 的电子证书。当然这类电子证书没有任何保证，大部份软件偶到这证书会发出警告，甚至不接收这类证书。 使用自签名(self-signed)的证书，它的主要目的不是防伪，而是使用户和系统之间能够进行SSL通信，保证密码等个人信息传输时的安全。 　　这里先说下证书相关的几个名词： 　　RSA私钥能解密用证书公钥加密后的信息。通常以.key为后缀，表示私钥也称作密钥。是需要管理员小心保管，不能泄露的。 　　CSR(Certificate Signing Request)包含了公钥和名字信息。通常以.csr为后缀，是网站向CA发起认证请求的文件，是中间文件。 　　证书通常以.crt为后缀，表示证书文件。 　　CA(Certifying Authority)表示证书权威机构，它的职责是证明公钥属于个人、公司或其他的组织。 　　1、制作自签名证书 　　通过make-ssl-cert创建自签名证书 　　如果没安装这个工具，先用以下命令安装。 ?View Code BASH1 apt-get install ssl-cert 　　make-ssl-cert生成证书的方法有两种，一种是根据生成按工具默认的方式生成，一种是按模板文件生成。 ?View Code BASH1 2 #默认的方式生成 make-ssl-cert generate-default-snakeoil 　　注：默认方式生成的公钥(证书)在/etc/ssl/certs/ssl-cert-snakeoil.pem，私钥在/etc/ssl/private/ssl-cert-snakeoil.key。 ?View Code BASH1 2 #按模板文件生成 make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/apache2.pem 　　这里生成的证书采用pem格式，这个pem格式档案中包含了私钥和公钥(证书)两部分内容。 　　注：在要求输入Common Name(eg, YOUR name)时，输入你的主机名。Common Name必须和httpd.conf中server name必须一致，否则apache不能启动。启动apache时错误提示为：RSA server certificate [...]]]></description>
			<content:encoded><![CDATA[<p>　　一、创建证书</p>
<p>　　证书(Cerificate)的基本作用是将一个公钥和安全个体(个人、公司、组织等)的名字绑定在一起。</p>
<p><a href="http://www.mike.org.cn/wp-content/uploads/2011/09/https.png" class="floatbox" rev="group:2414 caption:`https`"><img src="http://www.mike.org.cn/wp-content/uploads/2011/09/https.png" alt="" title="https" width="783" height="215" class="alignnone size-full wp-image-2416" /></a></p>
<p>　　一般情况下，制作证书要经过几个步骤，如上图所示。首先用openssl genrsa生成一个私钥，然后用openssl req生成一个签署请求，最后把请求交给CA，CA签署后就成为该CA认证的证书了。如果在第二步请求时加上-x509参数，那么就直接生成一个self-signed的证书，即自己充当CA认证自己。<span id="more-2414"></span></p>
<p>　　除了这种方式外，在Debian或者Ubuntu系统中有更加简便的方法制作self-signed证书使用make-ssl-cert命令。该命令在ssl-cert的包里，一般会伴随着Apache的安装而安装，可能单独安装也可以。</p>
<p>　　如果您只是想做一张测试用的电子证书或不想花钱去找个 CA 签署，您可以造一张自签 (Self-signed) 的电子证书。当然这类电子证书没有任何保证，大部份软件偶到这证书会发出警告，甚至不接收这类证书。 使用自签名(self-signed)的证书，它的主要目的不是防伪，而是使用户和系统之间能够进行SSL通信，保证密码等个人信息传输时的安全。</p>
<p>　　这里先说下证书相关的几个名词：</p>
<p>　　RSA私钥能解密用证书公钥加密后的信息。通常以.key为后缀，表示私钥也称作密钥。是需要管理员小心保管，不能泄露的。</p>
<p>　　CSR(Certificate Signing Request)包含了公钥和名字信息。通常以.csr为后缀，是网站向CA发起认证请求的文件，是中间文件。</p>
<p>　　证书通常以.crt为后缀，表示证书文件。</p>
<p>　　CA(Certifying Authority)表示证书权威机构，它的职责是证明公钥属于个人、公司或其他的组织。 </p>
<p>　　1、制作自签名证书</p>
<p>　　通过make-ssl-cert创建自签名证书</p>
<p>　　如果没安装这个工具，先用以下命令安装。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code87'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241487"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2414code87"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ssl-cert</pre></td></tr></table></div>

<p>　　make-ssl-cert生成证书的方法有两种，一种是根据生成按工具默认的方式生成，一种是按模板文件生成。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code88'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241488"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2414code88"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#默认的方式生成</span>
make-ssl-cert generate-default-snakeoil</pre></td></tr></table></div>

<p>　　注：默认方式生成的公钥(证书)在/etc/ssl/certs/ssl-cert-snakeoil.pem，私钥在/etc/ssl/private/ssl-cert-snakeoil.key。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code89'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241489"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2414code89"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#按模板文件生成</span>
make-ssl-cert <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>ssl-cert<span style="color: #000000; font-weight: bold;">/</span>ssleay.cnf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>private<span style="color: #000000; font-weight: bold;">/</span>apache2.pem</pre></td></tr></table></div>

<p>　　这里生成的证书采用pem格式，这个pem格式档案中包含了私钥和公钥(证书)两部分内容。 </p>
<p>　　注：在要求输入Common Name(eg, YOUR name)时，输入你的主机名。Common Name必须和httpd.conf中server name必须一致，否则apache不能启动。启动apache时错误提示为：RSA server certificate CommonName (CN) `Koda&#8217; does NOT match server name!? 。<br />
　　　　make-ssl-cert是只能由root执行的命令。</p>
<p>　　通过openssl命令行创建自签名证书</p>
<p>　　这里生成的证书也采用pem格式，这个pem格式档案中包含了私钥和公钥(证书)两部分内容。如果你将keyout和out分别采用不同的文件名，那keyout和out所对应的文件就会分别存放私钥和公钥(证书)。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code90'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241490"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p2414code90"><pre class="bash" style="font-family:monospace;">openssl req <span style="color: #660033;">-x509</span> <span style="color: #660033;">-newkey</span> rsa:<span style="color: #000000;">1024</span> <span style="color: #660033;">-keyout</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>private<span style="color: #000000; font-weight: bold;">/</span>apache.pem <span style="color: #660033;">-out</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>private<span style="color: #000000; font-weight: bold;">/</span>apache.pem <span style="color: #660033;">-nodes</span> <span style="color: #660033;">-days</span> <span style="color: #000000;">999</span>
&nbsp;
writing new private key to <span style="color: #ff0000;">'/etc/ssl/private/apache.pem'</span>
<span style="color: #660033;">-----</span>
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter <span style="color: #ff0000;">'.'</span>, the field will be left blank.
<span style="color: #660033;">-----</span>
Country Name <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2</span> letter code<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>AU<span style="color: #7a0874; font-weight: bold;">&#93;</span>:CN　←输入国家代码
State or Province Name <span style="color: #7a0874; font-weight: bold;">&#40;</span>full name<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>Some-State<span style="color: #7a0874; font-weight: bold;">&#93;</span>:CHONGQING　← 输入省名
Locality Name <span style="color: #7a0874; font-weight: bold;">&#40;</span>eg, city<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>:CHONGQING　←输入城市名
Organization Name <span style="color: #7a0874; font-weight: bold;">&#40;</span>eg, company<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>Internet Widgits Pty Ltd<span style="color: #7a0874; font-weight: bold;">&#93;</span>:MIKE　← 输入公司名
Organizational Unit Name <span style="color: #7a0874; font-weight: bold;">&#40;</span>eg, section<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>:MIKE　← 输入组织单位名
Common Name <span style="color: #7a0874; font-weight: bold;">&#40;</span>eg, YOUR name<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>:www.mike.me　← 输入主机名
Email Address <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>:easylife206<span style="color: #000000; font-weight: bold;">@</span>gmail.com　←输入电子邮箱地址</pre></td></tr></table></div>

<p>　　注：在要求输入Common Name(eg, YOUR name)时，输入你的主机名。Common Name必须和httpd.conf中server name必须一致。</p>
<p>　　2、制作需CA(Certificate Authority)签署证书</p>
<p>　　步骤1、生成私钥</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code91'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241491"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2414code91"><pre class="bash" style="font-family:monospace;">openssl genrsa <span style="color: #660033;">-des3</span> <span style="color: #000000;">1024</span> <span style="color: #000000; font-weight: bold;">&gt;</span>server.key</pre></td></tr></table></div>

<p>　　注：采用DES3加密新产生的私钥server.key文件，每次要使用这个私钥时都要用输入密码。如果您的电子证书是用在apache等服务器中，您每次启动服务器时都要输入密码一次。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code92'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241492"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2414code92"><pre class="bash" style="font-family:monospace;">openssl genrsa <span style="color: #000000;">1024</span> <span style="color: #000000; font-weight: bold;">&gt;</span>server.key</pre></td></tr></table></div>

<p>　　注：采用128位rsa算法生成密钥server.key文件，这种方法产生的证书在apache等服务器中启动服务器时不会要求输入密码，同时也不会把私钥加密。 </p>
<p>　　步骤2: 生成证书请求文件(Certificate Signing Request)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code93'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241493"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2414code93"><pre class="bash" style="font-family:monospace;">openssl req <span style="color: #660033;">-new</span> <span style="color: #660033;">-key</span> server.key <span style="color: #000000; font-weight: bold;">&gt;</span> server.csr</pre></td></tr></table></div>

<p>　　注：这是用步骤1的密钥生成证书请求文件server.csr, 这一步输入内容和创建自签名证书的内容类似，按要求输入就可以了。</p>
<p>　　步骤3: 签署生成证书</p>
<p>　　您只要把server.csr这个档案给第三方CA(Certificate Authority)机构签署生成证书就可以了。</p>
<p>　　二、配置Apache</p>
<p>　　1、开启SSL模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code94'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241494"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2414code94"><pre class="bash" style="font-family:monospace;">a2enmod ssl</pre></td></tr></table></div>

<p>　　2、启用SSL站点</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code95'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241495"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2414code95"><pre class="bash" style="font-family:monospace;">a2ensite default-ssl</pre></td></tr></table></div>

<p>　　3、加入监听端口</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code96'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241496"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2414code96"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>ports.conf 
&nbsp;
<span style="color: #666666; font-style: italic;">#编辑Apache端口配置，加入443端口</span>
Listen <span style="color: #000000;">443</span></pre></td></tr></table></div>

<p>　　注：Ubuntu启用SSL站点后，缺省已经加入了</p>
<p>　　4、配置虚拟主机</p>
<p>　　编辑default-ssl文件，加入证书对应的主机头。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code97'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241497"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2414code97"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-enabled<span style="color: #000000; font-weight: bold;">/</span>default-ssl
&nbsp;
ServerName www.mike.me</pre></td></tr></table></div>

<p>　　5、配置SSL证书</p>
<p>　　编辑配置文件，修改如下几行：</p>
<p>　　如果是自签名证书，按如下配置：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code98'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241498"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2414code98"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-enabled<span style="color: #000000; font-weight: bold;">/</span>default-ssl
&nbsp;
SSLEngine on
SSLCertificateFile    <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>private<span style="color: #000000; font-weight: bold;">/</span>apache2.pem
<span style="color: #666666; font-style: italic;">#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key</span></pre></td></tr></table></div>

<p>　　注：如果SSLCertificateFile中指定的证书已包含相应私钥，SSLCertificateKeyFile这一行就可以注释掉。前面用make-ssl-cert生成的证书就是同时包含公钥和私钥的，所以这里注释掉了。</p>
<p>　　如果是第三方签署的CA证书，按如下配置：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code99'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p241499"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2414code99"><pre class="bash" style="font-family:monospace;">SSLEngine on
SSLCertificateFile    <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>certs<span style="color: #000000; font-weight: bold;">/</span>ssl-cert-snakeoil.pem
SSLCertificateKeyFile <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>private<span style="color: #000000; font-weight: bold;">/</span>ssl-cert-snakeoil.key
SSLCertificateChainFile <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>certs<span style="color: #000000; font-weight: bold;">/</span>server-ca.crt</pre></td></tr></table></div>

<p>　　各指令含义：</p>
<p>　　SSLEngine ：这个指令用于开启或关闭SSL/TLS协议引擎。</p>
<p>　　SSLCertificateFile：该指令用于指定服务器持有的X.509证书(PEM编码)，其中还可以包含对应的RSA或DSA私钥。如果其中包含的私钥已经使用密语加密，那么在Apache启动的时候将会提示输入密语。</p>
<p>　　SSLCertificateKeyFile：指定了服务器私钥文件(PEM编码)的位置。如果SSLCertificateFile指定的服务器证书文件中不包含相应的私钥，那么就必须使用该指令，否则就不需要使用。</p>
<p>　　SSLCertificateChainFile：这个指令指定了一个多合一的CA证书，用于明确的创建服务器的证书链。这个证书链将被与服务器证书一起发送给客户端，由直接签发服务器证书的CA证书开始，按证书链顺序回溯，一直到根CA的证书结束，这一系列的CA证书(PEM格式)就构成了服务器的证书链。这有利于避免在执行客户端认证时多个CA证书之间出现混淆或冲突。</p>
<p>　　6、测试Apache HTTPS</p>
<p>　　重启Apache</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code100'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2414100"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2414code100"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></td></tr></table></div>

<p>　　使用curl来验证</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code101'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2414101"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2414code101"><pre class="bash" style="font-family:monospace;">curl https:<span style="color: #000000; font-weight: bold;">//</span>localhost<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #660033;">-k</span></pre></td></tr></table></div>

<p>　　-k参数的意思是允许不验证访问SSL站点，因为如果要验证，就不能使用localhost做测试，而只能用生成证书时明确指定的域名。</p>
<p>　　使用浏览器</p>
<p>　　访问服务器时输入https://域名(或IP)，浏览器会弹出安装服务器证明书的窗口。说明服务器已经支持SSL了。</p>
<p>　　7、其它知识点</p>
<p>　　在上面SSL站点配置文件中所使用的是”_default_”(默认虚拟主机)，下面说下相关的知识点。</p>
<p>　　”_default_”(默认虚拟主机)虚拟主机可以捕获所有指向没指定的IP地址和端口的请求。比如：一个没被任何虚拟主机使用的地址/端口对。</p>
<p>　　仅当没有其他虚拟主机符合客户端请求的IP地址和端口号时，”_default_”虚拟主机才会捕获这个请求。并且仅当”_default_”虚拟主机的端口号(默认值由您的Listen指定)与客户端发送请求的目的端口号相符时，这个请求才会被捕获。也可以使用通配符(例如：”_default_:*”)来捕获任何端口号的请求。</p>
<p>　　服务器配置示例：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2414code102'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2414102"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2414code102"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span>VirtualHost _default_:<span style="color: #000000;">443</span><span style="color: #000000; font-weight: bold;">&gt;</span>
DocumentRoot <span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>default
......
<span style="color: #000000; font-weight: bold;">&lt;/</span>VirtualHost<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>　　这段配置内容的意思是所有访问这个WEB服务器的443端口的请求会被这个默认虚拟主机处理。</p>
<p>　　另外仅当客户端连接的目的IP地址和端口号没有指定而且不与任何一个虚拟主机(包括”_default_”虚拟主机)匹配的时候，才会用主服务器来伺服请求。换句话说，主服务器仅捕获没有指定IP地址和端口的请求。</p>
<p>　　三、参考文档</p>
<p>　　http://www.goolge.com<br />
　　http://www.berlinix.com/apache_https.html<br />
　　http://berryfl.wordpress.com/2011/07/11/self-singed-cert/<br />
　　http://wiki.debian.org.hk/w/Generate_SSL_cert#.E4.BD.BF.E7.94.A8_openssl</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-config-apache-https/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu下安装GeoIP</title>
		<link>http://www.mike.org.cn/articles/ubuntu-install-geoip/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-install-geoip/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 15:28:54 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[GeoIP]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2401</guid>
		<description><![CDATA[　　什么是GeoIP ? 　　所谓GeoIP，就是通过来访者的IP， 定位他的经纬度，国家/地区，省市，甚至街道等位置信息的一个数据库。GeoIP有两个版本，一个免费版，一个收费版本。收费版本的准确率和数据更好一些。 　　GeoIP如何使用？ 　　GeoIP支持多种语言调用，这里我们以PHP为例。 　　方法一 　　通过APT安装PHP对GeoIP的支持模块 ?View Code BASH1 apt-get install php5-geoip libgeoip1 　　下载GeoIP数据库 ?View Code BASH1 2 wget -N -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz wget -N -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz 　　解压数据库 ?View Code BASH1 gzip -d GeoLiteCity.dat.gz 　　复制GeoIP数据库到数据目录 ?View Code BASH1 cp GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat 　　注：这里的路径和编译GeoIP C API所使用的&#8211;with-dbdir参数有关。 　　测试GeoIP 　　重启Apaceh ?View Code BASH1 /etc/init.d/apache2 restart 　　在Web目录下新建一个测试的PHP文件，这里以geoip.php为例： ?View Code [...]]]></description>
			<content:encoded><![CDATA[<p>　　什么是GeoIP ?</p>
<p>　　所谓GeoIP，就是通过来访者的IP， 定位他的经纬度，国家/地区，省市，甚至街道等位置信息的一个数据库。GeoIP有两个版本，一个免费版，一个收费版本。收费版本的准确率和数据更好一些。</p>
<p>　　GeoIP如何使用？</p>
<p>　　GeoIP支持多种语言调用，这里我们以PHP为例。<span id="more-2401"></span></p>
<p>　　方法一</p>
<p>　　通过APT安装PHP对GeoIP的支持模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code119'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401119"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2401code119"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> php5-geoip libgeoip1</pre></td></tr></table></div>

<p>　　下载GeoIP数据库</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code120'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401120"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2401code120"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-N</span> <span style="color: #660033;">-q</span> http:<span style="color: #000000; font-weight: bold;">//</span>geolite.maxmind.com<span style="color: #000000; font-weight: bold;">/</span>download<span style="color: #000000; font-weight: bold;">/</span>geoip<span style="color: #000000; font-weight: bold;">/</span>database<span style="color: #000000; font-weight: bold;">/</span>GeoLiteCity.dat.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-N</span> <span style="color: #660033;">-q</span> http:<span style="color: #000000; font-weight: bold;">//</span>geolite.maxmind.com<span style="color: #000000; font-weight: bold;">/</span>download<span style="color: #000000; font-weight: bold;">/</span>geoip<span style="color: #000000; font-weight: bold;">/</span>database<span style="color: #000000; font-weight: bold;">/</span>GeoLiteCountry<span style="color: #000000; font-weight: bold;">/</span>GeoIP.dat.gz</pre></td></tr></table></div>

<p>　　解压数据库</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code121'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401121"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2401code121"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">gzip</span> <span style="color: #660033;">-d</span> GeoLiteCity.dat.gz</pre></td></tr></table></div>

<p>　　复制GeoIP数据库到数据目录</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code122'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401122"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2401code122"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> GeoLiteCity.dat <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>GeoIP<span style="color: #000000; font-weight: bold;">/</span>GeoIPCity.dat</pre></td></tr></table></div>

<p>　　注：这里的路径和编译GeoIP C API所使用的&#8211;with-dbdir参数有关。</p>
<p>　　测试GeoIP</p>
<p>　　重启Apaceh</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code123'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401123"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2401code123"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></td></tr></table></div>

<p>　　在Web目录下新建一个测试的PHP文件，这里以geoip.php为例：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code124'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401124"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2401code124"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>geoip.php
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;</span>?php
<span style="color: #007800;">$country</span> = geoip_record_by_name<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'61.128.128.68'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$country</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'This host is located in: '</span>; print_r<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$country</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #7a0874; font-weight: bold;">&#125;</span>
print geoip_db_filename<span style="color: #7a0874; font-weight: bold;">&#40;</span>GEOIP_COUNTRY_EDITION<span style="color: #7a0874; font-weight: bold;">&#41;</span>;
?<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>　　 访问这个文件，如出现下面类似信息，则表示成功了。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code125'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401125"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2401code125"><pre class="bash" style="font-family:monospace;">This host is located <span style="color: #000000; font-weight: bold;">in</span>: Array <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>continent_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> AS <span style="color: #7a0874; font-weight: bold;">&#91;</span>country_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> CN <span style="color: #7a0874; font-weight: bold;">&#91;</span>country_code3<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> CHN <span style="color: #7a0874; font-weight: bold;">&#91;</span>country_name<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> China <span style="color: #7a0874; font-weight: bold;">&#91;</span>region<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">33</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>city<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> Chongqing 
<span style="color: #7a0874; font-weight: bold;">&#91;</span>postal_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>latitude<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">29.562799453735</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>longitude<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">106.55280303955</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>dma_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>area_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></td></tr></table></div>

<p>　　方法二</p>
<p>　　通过源码方式安装</p>
<p>　　安装GeoIP C API</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code126'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401126"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2401code126"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>geolite.maxmind.com<span style="color: #000000; font-weight: bold;">/</span>download<span style="color: #000000; font-weight: bold;">/</span>geoip<span style="color: #000000; font-weight: bold;">/</span>api<span style="color: #000000; font-weight: bold;">/</span>c<span style="color: #000000; font-weight: bold;">/</span>GeoIP.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf GeoIP.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> GeoIP-1.4.8
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>　　通过pecl安装geoip模块。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code127'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401127"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2401code127"><pre class="bash" style="font-family:monospace;">pecl <span style="color: #c20cb9; font-weight: bold;">install</span> geoip</pre></td></tr></table></div>

<p>　　启用GeoIP PHP模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code128'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401128"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2401code128"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span>conf.d<span style="color: #000000; font-weight: bold;">/</span>geoip.ini
<span style="color: #007800;">extension</span>=geoip.so</pre></td></tr></table></div>

<p>　　复制GeoIP数据库到数据目录</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code129'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401129"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2401code129"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> GeoLiteCity.dat <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>GeoIP<span style="color: #000000; font-weight: bold;">/</span>GeoIPCity.dat</pre></td></tr></table></div>

<p>　　注：这里的路径和编译GeoIP C API所使用的&#8211;with-dbdir参数有关。</p>
<p>　　测试GeoIP</p>
<p>　　重启Apaceh</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code130'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401130"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2401code130"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></td></tr></table></div>

<p>　　在Web目录下新建一个测试的PHP文件，这里以geoip.php为例：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code131'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401131"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2401code131"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>geoip.php
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;</span>?php
<span style="color: #007800;">$country</span> = geoip_record_by_name<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'61.128.128.68'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$country</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'This host is located in: '</span>; print_r<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$country</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #7a0874; font-weight: bold;">&#125;</span>
print geoip_db_filename<span style="color: #7a0874; font-weight: bold;">&#40;</span>GEOIP_COUNTRY_EDITION<span style="color: #7a0874; font-weight: bold;">&#41;</span>;
?<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>　　访问这个文件，如出现下面类似信息，则表示成功了。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code132'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401132"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2401code132"><pre class="bash" style="font-family:monospace;">This host is located <span style="color: #000000; font-weight: bold;">in</span>: Array <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>continent_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> AS <span style="color: #7a0874; font-weight: bold;">&#91;</span>country_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> CN <span style="color: #7a0874; font-weight: bold;">&#91;</span>country_code3<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> CHN <span style="color: #7a0874; font-weight: bold;">&#91;</span>country_name<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> China <span style="color: #7a0874; font-weight: bold;">&#91;</span>region<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">33</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>city<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> Chongqing 
<span style="color: #7a0874; font-weight: bold;">&#91;</span>postal_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>latitude<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">29.562799453735</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>longitude<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">106.55280303955</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>dma_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>area_code<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></td></tr></table></div>

<p>　　一些编译中常见的错误</p>
<p>　　如果你的系统中的libtool中的版本低于2.2.6b，可能会出现以下错误提示：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code133'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401133"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2401code133"><pre class="bash" style="font-family:monospace;">libtool: Version mismatch error. This is libtool 2.2.6 Debian-2.2.6a-<span style="color: #000000;">4</span>, but the
libtool: definition of this LT_INIT comes from libtool 2.2.6b.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6 Debian-2.2.6a-<span style="color: #000000;">4</span></pre></td></tr></table></div>

<p>　　解决方法：先执行以下语句后，再重新编译。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2401code134'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2401134"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2401code134"><pre class="bash" style="font-family:monospace;">autoreconf <span style="color: #660033;">--force</span>
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>　　参考文档</p>
<p>　　http://www.google.com<br />
　　http://blog.chinaunix.net/space.php?uid=642374&#038;do=blog&#038;cuid=1944521<br />
　　http://stackoverflow.com/questions/3096989/libtool-version-mismatch-error</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-install-geoip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04下配置Postfix邮件全功能服务器</title>
		<link>http://www.mike.org.cn/articles/ubuntu-configure-postfix-mailserver/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-configure-postfix-mailserver/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 14:48:11 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[extmail]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2391</guid>
		<description><![CDATA[　　本文介绍如何在一个Ubuntu10.04平台上安装一套功能完整的邮件系统。这里我以Postfix做SMTP服务器、Courier-pop做POP3服务器、通过Cyrus-SASL对存储在MySQL数据库中的用户进行验证和授权，并且使用Extmail和ExtMan来分别提供一个完善的WEBMAIL界面和一个WEB界面的管理工具。 　　整个系统包括如下几个部分：用来发信的SMTP、用来收信的POP、用来存储虚拟帐号用虚拟域信息的MySQL数据库以及一个WEB界面的邮件系统和一个WEB界面的管理工具。 　　整个认证是通过Cyrus-SASL连接到authdaemond这个守护进程来监听认证需求。authdaemond在MySQL数据库进行查找进行相应的验证。MySQL作为系统中存储数据的核心，它存储了用户信息用于POP3和SMTP AUTH的认证需要。 　　本文以mike.me域名为例，请根据自身实际情况予以修改。 　　一、系统前提 　　A、首先修改主机名，如果安装系统时已设置正确主机名，此步略过。 　　编辑/etc/hostname文件，修改主机名符合FQDN。 ?View Code BASH1 2 vi /etc/hostname mail.mike.me 　　修改/etc/hosts头两行内容为 ?View Code BASH1 2 127.0.0.1 localhost.localdomain localhost 192.168.1.111 mail.mike.me mail 　　B、配置MX记录 　　首先DNS添加一条mail.mike.me到服务器的IP地址的A记录，然后添加MX记录mike.me到mail.mike.me 　　确认MX记录生效 　　Linux下测试方法 ?View Code BASH1 2 3 host -t mx mike.me &#160; mike.me mail is handled by 10 mail.mike.me. 　　Windows下测试方法 ?View Code BASH1 2 3 nslookup -qt=mx [...]]]></description>
			<content:encoded><![CDATA[<p>　　本文介绍如何在一个Ubuntu10.04平台上安装一套功能完整的邮件系统。这里我以Postfix做SMTP服务器、Courier-pop做POP3服务器、通过Cyrus-SASL对存储在MySQL数据库中的用户进行验证和授权，并且使用Extmail和ExtMan来分别提供一个完善的WEBMAIL界面和一个WEB界面的管理工具。</p>
<p>　　整个系统包括如下几个部分：用来发信的SMTP、用来收信的POP、用来存储虚拟帐号用虚拟域信息的MySQL数据库以及一个WEB界面的邮件系统和一个WEB界面的管理工具。</p>
<p>　　整个认证是通过Cyrus-SASL连接到authdaemond这个守护进程来监听认证需求。authdaemond在MySQL数据库进行查找进行相应的验证。MySQL作为系统中存储数据的核心，它存储了用户信息用于POP3和SMTP AUTH的认证需要。</p>
<p>　　本文以mike.me域名为例，请根据自身实际情况予以修改。<span id="more-2391"></span></p>
<p>　　一、系统前提</p>
<p>　　A、首先修改主机名，如果安装系统时已设置正确主机名，此步略过。</p>
<p>　　编辑/etc/hostname文件，修改主机名符合FQDN。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code223'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391223"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code223"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">hostname</span>
mail.mike.me</pre></td></tr></table></div>

<p>　　修改/etc/hosts头两行内容为</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code224'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391224"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code224"><pre class="bash" style="font-family:monospace;">127.0.0.1 localhost.localdomain  localhost 
192.168.1.111 mail.mike.me  mail</pre></td></tr></table></div>

<p>　　B、配置MX记录</p>
<p>　　首先DNS添加一条mail.mike.me到服务器的IP地址的A记录，然后添加MX记录mike.me到mail.mike.me</p>
<p>　　确认MX记录生效</p>
<p>　　Linux下测试方法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code225'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391225"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code225"><pre class="bash" style="font-family:monospace;">host <span style="color: #660033;">-t</span> mx mike.me
&nbsp;
mike.me mail is handled by <span style="color: #000000;">10</span> mail.mike.me.</pre></td></tr></table></div>

<p>　　Windows下测试方法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code226'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391226"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code226"><pre class="bash" style="font-family:monospace;">nslookup <span style="color: #660033;">-qt</span>=mx mike.me
&nbsp;
mike.me  MX preference = <span style="color: #000000;">10</span>, mail exchanger = mail.mike.me</pre></td></tr></table></div>

<p>　　如果只是用测试域名没有DNS管理，可以在hosts加入A地址即可(需要在main.cf设置ignore_mx_lookup_error = yes)，如果是发送到本机的邮件不设置解析也可以。</p>
<p>　　二、安装和配置</p>
<p>　　系统所需软件</p>
<p>　　Apache　Apache是世界使用排名第一的Web服务器软件。<br />
　　MySQL　　一个轻量级小型关系型数据库管理系统，在处理少量数据时非常快速，而且通过关系型数据库可以更方便地管理用户信息和提供更多用户特性。<br />
　　postfix　它是一个非常优秀的MTA服务器，它不但性能卓越，对sendmail的兼容性好，支持和多种其它软件的隅合，而且本身就带有很强的反垃圾邮件功能。<br />
　　Extmail　一个支持多语言、全部模板化，功能基本齐全的Webmail程序<br />
　　Extman　支持无限域名、无限用户的WEB管理后台。<br />
　　maildrop　一个支持过滤和强大功能的MDA。<br />
　　courier-pop　一个POP3服务器。<br />
　　SpamAssassin　最流行的开源反垃圾邮件软件之一。它是一个邮件过滤器，使用了多种反垃圾邮件技术，如：文本分析、贝叶斯过滤、DNS 黑名单和分布式协同过滤数据库等。<br />
　　Amavisd-new　一个连接MTA和内容检测工具的高性能接口程序，使用perl语言写成。<br />
　　ClamAV　一个unix系统平台上的开源反病毒工具，它是特地为在邮件网关上进行邮件扫描而设计的。<br />
　　SMTP认证库　Cyrus SASL标准的SASL实现库，可以支持Courier authlib<br />
　　其他数据认证库　Courier Authlb负责courier-imap,maildrop的认证。</p>
<p>　　A、使用APT批量安装系统所需的所有软件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code227'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391227"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2391code227"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> apache2 apache2-suexec php5 libapache2-mod-php5 php5-mysql mysql-server mysql-client libpam-mysql libapache2-mod-fastcgi \
postfix postfix-doc postfix-mysql libsasl2-<span style="color: #000000;">2</span> libsasl2-modules libsasl2-modules-sql sasl2-bin \
courier-authdaemon courier-authlib courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl \
openssl liblzo2-<span style="color: #000000;">2</span> liblzo2-dev libstdc++<span style="color: #000000;">6</span> maildrop mailgraph libfcgi-perl libgd-gd2-perl libfile-tail-perl libdigest-sha1-perl \
libdigest-HMAC-perl libnet-ip-perl libnet-dns-perl libhtml-tagset-perl libhtml-parser-perl libio-stringy-perl libio-multiplex-perl \
libio-socket-ssl-perl libio-zlib-perl libnet-ssleay-perl libunix-syslog-perl libtimedate-perl libmailtools-perl libconvert-binhex-perl \
libconvert-tnef-perl libconvert-uulib-perl libcompress-zlib-perl libarchive-zip-perl libarchive-tar-perl perl-suid</pre></td></tr></table></div>

<p>　　B、创建Postfix虚拟邮件帐号所使用的用户及组</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code228'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391228"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code228"><pre class="bash" style="font-family:monospace;">groupadd <span style="color: #660033;">-g</span> <span style="color: #000000;">1001</span> vmail
useradd <span style="color: #660033;">-g</span> vmail <span style="color: #660033;">-u</span> <span style="color: #000000;">1001</span> <span style="color: #660033;">-M</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nologin vmail</pre></td></tr></table></div>

<p>　　C、创建虚拟用户邮箱所在的目录，并将其权限赋予MDA用户</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code229'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391229"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code229"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-pv</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mailbox
<span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> vmail.vmail <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mailbox
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #660033;">-R</span> <span style="color: #000000;">755</span>  <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mailbox<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　注：如果你创建的邮箱目录位置与此不同，请在后面所有涉及邮箱目录位置的配置中均进行相应修改。</p>
<p>　　D、配置Postfix</p>
<p>　　编辑/etc/postfix/main.cf</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code230'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391230"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
</pre></td><td class="code" id="p2391code230"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>main.cf
&nbsp;
<span style="color: #666666; font-style: italic;"># hostname</span>
mydomain = mike.me
mynetworks = 192.168.1.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span>, 127.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span>
myhostname = mail.mike.me
mydestination = <span style="color: #007800;">$mynetworks</span>,<span style="color: #007800;">$myhostname</span>,localhost.localdomain,localhost,localhost.<span style="color: #007800;">$mydomain</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># banner</span>
mail_name = Postfix - by mike.me
smtpd_banner = <span style="color: #007800;">$myhostname</span> ESMTP <span style="color: #007800;">$mail_name</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># response immediately</span>
smtpd_error_sleep_time = 0s
&nbsp;
<span style="color: #666666; font-style: italic;"># Message and return code control</span>
message_size_limit = <span style="color: #000000;">5242880</span>
mailbox_size_limit = <span style="color: #000000;">0</span>
show_user_unknown_table_name = no
&nbsp;
<span style="color: #666666; font-style: italic;"># Queue lifetime control</span>
bounce_queue_lifetime = 1d
<span style="color: #666666; font-style: italic;">#maximal_queue_lifetime = 1d</span>
<span style="color: #666666; font-style: italic;">#每1800s会重发一次，最多重发六次</span>
queue_run_delay = 1000s
<span style="color: #007800;">minimal_backoff_time</span>= 1200s
<span style="color: #007800;">maximal_backoff_time</span>= 1800s
maximal_queue_lifetime = 10800s
&nbsp;
alias_maps = <span style="color: #7a0874; font-weight: bold;">hash</span>:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>aliases
alias_database = <span style="color: #7a0874; font-weight: bold;">hash</span>:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>aliases
&nbsp;
<span style="color: #666666; font-style: italic;"># Other</span>
relayhost =
recipient_delimiter = +
inet_interfaces = all
html_directory = <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>doc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>html
&nbsp;
<span style="color: #666666; font-style: italic;"># TLS parameters</span>
<span style="color: #666666; font-style: italic;">#smtpd_tls_cert_file = /etc/postfix/smtpd.cert</span>
<span style="color: #666666; font-style: italic;">#smtpd_tls_key_file = /etc/postfix/smtpd.key</span>
<span style="color: #666666; font-style: italic;">#smtpd_use_tls = yes</span>
<span style="color: #666666; font-style: italic;">#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache</span>
<span style="color: #666666; font-style: italic;">#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># virtual Mail Box config</span>
virtual_alias_maps = mysql:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>mysql_virtual_mailbox_maps.cf
virtual_transport = maildrop
maildrop_destination_recipient_limit = <span style="color: #000000;">1</span>
maildrop_destination_concurrency_limit = <span style="color: #000000;">2</span>
virtual_uid_maps = static:<span style="color: #000000;">1001</span>
virtual_gid_maps = static:<span style="color: #000000;">1001</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># virtual QUOA config</span>
virtual_mailbox_base = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mailbox
virtual_mailbox_limit = <span style="color: #000000;">20971520</span>
virtual_create_maildirsize = <span style="color: #c20cb9; font-weight: bold;">yes</span>
virtual_mailbox_extended = <span style="color: #c20cb9; font-weight: bold;">yes</span>
virtual_overquota_bounce = <span style="color: #c20cb9; font-weight: bold;">yes</span>
virtual_mailbox_limit_override = <span style="color: #c20cb9; font-weight: bold;">yes</span>
virtual_mailbox_limit_maps = mysql:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>mysql_virtual_limit_maps.cf
virtual_maildir_limit_message = Sorry, the your Maildir has overdrawn your diskspace quota, please <span style="color: #c20cb9; font-weight: bold;">free</span> up some of spaces of your mailbox try again.
&nbsp;
<span style="color: #666666; font-style: italic;"># SMTP AUTH config here</span>
broken_sasl_auth_clients = <span style="color: #c20cb9; font-weight: bold;">yes</span>
smtpd_sasl_auth_enable = <span style="color: #c20cb9; font-weight: bold;">yes</span>
smtpd_sasl_local_domain = <span style="color: #007800;">$myhostname</span>
smtpd_sasl_security_options = noanonymous
&nbsp;
<span style="color: #666666; font-style: italic;"># SMTPD related config</span>
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_non_fqdn_hostname,
        reject_non_fqdn_sender,
        reject_non_fqdn_recipient,
        reject_unauth_destination,
        reject_unauth_pipelining,
        reject_invalid_hostname,
		reject_sender_login_mismatch
&nbsp;
<span style="color: #666666; font-style: italic;"># SMTP sender login matching config</span>
smtpd_sender_restrictions =
        permit_mynetworks,
        reject_sender_login_mismatch,
        reject_authenticated_sender_login_mismatch,
        reject_unauthenticated_sender_login_mismatch
&nbsp;
smtpd_sender_login_maps =
        mysql:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>mysql_virtual_sender_maps.cf,
        mysql:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>mysql_virtual_alias_maps.cf
&nbsp;
always_add_missing_headers = <span style="color: #c20cb9; font-weight: bold;">yes</span></pre></td></tr></table></div>

<p>　　D1、各选项说明</p>
<p>　　myorigin 参数用来指明发件人所在的域名。<br />
　　mydestination 参数指定 postfix 接收邮件时收件人的域名，即您的postfix系统要接收到哪个域名的邮件。<br />
　　myhostname 参数指定运行 postfix 邮件系统的主机的主机名，默认情况下，其值被设定为本地机器名。<br />
　　mydomain参数指定您的域名，默认情况下， postfix将myhostname的第一部分删除而作为mydomain的值。<br />
　　mynetworks 参数指定你所在的网络的网络地址，postfix系统根据其值来区别用户是远程的还是本地的，如果是本地网络用户则允许其访问。<br />
　　smtpd_banner 设置向用户显示的主机名和版本信息</p>
<p>　　inet_interfaces 参数指定postfix 系统监听的网络接口。<br />
　　smtpd_error_sleep_time 当SMTP服务端口接收到非法的命令时，系统将缓冲处理的时间间隔。这个参数对于防止恶意攻击非常有效。　<br />
　　message_size_limit 用于限定系统所接受的最大的单封邮件长度,缺省为10240000字节。<br />
　　mailbox_size_limit 用于限定本地邮箱的最大文件尺寸，默认值为51200000字节。<br />
　　show_user_unknown_table_name 设置发给对方邮件服务器没有这个用户的回信，例如对方发送aa@test.com,邮件服务器没有aa这个用户，然后返回给他一个邮件形式的通知。<br />
　　bounce_queue_lifetime：退信（弹回）在队列中的保留时间。超过此时间，被认为是无法投递的。<br />
　　queue_run_delay：用于设定队列处理程序对拖延邮件的扫描周期。缺省为1000秒。<br />
　　maximal_queue_lifetime：用于设定队列处理程序对滞留邮件的最长保存期。缺省为5天。超过此时间，被认为是无法投递的。<br />
　　minimal_backoff_time：用于设定队列处理程序对无法投递的邮件的最短巡回时间(最小投递失败周期)。缺省为1000秒。<br />
　　maximal_backoff_time：用于设定队列处理程序对无法投递的邮件的最长巡回时间(最长投递失败周期)。缺省为4000秒。</p>
<p>　　alias_maps 设置别名映射。<br />
　　alias_database 设置别名映射数据库。<br />
　　relayhost　用于设定转发到下一个邮件服务器，relayhost的值可以是domain、host、hostort、[address]或[addressort]。<br />
　　recipient_delimiter 定义用户的名称和地址扩展之间的分隔符,默认为空。<br />
　　html_directory 定义本地Postfix的HTML文件的位置。</p>
<p>　　virtual_alias_maps 指向一个虚拟别名表。<br />
　　virtual_mailbox_domains　用于虚拟投递代理的,它指出了一个虚拟域名列表，拥有这些域名的电子邮件才能够被postfix的虚拟投递代理处理。它也是代替在$mydestination参数指出一长串的域名。虚拟域中定义的域名，不能再在$mydestination中定义。因为同一个域名不能同时出现在本地域和虚拟域中。<br />
　　virtual_mailbox_maps 定义虚拟邮箱的位置。<br />
　　virtual_transport　　定义MDA所使用的程序，缺省为Postfix自带的virtual。这里用的是maildrop。<br />
　　maildrop_destination_recipient_limit 定义MDA每次投递的限制。由于maildrop不支持一次接收多个收件人，所以这里限制为1。<br />
　　maildrop_destination_concurrency_limit 定义MDA投递的并发数。<br />
　　virtual_uid_maps和virtual_gid_maps参数决定postfix的virtual MDA投递邮件到虚拟邮箱时，应该继承的系统账户。如所有虚拟邮箱都属于同一个账户，则可以使用static映射方式直接指定virtual所要继承的UID与GID。<br />
　　virtual_mailbox_base 定义虚拟邮箱的物理存放路径。<br />
　　virtual_mailbox_limit 定义单个虚拟邮箱的大小。</p>
<p>　　broken_sasl_auth_clients=yes：表示是否兼容非标准的SMTP认证协，有一些microsoft的smtp客户端，如outlook express4.0采用非标准的smtp认证协议，只要将该参数设置为yes就可以解决这类不兼容问题。<br />
　　smtpd_sasl_auth_enable 是否启用sasl作为smtp认证方式。默认不启用，这里必须将它启用，所以设置为yes。<br />
　　smtpd_sasl_local_domain 定义postfix的SMTP服务器的本地SASL认证域的名称。缺省值为空。<br />
　　smtpd_sasl_security_options：用来限制某些登陆的方式，noanonymous表示禁止采用匿名方式登陆。</p>
<p>　　smtpd_recipient_restrictions：表示通过收件人地址对客户端发来的邮件进行过滤，以下是常用的几种限制规则：<br />
　　permit_mynetworks：表示只要是收件人地址是mynetworks参数中定义的网段就可以被转发邮件。<br />
　　permit_sasl_authenticated：表示允许转发通过sasl认证的邮件。<br />
　　reject_non_fqdn_hostname：拒绝不符合域名规则的域名。<br />
　　reject_non_fqdn_sender：拒绝不符合域名规则的发送者。<br />
　　reject_non_fqdn_recipient：拒绝不符合域名规则的转发目标。<br />
　　reject_unauth_destination：拒绝未经过认证的目的地。<br />
　　reject_unauth_pipelining：拒绝未认证的管理连接。<br />
　　reject_invalid_hostname：拒绝无效的主机名。<br />
　　reject_sender_login_mismatch：拒绝同域没认证发信。同时拒绝有认证了,但认证地址跟mail from地址不一致的。<br />
　　reject_unauth_destination：表示拒绝转发含未信任的目标地址的邮件。</p>
<p>　　smtpd_sender_restrictions　表示通过发件人地址对客户端发来的邮件进行过滤，以下是常用的几种限制规则：<br />
　　reject_authenticated_sender_login_mismatch：拒绝认证了,但认证地址跟mail to地址不一致的。<br />
　　reject_unauthenticated_sender_login_mismatch：拒绝未认证的发送者。</p>
<p>　　smtpd_sender_login_maps 定义发送者帐号映射位置。<br />
　　always_add_missing_headers Postfix总是自动为没有message-id的邮件添加message-id。</p>
<p>　　D2、编辑/etc/postfix/master.cf</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code231'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391231"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p2391code231"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>master.cf
&nbsp;
<span style="color: #666666; font-style: italic;">#注释掉原来的maildrop</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#maildrop  unix  -       n       n       -       -       pipe</span>
<span style="color: #666666; font-style: italic;">#  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#为了使Postfix支持Maildrop,需新增下面部分</span>
maildrop   unix        -       n        n        -        -        pipe
  <span style="color: #007800;">flags</span>=DRhu <span style="color: #007800;">user</span>=vmail <span style="color: #007800;">argv</span>=maildrop <span style="color: #660033;">-w</span> <span style="color: #000000;">90</span> <span style="color: #660033;">-d</span> <span style="color: #800000;">${user}</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #800000;">${nexthop}</span> <span style="color: #800000;">${recipient}</span> <span style="color: #800000;">${user}</span> <span style="color: #800000;">${extension}</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>nexthop<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#关闭smtpd运行在Chroot模式，将如下行：</span>
&nbsp;
smtp      inet  n       -       -       -       -       smtpd
&nbsp;
<span style="color: #666666; font-style: italic;">#修改为下面的内容</span>
smtp      inet  n       -       n       -       -       smtpd</pre></td></tr></table></div>

<p>　　注：Ubuntu下如果不关闭chroot模式，在进行smtpd认证时,mail.log中会提示如下的错误：mail postfix/smtpd[1229]: warning: SASL authentication failure: cannot connect to Courier authdaemond: No such file or directory。</p>
<p>　　D3、重新启动Postfix</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code232'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391232"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code232"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>postfix start</pre></td></tr></table></div>

<p>　　E、配置saslauthd</p>
<p>　　Postfix的SMTP认证需要透过Cyrus-SASL，连接到authdaemon获取认证信息。</p>
<p>　　E1、编辑/etc/default/saslauthd，让START=yes及OPTIONS=”-c -m /var/spool/postfix/var/run/saslauthd -r”</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code233'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391233"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code233"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>saslauthd
<span style="color: #007800;">START</span>=<span style="color: #c20cb9; font-weight: bold;">yes</span>
<span style="color: #007800;">OPTIONS</span>=<span style="color: #ff0000;">&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;</span></pre></td></tr></table></div>

<p>　　E2、编辑/etc/postfix/sasl/smtpd.conf，修改内容如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code234'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391234"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2391code234"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>sasl<span style="color: #000000; font-weight: bold;">/</span>smtpd.conf
&nbsp;
pwcheck_method: authdaemond
log_level: <span style="color: #000000;">2</span>
mech_list: PLAIN LOGIN
authdaemond_path: <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>courier<span style="color: #000000; font-weight: bold;">/</span>authdaemon<span style="color: #000000; font-weight: bold;">/</span>socket</pre></td></tr></table></div>

<p>　　E3、启动saslauthd</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code235'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391235"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code235"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>saslauthd restart</pre></td></tr></table></div>

<p>　　F、配置Courier</p>
<p>　　修改Courier的配置，让它知道是透过MySQL资料库来做认证。</p>
<p>　　F1、编辑/etc/courier/authdaemonrc，并且让authmodulelist=”authmysql”</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code236'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391236"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2391code236"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span>  <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>courier<span style="color: #000000; font-weight: bold;">/</span>authdaemonrc
&nbsp;
<span style="color: #007800;">authmodulelist</span>=<span style="color: #ff0000;">&quot;authmysql&quot;</span>
<span style="color: #007800;">authmodulelistorig</span>=<span style="color: #ff0000;">&quot;authmysql&quot;</span>
<span style="color: #007800;">daemons</span>=<span style="color: #000000;">5</span></pre></td></tr></table></div>

<p>　　F2、编辑/etc/courier/authmysqlrc，修改内容如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code237'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391237"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code" id="p2391code237"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>courier<span style="color: #000000; font-weight: bold;">/</span>authmysqlrc
&nbsp;
MYSQL_SERVER            localhost
MYSQL_USERNAME          extmail
MYSQL_PASSWORD          extmail
MYSQL_SOCKET            <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>mysqld<span style="color: #000000; font-weight: bold;">/</span>mysqld.sock
MYSQL_PORT              <span style="color: #000000;">3306</span>
MYSQL_OPT               <span style="color: #000000;">0</span>
MYSQL_DATABASE          extmail
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         uidnumber
MYSQL_GID_FIELD         gidnumber
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        homedir
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir
MYSQL_QUOTA_FIELD       quota
MYSQL_SELECT_CLAUSE     SELECT username,password,<span style="color: #ff0000;">&quot;&quot;</span>,uidnumber,gidnumber,\
                        CONCAT<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/var/mailbox/'</span>,homedir<span style="color: #7a0874; font-weight: bold;">&#41;</span>,               \
                        CONCAT<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/var/mailbox/'</span>,maildir<span style="color: #7a0874; font-weight: bold;">&#41;</span>,               \
                        quota,                                          \
                        name,                                           \
                        CONCAT<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;disablesmtpd=&quot;</span>,disablesmtpd,            \
                        <span style="color: #ff0000;">&quot;,disablesmtp=&quot;</span>,disablesmtp,                    \
                        <span style="color: #ff0000;">&quot;,disablewebmail=&quot;</span>,disablewebmail,              \
                        <span style="color: #ff0000;">&quot;,disablenetdisk=&quot;</span>,disablenetdisk,              \
                        <span style="color: #ff0000;">&quot;,disableimap=&quot;</span>,disableimap,                    \
                        <span style="color: #ff0000;">&quot;,disablepop3=&quot;</span>,disablepop3,                    \
                        <span style="color: #ff0000;">&quot;,netdiskquota=&quot;</span>,netdiskquota<span style="color: #7a0874; font-weight: bold;">&#41;</span>                  \
                        FROM mailbox                                    \
                        WHERE username = <span style="color: #ff0000;">'$(local_part)@$(domain)'</span></pre></td></tr></table></div>

<p>　　F3、启动Courier</p>
<p>　　修改authdaemon socket目录权限，如果该目录权限不正确修改，maildrop及postfix等将无法正确获取用户的信息及密码认证。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code238'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391238"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code238"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span>  <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>courier<span style="color: #000000; font-weight: bold;">/</span>authdaemon<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>courier-authdaemon restart</pre></td></tr></table></div>

<p>　　注：如果出现mail.log中出现：warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied这样的错误，请修改authdaemon socket目录权限。</p>
<p>　　G、配置POP3和IMAP</p>
<p>　　POP3和IMAP服务安装完成后，默认都是开启的。由于Courier-imap的IMAP目录是按UTF-7编码的，ExtMail目前还没有正式支持IMAP目录，所以IMAP只支持通过邮件客户端使用。</p>
<p>　　G1、修改/etc/courier/pop3d中的值POP3DSTART为YES</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code239'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391239"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code239"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>courier<span style="color: #000000; font-weight: bold;">/</span>pop3d
&nbsp;
<span style="color: #007800;">POP3DSTART</span>=YES</pre></td></tr></table></div>

<p>　　G2、修改/etc/courier/imapd中IMAPDSTART的值为NO</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code240'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391240"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code240"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>courier<span style="color: #000000; font-weight: bold;">/</span>imapd
&nbsp;
<span style="color: #007800;">IMAPDSTART</span>=YES</pre></td></tr></table></div>

<p>　　G3、重启POP3和IMAP服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code241'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391241"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code241"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>courier-imap restart
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>courier-pop restart</pre></td></tr></table></div>

<p>　　H、配置Apache</p>
<p>　　由于extmail要进行本地邮件的投递操作，故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户；本文环境中就打开了Apache服务器的suexec功能，故使用以下方法来实现虚拟主机运行身份的指定。本文使用的MDA为maildrop，而maildrop是用vmail这个用户运行的。因此将指定为vmail用户。</p>
<p>　　H1、启用suexec模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code242'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391242"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code242"><pre class="bash" style="font-family:monospace;">a2enmod suexec</pre></td></tr></table></div>

<p>　　H2、编辑/etc/apache2/conf.d/extmail.conf，修改内容如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code243'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391243"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p2391code243"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span>  <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>conf.d<span style="color: #000000; font-weight: bold;">/</span>extmail.conf
&nbsp;
<span style="color: #666666; font-style: italic;"># VirtualHost for ExtMail Solution</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>VirtualHost <span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">80</span><span style="color: #000000; font-weight: bold;">&gt;</span> 
ServerName mail.mike.me
DocumentRoot <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extmail<span style="color: #000000; font-weight: bold;">/</span>html<span style="color: #000000; font-weight: bold;">/</span> 
ScriptAlias <span style="color: #000000; font-weight: bold;">/</span>extmail<span style="color: #000000; font-weight: bold;">/</span>cgi <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extmail<span style="color: #000000; font-weight: bold;">/</span>cgi 
Alias <span style="color: #000000; font-weight: bold;">/</span>extmail <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extmail<span style="color: #000000; font-weight: bold;">/</span>html 
ScriptAlias <span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>cgi <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>cgi
Alias <span style="color: #000000; font-weight: bold;">/</span>extman <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>html
<span style="color: #666666; font-style: italic;"># Suexec config</span>
SuexecUserGroup vmail vmail
<span style="color: #000000; font-weight: bold;">&lt;/</span>VirtualHost<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>　　如果你的Apache没有打开suexec功能，可以用以下方法解决。</p>
<p>　　修改Apache的运行用户为MDA的运行用户</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code244'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391244"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2391code244"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>apache2.conf
&nbsp;
User vmail 
Group vmail</pre></td></tr></table></div>

<p>　　I、配置ExtMail</p>
<p>　　I1、下载ExtMail</p>
<p>　　由于不支持wget直接下载，到http://www.extmail.org/cgi-bin/download.cgi手动下载ExtMail</p>
<p>　　I2、解压ExtMail</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code245'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391245"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code245"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf extmail-<span style="color: #000000;">1.2</span>.tar.gz</pre></td></tr></table></div>

<p>　　I3、安装ExtMail</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code246'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391246"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code246"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mv</span> extmail-<span style="color: #000000;">1.2</span> extmail
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> extmail <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　I4、配置ExtMail</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code247'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391247"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code247"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#生成配置文件</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extmail<span style="color: #000000; font-weight: bold;">/</span>webmail.cf.default <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extmail<span style="color: #000000; font-weight: bold;">/</span>webmail.cf</pre></td></tr></table></div>

<p>　　编辑/var/www/extsuite/extmail/webmail.cf，修改如下的内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code248'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391248"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p2391code248"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extmail<span style="color: #000000; font-weight: bold;">/</span>webmail.cf
&nbsp;
<span style="color: #666666; font-style: italic;">#主要变动的内容如下：</span>
&nbsp;
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_USER_LANG = zh_CN
SYS_MAILDIR_BASE = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mailbox
SYS_MYSQL_SOCKET = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>mysqld<span style="color: #000000; font-weight: bold;">/</span>mysqld.sock</pre></td></tr></table></div>

<p>　　注：SYS_MYSQL_USER和SYS_MYSQL_PASS是连接MySQL数据库的用户名和密码，这里都是用的缺省的。可根据具体需要修改初始SQL中对应内容。</p>
<p>　　I5、更新cgi目录权限</p>
<p>　　由于SuEXEC的需要，必须将extmail的cgi目录修改成vmail:vmail权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code249'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391249"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code249"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> vmail:vmail <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extmail<span style="color: #000000; font-weight: bold;">/</span>cgi<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　J、配置ExtMan</p>
<p>　　J1、下载ExtMan</p>
<p>　　由于不支持wget直接下载，到http://www.extmail.org/cgi-bin/download.cgi手动下载ExtMail</p>
<p>　　J2、解压ExtMan</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code250'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391250"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code250"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf extman-<span style="color: #000000;">1.1</span>.tar.gz</pre></td></tr></table></div>

<p>　　J3、安装ExtMan</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code251'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391251"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code251"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mv</span> extman-<span style="color: #000000;">1.1</span> extman
<span style="color: #c20cb9; font-weight: bold;">mv</span> extman <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　J4、配置ExtMan</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code252'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391252"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code252"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#生成配置文件</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>webman.cf.default <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>webman.cf</pre></td></tr></table></div>

<p>　　编辑/var/www/extsuite/extman/webman.cf，修改如下的内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code253'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391253"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2391code253"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>webman.cf
&nbsp;
<span style="color: #666666; font-style: italic;">#主要变动的内容见下：</span>
SYS_MYSQL_SOCKET = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>mysqld<span style="color: #000000; font-weight: bold;">/</span>mysqld.sock
SYS_MAILDIR_BASE = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mailbox
<span style="color: #666666; font-style: italic;"># sys_default_gid, if not set, webman will ignore it </span>
SYS_DEFAULT_UID = <span style="color: #000000;">1001</span>
<span style="color: #666666; font-style: italic;"># sys_default_gid, if not set, webman will ignore it</span>
SYS_DEFAULT_GID = <span style="color: #000000;">1001</span></pre></td></tr></table></div>

<p>　　J5、链接基本库到Extmail</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code254'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391254"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code254"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>extman
<span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> vmail:vmail <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>extman</pre></td></tr></table></div>

<p>　　J6、更新cgi目录权限</p>
<p>　　由于SuEXEC的需要，必须将ExtMan的cgi目录修改成vmail:vmail权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code255'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391255"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code255"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> vmail:vmail <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>cgi<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　J7、数据库初始化</p>
<p>　　由于maildrop投递时会从数据库里取uidnumber/gidnumber，而在master.cf里已经定义好了投递时的运行身份是vmail。vmail的UID、GID是1001，而不是Extmail中初始化SQL中缺省的1000,所以这里需要对初始化SQL进行相应修改。</p>
<p>　　编辑/var/www/extsuite/extman/docs/extmail.sql，修改如下内容：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code256'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391256"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code" id="p2391code256"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>docs<span style="color: #000000; font-weight: bold;">/</span>extmail.sql
&nbsp;
<span style="color: #666666; font-style: italic;">#修改缺省uidnumber、gidnumber为1001</span>
<span style="color: #666666; font-style: italic;">#修改前</span>
&nbsp;
CREATE TABLE mailbox <span style="color: #7a0874; font-weight: bold;">&#40;</span>
......
uidnumber int<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> NOT NULL default <span style="color: #ff0000;">'1000'</span>,
gidnumber int<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> NOT NULL default <span style="color: #ff0000;">'1000'</span>,
......
<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #007800;">TYPE</span>=MyISAM <span style="color: #007800;">COMMENT</span>=<span style="color: #ff0000;">'ExtMail - Virtual Mailboxes'</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">#修改后</span>
CREATE TABLE mailbox <span style="color: #7a0874; font-weight: bold;">&#40;</span>
......
uidnumber int<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> NOT NULL default <span style="color: #ff0000;">'1001'</span>,
gidnumber int<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> NOT NULL default <span style="color: #ff0000;">'1001'</span>,
......
<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #007800;">TYPE</span>=MyISAM <span style="color: #007800;">COMMENT</span>=<span style="color: #ff0000;">'ExtMail - Virtual Mailboxes'</span>;</pre></td></tr></table></div>

<p>　　编辑/var/www/extsuite/extman/docs/init.sql，修改如下内容：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code257'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391257"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2391code257"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>docs<span style="color: #000000; font-weight: bold;">/</span>init.sql
&nbsp;
<span style="color: #666666; font-style: italic;">#修改缺省uidnumber、gidnumber为1001</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#修改前</span>
INSERT INTO <span style="color: #000000; font-weight: bold;">`</span>mailbox<span style="color: #000000; font-weight: bold;">`</span> VALUES <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'postmaster@extmail.org'</span>,<span style="color: #ff0000;">'postmaster'</span>,<span style="color: #ff0000;">'$1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0'</span>,<span style="color: #ff0000;">''</span>,<span style="color: #ff0000;">'PostMaster'</span>,<span style="color: #ff0000;">''</span>,<span style="color: #ff0000;">'extmail.org/postmaster/Maildir/'</span>,<span style="color: #ff0000;">'extmail.org/postmaster'</span>,<span style="color: #ff0000;">'104857600S'</span>,<span style="color: #ff0000;">'52428800S'</span>,<span style="color: #ff0000;">'extmail.org'</span>,<span style="color: #000000;">1000</span>,<span style="color: #000000;">1000</span>,<span style="color: #ff0000;">'2007-02-14 15:10:04'</span>,<span style="color: #ff0000;">'2010-11-08'</span>,<span style="color: #000000;">1</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #ff0000;">'my question'</span>,<span style="color: #ff0000;">'my answer'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">#修改后</span>
INSERT INTO <span style="color: #000000; font-weight: bold;">`</span>mailbox<span style="color: #000000; font-weight: bold;">`</span> VALUES <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'postmaster@extmail.org'</span>,<span style="color: #ff0000;">'postmaster'</span>,<span style="color: #ff0000;">'$1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0'</span>,<span style="color: #ff0000;">''</span>,<span style="color: #ff0000;">'PostMaster'</span>,<span style="color: #ff0000;">''</span>,<span style="color: #ff0000;">'extmail.org/postmaster/Maildir/'</span>,<span style="color: #ff0000;">'extmail.org/postmaster'</span>,<span style="color: #ff0000;">'104857600S'</span>,<span style="color: #ff0000;">'52428800S'</span>,<span style="color: #ff0000;">'extmail.org'</span>,<span style="color: #000000;">1001</span>,<span style="color: #000000;">1001</span>,<span style="color: #ff0000;">'2007-02-14 15:10:04'</span>,<span style="color: #ff0000;">'2010-11-08'</span>,<span style="color: #000000;">1</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">0</span>,<span style="color: #ff0000;">'my question'</span>,<span style="color: #ff0000;">'my answer'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;</pre></td></tr></table></div>

<p>　　J8、导入mysql数据库结构及初始化数据</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code258'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391258"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code258"><pre class="bash" style="font-family:monospace;">mysql <span style="color: #660033;">-u</span> root <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">&lt;/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>docs<span style="color: #000000; font-weight: bold;">/</span>extmail.sql
mysql <span style="color: #660033;">-u</span> root <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">&lt;/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>docs<span style="color: #000000; font-weight: bold;">/</span>init.sql</pre></td></tr></table></div>

<p>　　注：如果MySQL的root用户有密码会提示，按实际情况输入即可。</p>
<p>　　K、设置虚拟域和虚拟用户的配置文件</p>
<p>　　K1、复制配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code259'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391259"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2391code259"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>docs
<span style="color: #c20cb9; font-weight: bold;">cp</span> mysql_virtual_alias_maps.cf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> mysql_virtual_domains_maps.cf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> mysql_virtual_mailbox_maps.cf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> mysql_virtual_sender_maps.cf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> mysql_virtual_limit_maps.cf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　K2、修改上面所有.cf文件中的HOST为127.0.0.1，这里以mysql_virtual_domains_maps.cf为例。其它.cf文件修改与下面相同。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code260'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391260"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2391code260"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>mysql_virtual_domains_maps.cf
&nbsp;
<span style="color: #666666; font-style: italic;">#修改前</span>
hosts = localhost
<span style="color: #666666; font-style: italic;">#修改后</span>
hosts = 127.0.0.1</pre></td></tr></table></div>

<p>　　K3、MySQL中增加一个相应extmail授权</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code261'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391261"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code261"><pre class="bash" style="font-family:monospace;">mysql<span style="color: #000000; font-weight: bold;">&gt;</span>GRANT SELECT, UPDATE ON extmail.<span style="color: #000000; font-weight: bold;">*</span> TO <span style="color: #ff0000;">'extmail'</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #ff0000;">'127.0.0.1'</span> IDENTIFIED BY <span style="color: #ff0000;">'extmail'</span>;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span>flush privileges;</pre></td></tr></table></div>

<p>　　注：Postfix连接到MySQL是通过网络地址127.0.0.1而非localhost,因为Postfix执行在chroot　jail中，并不能使用localhost来存取MySQL连接端口。如果你使用127.0.0.1，Postfix将使用TCP网路协议来连接MySQL，在chroot jail的情形下，这个方式是没有问题的。这个问题还需进一步测试，我现在的环境是关闭postfix chroot的，同样不能用localhost运行。</p>
<p>　　如果你的mail.log中报如下类似错误，就可能是上面提到的postfix chroot后引起的。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code262'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391262"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code262"><pre class="bash" style="font-family:monospace;">postfix<span style="color: #000000; font-weight: bold;">/</span>trivial-rewrite: warning: connect to mysql server localhost: Can<span style="color: #ff0000;">'T connect to local MySQL server through socket '</span><span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>mysqld<span style="color: #000000; font-weight: bold;">/</span>mysqld.sock<span style="color: #ff0000;">'</span></pre></td></tr></table></div>

<p>　　L、访问ExtMan</p>
<p>　　重启Apache</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code263'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391263"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code263"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></td></tr></table></div>

<p>　　访问http://ip或域名/extmail/，将看到webmail的登陆页，不过此时还没有加正式的用户，所以不能登陆。必须要登陆到http://ip或域名/extman/里增加一个新帐户才能登陆。</p>
<p>　　这里我们先在Extman里创建一个mike.me的虚拟域和mike的用户，用于后面的测试帐户。(创建方法略，图形界面很简单的)<br />
　　<br />
　　注：ExtMan的默认超级管理员帐户：root@extmail.org，初始密码：extmail*123*，登陆成功后，请将修改密码，以确保安全。</p>
<p>　　M、配置图形化日志</p>
<p>　　M1、复制启动脚本到/usr/local/mailgraph_ext</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code264'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391264"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code264"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>addon<span style="color: #000000; font-weight: bold;">/</span>mailgraph_ext<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mailgraph_ext</pre></td></tr></table></div>

<p>　　M2、修改/usr/local/mailgraph_ext/mailgraph-init文件中MAIL_LOG的值为mail.log(Ubuntu中Postfix产生的日志文件名与Centos的不同)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code265'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391265"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code265"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mailgraph_ext<span style="color: #000000; font-weight: bold;">/</span>mailgraph-init
<span style="color: #007800;">MAIL_LOG</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>mail.log</pre></td></tr></table></div>

<p>　　M3、启动mailgraph_ext服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code266'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391266"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code266"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mailgraph_ext<span style="color: #000000; font-weight: bold;">/</span>mailgraph-init start</pre></td></tr></table></div>

<p>　　M4、启动cmdserver(在后台显示系统信息)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code267'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391267"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code267"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>daemon<span style="color: #000000; font-weight: bold;">/</span>cmdserver <span style="color: #660033;">--daemon</span></pre></td></tr></table></div>

<p>　　M5、加入开机启动</p>
<p>　　把上面的代码加入到/etc/rc.local中，让系统自动启动。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code268'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391268"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2391code268"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.local
&nbsp;
<span style="color: #666666; font-style: italic;">#将如下两行加入到exit 0之前</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mailgraph_ext<span style="color: #000000; font-weight: bold;">/</span>mailgraph-init start
<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>extsuite<span style="color: #000000; font-weight: bold;">/</span>extman<span style="color: #000000; font-weight: bold;">/</span>daemon<span style="color: #000000; font-weight: bold;">/</span>cmdserver <span style="color: #660033;">--daemon</span></pre></td></tr></table></div>

<p>　　注：邮件系统有一定的流量后，登陆到extman里点“图形日志”即可看到图形化的日志。具体每天，周，月，年的则点击相应的图片进入即可。 这里有一点需要注意，在firefox和Chrome中都找不到对应菜单，只有IE能看到。<br />
　　N、测试SMTP认证</p>
<p>　　N1、重启下面的服务，让之前修改的配置生效</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code269'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391269"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code269"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>postfix restart
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>saslauthd restart
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>courier-authdaemon restart</pre></td></tr></table></div>

<p>　　N2、测试SMTP认证前，我们先测试下Courier-Authlib是否能成功连接mysql</p>
<p>　　在命令行下执行：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code270'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391270"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code270"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#mike@mike.me和000000分别是用户名和密码</span>
authtest <span style="color: #660033;">-s</span> <span style="color: #c20cb9; font-weight: bold;">login</span> mike<span style="color: #000000; font-weight: bold;">@</span>mike.me 000000</pre></td></tr></table></div>

<p>　　如果成功，会显示如下信息</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code271'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391271"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2391code271"><pre class="bash" style="font-family:monospace;">Authentication succeeded.
&nbsp;
     Authenticated: mike<span style="color: #000000; font-weight: bold;">@</span>mike.me  <span style="color: #7a0874; font-weight: bold;">&#40;</span>uid <span style="color: #000000;">1001</span>, gid <span style="color: #000000;">1001</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
    Home Directory: <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mailbox<span style="color: #000000; font-weight: bold;">/</span>mike.me<span style="color: #000000; font-weight: bold;">/</span>mike
           Maildir: <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mailbox<span style="color: #000000; font-weight: bold;">/</span>mike.me<span style="color: #000000; font-weight: bold;">/</span>mike<span style="color: #000000; font-weight: bold;">/</span>Maildir<span style="color: #000000; font-weight: bold;">/</span>
             Quota: 5242880S
Encrypted Password: <span style="color: #007800;">$1</span><span style="color: #007800;">$Mf4KU5iQ</span><span style="color: #007800;">$9</span>UtQqNRMdUnAuPqtkyimd.
Cleartext Password: 000000
           Options: <span style="color: #007800;">disablesmtpd</span>=<span style="color: #000000;">0</span>,<span style="color: #007800;">disablesmtp</span>=<span style="color: #000000;">0</span>,<span style="color: #007800;">disablewebmail</span>=<span style="color: #000000;">0</span>,<span style="color: #007800;">disablenetdisk</span>=<span style="color: #000000;">0</span>,<span style="color: #007800;">disableimap</span>=<span style="color: #000000;">0</span>,<span style="color: #007800;">disablepop3</span>=<span style="color: #000000;">0</span>,<span style="color: #007800;">netdiskquota</span>=5242880S</pre></td></tr></table></div>

<p>　　这一步成功了，接下来我们就进行SMTP认证测试。　　</p>
<p>　　通过以下命令获得mike@mike.me的用户名及密码的BASE64编码：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code272'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391272"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2391code272"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'use MIME::Base64; print encode_base64(&quot;mike\@mike.me&quot;)'</span>
bWlrZUBtaWtlLm1l
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'use MIME::Base64; print encode_base64(&quot;000000&quot;)'</span>
MDAwMDAw</pre></td></tr></table></div>

<p>　　在本机通过Telnet进行SMTP认证测试</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code273'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391273"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code" id="p2391code273"><pre class="bash" style="font-family:monospace;">telnet localhost <span style="color: #000000;">25</span>
&nbsp;
ehlo localhost   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">250</span>-mail.mike.me
<span style="color: #000000;">250</span>-PIPELINING
<span style="color: #000000;">250</span>-SIZE <span style="color: #000000;">10240000</span>
<span style="color: #000000;">250</span>-VRFY
<span style="color: #000000;">250</span>-ETRN
<span style="color: #000000;">250</span>-AUTH LOGIN PLAIN
<span style="color: #000000;">250</span>-AUTH=LOGIN PLAIN
<span style="color: #000000;">250</span>-ENHANCEDSTATUSCODES
<span style="color: #000000;">250</span>-8BITMIME
<span style="color: #000000;">250</span> DSN
auth <span style="color: #c20cb9; font-weight: bold;">login</span>     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">334</span> VXNlcm5hbWU6
bWlrZUBtaWtlLm1l     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>转码后的用户名<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">334</span> UGFzc3dvcmQ6
MDAwMDAw     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>转码后的密码<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">235</span> 2.7.0 Authentication successful
quit     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">221</span> 2.0.0 Bye</pre></td></tr></table></div>

<p>　　最后出现235 Authentication Successful 表明认证成功了。</p>
<p>　　SMTP认证测试通过后，在用TELNET进行发信测试。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code274'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391274"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre></td><td class="code" id="p2391code274"><pre class="bash" style="font-family:monospace;">telnet localhost <span style="color: #000000;">25</span>
&nbsp;
ehlo localhost   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">250</span>-mail.mike.me
<span style="color: #000000;">250</span>-PIPELINING
<span style="color: #000000;">250</span>-SIZE <span style="color: #000000;">10240000</span>
<span style="color: #000000;">250</span>-VRFY
<span style="color: #000000;">250</span>-ETRN
<span style="color: #000000;">250</span>-AUTH LOGIN PLAIN
<span style="color: #000000;">250</span>-AUTH=LOGIN PLAIN
<span style="color: #000000;">250</span>-ENHANCEDSTATUSCODES
<span style="color: #000000;">250</span>-8BITMIME
<span style="color: #000000;">250</span> DSN
auth <span style="color: #c20cb9; font-weight: bold;">login</span>     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">334</span> VXNlcm5hbWU6
bWlrZUBtaWtlLm1l     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>转码后的用户名<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">334</span> UGFzc3dvcmQ6
MDAwMDAw    <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>转码后的密码<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">235</span> 2.0.0 Authentication successful
mail from: mike<span style="color: #000000; font-weight: bold;">@</span>mike.me  <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>发件人邮箱地址<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.1.0 Ok
rcpt to: easylife206<span style="color: #000000; font-weight: bold;">@</span>gmail.com   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>收件人邮箱地址<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.1.5 Ok
data  <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">354</span> End data with <span style="color: #000000; font-weight: bold;">&lt;</span>CR<span style="color: #000000; font-weight: bold;">&gt;&lt;</span>LF<span style="color: #000000; font-weight: bold;">&gt;</span>.<span style="color: #000000; font-weight: bold;">&lt;</span>CR<span style="color: #000000; font-weight: bold;">&gt;&lt;</span>LF<span style="color: #000000; font-weight: bold;">&gt;</span>
Subjet: My first mail on Postfix   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>邮件主题<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Hi,Test Mail Send<span style="color: #000000; font-weight: bold;">!</span>　　<span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>邮件内容<span style="color: #7a0874; font-weight: bold;">&#41;</span>
.              <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>表示邮件内容已输入完成<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.0.0 Ok: queued <span style="color: #c20cb9; font-weight: bold;">as</span> 09D051000EA
quit     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">221</span> 2.0.0 Bye</pre></td></tr></table></div>

<p>　　去收件人邮箱看看吧，收到邮件就成功了。如有问题，请分析mail.log日志文件。</p>
<p>　　O、测试POP3</p>
<p>　　O1、首先重启下面的服务，让之前修改的配置生效</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code275'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391275"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code275"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>courier-pop restart</pre></td></tr></table></div>

<p>　　O2、在本机通过Telnet进行POP3收信测试(请首先登录extman自行建立测试帐号，这里以用户mike@mike.me，密码:000000为例)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code276'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391276"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p2391code276"><pre class="bash" style="font-family:monospace;">telnet localhost <span style="color: #000000;">110</span>
Trying 127.0.0.1...
Connected to localhost.localdomain <span style="color: #7a0874; font-weight: bold;">&#40;</span>127.0.0.1<span style="color: #7a0874; font-weight: bold;">&#41;</span>.
Escape character is <span style="color: #ff0000;">'^]'</span>.
+OK Hello there.
user mike<span style="color: #000000; font-weight: bold;">@</span>mike.me　<span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>用户名<span style="color: #7a0874; font-weight: bold;">&#41;</span>
+OK Password required.
pass 000000　　　　<span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>密码<span style="color: #7a0874; font-weight: bold;">&#41;</span>
+OK logged in.
list　　　　　　<span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
+OK POP3 clients that <span style="color: #7a0874; font-weight: bold;">break</span> here, they violate STD53.
.
quit　　<span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
+OK Bye-bye.
Connection closed by foreign host.</pre></td></tr></table></div>

<p>　　如出现以上提示信息，则表示能正确通过POP3收信。</p>
<p>　　P、配置内容和病毒过滤</p>
<p>　　SpamAssassin是目前最好的、最流行的开源反垃圾邮件软件之一。它是一个邮件过滤器，使用了多种反垃圾邮件技术。如：文本分析、贝叶斯过滤、DNS黑名单和分布式协同过滤数据库等。SpamAssassin是利用Perl来进行文字分析以达到过滤垃圾邮件之目的。它的判断方式是藉由评分方式，若这封邮件符合某种特征，则加以评分。若总得分高于某项标准，则判定为垃圾邮件。它也提供了spamc/spamd这种以Client/Server为架构之程序，如此可以有效降低SpamAssassin 对系统资源的需求。但Ubuntu预设上并不会启用这个服务,而我们还可以替而使用Amavisd-new来调用SpamAssassin的方法，也就是让Amavisd-new肩负扫毒及过滤垃圾邮件的重责。</p>
<p>　　ClamAntiVirus(ClamAV)是unix系统平台免费而且开放源代码的防毒软件，软件与病毒码的更新皆由社群免费发布。它是特地为在邮件网关上进行邮件扫描而设计的。整套软件提供了许多的实用工具，包括一个可伸缩和可升级的多线程守护进程、一个命令行扫描工具和病毒库自动升级工具。clamav-daemon使ClamAV以daemon防护的方式运行。</p>
<p>　　amavisd-new是一个连接MTA和内容检测工具(诸如病毒扫描工具和SpamAssassin)的高性能接口程序，使用perl语言写成。它一般通过SMTP、ESMTP或者LMTP和MTA进行通讯，当然也可以借助于其它外部程序进行。它可以调用外部的杀毒/反垃圾来对邮件进行过滤，很方便的实现病毒过滤，内容过滤。MTA在接收邮件后，会把邮件再转丢给amavisd-new处理，而amavisd-new则会呼叫病毒扫瞄引擎或是垃圾邮件检查程式来处理这封邮件，处理完毕后，它会将它再丢回给MTA 处理。它可以同时支援多个病毒扫瞄引擎及垃圾邮件检查程式。</p>
<p>　　amavisd-new同postfix(MTA)协同工作时表现尤佳。当它呼叫SpamAssassin进行内容过滤时，对于一封邮件只需要呼叫一次，而不管这封邮件将发往多少个收件人；同时，它亦会尽力保证实现每一位收件人的偏好设置，如接收/拒绝，检测/不检测，垃圾邮件级别等；它还会在邮件头部分插入spam相关信息。</p>
<p>　　amavisd-new和mailscanner的不同在于它使用SMTP协议通信，处理完后再回传给Postfix，整个过程不会对Postfix造成任何结构上的影响。Mailscanner必须监视Postfix的Hold队列，采用比较暴力的做法。</p>
<p>　　P1、通过APT批量安装amavisd-new、SpamAssassin、ClamAV</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code277'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391277"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code277"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> amavisd-new  clamav clamav-daemon clamav-base clamav-freshclam libclamav6 libtommath0 spamassassin clamtk \
libnet-dns-perl libmail-spf-query-perl libnet-ph-perl libnet-snpp-perl libnet-telnet-perl pyzor razor \
arj <span style="color: #c20cb9; font-weight: bold;">bzip2</span> cabextract <span style="color: #c20cb9; font-weight: bold;">cpio</span> <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #c20cb9; font-weight: bold;">gzip</span> lha nomarch pax rar unrar <span style="color: #c20cb9; font-weight: bold;">unzip</span> <span style="color: #c20cb9; font-weight: bold;">zip</span> zoo lzop arc</pre></td></tr></table></div>

<p>　　P2、配置ClamAV</p>
<p>　　将clamav加到amavis运行组里，并调整目录权限，否则clamav将无法扫描amavisd-new产生的临时文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code278'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391278"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code278"><pre class="bash" style="font-family:monospace;">usermod <span style="color: #660033;">-G</span> amavis clamav</pre></td></tr></table></div>

<p>　　P3、配置amavisd-new</p>
<p>　　通过移除@bypass_virus_checks_maps和@bypass_spam_checks_maps前的注释，来启用amavisd-new对ClamAV和SpamAssassin的调用。</p>
<p>　　编辑/etc/amavis/conf.d/15-content_filter_mode文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code279'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391279"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2391code279"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>amavis<span style="color: #000000; font-weight: bold;">/</span>conf.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">15</span>-content_filter_mode
&nbsp;
<span style="color: #666666; font-style: italic;">#去掉下面四行的注释符</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#@bypass_virus_checks_maps = (</span>
<span style="color: #666666; font-style: italic;">#   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#@bypass_spam_checks_maps = (</span>
<span style="color: #666666; font-style: italic;">#   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);</span></pre></td></tr></table></div>

<p>　　编辑/etc/amavis/conf.d/20-debian_defaults文件，修改检测到垃圾邮件和病毒邮件的规则。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code280'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391280"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2391code280"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>amavis<span style="color: #000000; font-weight: bold;">/</span>conf.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">20</span>-debian_defaults
&nbsp;
<span style="color: #666666; font-style: italic;">#修改投递/拦截的方法</span>
<span style="color: #007800;">$final_virus_destiny</span>      = D_DISCARD;
<span style="color: #007800;">$final_banned_destiny</span>     = D_DISCARD;
<span style="color: #007800;">$final_spam_destiny</span>       = D_PASS;
<span style="color: #007800;">$final_bad_header_destiny</span> = D_PASS;</pre></td></tr></table></div>

<p>　　注：$final_virus_destiny表示检测到病毒时的动作、$final_banned_destiny表示检测到受禁止的内容时的动作、$final_spam_destiny表示检测到垃圾邮件、广告邮件（spam）时的动作、$final_bad_header_destiny表示检测到不良信件时的动作。</p>
<p>　　默认有以下几种动作：D_PASS表示无论信件是否有问题，都会将信件发给收件人，D_DISCARD表示信件将被丢弃，并且不会告知收件人及发件人，D_BOUNCE表示信件不会发送给收件人，但会通知发件人邮件没有被投递，即退信，D_REJECT表示邮件不会被投递给收件人，但会通知发件人邮件被拒绝。<br />
　　<br />
　　P4、启动ClamAV和amavisd-new服务:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code281'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391281"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2391code281"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>amavis start
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>clamav-freshclam start
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>clamav-daemon start</pre></td></tr></table></div>

<p>　　P5、配置SpamAssassin</p>
<p>　　建立/etc/mailname文件，用于SpamAssassin判断邮件域</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code282'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391282"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2391code282"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span>  <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mailname
mike.me</pre></td></tr></table></div>

<p>　　P6、启用SpamAssassin</p>
<p>　　Ubuntu下SpamAssassin默认没有启用，需修改/etc/default/spamassassin文件手动启用。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code283'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391283"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2391code283"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>spamassassin
&nbsp;
<span style="color: #666666; font-style: italic;">#修改ENABLED为1</span>
&nbsp;
<span style="color: #007800;">ENABLED</span>=<span style="color: #000000;">1</span></pre></td></tr></table></div>

<p>　　P7、启动SpamAssassin服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code284'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391284"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code284"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>spamassassin start</pre></td></tr></table></div>

<p>　　Q、配置Postfix集成amavisd-new</p>
<p>　　Q1、编辑/etc/postfix/main.cf文件，增加如下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code285'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391285"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2391code285"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>main.cf
&nbsp;
<span style="color: #666666; font-style: italic;"># Content-Filter</span>
content_filter = smtp-amavis:<span style="color: #7a0874; font-weight: bold;">&#91;</span>127.0.0.1<span style="color: #7a0874; font-weight: bold;">&#93;</span>:<span style="color: #000000;">10024</span>
receive_override_options = no_address_mappings</pre></td></tr></table></div>

<p>　　注意：receive_override_options 这里必须增加，禁止地址展开/影射，否则如果遇到别名的时候会引起冗余邮件的产生。</p>
<p>　　Q2、编辑/etc/postfix/master.cf文件，增加如下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code286'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391286"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code" id="p2391code286"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>master.cf
&nbsp;
smtp-amavis unix    -    -    n    -    <span style="color: #000000;">3</span>    smtp
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtp_data_done_timeout</span>=<span style="color: #000000;">1200</span>
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtp_send_xforward_command</span>=<span style="color: #c20cb9; font-weight: bold;">yes</span>
    <span style="color: #660033;">-o</span> <span style="color: #007800;">disable_dns_lookups</span>=<span style="color: #c20cb9; font-weight: bold;">yes</span>
    <span style="color: #660033;">-o</span> <span style="color: #007800;">max_use</span>=<span style="color: #000000;">50</span>
&nbsp;
127.0.0.1:<span style="color: #000000;">10025</span> inet    n       -       n       -       -       smtpd
    <span style="color: #660033;">-o</span> <span style="color: #007800;">content_filter</span>=
    <span style="color: #660033;">-o</span> <span style="color: #007800;">local_recipient_maps</span>=
    <span style="color: #660033;">-o</span> <span style="color: #007800;">relay_recipient_maps</span>=
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtpd_restriction_classes</span>=
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtpd_client_restrictions</span>=
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtpd_helo_restrictions</span>=
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtpd_sender_restrictions</span>=
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtpd_recipient_restrictions</span>=permit_mynetworks,reject
    <span style="color: #660033;">-o</span> <span style="color: #007800;">mynetworks</span>=127.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span>
    <span style="color: #660033;">-o</span> <span style="color: #007800;">strict_rfc821_envelopes</span>=<span style="color: #c20cb9; font-weight: bold;">yes</span>
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtpd_error_sleep_time</span>=<span style="color: #000000;">0</span>
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtpd_soft_error_limit</span>=<span style="color: #000000;">1001</span>
    <span style="color: #660033;">-o</span> <span style="color: #007800;">smtpd_hard_error_limit</span>=<span style="color: #000000;">1000</span>
    <span style="color: #660033;">-o</span> <span style="color: #007800;">receive_override_options</span>=no_unknown_recipient_checks,no_header_body_checks</pre></td></tr></table></div>

<p>　　Q3、重启postfix</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code287'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391287"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code287"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>postfix restart</pre></td></tr></table></div>

<p>　　Q4、重新启动amavisd</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code288'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391288"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code288"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>amavis restart</pre></td></tr></table></div>

<p>　　Q5、测试SpamAssassin</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code289'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391289"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre></td><td class="code" id="p2391code289"><pre class="bash" style="font-family:monospace;">telnet localhost <span style="color: #000000;">25</span>
&nbsp;
ehlo localhost   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">250</span>-mail.mike.me
<span style="color: #000000;">250</span>-PIPELINING
<span style="color: #000000;">250</span>-SIZE <span style="color: #000000;">10240000</span>
<span style="color: #000000;">250</span>-VRFY
<span style="color: #000000;">250</span>-ETRN
<span style="color: #000000;">250</span>-AUTH LOGIN PLAIN
<span style="color: #000000;">250</span>-AUTH=LOGIN PLAIN
<span style="color: #000000;">250</span>-ENHANCEDSTATUSCODES
<span style="color: #000000;">250</span>-8BITMIME
<span style="color: #000000;">250</span> DSN
auth <span style="color: #c20cb9; font-weight: bold;">login</span>     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">334</span> VXNlcm5hbWU6
bWlrZUBtaWtlLm1l     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>转码后的用户名<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">334</span> UGFzc3dvcmQ6
MDAwMDAw    <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>转码后的密码<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">235</span> 2.0.0 Authentication successful
mail from: mike<span style="color: #000000; font-weight: bold;">@</span>mike.me  <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>发件人邮箱地址<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.1.0 Ok
rcpt to: easylife206<span style="color: #000000; font-weight: bold;">@</span>gmail.com   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>收件人邮箱地址<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.1.5 Ok
data  <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">354</span> End data with <span style="color: #000000; font-weight: bold;">&lt;</span>CR<span style="color: #000000; font-weight: bold;">&gt;&lt;</span>LF<span style="color: #000000; font-weight: bold;">&gt;</span>.<span style="color: #000000; font-weight: bold;">&lt;</span>CR<span style="color: #000000; font-weight: bold;">&gt;&lt;</span>LF<span style="color: #000000; font-weight: bold;">&gt;</span>
Subjet: Test spam mail   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>邮件主题<span style="color: #7a0874; font-weight: bold;">&#41;</span>
XJS<span style="color: #000000; font-weight: bold;">*</span>C4JDBQADN1.NSBN3<span style="color: #000000; font-weight: bold;">*</span>2IDNEN<span style="color: #000000; font-weight: bold;">*</span>GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL<span style="color: #000000; font-weight: bold;">*</span>C.34X　　<span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>邮件内容<span style="color: #7a0874; font-weight: bold;">&#41;</span>
.              <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>表示邮件内容已输入完成<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.0.0 Ok: queued <span style="color: #c20cb9; font-weight: bold;">as</span> 0211E10039D
quit     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">221</span> 2.0.0 Bye</pre></td></tr></table></div>

<p>　　在邮件日志里，应该有相应的信息出现：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code290'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391290"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code290"><pre class="bash" style="font-family:monospace;">Sep  <span style="color: #000000;">5</span> <span style="color: #000000;">23</span>:<span style="color: #000000;">59</span>:<span style="color: #000000;">22</span> mail amavis<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">9932</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>: <span style="color: #7a0874; font-weight: bold;">&#40;</span>09932-01<span style="color: #7a0874; font-weight: bold;">&#41;</span> Blocked SPAM, LOCAL <span style="color: #7a0874; font-weight: bold;">&#91;</span>127.0.0.1<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>127.0.0.1<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&lt;</span>mike<span style="color: #000000; font-weight: bold;">@</span>mike.me<span style="color: #000000; font-weight: bold;">&gt;</span> -<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">&lt;</span>easylife206<span style="color: #000000; font-weight: bold;">@</span>gmail.com<span style="color: #000000; font-weight: bold;">&gt;</span>, quarantine: c<span style="color: #000000; font-weight: bold;">/</span>spam-ccafBBhP63Bd.gz, Message-ID: <span style="color: #000000; font-weight: bold;">&lt;</span>20110905155750.0211E10039D<span style="color: #000000; font-weight: bold;">@</span>mail.mike.me<span style="color: #000000; font-weight: bold;">&gt;</span>, mail_id: ccafBBhP63Bd, Hits: <span style="color: #000000;">1001.975</span>, <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">403</span>, <span style="color: #000000;">7881</span> ms</pre></td></tr></table></div>

<p>　　如果看到类似这样的日志，表明SpamAssassin工作正常。</p>
<p>　　Q6、测试Clamav</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code291'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391291"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre></td><td class="code" id="p2391code291"><pre class="bash" style="font-family:monospace;">telnet localhost <span style="color: #000000;">25</span>
&nbsp;
ehlo localhost   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">250</span>-mail.mike.me
<span style="color: #000000;">250</span>-PIPELINING
<span style="color: #000000;">250</span>-SIZE <span style="color: #000000;">10240000</span>
<span style="color: #000000;">250</span>-VRFY
<span style="color: #000000;">250</span>-ETRN
<span style="color: #000000;">250</span>-AUTH LOGIN PLAIN
<span style="color: #000000;">250</span>-AUTH=LOGIN PLAIN
<span style="color: #000000;">250</span>-ENHANCEDSTATUSCODES
<span style="color: #000000;">250</span>-8BITMIME
<span style="color: #000000;">250</span> DSN
auth <span style="color: #c20cb9; font-weight: bold;">login</span>     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">334</span> VXNlcm5hbWU6
bWlrZUBtaWtlLm1l     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>转码后的用户名<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">334</span> UGFzc3dvcmQ6
MDAwMDAw    <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>转码后的密码<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">235</span> 2.0.0 Authentication successful
mail from: mike<span style="color: #000000; font-weight: bold;">@</span>mike.me  <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>发件人邮箱地址<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.1.0 Ok
rcpt to: easylife206<span style="color: #000000; font-weight: bold;">@</span>gmail.com   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>收件人邮箱地址<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.1.5 Ok
data  <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">354</span> End data with <span style="color: #000000; font-weight: bold;">&lt;</span>CR<span style="color: #000000; font-weight: bold;">&gt;&lt;</span>LF<span style="color: #000000; font-weight: bold;">&gt;</span>.<span style="color: #000000; font-weight: bold;">&lt;</span>CR<span style="color: #000000; font-weight: bold;">&gt;&lt;</span>LF<span style="color: #000000; font-weight: bold;">&gt;</span>
Subjet: Test virus mail   <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>邮件主题<span style="color: #7a0874; font-weight: bold;">&#41;</span>
X5O<span style="color: #000000; font-weight: bold;">!</span>P<span style="color: #000000; font-weight: bold;">%@</span>AP<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4</span>\PZX54<span style="color: #7a0874; font-weight: bold;">&#40;</span>P^<span style="color: #7a0874; font-weight: bold;">&#41;</span>7CC<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #007800;">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span style="color: #000000; font-weight: bold;">!</span><span style="color: #007800;">$H</span>+H<span style="color: #000000; font-weight: bold;">*</span>　　<span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>邮件内容<span style="color: #7a0874; font-weight: bold;">&#41;</span>
.              <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容<span style="color: #7a0874; font-weight: bold;">&#40;</span>表示邮件内容已输入完成<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">250</span> 2.0.0 Ok: queued <span style="color: #c20cb9; font-weight: bold;">as</span> 32D0410039D
quit     <span style="color: #000000; font-weight: bold;">&lt;&lt;</span>输入内容
<span style="color: #000000;">221</span> 2.0.0 Bye</pre></td></tr></table></div>

<p>　　在邮件日志里，应该有相应的信息出现：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code292'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391292"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code292"><pre class="bash" style="font-family:monospace;">Sep  <span style="color: #000000;">6</span> 00:04:<span style="color: #000000;">52</span> mail amavis<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">9933</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>: <span style="color: #7a0874; font-weight: bold;">&#40;</span>09933-01<span style="color: #7a0874; font-weight: bold;">&#41;</span> Blocked INFECTED <span style="color: #7a0874; font-weight: bold;">&#40;</span>Eicar-Test-Signature<span style="color: #7a0874; font-weight: bold;">&#40;</span>69630e4574ec6798239b091cda43dca0:<span style="color: #000000;">69</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>, LOCAL <span style="color: #7a0874; font-weight: bold;">&#91;</span>127.0.0.1<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>127.0.0.1<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&lt;</span>mike<span style="color: #000000; font-weight: bold;">@</span>mike.me<span style="color: #000000; font-weight: bold;">&gt;</span> -<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">&lt;</span>easylife206<span style="color: #000000; font-weight: bold;">@</span>gmail.com<span style="color: #000000; font-weight: bold;">&gt;</span>, quarantine: Y<span style="color: #000000; font-weight: bold;">/</span>virus-YeGbMJs5v+YA, Message-ID: <span style="color: #000000; font-weight: bold;">&lt;</span>20110905160420.32D0410039D<span style="color: #000000; font-weight: bold;">@</span>mail.mike.me<span style="color: #000000; font-weight: bold;">&gt;</span>, mail_id: YeGbMJs5v+YA, Hits: -, <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">404</span>, <span style="color: #000000;">305</span> ms</pre></td></tr></table></div>

<p>　　如果看到类似这样的日志，表明Clamav+Amavisd-new工作正常。 </p>
<p>　　Q7、对本地发出的邮件不进行内容过滤</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code293'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391293"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code" id="p2391code293"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span>  <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>amavis<span style="color: #000000; font-weight: bold;">/</span>conf.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">25</span>-amavis_helpers 加入
&nbsp;
<span style="color: #007800;">$policy_bank</span><span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #ff0000;">'MYNETS'</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> = <span style="color: #7a0874; font-weight: bold;">&#123;</span>   <span style="color: #666666; font-style: italic;"># mail originating from @mynetworks</span>
  originating =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">1</span>,  <span style="color: #666666; font-style: italic;"># is true in MYNETS by default, but let's make it explicit</span>
  os_fingerprint_method =<span style="color: #000000; font-weight: bold;">&gt;</span> undef,  <span style="color: #666666; font-style: italic;"># don't query p0f for internal clients</span>
  allow_disclaimers =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">1</span>,  <span style="color: #666666; font-style: italic;"># enables disclaimer insertion if available</span>
  bypass_spam_checks_maps =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>,
  bypass_banned_checks_maps =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>,
  bypass_header_checks_maps =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>,
  bypass_virus_checks_maps  =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>,
<span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></td></tr></table></div>

<p>　　bypass_virus_checks_maps表示不对检测到病毒时邮件做任何处理的动作<br />
　　bypass_spam_checks_maps表示不对检测到垃圾邮件、广告邮件(spam)做任何处理的动作<br />
　　bypass_banned_checks_maps表示不对检测到受禁止的邮件内容时做任何处理的动作<br />
　　bypass_header_checks_maps 表示不对检测到不良信件时做任何处理的动作</p>
<p>　　重新启动amavisd</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code294'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391294"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code294"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>amavis restart</pre></td></tr></table></div>

<p>　　R、加入SPF记录</p>
<p>　　R1、什么是 SPF Record</p>
<p>　　在垃圾邮件的伎俩中，伪造发件人地址，使其看起来象一个合法的地址，是常见的一种方法。特别是网络钓鱼的邮件，试图欺骗收件人透露信用卡号码、QQ密码、Paypal 密码等帐号资料。这些邮件的“发件人”的地址，一般都经过了伪装，使其看起来看一个合法的（如银行、网站服务商等）地址。</p>
<p>　　而SPF，正是近年来解决邮件防伪和anti-spam的一个新标准。SPF全称为Sender Policy Framework，即发送方策略框架。你只需要在你的域名DNS中发布一条SPF记录，这条记录标识了经过授权的电子邮件发送服务器。电子邮件接收系统，会查询对应域名的SPF记录，检查邮件是否来自真正的授权过的邮件发送服务器。如果是垃圾邮件、钓鱼邮件伪造的”发件人”地址，则他们的邮件会无法通过SPF校验。</p>
<p>　　R2、添加SPF Record</p>
<p>　　添加SPF Record其实很简单，只需要在你域名的DNS管理界面中，加入一条 TXT 记录即可。TXT记录的内容如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code295'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391295"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code295"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">v</span>=spf1 include:mike.me ~all</pre></td></tr></table></div>

<p>　　R3、测试SPF记录是否生效</p>
<p>　　Linux方法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code296'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391296"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2391code296"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#host -t txt mike.me</span>
&nbsp;
mike.me descriptive text <span style="color: #ff0000;">&quot;v=spf1 include:mike.me ~all&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#dig -t txt mike.me</span>
&nbsp;
mike.me descriptive text <span style="color: #ff0000;">&quot;v=spf1 include:mike.me ~all&quot;</span></pre></td></tr></table></div>

<p>　　Windows方法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code297'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391297"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2391code297"><pre class="bash" style="font-family:monospace;">nslookup <span style="color: #660033;">-qt</span>=txt mike.me
&nbsp;
mike.me     text =
&nbsp;
<span style="color: #ff0000;">&quot;v=spf1 include:mike.me ~all&quot;</span></pre></td></tr></table></div>

<p>　　更多SPF语法可参考</p>
<p>　　http://www.openspf.org/SPF_Record_Syntax<br />
　　http://www.oschina.net/question/54100_16254</p>
<p>　　S、一些Web检查工具</p>
<p>　　黑名单检查</p>
<p>　　http://www.mxtoolbox.com/</p>
<p>　　通过这个不但可以检查各种DNS设置，还可以检测到你的IP地址，是否已经给列入黑名单。</p>
<p>    检测MX记录 </p>
<p>　　http://zmailer.org/mxverify.html</p>
<p>　　检测SPF记录 </p>
<p>　　http://www.openspf.org/</p>
<p>　　测试spf和dkim记录 </p>
<p>　　http://www.brandonchecketts.com/emailtest.php </p>
<p>　　T、常用Postfix管理命令</p>
<p>　　常用队列邮件管理操作</p>
<p>　　列出队列里的所有邮件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code298'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391298"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code298"><pre class="bash" style="font-family:monospace;">postqueue <span style="color: #660033;">-p</span></pre></td></tr></table></div>

<p>　　删除队列邮件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code299'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391299"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2391code299"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#根据ID删除一封邮件</span>
postsuper <span style="color: #660033;">-d</span> ID
<span style="color: #666666; font-style: italic;">#删除所有邮件</span>
postsuper <span style="color: #660033;">-d</span> ALL 
<span style="color: #666666; font-style: italic;">#清空邮件队列</span>
postqueue <span style="color: #660033;">-f</span></pre></td></tr></table></div>

<p>　　根据发送者来删除队列邮件，替换 “info@otherdomain.com”就可以</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code300'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391300"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code300"><pre class="bash" style="font-family:monospace;">mailq <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">tail</span> +<span style="color: #000000;">2</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> ‘BEGIN <span style="color: #7a0874; font-weight: bold;">&#123;</span> RS = “” <span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #666666; font-style: italic;"># $7=sender, $8=recipient1, $9=recipient2{ if ($7 == “info@otherdomain.com” &amp;&amp; $9 == “”)print $1 }‘ | tr -d ‘*!’ | postsuper -d -</span></pre></td></tr></table></div>

<p>　　根据收件人删除，替换you@yourdomain.com 就可以</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code301'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391301"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code301"><pre class="bash" style="font-family:monospace;">mailq <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">tail</span> +<span style="color: #000000;">2</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> ‘BEGIN <span style="color: #7a0874; font-weight: bold;">&#123;</span> RS = “” <span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #666666; font-style: italic;"># $7=sender, $8=recipient1, $9=recipient2{ if ($8 == “you@yourdomain.com” &amp;&amp; $9 == “”)print $1 }‘ | tr -d ‘*!’ | postsuper -d -</span></pre></td></tr></table></div>

<p>　　根据发送服务器的hostname来删除，替换掉 senderhostname</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code302'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391302"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code302"><pre class="bash" style="font-family:monospace;">mailq <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> senderhostname <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> ‘<span style="color: #7a0874; font-weight: bold;">&#123;</span> print <span style="color: #007800;">$1</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> ‘<span style="color: #000000; font-weight: bold;">|</span> postsuper <span style="color: #660033;">-d</span> -</pre></td></tr></table></div>

<p>　　如果当前的系统队列很长，负担很重，我们可以把队列里的邮件先hold(保留邮件)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code303'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391303"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code303"><pre class="bash" style="font-family:monospace;">postsuper <span style="color: #660033;">-h</span> ALL</pre></td></tr></table></div>

<p>　　当处理完后，再把队列移回来(重新排队)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code304'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391304"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code304"><pre class="bash" style="font-family:monospace;">postsuper <span style="color: #660033;">-r</span> ALL</pre></td></tr></table></div>

<p>　　显示邮件内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code305'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391305"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code305"><pre class="bash" style="font-family:monospace;">postcat <span style="color: #660033;">-q</span> ID</pre></td></tr></table></div>

<p>　　启动postfix</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code306'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391306"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code306"><pre class="bash" style="font-family:monospace;">postfix start</pre></td></tr></table></div>

<p>　　停止postfix</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code307'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391307"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code307"><pre class="bash" style="font-family:monospace;">postfix stop</pre></td></tr></table></div>

<p>　　重新读取postfix配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code308'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391308"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code308"><pre class="bash" style="font-family:monospace;">postfix reload</pre></td></tr></table></div>

<p>　　立即投递队列中所有邮件(慎用)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code309'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391309"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code309"><pre class="bash" style="font-family:monospace;">postfix flush</pre></td></tr></table></div>

<p>　　修复队列以及任何权限错误</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2391code310'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2391310"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2391code310"><pre class="bash" style="font-family:monospace;">postfix check</pre></td></tr></table></div>

<p>　　U、参考文档</p>
<p>　　http://www.google.com<br />
　　http://www.yiyou.org/docs/debian_postfix_01/<br />
　　http://forum.ubuntu.org.cn/viewtopic.php?f=54&#038;t=209753<br />
　　http://wiki.ubuntu.org.cn/IRedMail#SPF.E8.AE.B0.E5.BD.95<br />
　　http://wiki.extmail.org/extmail_solution_for_linux_centos-5</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-configure-postfix-mailserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04下实现双网卡负载均衡</title>
		<link>http://www.mike.org.cn/articles/ubuntu-nic-balancing/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-nic-balancing/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 08:53:12 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[bonding]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2388</guid>
		<description><![CDATA[　　什么是bonding 　　Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用，用于网络负载均衡及网络冗余。 　　 　　bonding的工作模式 　　bonding一共有7种工作模式 　　0：(balance-rr) Round-robin policy: (平衡轮询策略)：传输数据包顺序是依次传输，直到最后一个传输完毕， 此模式提供负载平衡和容错能力。 　　1：(active-backup) Active-backup policy:(活动备份策略)：只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。 　　2：(balance-xor) XOR policy:(平衡策略)：传输根据[(源MAC地址xor目标MAC地址)mod 设备数量]的布尔值选择传输设备。 此模式提供负载平衡和容错能力。 　　3：(broadcast) Broadcast policy:(广播策略)：将所有数据包传输给所有设备。 此模式提供了容错能力。 　　4：(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合：创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持；如果使用交换机，交换机也需启用 802.3ad 模式。 　　5：(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)：通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收，如果接受的设备传不通就用另一个设备接管当前设备正在处理的mac地址。 　　6：(balance-alb) Adaptive load balancing: (适配器负载均衡)：包括mode5，由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP 在本地系统发送出的请求，用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。 　　安装软件 　　ifenslave一种粘合和分离式的软件，可以将数据包有效的分配到bonding驱动。 ?View Code [...]]]></description>
			<content:encoded><![CDATA[<p>　　什么是bonding</p>
<p>　　Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用，用于网络负载均衡及网络冗余。<br />
　　<br />
　　bonding的工作模式</p>
<p>　　bonding一共有7种工作模式</p>
<p>　　0：(balance-rr) Round-robin policy: (平衡轮询策略)：传输数据包顺序是依次传输，直到最后一个传输完毕， 此模式提供负载平衡和容错能力。<br />
　　1：(active-backup) Active-backup policy:(活动备份策略)：只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。<br />
　　2：(balance-xor) XOR policy:(平衡策略)：传输根据[(源MAC地址xor目标MAC地址)mod 设备数量]的布尔值选择传输设备。 此模式提供负载平衡和容错能力。<span id="more-2388"></span><br />
　　3：(broadcast) Broadcast policy:(广播策略)：将所有数据包传输给所有设备。 此模式提供了容错能力。<br />
　　4：(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合：创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持；如果使用交换机，交换机也需启用 802.3ad 模式。<br />
　　5：(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)：通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收，如果接受的设备传不通就用另一个设备接管当前设备正在处理的mac地址。<br />
　　6：(balance-alb) Adaptive load balancing: (适配器负载均衡)：包括mode5，由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP 在本地系统发送出的请求，用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。</p>
<p>　　安装软件</p>
<p>　　ifenslave一种粘合和分离式的软件，可以将数据包有效的分配到bonding驱动。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2388code315'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2388315"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2388code315"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ifenslave</pre></td></tr></table></div>

<p>　　修改配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2388code316'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2388316"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code" id="p2388code316"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>network<span style="color: #000000; font-weight: bold;">/</span>interfaces
&nbsp;
<span style="color: #666666; font-style: italic;"># This file describes the network interfaces available on your system</span>
<span style="color: #666666; font-style: italic;"># and how to activate them. For more information, see interfaces(5).</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># The loopback network interface</span>
auto lo
iface lo inet loopback
&nbsp;
<span style="color: #666666; font-style: italic;">#注释掉原来的eth0，eth1配置</span>
<span style="color: #666666; font-style: italic;"># The primary network interface</span>
<span style="color: #666666; font-style: italic;">#auto eth0</span>
<span style="color: #666666; font-style: italic;">#iface eth0 inet dhcp</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#auto eth1</span>
<span style="color: #666666; font-style: italic;">#iface eth1 inet dhcp</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#这里配置模式为轮询策略，模式代号是0，轮询间隔100ms(毫秒)。</span>
up ifenslave bond0 eth0 eth1
down ifenslave bond0 <span style="color: #660033;">-d</span> eth0 eth1
bond-mode <span style="color: #000000;">0</span>
bond-miimon <span style="color: #000000;">100</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#配置bond的IP</span>
auto bond0
iface bond0 inet static
address 192.168.0.201
netmask 255.255.255.0
gateway 192.168.0.1
&nbsp;
<span style="color: #666666; font-style: italic;">#配置bond的虚拟IP(非必须)</span>
auto bond0:<span style="color: #000000;">1</span>
iface bond0:<span style="color: #000000;">1</span> inet static
address 192.168.1.201
netmask 255.255.255.0
gateway 192.168.1.1</pre></td></tr></table></div>

<p>　　加载bonding模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2388code317'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2388317"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2388code317"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>modules
bonding</pre></td></tr></table></div>

<p>　　重启计算机，如果成功，bond0、eth0、eth1的MAC地址均会变成原来eth0的MAC。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2388code318'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2388318"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2388code318"><pre class="bash" style="font-family:monospace;">shutdown <span style="color: #660033;">-r</span> now</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-nic-balancing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>批量杀死MySQL连接的几种方法</title>
		<link>http://www.mike.org.cn/articles/batch-kill-mysql-connection/</link>
		<comments>http://www.mike.org.cn/articles/batch-kill-mysql-connection/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 08:59:21 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2382</guid>
		<description><![CDATA[　　方法一 　　通过information_schema.processlist表中的连接信息生成需要处理掉的MySQL连接的语句临时文件，然后执行临时文件中生成的指令。 ?View Code BASH1 2 3 4 5 6 7 8 9 10 11 12 13 14 mysql&#62; select concat&#40;'KILL ',id,';'&#41; from information_schema.processlist where user='root'; +------------------------+ &#124; concat&#40;'KILL ',id,';'&#41; &#124; +------------------------+ &#124; KILL 3101; &#124; &#124; KILL 2946; &#124; +------------------------+ 2 rows in set &#40;0.00 sec&#41; &#160; mysql&#62;select concat&#40;'KILL ',id,';'&#41; from information_schema.processlist where user='root' [...]]]></description>
			<content:encoded><![CDATA[<p>　　方法一</p>
<p>　　通过information_schema.processlist表中的连接信息生成需要处理掉的MySQL连接的语句临时文件，然后执行临时文件中生成的指令。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2382code324'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2382324"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code" id="p2382code324"><pre class="bash" style="font-family:monospace;">mysql<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">select</span> concat<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'KILL '</span>,<span style="color: #c20cb9; font-weight: bold;">id</span>,<span style="color: #ff0000;">';'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> from information_schema.processlist where <span style="color: #007800;">user</span>=<span style="color: #ff0000;">'root'</span>;
+------------------------+
<span style="color: #000000; font-weight: bold;">|</span> concat<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'KILL '</span>,<span style="color: #c20cb9; font-weight: bold;">id</span>,<span style="color: #ff0000;">';'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">|</span>
+------------------------+
<span style="color: #000000; font-weight: bold;">|</span> KILL <span style="color: #000000;">3101</span>;             <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span> KILL <span style="color: #000000;">2946</span>;             <span style="color: #000000; font-weight: bold;">|</span>
+------------------------+
<span style="color: #000000;">2</span> rows <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.00</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">select</span> concat<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'KILL '</span>,<span style="color: #c20cb9; font-weight: bold;">id</span>,<span style="color: #ff0000;">';'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> from information_schema.processlist where <span style="color: #007800;">user</span>=<span style="color: #ff0000;">'root'</span> into outfile <span style="color: #ff0000;">'/tmp/a.txt'</span>;
Query OK, <span style="color: #000000;">2</span> rows affected <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.00</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #7a0874; font-weight: bold;">source</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>a.txt;
Query OK, <span style="color: #000000;">0</span> rows affected <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.00</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></td></tr></table></div>

<p><span id="more-2382"></span><br />
　　方法二</p>
<p>　　杀掉当前所有的MySQL连接</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2382code325'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2382325"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2382code325"><pre class="bash" style="font-family:monospace;">mysqladmin <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span> processlist<span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #660033;">-F</span> <span style="color: #ff0000;">&quot;|&quot;</span> <span style="color: #ff0000;">'{print $2}'</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">1</span> mysqladmin <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span> <span style="color: #c20cb9; font-weight: bold;">kill</span></pre></td></tr></table></div>

<p>　　杀掉指定用户运行的连接，这里为Mike</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2382code326'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2382326"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2382code326"><pre class="bash" style="font-family:monospace;">mysqladmin <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span> processlist<span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #660033;">-F</span> <span style="color: #ff0000;">&quot;|&quot;</span> <span style="color: #ff0000;">'{if($3 == &quot;Mike&quot;)print $2}'</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">1</span> mysqladmin <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span> <span style="color: #c20cb9; font-weight: bold;">kill</span></pre></td></tr></table></div>

<p>　　方法三</p>
<p>　　通过SHEL脚本实现</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2382code327'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2382327"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2382code327"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#杀掉锁定的MySQL连接</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #c20cb9; font-weight: bold;">id</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span>mysqladmin processlist<span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-i</span> locked<span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">do</span>
   mysqladmin <span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #800000;">${id}</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></td></tr></table></div>

<p>　　方法四</p>
<p>　　通过Maatkit工具集中提供的mk-kill命令进行</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2382code328'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2382328"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2382code328"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#杀掉超过60秒的sql</span>
mk-kill <span style="color: #660033;">-busy-time</span> <span style="color: #000000;">60</span> <span style="color: #660033;">-kill</span>
<span style="color: #666666; font-style: italic;">#如果你想先不杀，先看看有哪些sql运行超过60秒</span>
mk-kill <span style="color: #660033;">-busy-time</span> <span style="color: #000000;">60</span> <span style="color: #660033;">-print</span>
<span style="color: #666666; font-style: italic;">#如果你想杀掉，同时输出杀掉了哪些进程</span>
mk-kill <span style="color: #660033;">-busy-time</span> <span style="color: #000000;">60</span> <span style="color: #660033;">-print</span> –<span style="color: #c20cb9; font-weight: bold;">kill</span></pre></td></tr></table></div>

<p>　　mk-kill更多用法可参考：</p>
<p>　　http://www.maatkit.org/doc/mk-kill.html<br />
　　http://www.sbear.cn/archives/426</p>
<p>　　Maatkit工具集的其它用法可参考：</p>
<p>　　http://code.google.com/p/maatkit/wiki/TableOfContents?tm=6</p>
<p>　　参考文档：</p>
<p>　　http://www.google.com<br />
　　http://www.orczhou.com/index.php/2010/10/kill-mysql-connectio-in-batch/<br />
　　http://www.mysqlperformanceblog.com/2009/05/21/mass-killing-of-mysql-connections/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/batch-kill-mysql-connection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>理解Upstart</title>
		<link>http://www.mike.org.cn/articles/understand-upstart/</link>
		<comments>http://www.mike.org.cn/articles/understand-upstart/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 14:55:33 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[upstart]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2375</guid>
		<description><![CDATA[　　Ubuntu从6.10开始逐步用Upstart()代替原来的SysVinit进行服务进程的管理。RHEL(CentOS)也都从版本6开始转用Upstart代替以往的init.d/rcX.d的线性启动方式。 　　SysVinit守护进程(sysvinit软件包)是一个基于运行级别的系统，它使用运行级别(单用户、多用户以及其他更多级别)和链接(位于/etc /rc?.d目录中，分别链接到/etc/init.d中的init脚本)来启动和关闭系统服务。SysV启动是线性、顺序的。一个S20的服务必须要等待S19启动完成才能启动，如果一个启动要花很多时间，那么后面的服务就算完全无关，也必须要等。 　　UpStart(Upstart init daemon)是基于事件的启动系统，它使用事件来启动和关闭系统服务。Upstart是是并行的，只要事件发生,服务可以并发启动。这种方式无疑要优越得多，因为它可以充分利用现在计算机多核的特点，大大减少启动所需的时间。 　　Upstart是基于事件的，当系统中的什么情况发生变化时,它会运行某个特定的程序。这里被运行的程序多半是用来启动或终止服务的脚本。这个配置方式和System V在系统进入某个运行级别的时候运行init脚本的链接的概念实际上是非常类似的。只不过Upstart更加灵活一些，Upstart不仅能在运行级别改变的时候启动或终止服务,也能在接收到系统发生其他改变的信息的时候启动或终止服务。这些系统的改变被称为“事件”。例如，当Upstart从udev接收到运行时文件系统加载、打印机安装或其他类似的设备添加或删除的信息，并采取相应的行动。Upstart也可以在系统启动、关闭或某个任务状态改变的时候启动或关闭服务。 　　 　　一、作业(job) 　　一个作业(job)是init可以理解的一系列指令。典型的指令包括一个程序(二进制文件或是脚本)和事件的名称。Upstart init daemon会在事件触发的时候运行相应的作业。用户也可以分别手动用initctl start和stop 命令手动启动或终止某项工作。 　　作业又可以分为任务作业(Task)、服务作业(Services)、抽象作业(Abstact Job)。 　　任务作业是有确定的生命周期和终止状态的，运行并在执行结束后返回到等待状态的作业。例如：删除一个文件。 　　服务作业是那些长期运行的进程，例如守护进程，通常不会自己终止。比如数据库、web服务器、ftp服务器等就被实现为服务。 　　抽象作业是没有exec节或script节的作业，这样的作业仍然可以被启动和终止，但是不会被分配PID。这样作业启动后如果没有被管理员终止，会永久的运行。抽象作业只存在于Upstart自己内部，但有时个它非常有用，例如定义“永久运行”的作业，用来同步等。 　　作业的10种状态： 　　waiting: 初始状态。 　　starting: 作业开始启动。 　　pre-start: 运行pre-start配置节。 　　spawned: 运行script或exec节。 　　post-start: 运行post-start节。 　　running: 运行完post-start节之后的临时状态，表示作业正在运行(但可能没有关联的PID)。 　　pre-stop:运行pre-stop节。 　　stopping:运行完pre-stop节之后的临时状态。 　　killed: 作业要被终止。 　　post-stop: 运行post-stop节。 　　作业的状态可通过inictl status命令输出的中status域来显示给用户。 ?View Code BASH1 2 #initctl status mysql mysql start/running, process 875 　　init daemon会监测每个服务的状态,如果服务出现问题会重启服务,在某些事件触发时或手工停止时会杀死服务。 　　Upstart [...]]]></description>
			<content:encoded><![CDATA[<p>　　Ubuntu从6.10开始逐步用Upstart()代替原来的SysVinit进行服务进程的管理。RHEL(CentOS)也都从版本6开始转用Upstart代替以往的init.d/rcX.d的线性启动方式。</p>
<p>　　SysVinit守护进程(sysvinit软件包)是一个基于运行级别的系统，它使用运行级别(单用户、多用户以及其他更多级别)和链接(位于/etc /rc?.d目录中，分别链接到/etc/init.d中的init脚本)来启动和关闭系统服务。SysV启动是线性、顺序的。一个S20的服务必须要等待S19启动完成才能启动，如果一个启动要花很多时间，那么后面的服务就算完全无关，也必须要等。</p>
<p>　　UpStart(Upstart init daemon)是基于事件的启动系统，它使用事件来启动和关闭系统服务。Upstart是是并行的，只要事件发生,服务可以并发启动。这种方式无疑要优越得多，因为它可以充分利用现在计算机多核的特点，大大减少启动所需的时间。<span id="more-2375"></span></p>
<p>　　Upstart是基于事件的，当系统中的什么情况发生变化时,它会运行某个特定的程序。这里被运行的程序多半是用来启动或终止服务的脚本。这个配置方式和System V在系统进入某个运行级别的时候运行init脚本的链接的概念实际上是非常类似的。只不过Upstart更加灵活一些，Upstart不仅能在运行级别改变的时候启动或终止服务,也能在接收到系统发生其他改变的信息的时候启动或终止服务。这些系统的改变被称为“事件”。例如，当Upstart从udev接收到运行时文件系统加载、打印机安装或其他类似的设备添加或删除的信息，并采取相应的行动。Upstart也可以在系统启动、关闭或某个任务状态改变的时候启动或关闭服务。<br />
　　<br />
　　一、作业(job)</p>
<p>　　一个作业(job)是init可以理解的一系列指令。典型的指令包括一个程序(二进制文件或是脚本)和事件的名称。Upstart init daemon会在事件触发的时候运行相应的作业。用户也可以分别手动用initctl start和stop 命令手动启动或终止某项工作。</p>
<p>　　作业又可以分为任务作业(Task)、服务作业(Services)、抽象作业(Abstact Job)。</p>
<p>　　任务作业是有确定的生命周期和终止状态的，运行并在执行结束后返回到等待状态的作业。例如：删除一个文件。</p>
<p>　　服务作业是那些长期运行的进程，例如守护进程，通常不会自己终止。比如数据库、web服务器、ftp服务器等就被实现为服务。</p>
<p>　　抽象作业是没有exec节或script节的作业，这样的作业仍然可以被启动和终止，但是不会被分配PID。这样作业启动后如果没有被管理员终止，会永久的运行。抽象作业只存在于Upstart自己内部，但有时个它非常有用，例如定义“永久运行”的作业，用来同步等。</p>
<p>　　作业的10种状态：</p>
<p>　　waiting: 初始状态。<br />
　　starting: 作业开始启动。<br />
　　pre-start: 运行pre-start配置节。<br />
　　spawned: 运行script或exec节。<br />
　　post-start: 运行post-start节。<br />
　　running: 运行完post-start节之后的临时状态，表示作业正在运行(但可能没有关联的PID)。<br />
　　pre-stop:运行pre-stop节。<br />
　　stopping:运行完pre-stop节之后的临时状态。<br />
　　killed: 作业要被终止。<br />
　　post-stop: 运行post-stop节。</p>
<p>　　作业的状态可通过inictl status命令输出的中status域来显示给用户。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code345'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375345"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2375code345"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#initctl status mysql</span>
mysql start<span style="color: #000000; font-weight: bold;">/</span>running, process <span style="color: #000000;">875</span></pre></td></tr></table></div>

<p>　　init daemon会监测每个服务的状态,如果服务出现问题会重启服务,在某些事件触发时或手工停止时会杀死服务。</p>
<p>　　Upstart init daemon只能监测哪些使用exec运行的作业，无法监测使用script…end script运行的作业。也就是说，服务应该使用exec运行，而任务则可以使用任意的方法。</p>
<p>　　Upstart init守护进程读取/etc/init目录下的作业配置文件，并使用inotify来监控它们的改变。配置文件名必须以.conf结尾，可以放在/etc/init/下的子目录中。每个文件定义一个服务或作业，其名称按路径名来称呼。例如定义在/etc/init/rc-sysinit.conf中的作业就称为rc-sysinit，而定义在/etc/init/net/apache.conf的作业称为net/apache。这些文件必须是纯文本且不可执行的。</p>
<p>　　二、进程(Process)</p>
<p>　　Process是由工作(jobs)定义的服务(Services)或者任务(Task)，它将被init daemon运行。每个job可以定义一个或者多个不同的process，分别在其生命周期的不同状态运行。除抽象作业(Abstact Job)外的所有作业配置文件都必须要含有exec节(exec stanza)或者script节(script stanza)。它们指定这个工作运行什么文件。</p>
<p>　　在运行exec或者script指定的程序之前或者之后，你可以运行一些附加的shell代码。附加代码不是用来启动主进程的，实际上他们也不能启动主进程。附加代码是用来准备运行环境和进行清理工作的。启动前运行的脚本指定主进程运行前所要执行的shell代码，跟script一样，所以任何一个命令执行失败都将终止运行脚本。它也以”end script”作为结束。</p>
<p>　　Process定义如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code346'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375346"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2375code346"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">exec</span> COMMAND <span style="color: #7a0874; font-weight: bold;">&#91;</span>ARG<span style="color: #7a0874; font-weight: bold;">&#93;</span>...</pre></td></tr></table></div>

<p>　　定义作业要运行的主进程，注意若有特殊的字符(如引号或$符)将导致整个命令被传递给Shell来运行。例如exec /usr/sbin/acpid -c $EVENTSDIR -s $SOCKET。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code347'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375347"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2375code347"><pre class="bash" style="font-family:monospace;">Scritp
......
<span style="color: #7a0874; font-weight: bold;">exec</span><span style="color: #000000; font-weight: bold;">|</span>end script</pre></td></tr></table></div>

<p>　　定义Shell脚本来运行指定的主进程，该脚本由sh来执行。Shell的-e选项总是被使用，因此任何命令失败将导致脚本终止。注意作业的主进程只能用exec或script节中的一种来定义，不能同时用exec和script配置节来定义。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code348'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375348"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2375code348"><pre class="bash" style="font-family:monospace;">Pre-start
......
<span style="color: #7a0874; font-weight: bold;">exec</span><span style="color: #000000; font-weight: bold;">|</span>end script</pre></td></tr></table></div>

<p>　　本进程在作业的starting事件完成之后，主进程运行之前执行。通常用来准备相关环境，例如创建必要的目录。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code349'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375349"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2375code349"><pre class="bash" style="font-family:monospace;">Post-start 
......
<span style="color: #7a0874; font-weight: bold;">exec</span><span style="color: #000000; font-weight: bold;">|</span>end script</pre></td></tr></table></div>

<p>　　本进程在作业的started事件触发之前，主进程产生之前执行。通常用来发送必要的命令给主进程，或者用来延迟started事件，直到主进程准备好接收客户端的访问。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code350'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375350"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2375code350"><pre class="bash" style="font-family:monospace;">Pre-stop 
......
<span style="color: #7a0874; font-weight: bold;">exec</span><span style="color: #000000; font-weight: bold;">|</span>end script</pre></td></tr></table></div>

<p>　　本进程在作业被stop on节中的一个事件停止或被stop命令停止时执行。它在作业的stopping事件之前，及主进程被杀死之前执行。通常用来发送必要的shutdown命令给主进程，或调用不带参数的start命令来取消stop。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code351'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375351"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2375code351"><pre class="bash" style="font-family:monospace;">Post-stop 
......
<span style="color: #7a0874; font-weight: bold;">exec</span><span style="color: #000000; font-weight: bold;">|</span>end script</pre></td></tr></table></div>

<p>　　本进程在主进程被杀死之后，作业的stopped事件触发之前执行。通常用来清理相关环境，例如删除临时的目录。</p>
<p>　　三、事件(event)</p>
<p>　　事件(event)是指系统状态的一种改变，这种改变会被通知给init进程。init进程可以得到的状态变更信息，几乎系统所有的内部或外部状态变更都可以触发一个事件。比如引导程序会触发启动(startup)事件，系统进入运行级别2会触发运行级别2(runlevel 2)事件，而文件系统加载则会触发路径加载(path-mounted)事件,拔掉或安装一个热插拔或USB设备(如打印机)也会触发一个事件。这些事件会被通知给init进程，然后init进程来决定系统如何处理这些事件。用户还可以通过initctl emit命令来手动触发一个事件。</p>
<p>　　你可以用start on列出一些事件，表明发出这些事件时你想要启动这个工作，也可以用stop on来指明发出某些事件时你想要停止这个工作。</p>
<p>　　事件定义格式如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code352'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375352"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2375code352"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#定义能导致作业自动启动的事件集。KEY和VALUE指定环境变量及其值</span>
start on Event<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">KEY</span>=<span style="color: #7a0874; font-weight: bold;">&#93;</span> Value … and<span style="color: #000000; font-weight: bold;">|</span> or …<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#定义导致作业自动停止的事件集。</span>
stop on Event<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">KEY</span>=<span style="color: #7a0874; font-weight: bold;">&#93;</span> Value … and<span style="color: #000000; font-weight: bold;">|</span> or …<span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></td></tr></table></div>

<p>　　事件定义示例：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code353'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375353"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2375code353"><pre class="bash" style="font-family:monospace;">start on started gdm or started kdm
start on device-added <span style="color: #007800;">SUBSYSTEM</span>=tty <span style="color: #007800;">DEVPATH</span>=ttyS<span style="color: #000000; font-weight: bold;">*</span>
start on net-device-added INTERFACE<span style="color: #000000; font-weight: bold;">!</span>=lo</pre></td></tr></table></div>

<p>　　用户也可以自己定义一个事件，并让一个作业被这个事件触发。如下的myjob作业定义文件定义了一个被hithere事件触发的作业：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code354'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375354"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2375code354"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#cat /etc/init/myjob.conf</span>
&nbsp;
start on hithere
script
<span style="color: #7a0874; font-weight: bold;">echo</span> “Hi there, here I am<span style="color: #000000; font-weight: bold;">!</span>” <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>myjob.out
<span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>myjob.out
end script</pre></td></tr></table></div>

<p>　　这段代码指定在接收到hithere事件时将触发该作业。然后代码执行指定的操作(将一条消息和日期输出到/tmp/myjob.out 文件)。</p>
<p>　　用户也可以使用initctl emit命令手动触发事件来执行这个作业。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code355'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375355"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2375code355"><pre class="bash" style="font-family:monospace;">initctl emit hithere</pre></td></tr></table></div>

<p>　　Upstart的事件数量是没有限制的，但init守护进程和telinit工具定义了一组常用的标准事件。主要有以下几个：</p>
<p>　　starting: 当作业被调度并开始运行时，由Upstart触发。<br />
　　started: 当作业正在运行时被触发。<br />
　　stopping: 当作业开始终止时被触发。<br />
　　stopped: 当作业已经完成时(成功或失败)被触发。    </p>
<p>　　当upstart init进程启动时，它会发出startup事件，这将激活实现了System V兼容性的事件和runlevel事件。随着作业的启动和停止，init守护进程将触发starting, started, stopping,stopped事件。另一个核心事件shutdown则是在系统关闭时发出的。其他核心事件包括ctrlaltdel，它说明您按下了Ctrl-Alt-Delete或kbdrequest，它用来说明您按下了Alt-Up(向上箭头)键组合。</p>
<p>　　Upstart有三种事件类型</p>
<p>　　Signal Event</p>
<p>　　非阻塞的即异步的。触发信号型事件会立即返回，调用者继续往下执行。信号型的意思就是广播者并不关心谁会接收它，也不需要等待是否发生某种事情，它只是用来提供信息用作通信。使用带&#8211;no-wait选项的initctl emit命令来创建信号型事件。例如initctl emit &#8211;no-wait mysignal。注意事件触发的非阻塞特性并不会直接影响那些与此事件有关的作业，它只是影响触发者程序，允许其继续执行，而无需等待任何使用这个事件的作业。作业本身的非阻塞特性则会影响作业自己，它使得作业不能被终止或延迟，不能以任何形式持有触发者的操作。</p>
<p>　　Method Event</p>
<p>　　阻塞的即同步的。它通常与Task job结合使用。方法型事件的行为类似于编程语言中的method或function call，调用者需要等待这个工作的完成。例如initctl emit mymethod，这个方法型事件被同步地触发，调用者需要等待直到initctl命令完成。在mymethod事件上启动的任务可能运行成功，也可能失败，假设有一个作业/etc/init/myapp.conf，如下：</p>
<p>　　Hook Event </p>
<p>　　阻塞的即同步的。钩子介于信号和方法之间。它是一种通知，表示系统发生了一些改变。不同于信号，钩子型事件的触发者需要等待作业的完成。因此钩子通常用来标志即将发生的改变一些事情。starting和stopping是钩子型事件，被Upstart触发以表明作业即将启动或即将终止。</p>
<p>　　注意事件与状态是有区别的，虽然Upstart内部使用状态(这些状态可以通过initctl status和list命令显示给用户看)，但事件是配置文件指定作业期望行为的一种方式，starting, started, stopping, stopped是事件，不是状态。这些事件在一些特殊的状态转移发生之前触发。例如，starting事件在与此事件相关的作业实际进行运行队列之前被触发。</p>
<p>　　四、作业生命周期</p>
<p>　　启动一个作业的流程</p>
<p>　　1)Upstart把作业的目标从stop改成start。正如目标的名字指示的一样，作业(实例)现在尝试启动。目标可以用initctl list和status命令显示。<br />
　　2)Upstart触发starting事件，指示作业即将启动。这个事件包括两个环境变量：JOB指定作业名；INSTANCE指定实例名，如果启动单一的实例(没有instance配置节)，则实例名为空。<br />
　　3)starting事件完成。<br />
　　4)如果pre-start节存在，则产生pre-start进程。如果pre-start失败，Upstart把目标从start改成stop，设置表示失败的变量并触发stopping和stopped事件。<br />
　　5)Upstart产生主进程。即运行script或exec配置节，如果没有script或exec配置节，则Upstart什么也不做。<br />
　　6)Upstart确定作业的最终PID，可参考expect fork和expect守护r进程。<br />
　　7)如果post-start配置节存在，则产生post-start进程。。如果post-start失败，Upstart把目标从start改成stop，设置表示失败的变量并触发stopping和stopped事件。<br />
　　8)Upstart触发started事件。这个事件包含与starting同样的环境变量。对Service job，当started事件完成后，主进程即完全地运行起来了。如果是Task job，则任务执行完成(成功或失败)。</p>
<p>　　终止一个作业的流程</p>
<p>　　1)Upstart把作业的目标从start改为stop。现在作业(实例)尝试终止。<br />
　　2)如果pre-stop配置节存在，则产生pre-stop进程。如果pre-stop失败，Upstart设置表示失败的变量，并触发stopping和stopped事件。<br />
　　3)如果作业有script或exec配置节，则终止主进程，首先向主进程发送SIGTERM信号，然后Upstart等待kill timeout秒数(默认为5秒)，如果进程仍然在运行，则向进程发送SIGKILL信号，因为进程不能选择忽略此信号，因此能保证进程被终止。<br />
　　4)Upstart触发stopping事件。这个事件有一系列的相关环境变量，包括：<br />
　　JOB: 与本事件关联的作业名。<br />
　　INSTANCE: 实例名。<br />
　　RESULT: “ok”表示作业正常退出，”failed”表示作业失败，注意退出结果的显示可以用normal exit配置节修改。<br />
　　PROCESS: 导致作业失败的配置节名称。如果RESULT=ok，则本变量不会被设置。如果设置了，可能值有pre-start, post-start, main(表示script或exec配置节), pre-stop, post-stop, respawn(表示作业产生次数超过了respawn limit配置节设置的限制)。<br />
　　EXIT_STATUS或EXIT_SIGNAL: 如果作业自己退出则设置EXIT_STATUS，如果由于接收到信号退出则设置EXIT_SIGNAL。如果两个变量都没有设置，则进程在产生的过程中出现了问题(例如指定要运行的命令没有找到)。<br />
　　5)如果post-stop配置节存在，则生成post-stop进程。如果post-start失败，Upstart设置表示失败的变量并触发stopped事件。<br />
　　6)Upstart触发stopped事件。当stopped事件完成后，作业即完全终止。stopped事件与stopping事件有相同的环境变量集。</p>
<p>　　五、initctl(init daemon control tool)</p>
<p>　　initctl是一个具有root权限的管理员可以使用init进程管理控制工具，可以通过这个工具和Upstart init daemon进行通信。initctl可以用来启动或终止作业、列表作业、以及获取作业的状态、发出事件、重启init 进程等等。比如initctl list让您可以通过标识作业状态来深入了解系统操作，它告诉您目前正在等待哪些服务以及哪些服务目前是活动的。initctl工具还可以显示用于调试而接收的事件。</p>
<p>　　initctl基本用法　</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code356'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375356"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p2375code356"><pre class="bash" style="font-family:monospace;">initctl <span style="color: #7a0874; font-weight: bold;">help</span>
作业 commands:
  start                       Start job.
  stop                        Stop job.
  restart                     Restart job.
  reload                      Send HUP signal to job.
  status                      Query status of job.
  list                        List known jobs.
&nbsp;
事件 commands:
  emit                        Emit an event.
&nbsp;
Other commands:
  reload-configuration        Reload the configuration of the init daemon.
  version                     Request the version of the init daemon.
  log-priority                Change the minimum priority of log messages from the init daemon
  <span style="color: #7a0874; font-weight: bold;">help</span>                        display list of commands</pre></td></tr></table></div>

<p>　　initctl使用示例</p>
<p>　　通过initctl手动启动、停止、重启MySQL服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code357'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375357"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2375code357"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#启动MySQL服务</span>
initctl start mysql
<span style="color: #666666; font-style: italic;">#停止MySQL服务</span>
initctl stop mysql
<span style="color: #666666; font-style: italic;">#重启MySQL服务</span>
initctl restart mysql</pre></td></tr></table></div>

<p>　　更简单的方法：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code358'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375358"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2375code358"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#启动MySQL服务</span>
start mysql
<span style="color: #666666; font-style: italic;">#停止MySQL服务</span>
stop mysql
<span style="color: #666666; font-style: italic;">#重启MySQL服务</span>
restart mysql</pre></td></tr></table></div>

<p>　　start、stop和restart工具都是initctl的软链接，会直接运行initctl工具中的对应命令。</p>
<p>　　采用Upstart做启动管理的系统，服务的启动均依赖于/etc/init/下的每个服务对应的配置文件，通过修改这配置文件，可以更改服务的运行级别。所以即使你将rcX.d下的文件删除，也都不会影响系统的启动。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code359'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375359"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2375code359"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
apport.conf              failsafe-x.conf    module-init-tools.conf  mounted-tmp.conf                 nmbd.conf             rc.conf              ssh.conf   tty6.conf         upstart-udev-bridge.conf
atd.conf                 hostname.conf      mountall.conf           mounted-varrun.conf              plymouth.conf         rcS.conf             tty1.conf  udev.conf         ureadahead.conf
console-setup.conf       hwclock.conf       mountall-net.conf       mysql.conf                       plymouth-log.conf     rc-sysinit.conf      tty2.conf  udev-finish.conf  ureadahead-other.conf
control-alt-delete.conf  hwclock-save.conf  mountall-reboot.conf    networking.conf                  plymouth-splash.conf  rsyslog.conf         tty3.conf  udevmonitor.conf
cron.conf                irqbalance.conf    mountall-shell.conf     network-interface.conf           plymouth-stop.conf    screen-cleanup.conf  tty4.conf  udevtrigger.conf
dmesg.conf               mikejobs.conf      mounted-dev.conf        network-interface-security.conf  procps.conf           smbd.conf            tty5.conf  ufw.conf</pre></td></tr></table></div>

<p>　　以Ubuntu下MySQL服务为例，我们先看看基于UpStart的系统下/etc/init.d/mysql脚本详细信息</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2375code360'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2375360"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2375code360"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>mysql  <span style="color: #660033;">-l</span>
&nbsp;
lrwxrwxrwx <span style="color: #000000;">1</span> root root <span style="color: #000000;">21</span> <span style="color: #000000;">2011</span>-06-<span style="color: #000000;">14</span> <span style="color: #000000;">21</span>:<span style="color: #000000;">22</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>mysql -<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>init<span style="color: #000000; font-weight: bold;">/</span>upstart-job<span style="color: #000000; font-weight: bold;">*</span></pre></td></tr></table></div>

<p>　　这里和以前基于Sysv init的系统有很大的不同，这里不在是启动MySQL的执行脚本，而是指向/lib/init/upstart-job的一个软链接，而upstart-job这个脚本会调用initctl工具启动对应的服务。所以用传统的System V方式删掉/etc/init.d/mysql或/etc/rcX.d中是不会影响到MySQL的开机启动的。正是这个原因，网上很多文章说sysv-rc-conf、update-rc.d，rcconf三个基于以前Sysv init的启动管理工具不会生效的原因。不过这种现象只针对以Upstart工作配置文件为基础的服务。那些还是以SystemV脚本管理的软件包依然可以用上面三个管理工具进行启动行的管理，必定还有很多软件包还未采用Upstart方式进行管理。目前Ubuntu系统也都还兼容System V方式的脚本。</p>
<p>　　六、Ubuntu下常见系统状态下Upstart调用过程</p>
<p>　　系统启动<br />
　　我们以Ubuntu为例子，并从Upstart的视角来阐述。在系统引导时，当initramfs文件系统运行起来时(用于设置RAID、解锁加密的文件系统卷等)，将会运行/sbin/init并分配PID为1，这样Upstart接过控制权。在默认运行级别2上的启动流程如下：</p>
<p>　　1)Upstart执行内部的初始化。<br />
　　2)Upstart触发一个单一的称为startup的事件，这个事件触发其余的系统初始化过程。<br />
　　3)init运行一些指定了start on startup的作业。这其中最著名的就是mountall作业，用来挂载硬盘和文件系统。<br />
　　4)mountall作业依次触发一系列的事件，包括local-filesystems, virtual-filesystems, all-swaps等。当系统设备和挂载点可用时，它运行mountall守护程序来完成挂载硬盘和文件系统的工作。<br />
　　5)virtual-filesystems事件引发udev作业启动。它运行uded守护程序来管理系统的设备，并监控设备的改变。<br />
　　6)udev作业引发upstart-udev-bridge作业启动。<br />
　　7)upstart-udev-bridge作业将会在某个点处触发”net-device-up IFACE=lo”事件，以表示本地网络(例如IPv4的127.0.0.0)可用。<br />
　　8)在最终的文件系统挂载之后，mountall将会触发filesystem事件。<br />
　　9)由于rc-sysinit作业中有start on filesystem and net-device-up IFACE=lo节，Upstart将会启动rc-sysinit作业。<br />
　　10)rc-sysinit作业最后调用telinit命令，格式为telinit “${DEFAULT_RUNLEVEL}”。<br />
　　11)telinit命令触发runlevel事件，即执行runlevel RUNLEVEL=2 PREVLEVEL=N。注意这就是telinit所做的全部工作，它自己并不会切换运行级别，而通过runlevel程序实现。<br />
　　12)runlevel事件引发很多其他的Upstart作业启动，包括/etc/init/rc.conf，它用来启动遗留的SystemV init系统。</p>
<p>　　系统关闭</p>
<p>　　在系统关闭过程中，有一些重要的事实需要知道：</p>
<p>　　1)Upstart决不会关闭自己。Upstart会在系统断电时终止，如果它之前终止过，说明是一个bug。<br />
　　2)Upstart决不会终止没有stop on配置节的作业。<br />
　　3)Ubuntu既使用Upstart作业，也使用SysV作业。核心的服务由Upstart处理，一些额外的服务可以在遗留的SystemV模式下运行。这主要是为向后兼容，因此在Ubuntu的Universe和Mutiverse软件库中有大量的软件包，为避免更改每个软件包以使它能在Upstart下工作，Upstart允许使用已经存在的SystemV(还包括Debian兼容的)脚本。</p>
<p>　　关闭系统需要先执行关机动作，例如在图形用户界面中单击”Shut Down&#8230;”，运行命令shutdown -h now等。关机的流程如下：</p>
<p>　　1)假设当前运行级别为2，关机动作将会使Upstart触发runlevel事件，即runlevel RUNLEVEL=0 PREVLEVEL=2。<br />
　　2)作业/etc/init/rc.conf将被运行。这个作业调用/etc/init.d/rc，并传递新的运行级别(“0“)。<br />
　　3)SystemV系统调用/etc/rc0.d/中必要的脚本(都是指向/etc/init.d/中脚本的链接)，来终止SystemV服务。<br />
　　4)其中有一个/etc/init.d/sendsigs脚本，这个脚本中有个do_stop()函数，它负责杀死所有没有被终止的进程(包括Upstart进程)。</p>
<p>　　系统重启</p>
<p>　　先要执行重启动作，例如在图形界面中单击”Restart&#8230;”，运行shutdown -r now或reboot。重启的流程如下：</p>
<p>　　1)假设当前运行级别为2，重启动作将会使Upstart触发runlevel事件，即 runlevel RUNLEVEL=6 PREVLEVEL=2。<br />
　　2)作业/etc/init/rc.conf将被运行。这个作业调用/etc/init.d/rc，并传递新的运行级别(“6“)。<br />
　　3)SystemV系统调用/etc/rc6.d/中必要的脚本(都是指向/etc/init.d/中脚本的链接)，来终止SystemV服务。<br />
　　4)其中有一个/etc/init.d/sendsigs脚本，这个脚本中有个do_stop()函数，它负责杀死所有没有被终止的进程(包括Upstart进程)。</p>
<p>　　恢复模式</p>
<p>　　Ubuntu提供了恢复模式以应对系统出现问题的情况。这由friendly-recovery软件包来处理。</p>
<p>　　七、参考文档<br />
　　<br />
　　http://www.google.com<br />
　　http://www.starwd.com/?p=68<br />
　　http://zhoujin.com/post/154/<br />
　　http://blog.csdn.net/zhoudaxia/article/details/6666914<br />
　　http://hi.baidu.com/dillisbest/blog/item/582312c621f544cdd00060a3.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/understand-upstart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04下安装MongoDB</title>
		<link>http://www.mike.org.cn/articles/ubuntu-install-mongodb/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-install-mongodb/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 17:19:05 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2360</guid>
		<description><![CDATA[　　一、什么是MongoDB? 　　NOSQL指的是非关系型的数据库。随着互联网web2.0网站的兴起，传统的关系数据库在应付web2.0网站，特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心，暴露了很多难以克服的问题，而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 　　MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品，是非关系数据库当中功能最丰富，最像关系数据库的。他支持的数据结构非常松散，是类似json的bjson格式，因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大，其语法有点类似于面向对象的查询语言，几乎可以实现类似关系数据库单表查询的绝大部分功能，而且还支持对数据建立索引。 　　它的特点是高性能、易部署、易使用，存储数据非常方便。主要功能特性有： 　　面向集合存储，易存储对象类型的数据。 　　模式自由。 　　支持动态查询。 　　支持完全索引，包含内部对象。 　　支持查询。 　　支持复制和故障恢复。 　　使用高效的二进制数据存储，包括大型对象（如视频等）。 　　自动处理碎片，以支持云计算层次的扩展性 　　支持RUBY，PYTHON，JAVA，C++，PHP等多种语言。 　　文件存储格式为BSON（一种JSON的扩展） 　　可通过网络访问 　　所谓“面向集合”(Collenction-Orented)，意思是数据被分组存储在数据集中，被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名，并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table)，不同的是它不需要定义任何模式(schema)。模式自由(schema-free)，意味着对于存储在mongodb数据库中的文件，我们不需要知道它的任何结构定义。如果需要的话，你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档，被存储为键-值对的形式。键用于唯一标识一个文档，为字符串类型，而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。 　　MongoDB服务端可运行在Linux、Windows或OS X平台，支持32位和64位应用，默认端口为27017。推荐运行在64位平台，因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。 　　MongoDB把数据存储在文件中(默认路径为：/data/db)，为提高效率使用内存映射文件进行管理。 　　二、安装MongoDB 　　A、通过二进制包安装 ?View Code BASH1 2 3 4 5 6 #下载安装包 wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.8.3.tgz #解压安装包 tar xzvf mongodb-linux-x86_64-1.8.3.tgz #移动安装包到需要安装的目录并更名 mv mongodb-linux-x86_64-1.8.3 /usr/local/mongodb 　　建立运行MongoDB的用户 ?View Code BASH1 useradd -M -s /sbin/nologin mongodb 　　建立数据目录 ?View Code [...]]]></description>
			<content:encoded><![CDATA[<p>　　一、什么是MongoDB?</p>
<p>　　NOSQL指的是非关系型的数据库。随着互联网web2.0网站的兴起，传统的关系数据库在应付web2.0网站，特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心，暴露了很多难以克服的问题，而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。</p>
<p>　　MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品，是非关系数据库当中功能最丰富，最像关系数据库的。他支持的数据结构非常松散，是类似json的bjson格式，因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大，其语法有点类似于面向对象的查询语言，几乎可以实现类似关系数据库单表查询的绝大部分功能，而且还支持对数据建立索引。<span id="more-2360"></span></p>
<p>　　它的特点是高性能、易部署、易使用，存储数据非常方便。主要功能特性有：</p>
<p>　　面向集合存储，易存储对象类型的数据。<br />
　　模式自由。<br />
　　支持动态查询。<br />
　　支持完全索引，包含内部对象。<br />
　　支持查询。<br />
　　支持复制和故障恢复。<br />
　　使用高效的二进制数据存储，包括大型对象（如视频等）。<br />
　　自动处理碎片，以支持云计算层次的扩展性<br />
　　支持RUBY，PYTHON，JAVA，C++，PHP等多种语言。<br />
　　文件存储格式为BSON（一种JSON的扩展）<br />
　　可通过网络访问</p>
<p>　　所谓“面向集合”(Collenction-Orented)，意思是数据被分组存储在数据集中，被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名，并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table)，不同的是它不需要定义任何模式(schema)。模式自由(schema-free)，意味着对于存储在mongodb数据库中的文件，我们不需要知道它的任何结构定义。如果需要的话，你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档，被存储为键-值对的形式。键用于唯一标识一个文档，为字符串类型，而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。</p>
<p>　　MongoDB服务端可运行在Linux、Windows或OS X平台，支持32位和64位应用，默认端口为27017。推荐运行在64位平台，因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。</p>
<p>　　MongoDB把数据存储在文件中(默认路径为：/data/db)，为提高效率使用内存映射文件进行管理。</p>
<p>　　二、安装MongoDB</p>
<p>　　A、通过二进制包安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code379'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360379"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2360code379"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#下载安装包</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>fastdl.mongodb.org<span style="color: #000000; font-weight: bold;">/</span>linux<span style="color: #000000; font-weight: bold;">/</span>mongodb-linux-x86_64-1.8.3.tgz
<span style="color: #666666; font-style: italic;">#解压安装包</span>
<span style="color: #c20cb9; font-weight: bold;">tar</span> xzvf mongodb-linux-x86_64-1.8.3.tgz 
<span style="color: #666666; font-style: italic;">#移动安装包到需要安装的目录并更名</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> mongodb-linux-x86_64-1.8.3 <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mongodb</pre></td></tr></table></div>

<p>　　建立运行MongoDB的用户</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code380'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360380"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2360code380"><pre class="bash" style="font-family:monospace;">useradd  <span style="color: #660033;">-M</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nologin mongodb</pre></td></tr></table></div>

<p>　　建立数据目录</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code381'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360381"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2360code381"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mongodata
<span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> mongodb.mongodb <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mongodata</pre></td></tr></table></div>

<p>　　注：MongoDB缺省的数据目录为/data/db/。如修改为其它不同路径，启动时需在&#8211;dbpath指出。也可以在主配置文件中指出。</p>
<p>　　启动MongoDB服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code382'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360382"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2360code382"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mongodb
bin<span style="color: #000000; font-weight: bold;">/</span>mongod <span style="color: #660033;">--dbpath</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mongodata<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">&amp;</span></pre></td></tr></table></div>

<p>　　B、通过软件包安装</p>
<p>　　由于Ubuntu官方APT源里的MongoDB版本比较旧，这里用MongoDB提供的APT源进行安装。要使用第三方源上的软件，除了在sources.list上添加对应的源外，还要有增加相应的公钥Key才能正确安装软件。</p>
<p>　　通过apt-key增加MongoDB的公钥Key到本地Key数据库</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code383'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360383"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2360code383"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-key</span> adv <span style="color: #660033;">--keyserver</span> keyserver.ubuntu.com <span style="color: #660033;">--recv</span> 7F0CEB10</pre></td></tr></table></div>

<p>　　增加软件源</p>
<p>　　官方提供了两个软件源，一个是SysV样式的启动脚本，一个是Upstart样式的启动脚本。我这里用的是SysV样式的，目前Upstart的工作原理还不熟悉。</p>
<p>　　这里我把两种样式的软件源都给出来，请根据实际情况自行调整。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code384'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360384"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2360code384"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#SysV style</span>
deb http:<span style="color: #000000; font-weight: bold;">//</span>downloads-distro.mongodb.org<span style="color: #000000; font-weight: bold;">/</span>repo<span style="color: #000000; font-weight: bold;">/</span>debian-sysvinit dist 10gen
<span style="color: #666666; font-style: italic;">#Upstart</span>
deb http:<span style="color: #000000; font-weight: bold;">//</span>downloads-distro.mongodb.org<span style="color: #000000; font-weight: bold;">/</span>repo<span style="color: #000000; font-weight: bold;">/</span>ubuntu-upstart dist 10gen</pre></td></tr></table></div>

<p>　　编辑/etc/apt/sources.list,添加MongoDB软件源</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code385'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360385"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2360code385"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>sources.list
&nbsp;
<span style="color: #666666; font-style: italic;">#增加下面的软件源</span>
deb http:<span style="color: #000000; font-weight: bold;">//</span>downloads-distro.mongodb.org<span style="color: #000000; font-weight: bold;">/</span>repo<span style="color: #000000; font-weight: bold;">/</span>debian-sysvinit dist 10gen</pre></td></tr></table></div>

<p>　　安装MongoDB</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code386'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360386"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2360code386"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#更新本地软件包列表信息</span>
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #666666; font-style: italic;">#安装MongoDB</span>
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> mongodb-10gen</pre></td></tr></table></div>

<p>　　配置MongoDB</p>
<p>　　和二进制包安装不同，通过deb包安装的MongoDB会生成一个主配置文件(/etc/mongodb.conf)，如果要更改启动选项，可直接修改这个配置文件</p>
<p>　　启动MongoDB</p>
<p>　　APT方式安装好的包，安装完后缺省就已经启动了MongoDB。</p>
<p>　　运行如下命令，查看MongoDB是否正常启动。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code387'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360387"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2360code387"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">netstat</span> <span style="color: #660033;">-tlunp</span>
&nbsp;
tcp        <span style="color: #000000;">0</span>      <span style="color: #000000;">0</span> 0.0.0.0:<span style="color: #000000;">27017</span>           0.0.0.0:<span style="color: #000000; font-weight: bold;">*</span>               LISTEN      <span style="color: #000000;">15048</span><span style="color: #000000; font-weight: bold;">/</span>mongod</pre></td></tr></table></div>

<p>　<br />
　　如果包含上面这行，说明MongoDB已正常启动。</p>
<p>　　重启MongoDB</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code388'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360388"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2360code388"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>mongodb restart</pre></td></tr></table></div>

<p>　　C、一键安装</p>
<p>　　这是最简单的方法，如果初次安装建议用前二种方法，可以加强对Mongodb的熟悉。这种方法仅是为了批量安装方便而提供的。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code389'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360389"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2360code389"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#下载安装脚本</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.mike.org.cn<span style="color: #000000; font-weight: bold;">/</span>wp-content<span style="color: #000000; font-weight: bold;">/</span>uploads<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2011</span><span style="color: #000000; font-weight: bold;">/</span>08<span style="color: #000000; font-weight: bold;">/</span>install_mongodb_sh.zip
<span style="color: #666666; font-style: italic;">#解压安装脚本</span>
<span style="color: #c20cb9; font-weight: bold;">unzip</span> install_mongodb_sh.zip
<span style="color: #666666; font-style: italic;">#给脚本赋权</span>
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> install_mongodb_sh
<span style="color: #666666; font-style: italic;">#执行脚本安装</span>
.<span style="color: #000000; font-weight: bold;">/</span>install_mongodb_sh</pre></td></tr></table></div>

<p>　　三、安装RockMongo</p>
<p>　　MongoDB本身只提供了一个字符界面的客户端工具，为了方便使用这里安装一个MongoDB的管理工具RockMongo。</p>
<p>　　RockMongo是一个PHP5写的MongoDB管理工具。RockMongo主要特征:</p>
<p>　　系统：可以配置多个主机，每个主机可以有多个管理员。需要管理员密码才能登入操作，确保数据库的安全性<br />
　　服务器：服务器信息(WEB服务器, PHP, PHP.ini相关指令 &#8230;)、状态、数据库信息<br />
　　数据库：查询，创建和删除、执行命令和Javascript代码、统计信息<br />
　　集合(相当于表)：强大的查询工具、读数据，写数据，更改数据，复制数据，删除数据、查询、创建和删除索引、清空数据、批量删除和更改数据、统计信息、GridFS、查看分块、下载文件</p>
<p>　　A、安装PHP环境</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code390'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360390"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2360code390"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> apache2 php5 php5-dev php5-cli php-pear</pre></td></tr></table></div>

<p>　　B、安装php_mongo扩展</p>
<p>　　RockMongo是通过php_mongo连接到MongoDB的，为了能让RockMongo正常运行，这里就必须先安装php_mongo扩展。</p>
<p>　　安装php_mongo的方法有好几种，这里用比较方便的pecl方式进行安装。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code391'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360391"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2360code391"><pre class="bash" style="font-family:monospace;">pecl <span style="color: #c20cb9; font-weight: bold;">install</span> mongo</pre></td></tr></table></div>

<p>　　启用php_mongo扩展</p>
<p>　　编辑mongodb.ini文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code392'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360392"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2360code392"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>conf.d<span style="color: #000000; font-weight: bold;">/</span>mongodb.ini
<span style="color: #007800;">extension</span>=mongo.so</pre></td></tr></table></div>

<p>　　重启Apache,让配置生效。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code393'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360393"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2360code393"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></td></tr></table></div>

<p>　　C、安装RockMongo</p>
<p>　　下载安装包</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code394'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360394"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2360code394"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>rock-php.googlecode.com<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>rockmongo-v1.1.0.zip</pre></td></tr></table></div>

<p>　　解压到网站主目录</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code395'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360395"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2360code395"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">unzip</span> rockmongo-v1.1.0.zip <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>rockmongo</pre></td></tr></table></div>

<p>　　配置RockMongo</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2360code396'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2360396"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2360code396"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>rockmongo<span style="color: #000000; font-weight: bold;">/</span>config.php
&nbsp;
<span style="color: #666666; font-style: italic;">#主要需要修改有以下几项</span>
<span style="color: #007800;">$MONGO</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;servers&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">$i</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;mongo_name&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> = <span style="color: #ff0000;">&quot;Localhost&quot;</span>;<span style="color: #000000; font-weight: bold;">//</span>mongo server name
<span style="color: #007800;">$MONGO</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;servers&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">$i</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;mongo_host&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> = <span style="color: #ff0000;">&quot;127.0.0.1&quot;</span>;<span style="color: #000000; font-weight: bold;">//</span>mongo host
<span style="color: #007800;">$MONGO</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;servers&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">$i</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;mongo_port&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> = <span style="color: #ff0000;">&quot;27017&quot;</span>;<span style="color: #000000; font-weight: bold;">//</span>mongo port</pre></td></tr></table></div>

<p>　　我这里没有更改默认端口，也就没什么要改的，默认就好。MongoDB缺省是没有进行认证的，如果加入了认证记得修改config.php相应的选项。<br />
　　<br />
　　D、访问RockMongo</p>
<p>　　使用http://<服务器IP>/rockmongo/index.php访问RockMongo即可，初始用户名及密码均为admin。</p>
<p><a href="http://www.mike.org.cn/wp-content/uploads/2011/08/rockmongo.jpg" class="floatbox" rev="group:2360 caption:`rockmongo`"><img class="size-large wp-image-2362 alignnone" title="rockmongo" src="http://www.mike.org.cn/wp-content/uploads/2011/08/rockmongo-1024x576.jpg" alt="" width="819" height="461" /></a></p>
<p>　　四、参考文档</p>
<p>　　http://www.google.com<br />
　　http://code.google.com/p/rock-php/wiki/rock_mongo_zh<br />
　　http://www.mongodb.org/display/DOCS/Quickstart+Unix<br />
　　http://onlyzq.blog.51cto.com/1228/516623</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-install-mongodb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04下安装Redmine</title>
		<link>http://www.mike.org.cn/articles/ubuntu-install-redmine/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-install-redmine/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 17:14:42 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2353</guid>
		<description><![CDATA[　　Redmine是一个灵活的项目管理与缺陷跟踪工具，它是基于Ruby on Rails框架建立的Web的应用程序。Redmine是项目管理系统的后起之秀，页面符合Web 2.0特性, 同时又简单易用, 给项目管理和进度度量带来极大的好处。Redmine支持多种数据库，除了和DotProject的功能大致相当外，还有不少自己独特的功能，例如提供wiki、新闻台、时间跟踪、feed聚合、导出pdf等等，还可以集成其他版本管理系统和BUG跟踪系统，例如SVN、CVS、TD等等。配置功能强大而且方便，自定义属性和更新通知也很实用。 　　一、安装基础运行环境 　　A、安装Ruby ?View Code BASH1 2 apt-get install ruby apt-get install ruby1.8-dev 　　B、安装rubygem ?View Code BASH1 apt-get install rubygems 　　C、通过rubygems安装rails和rack ?View Code BASH1 2 gem install rails -v=2.3.11 gem install rack -v=1.1.1 　　D、安装其它依赖环境 ?View Code BASH1 2 3 4 gem install -v=0.4.2 i18n gem install mysql apt-get install libopenssl-ruby1.8 [...]]]></description>
			<content:encoded><![CDATA[<p>　　Redmine是一个灵活的项目管理与缺陷跟踪工具，它是基于Ruby on Rails框架建立的Web的应用程序。Redmine是项目管理系统的后起之秀，页面符合Web 2.0特性, 同时又简单易用, 给项目管理和进度度量带来极大的好处。Redmine支持多种数据库，除了和DotProject的功能大致相当外，还有不少自己独特的功能，例如提供wiki、新闻台、时间跟踪、feed聚合、导出pdf等等，还可以集成其他版本管理系统和BUG跟踪系统，例如SVN、CVS、TD等等。配置功能强大而且方便，自定义属性和更新通知也很实用。<span id="more-2353"></span></p>
<p>　　一、安装基础运行环境</p>
<p>　　A、安装Ruby</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code426'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353426"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2353code426"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ruby
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ruby1.8-dev</pre></td></tr></table></div>

<p>　　B、安装rubygem</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code427'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353427"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code427"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> rubygems</pre></td></tr></table></div>

<p>　　C、通过rubygems安装rails和rack</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code428'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353428"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2353code428"><pre class="bash" style="font-family:monospace;">gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails <span style="color: #660033;">-v</span>=2.3.11
gem <span style="color: #c20cb9; font-weight: bold;">install</span> rack <span style="color: #660033;">-v</span>=1.1.1</pre></td></tr></table></div>

<p>　　D、安装其它依赖环境</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code429'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353429"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2353code429"><pre class="bash" style="font-family:monospace;">gem <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #660033;">-v</span>=0.4.2 i18n
gem <span style="color: #c20cb9; font-weight: bold;">install</span> mysql
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libopenssl-ruby1.8
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libmysqlclient-dev</pre></td></tr></table></div>

<p>　　二、安装Redmine</p>
<p>　　A、获取并解压安装包</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code430'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353430"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2353code430"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>rubyforge.org<span style="color: #000000; font-weight: bold;">/</span>frs<span style="color: #000000; font-weight: bold;">/</span>download.php<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">74944</span><span style="color: #000000; font-weight: bold;">/</span>redmine-1.2.0.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf redmine-1.2.0.tar.gz
<span style="color: #c20cb9; font-weight: bold;">mv</span> redmine-1.2.0<span style="color: #000000; font-weight: bold;">/</span> redmine</pre></td></tr></table></div>

<p>　　B、建立数据库</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code431'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353431"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2353code431"><pre class="bash" style="font-family:monospace;">create database redmine character <span style="color: #000000; font-weight: bold;">set</span> utf8;
grant all privileges on redmine.<span style="color: #000000; font-weight: bold;">*</span> to <span style="color: #ff0000;">'redmine'</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #ff0000;">'localhost'</span> identified by <span style="color: #ff0000;">'redmine'</span>;</pre></td></tr></table></div>

<p>　　注：我开始在这里用于连接数据库的密码为全数字(6个0)时，redmine一直连不上数据库，更改为字母或为空都可以连接，不知道这个是不是1.2版本程序的BUG！</p>
<p>　　C、配置Redmine</p>
<p>　　以下操作均需要在Redmine所在目录操作。</p>
<p>　　切换到redmine目录：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code432'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353432"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code432"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine</pre></td></tr></table></div>

<p>　　创建数据库配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code433'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353433"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code433"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span>  <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>config<span style="color: #000000; font-weight: bold;">/</span>database.yml.example <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>config<span style="color: #000000; font-weight: bold;">/</span>database.yml</pre></td></tr></table></div>

<p>　　修改数据库配置文件中的MySQL数据库的连接信息，将production代码块下的mysql相关信息修改成你对应的数据。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code434'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353434"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2353code434"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span>  config<span style="color: #000000; font-weight: bold;">/</span>database.yml
&nbsp;
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: redmine
  encoding: utf8</pre></td></tr></table></div>

<p>　　注：冒号后面的空格必须保留。</p>
<p>　　D、创建一个session安装密钥</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code435'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353435"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code435"><pre class="bash" style="font-family:monospace;">rake generate_session_store</pre></td></tr></table></div>

<p>　　E、初始化Redmine的数据库结构</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code436'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353436"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code436"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">RAILS_ENV</span>=production rake db:migrate</pre></td></tr></table></div>

<p>　　F、导入缺省配置数据　　</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code437'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353437"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code437"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">RAILS_ENV</span>=production rake redmine:load_default_data</pre></td></tr></table></div>

<p>　　注：这一步操作是可选的，此命令将导入默认角色、跟踪标签、状态、工作流程和枚举值(强烈推荐执行它),您也可以从头开始一步步填写自己的配置参数。</p>
<p>　　G、修改相关文件夹权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code438'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353438"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code438"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #660033;">-R</span> <span style="color: #000000;">755</span> files log tmp public<span style="color: #000000; font-weight: bold;">/</span>plugin_assets</pre></td></tr></table></div>

<p>　　H、启动Redmine</p>
<p>　　缺省运行在3000端口上</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code439'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353439"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code439"><pre class="bash" style="font-family:monospace;">ruby script<span style="color: #000000; font-weight: bold;">/</span>server webrick <span style="color: #660033;">-e</span> production</pre></td></tr></table></div>

<p>　　也可以用-p参数自定启动端口</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code440'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353440"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code440"><pre class="bash" style="font-family:monospace;">ruby script<span style="color: #000000; font-weight: bold;">/</span>server <span style="color: #660033;">-e</span> production <span style="color: #660033;">-p</span> <span style="color: #000000;">80</span></pre></td></tr></table></div>

<p>　　让Redmine后台运行</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code441'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353441"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code441"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">nohup</span> ruby script<span style="color: #000000; font-weight: bold;">/</span>server webrick <span style="color: #660033;">-e</span> production <span style="color: #000000; font-weight: bold;">&amp;</span></pre></td></tr></table></div>

<p>　　I、使用Redmine </p>
<p>　　访问http://ip:3000/,你能看见Redmine的欢迎页。</p>
<p>　　你可以使用缺省管理员登陆，缺省管理员用户名为: admin，密码为: admin</p>
<p>　　三、其它</p>
<p>　　A、SMTP server配置</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code442'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353442"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code" id="p2353code442"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>config<span style="color: #000000; font-weight: bold;">/</span>configuration.yml.example <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>config<span style="color: #000000; font-weight: bold;">/</span>configuration.yml
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>config<span style="color: #000000; font-weight: bold;">/</span>configuration.yml
&nbsp;
<span style="color: #666666; font-style: italic;">#以GMAIL为例，修改下面配置段</span>
production:
   email_delivery:
     delivery_method: :smtp
     smtp_settings:
       address: smtp.gmail.com
       port: <span style="color: #000000;">587</span>
       authentication: :<span style="color: #c20cb9; font-weight: bold;">login</span>
       domain: smtp.gmail.com
       user_name: mike<span style="color: #000000; font-weight: bold;">@</span>gmail.com
       password: testredmine
       tls: <span style="color: #c20cb9; font-weight: bold;">true</span></pre></td></tr></table></div>

<p>　　B、备份</p>
<p>　　Redmine的备份应该包括：数据(保存在redmine数据库中)和附件(保存在Redmine安装目录的files目录中)</p>
<p>　　以下是一个可以进行每天备份的简单脚本程序</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code443'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353443"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2353code443"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#备份数据库</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>mysqldump <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;">&lt;</span>username<span style="color: #000000; font-weight: bold;">&gt;</span> -p<span style="color: #000000; font-weight: bold;">&lt;</span>password<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">&lt;</span>redmine_database<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">gzip</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>db<span style="color: #000000; font-weight: bold;">/</span>redmine_<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>y_<span style="color: #000000; font-weight: bold;">%</span>m_<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #000000; font-weight: bold;">`</span>.gz
&nbsp;
<span style="color: #666666; font-style: italic;">#备份附件</span>
rsync <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>files <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>files</pre></td></tr></table></div>

<p>　　四、Apache与Redmine整合</p>
<p>　　在自带的webrick上运行Redmine，访问速度很可能不能满足使用需求，通过Apache与Redmine整合后，让Redmine运行在Apache上，速度就会快很多。让Apache运行ROR有多种方式，这里使用Passenger模块。</p>
<p>　　安装Passenger模块</p>
<p>　　A、编译安装</p>
<p>　　安装编译所需依赖的环境</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code444'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353444"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code444"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> apache2-prefork-dev libaprutil1-dev libapr1-dev libcurl4-openssl-dev</pre></td></tr></table></div>

<p>　　编译安装Passenger模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code445'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353445"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2353code445"><pre class="bash" style="font-family:monospace;">gem <span style="color: #c20cb9; font-weight: bold;">install</span> passenger
passenger-install-apache2-module</pre></td></tr></table></div>

<p>　　如果报passenger-install-apache2-module这条命令找不到，那么通过下面的命令查看执行路径：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code446'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353446"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code" id="p2353code446"><pre class="bash" style="font-family:monospace;">gem environment
&nbsp;
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.5
  - RUBY VERSION: 1.8.7 <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2010</span>-01-<span style="color: #000000;">10</span> patchlevel <span style="color: #000000;">249</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>x86_64-linux<span style="color: #7a0874; font-weight: bold;">&#93;</span>
  - INSTALLATION DIRECTORY: <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span>
  - RUBY EXECUTABLE: <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>ruby1.8
  - EXECUTABLE DIRECTORY: <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span>
     - <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>.gem<span style="color: #000000; font-weight: bold;">/</span>ruby<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span>
  - GEM CONFIGURATION:
     - :update_sources =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">true</span>
     - :verbose =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">true</span>
     - :benchmark =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">false</span>
     - :backtrace =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">false</span>
     - :bulk_threshold =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">1000</span>
  - REMOTE SOURCES:
     - http:<span style="color: #000000; font-weight: bold;">//</span>gems.rubyforge.org<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　其中，EXECUTABLE DIRECTORY就是命令的全路径，这里就用全路径来执行命令：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code447'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353447"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code447"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>passenger-install-apache2-module</pre></td></tr></table></div>

<p>　　接着按提示进行安装和部署。Passenger会在本机编译并成为Apache的一个模块。安装过程中会遇到下面的提示信息(根据版本的不同，信息也会稍有变化)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code448'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353448"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
</pre></td><td class="code" id="p2353code448"><pre class="bash" style="font-family:monospace;">Welcome to the Phusion Passenger Apache <span style="color: #000000;">2</span> module installer, v3.0.7.
&nbsp;
This installer will guide you through the entire installation process. It
shouldn<span style="color: #ff0000;">'t take more than 3 minutes in total.
&nbsp;
Here'</span>s what you can expect from the installation process:
&nbsp;
 <span style="color: #000000;">1</span>. The Apache <span style="color: #000000;">2</span> module will be installed <span style="color: #000000; font-weight: bold;">for</span> you.
 <span style="color: #000000;">2</span>. You<span style="color: #ff0000;">'ll learn how to configure Apache.
 3. You'</span>ll learn how to deploy a Ruby on Rails application.
&nbsp;
Don<span style="color: #ff0000;">'t worry if anything goes wrong. This installer will advise you on how to
solve any problems.
&nbsp;
Press Enter to continue, or Ctrl-C to abort.
--------------------------------------------
Checking for required software...
&nbsp;
 * GNU C++ compiler... found at /usr/bin/g++
 * Curl development headers with SSL support... found
 * OpenSSL development headers... found
 * Zlib development headers... found
 * Ruby development headers... found
 * OpenSSL support for Ruby... found
 * RubyGems... found
 * Rake... found at /usr/bin/rake
 * rack... found
 * Apache 2... found at /usr/sbin/apache2
 * Apache 2 development headers... found at /usr/bin/apxs2
 * Apache Portable Runtime (APR) development headers... found at /usr/bin/apr-1-config
 * Apache Portable Runtime Utility (APU) development headers... found at /usr/bin/apu-1-config
&nbsp;
--------------------------------------------
Compiling and installing Apache 2 module...
#编译过程省略
......
--------------------------------------------
The Apache 2 module was successfully installed.
&nbsp;
Please edit your Apache configuration file, and add these lines:
&nbsp;
   LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
   PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.7
   PassengerRuby /usr/bin/ruby1.8
&nbsp;
After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
&nbsp;
Press ENTER to continue.
--------------------------------------------
Deploying a Ruby on Rails application: an example
&nbsp;
Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:
&nbsp;
   &lt;VirtualHost *:80&gt;
      ServerName www.yourhost.com
      DocumentRoot /somewhere/public    # &lt;-- be sure to point to '</span>public<span style="color: #ff0000;">'!
      &lt;Directory /somewhere/public&gt;
         AllowOverride all              # &lt;-- relax Apache security settings
         Options -MultiViews            # &lt;-- MultiViews must be turned off
      &lt;/Directory&gt;
   &lt;/VirtualHost&gt;
&nbsp;
And that'</span>s it<span style="color: #000000; font-weight: bold;">!</span> You may also want to check the Users Guide <span style="color: #000000; font-weight: bold;">for</span> security and
optimization tips, troubleshooting and other useful information:
&nbsp;
  <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>passenger-3.0.7<span style="color: #000000; font-weight: bold;">/</span>doc<span style="color: #000000; font-weight: bold;">/</span>Users guide Apache.html
&nbsp;
Enjoy Phusion Passenger, a product of Phusion <span style="color: #7a0874; font-weight: bold;">&#40;</span>www.phusion.nl<span style="color: #7a0874; font-weight: bold;">&#41;</span> :-<span style="color: #7a0874; font-weight: bold;">&#41;</span>
http:<span style="color: #000000; font-weight: bold;">//</span>www.modrails.com<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
Phusion Passenger is a trademark of Hongli Lai <span style="color: #000000; font-weight: bold;">&amp;</span> Ninh Bui.</pre></td></tr></table></div>

<p>　　创建一个加载Passenger模块的Apache配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code449'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353449"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2353code449"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>mods-enabled<span style="color: #000000; font-weight: bold;">/</span>passenger.load
&nbsp;
<span style="color: #666666; font-style: italic;">#加入以下内容</span>
LoadModule passenger_module <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>passenger-3.0.7<span style="color: #000000; font-weight: bold;">/</span>ext<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>mod_passenger.so
PassengerRoot <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>passenger-3.0.7
PassengerRuby <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>ruby1.8</pre></td></tr></table></div>

<p>　　注：passenger-3.0.7里的版本号需根据实际情况更改，当前(2011/07/05)的更新为passenger-3.07)</p>
<p>　　在Apache上创建一个站点</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code450'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353450"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p2353code450"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span>redmine
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;</span>VirtualHost <span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">80</span><span style="color: #000000; font-weight: bold;">&gt;</span>
  ServerName 192.168.1.109
  DocumentRoot <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>public<span style="color: #000000; font-weight: bold;">/</span>
  <span style="color: #000000; font-weight: bold;">&lt;</span>Directory <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine<span style="color: #000000; font-weight: bold;">/</span>public<span style="color: #000000; font-weight: bold;">/&gt;</span>
     AllowOverride all
     Options <span style="color: #660033;">-MultiViews</span>
  <span style="color: #000000; font-weight: bold;">&lt;/</span>Directory<span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;/</span>VirtualHost<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>　　注：DocumentRoot的路径为你安装Redmine目录下的public目录。</p>
<p>　　启用Redmine站点</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code451'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353451"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code451"><pre class="bash" style="font-family:monospace;">a2ensite redmine</pre></td></tr></table></div>

<p>　　注：这一步其实就是在/etc/apache2/sites-enabled/下创建一个指向/etc/apache2/sites-available/redmine的软链，之所以要这么做是因为Apache主配置文件(/etc/apache2/apache2.conf)中只引入了sites-enabled下的配置文件(Include /etc/apache2/sites-enabled/)。如果你觉得麻烦，可以直接把相应内容加入主配置文件就可以了，分开放是为了看上去结构更清楚一些。</p>
<p>　　修改Redmine目录的权限(www-data为Apache的运行用户)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code452'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353452"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code452"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> www-data:www-data <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>redmine</pre></td></tr></table></div>

<p>　　重启Apache</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code453'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353453"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code453"><pre class="bash" style="font-family:monospace;">apache2ctl restart</pre></td></tr></table></div>

<p>　　访问http://ip，你可以看到Redmine的欢迎页。</p>
<p>　　B、通过包安装Passenger模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2353code454'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2353454"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2353code454"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libapache2-mod-passenger</pre></td></tr></table></div>

<p>　　其它部分与编译安装部分相同。</p>
<p>　　五、参考文档</p>
<p>　　http://www.google.com<br />
　　http://www.hihiyou.com/?p=91<br />
　　http://www.xclinux.cn/?p=861<br />
　　http://www.redmine.org/projects/redmine/wiki/RedmineInstall<br />
　　http://www.swordair.com/docs/config-doc/redmine_complete_config_on_ubuntu.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-install-redmine/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Nginx环境下构建Nagios监控平台</title>
		<link>http://www.mike.org.cn/articles/nginx-install-nagios-monitor-platform/</link>
		<comments>http://www.mike.org.cn/articles/nginx-install-nagios-monitor-platform/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 17:52:55 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2340</guid>
		<description><![CDATA[　　本文只做Nginx下Nagiox安装的说明，其它关于Nagios监控的详细配置请参考我的另一篇文章[Ubuntu 10.04下构建Nagios监控平台] 　　Nagios依赖PHP环境和perl环境。由于Nginx不支持Perl的CGI,这里就需要先来搭建Perl环境。 　　 　　一、给Nginx加上对Perl的CGI支持 　　让Nginx支持Perl的CGI方法有好几种，基本原理都是通过Perl的FCGI模块实现。具体哪一个更好，目前没时间验证。下面的方法就是其中一种： 　　1、安装FCGI模块 ?View Code BASH1 2 3 4 5 6 7 wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-0.73.tar.gz tar xvzf FCGI-0.73.tar.gz cd FCGI-0.73 perl Makefile.PL make make install cd .. 　　2、安装FCGI-ProcManager模块 ?View Code BASH1 2 3 4 5 6 7 wget http://search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.19.tar.gz tar xvzf FCGI-ProcManager-0.19.tar.gz cd FCGI-ProcManager-0.19 perl Makefile.PL make make install cd .. 　　3、安装IO和IO::ALL模块 [...]]]></description>
			<content:encoded><![CDATA[<p>　　本文只做Nginx下Nagiox安装的说明，其它关于Nagios监控的详细配置请参考我的另一篇文章[<a title="Ubuntu 10.04下构建Nagios监控平台" href="http://www.mike.org.cn/articles/ubuntu-nagios-monitor-platform/" target="_blank">Ubuntu 10.04下构建Nagios监控平台</a>]</p>
<p>　　Nagios依赖PHP环境和perl环境。由于Nginx不支持Perl的CGI,这里就需要先来搭建Perl环境。<br />
　　<br />
　　一、给Nginx加上对Perl的CGI支持</p>
<p>　　让Nginx支持Perl的CGI方法有好几种，基本原理都是通过Perl的FCGI模块实现。具体哪一个更好，目前没时间验证。下面的方法就是其中一种：<span id="more-2340"></span></p>
<p>　　1、安装FCGI模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code493'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340493"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2340code493"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>search.cpan.org<span style="color: #000000; font-weight: bold;">/</span>CPAN<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>F<span style="color: #000000; font-weight: bold;">/</span>FL<span style="color: #000000; font-weight: bold;">/</span>FLORA<span style="color: #000000; font-weight: bold;">/</span>FCGI-<span style="color: #000000;">0.73</span>.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf FCGI-<span style="color: #000000;">0.73</span>.tar.gz 
<span style="color: #7a0874; font-weight: bold;">cd</span> FCGI-<span style="color: #000000;">0.73</span>
<span style="color: #c20cb9; font-weight: bold;">perl</span> Makefile.PL
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　2、安装FCGI-ProcManager模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code494'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340494"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2340code494"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>search.cpan.org<span style="color: #000000; font-weight: bold;">/</span>CPAN<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>G<span style="color: #000000; font-weight: bold;">/</span>GB<span style="color: #000000; font-weight: bold;">/</span>GBJK<span style="color: #000000; font-weight: bold;">/</span>FCGI-ProcManager-<span style="color: #000000;">0.19</span>.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf FCGI-ProcManager-<span style="color: #000000;">0.19</span>.tar.gz 
<span style="color: #7a0874; font-weight: bold;">cd</span> FCGI-ProcManager-<span style="color: #000000;">0.19</span>
<span style="color: #c20cb9; font-weight: bold;">perl</span> Makefile.PL 
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　3、安装IO和IO::ALL模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code495'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340495"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p2340code495"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>search.cpan.org<span style="color: #000000; font-weight: bold;">/</span>CPAN<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>G<span style="color: #000000; font-weight: bold;">/</span>GB<span style="color: #000000; font-weight: bold;">/</span>GBARR<span style="color: #000000; font-weight: bold;">/</span>IO-<span style="color: #000000;">1.25</span>.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf IO-<span style="color: #000000;">1.25</span>.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> IO-<span style="color: #000000;">1.25</span>
<span style="color: #c20cb9; font-weight: bold;">perl</span> Makefile.PL
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>search.cpan.org<span style="color: #000000; font-weight: bold;">/</span>CPAN<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>I<span style="color: #000000; font-weight: bold;">/</span>IN<span style="color: #000000; font-weight: bold;">/</span>INGY<span style="color: #000000; font-weight: bold;">/</span>IO-All-<span style="color: #000000;">0.41</span>.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf IO-All-<span style="color: #000000;">0.41</span>.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> IO-All-<span style="color: #000000;">0.41</span>
<span style="color: #c20cb9; font-weight: bold;">perl</span> Makefile.PL
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　4、下载Perl脚本</p>
<p>　　这个脚本的目的就是产生一个PERL的FastCGI接口，让Nginx可以以CGI方式处理Perl。</p>
<p>　　下载Perl脚本</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code496'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340496"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2340code496"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.mike.org.cn<span style="color: #000000; font-weight: bold;">/</span>wp-content<span style="color: #000000; font-weight: bold;">/</span>uploads<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2011</span><span style="color: #000000; font-weight: bold;">/</span>07<span style="color: #000000; font-weight: bold;">/</span>perl-fcgi.zip
<span style="color: #c20cb9; font-weight: bold;">unzip</span> perl-fcgi.zip
<span style="color: #c20cb9; font-weight: bold;">cp</span> perl-fcgi.pl <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　注：建议把这个脚本放在Nginx安装目录。</p>
<p>　　修改脚本权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code497'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340497"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code497"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>perl-fcgi.pl</pre></td></tr></table></div>

<p>　　5、建立一个CGI启动/停止脚本</p>
<p>　　这个SHELL脚本只是为了方便管理上面的Perl脚本。脚本中的www为nginx的运行用户，请据自己的实际情况调整。</p>
<p>　　注意事项：不能用root用户执行(会提示). 要用与Nginx相同身份的用户执行。否则可能会在Nginx Log中提示 Permision Denied。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code498'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340498"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="code" id="p2340code498"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>start_perl_cgi.sh
&nbsp;
<span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;">#set -x</span>
<span style="color: #007800;">dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
stop <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #666666; font-style: italic;">#pkill  -f  $dir/perl-fcgi.pl</span>
<span style="color: #c20cb9; font-weight: bold;">kill</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>perl-fcgi.pid<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>perl-fcgi.pid <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>perl-fcgi.sock <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;stop perl-fcgi done&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
start <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>now_start_perl_fcgi.sh <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">chown</span> www.www <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>logs
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$dir</span>/perl-fcgi.pl -l <span style="color: #007800;">$dir</span>/logs/perl-fcgi.log -pid <span style="color: #007800;">$dir</span>/logs/perl-fcgi.pid -S <span style="color: #007800;">$dir</span>/logs/perl-fcgi.sock&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span><span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>now_start_perl_fcgi.sh
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">chown</span> www.www <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>now_start_perl_fcgi.sh
<span style="color: #c20cb9; font-weight: bold;">chmod</span> u+x <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>now_start_perl_fcgi.sh
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #660033;">-u</span> www <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span>now_start_perl_fcgi.sh
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;start perl-fcgi done&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #007800;">$1</span> <span style="color: #000000; font-weight: bold;">in</span>
stop<span style="color: #7a0874; font-weight: bold;">&#41;</span>
stop
<span style="color: #000000; font-weight: bold;">;;</span>
start<span style="color: #7a0874; font-weight: bold;">&#41;</span>
start
<span style="color: #000000; font-weight: bold;">;;</span>
restart<span style="color: #7a0874; font-weight: bold;">&#41;</span>
stop
start
<span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span></pre></td></tr></table></div>

<p>　　修改SHELL脚本权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code499'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340499"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code499"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>start_perl_cgi.sh</pre></td></tr></table></div>

<p>　　启动脚本</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code500'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340500"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code500"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>start_perl_cgi.sh start</pre></td></tr></table></div>

<p>　　正常情况下在/usr/local/webserver/nginx/logs下生成perl-fcgi.sock这个文件,如果没有生成,请检查下上面的步聚。</p>
<p>　　二、安装Nagios</p>
<p>　　A、安装前准备</p>
<p>　　安装的机器上必须有一个WEB服务，本文是在Nginx环境上安装的。</p>
<p>　　下载nagios主程序和相关插件程序包</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code501'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340501"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2340code501"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>prdownloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>sourceforge<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>nagios-3.2.3.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>prdownloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>sourceforge<span style="color: #000000; font-weight: bold;">/</span>nagiosplug<span style="color: #000000; font-weight: bold;">/</span>nagios-plugins-1.4.15.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>prdownloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>sourceforge<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>nrpe-<span style="color: #000000;">2.12</span>.tar.gz</pre></td></tr></table></div>

<p>　　安装GD库(Nagios中的statusmap和trends模块必须)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code502'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340502"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code502"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libgd2-noxpm libgd2-noxpm-dev</pre></td></tr></table></div>

<p>　　B、Nagios监控端安装</p>
<p>　　1、创建Nagios用户及组</p>
<p>　　建立Nagios账号</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code503'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340503"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code503"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>useradd <span style="color: #660033;">-m</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nologin nagios</pre></td></tr></table></div>

<p>　　2、创建一个名为nagcmd的用户组，用于从web接口执行外部命令。将Nagios用户和Nginx用户加入组中。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code504'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340504"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2340code504"><pre class="bash" style="font-family:monospace;">groupadd nagcmd
usermod <span style="color: #660033;">-a</span> <span style="color: #660033;">-G</span> nagcmd nagios
usermod <span style="color: #660033;">-a</span> <span style="color: #660033;">-G</span> nagcmd www</pre></td></tr></table></div>

<p>　　注：上面的www是Nginx用户所属的组，如有不同请自行调整。</p>
<p>　　3、编译安装Nagios</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code505'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340505"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code" id="p2340code505"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nagios-3.2.3.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nagios-3.2.3
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-command-group</span>=nagcmd
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> all
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> install-init
<span style="color: #c20cb9; font-weight: bold;">make</span> install-config
<span style="color: #c20cb9; font-weight: bold;">make</span> install-commandmode
<span style="color: #666666; font-style: italic;">#这里是在Nginx下运行Nagios,这一步就不用做了</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> install-webconf
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　注：make install 用于安装主要的程序、CGI及HTML文件<br />
　　　　make install-init 用于生成init启动脚本<br />
　　　　make install-config 用于安装示例配置文件<br />
　　　　make install-commandmode 用于设置相应的目录权限<br />
　　　　make install-webconf 用于安装Apache配置文件</p>
<p>　　4、验证程序是否被正确安装</p>
<p>　　切换目录到安装路径，这里是/usr/local/nagios,看是否存在etc、bin、 sbin、 share、 var这五个目录，如果存在则可以表明程序被正确的安装到系统了。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code506'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340506"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2340code506"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span>  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>
bin<span style="color: #000000; font-weight: bold;">/</span>     etc<span style="color: #000000; font-weight: bold;">/</span>     sbin<span style="color: #000000; font-weight: bold;">/</span>    share<span style="color: #000000; font-weight: bold;">/</span>   var<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　注；bin&#8211;Nagios执行程序所在目录，其中的nagios文件即为主程序。<br />
　　　　etc&#8211;Nagios配置文件位置<br />
　　　　sbin&#8211;Nagios cgi文件所在目录，也就是执行外部命令所需文件所在的目录<br />
　　　　Share&#8211;Nagios网页文件所在的目录<br />
　　　　var&#8211;Nagios日志文件、spid 等文件所在的目录<br />
　　　　var/archives&#8211;日志归档目录<br />
　　　　var/rw&#8211;用来存放外部命令文件<br />
　　<br />
　　5、配置NGINX</p>
<p>　　1)、配置Nagios Web界面登陆帐号及密码</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code507'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340507"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code507"><pre class="bash" style="font-family:monospace;">htpasswd <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagiospasswd mike</pre></td></tr></table></div>

<p>　　如果你没有htpasswd(这个工具由Apache安装包所提供),可在线生成需要加密数据。<br />
　　<br />
　　a)、访问http://www.4webhelp.net/us/password.php生成需要加密数据</p>
<p>　　b)、创建加密验证文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code508'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340508"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2340code508"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagiospasswd
&nbsp;
<span style="color: #666666; font-style: italic;">#加入生成的加密数据，冒号前是用户名，后面是加密后的密码</span>
mike:25JB.R7mXY96o</pre></td></tr></table></div>

<p>　　修改Nagios配置文件，给新增的用户增加访问权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code509'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340509"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p2340code509"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>cgi.cfg
&nbsp;
<span style="color: #666666; font-style: italic;">#以下几项中分别加入新增的用户，多用户用逗号分隔。</span>
<span style="color: #007800;">authorized_for_system_information</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_configuration_information</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_system_commands</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_all_services</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_all_hosts</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_all_service_commands</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_all_host_commands</span>=nagiosadmin,mike</pre></td></tr></table></div>

<p>　　2)、修改NGINX配置，以支持WEB方式访问Nagios</p>
<p>　　方法一：以http://ip方式访问</p>
<p>　　NGINX配置片断如下</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code510'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340510"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</pre></td><td class="code" id="p2340code510"><pre class="bash" style="font-family:monospace;">server
  <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    listen       <span style="color: #000000;">80</span>;
    server_name  192.168.1.108;
    index index.html index.htm index.php;
    root  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>share;
    auth_basic <span style="color: #ff0000;">&quot;Nagios Access&quot;</span>;
    auth_basic_user_file <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagiospasswd;
    location ~ .<span style="color: #000000; font-weight: bold;">*</span>\.<span style="color: #7a0874; font-weight: bold;">&#40;</span>php<span style="color: #000000; font-weight: bold;">|</span>php5<span style="color: #7a0874; font-weight: bold;">&#41;</span>?$
    <span style="color: #7a0874; font-weight: bold;">&#123;</span>      
      <span style="color: #666666; font-style: italic;">#fastcgi_pass  unix:/tmp/php-cgi.sock;</span>
      fastcgi_pass  127.0.0.1:<span style="color: #000000;">9000</span>;
      fastcgi_index index.php;
      include fcgi.conf;
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
    location ~ .<span style="color: #000000; font-weight: bold;">*</span>\.<span style="color: #7a0874; font-weight: bold;">&#40;</span>cgi<span style="color: #000000; font-weight: bold;">|</span>pl<span style="color: #7a0874; font-weight: bold;">&#41;</span>?$
    <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #c20cb9; font-weight: bold;">gzip</span> off;
    root   <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>sbin;
    rewrite ^<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>cgi-bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>\.cgi <span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$1</span>.cgi <span style="color: #7a0874; font-weight: bold;">break</span>;
    fastcgi_pass  unix:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>perl-fcgi.sock;
    fastcgi_param SCRIPT_FILENAME <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #007800;">$fastcgi_script_name</span>; 
    fastcgi_index index.cgi;
    fastcgi_read_timeout   <span style="color: #000000;">60</span>;
    fastcgi_param  REMOTE_USER        <span style="color: #007800;">$remote_user</span>;
    include fcgi.conf;
    auth_basic <span style="color: #ff0000;">&quot;Nagios Access&quot;</span>;
    auth_basic_user_file <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagiospasswd;
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
    location <span style="color: #000000; font-weight: bold;">/</span>nagios
    <span style="color: #7a0874; font-weight: bold;">&#123;</span>
   　<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>share;
   　auth_basic <span style="color: #ff0000;">&quot;Nagios Access&quot;</span>;
   　auth_basic_user_file <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagiospasswd;
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
    log_format  wwwlogs  <span style="color: #ff0000;">'$remote_addr - $remote_user [$time_local] &quot;$request&quot; '</span>
               <span style="color: #ff0000;">'$status $body_bytes_sent &quot;$http_referer&quot; '</span>
               <span style="color: #ff0000;">'&quot;$http_user_agent&quot; $http_x_forwarded_for'</span>;
    access_log  <span style="color: #000000; font-weight: bold;">/</span>data1<span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>access_www.log  wwwlogs;
  <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　方法二：以http://ip/nagios方式访问</p>
<p>　　在WEB主目录下创建一个软链</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code511'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340511"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code511"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span>  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>  <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>htdocs<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>nagios</pre></td></tr></table></div>

<p>　　NGINX配置片断如下</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code512'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340512"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code" id="p2340code512"><pre class="bash" style="font-family:monospace;">server
  <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    listen       <span style="color: #000000;">80</span>;
    server_name  192.168.1.108;
    index index.html index.htm index.php;
    root  <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>htdocs<span style="color: #000000; font-weight: bold;">/</span>www;
    auth_basic <span style="color: #ff0000;">&quot;Nagios Access&quot;</span>;
    auth_basic_user_file <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagiospasswd;
    location ~ .<span style="color: #000000; font-weight: bold;">*</span>\.<span style="color: #7a0874; font-weight: bold;">&#40;</span>php<span style="color: #000000; font-weight: bold;">|</span>php5<span style="color: #7a0874; font-weight: bold;">&#41;</span>?$
    <span style="color: #7a0874; font-weight: bold;">&#123;</span>      
      <span style="color: #666666; font-style: italic;">#fastcgi_pass  unix:/tmp/php-cgi.sock;</span>
      fastcgi_pass  127.0.0.1:<span style="color: #000000;">9000</span>;
      fastcgi_index index.php;
      include fcgi.conf;
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
    location ~ .<span style="color: #000000; font-weight: bold;">*</span>\.<span style="color: #7a0874; font-weight: bold;">&#40;</span>cgi<span style="color: #000000; font-weight: bold;">|</span>pl<span style="color: #7a0874; font-weight: bold;">&#41;</span>?$
    <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #c20cb9; font-weight: bold;">gzip</span> off;
    root   <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>sbin;
    rewrite ^<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>cgi-bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>\.cgi <span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$1</span>.cgi <span style="color: #7a0874; font-weight: bold;">break</span>;
    fastcgi_pass  unix:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>perl-fcgi.sock;
    fastcgi_param SCRIPT_FILENAME <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #007800;">$fastcgi_script_name</span>; 
    fastcgi_index index.cgi;
    fastcgi_read_timeout   <span style="color: #000000;">60</span>;
    fastcgi_param  REMOTE_USER        <span style="color: #007800;">$remote_user</span>;
    include fcgi.conf;
    auth_basic <span style="color: #ff0000;">&quot;Nagios Access&quot;</span>;
    auth_basic_user_file <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagiospasswd;
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
    log_format  wwwlogs  <span style="color: #ff0000;">'$remote_addr - $remote_user [$time_local] &quot;$request&quot; '</span>
               <span style="color: #ff0000;">'$status $body_bytes_sent &quot;$http_referer&quot; '</span>
               <span style="color: #ff0000;">'&quot;$http_user_agent&quot; $http_x_forwarded_for'</span>;
    access_log  <span style="color: #000000; font-weight: bold;">/</span>data1<span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>access_www.log  wwwlogs;
  <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　注：如果你的fastcgi的配置文件中没有配置REMOTE_USER参数，一定要在nginx.conf中加上下面这个fastcgi的参数定义。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code513'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340513"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code513"><pre class="bash" style="font-family:monospace;">fastcgi_param  REMOTE_USER        <span style="color: #007800;">$remote_user</span>;</pre></td></tr></table></div>

<p>　　如果没有这个fastcgi的参数定义，Nagios就不能正确验证你的登陆信息。网上大多数文章解决Nginx下Nagios登陆验证失败的方法都是在Nagios的cgi.cfg配置文件(nagios/etc/cgi.cfg)中关掉验证(use_authentication=0)或设置一个缺省的登陆用户(default_user_name=test)，这两种方法都是不安全的。</p>
<p>　　6、编译并安装Nagios插件</p>
<p>　　由于Nagios主程序只是提供一个运行框架，其具体监控是靠运行在其下的插件完成的，所以Nagios插件是必须安装的。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code514'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340514"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2340code514"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nagios-plugins-1.4.15.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nagios-plugins-1.4.15
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-nagios-user</span>=nagios <span style="color: #660033;">--with-nagios-group</span>=nagios
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>　　验证Nagios插件是否正确安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code515'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340515"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code515"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">//</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec</pre></td></tr></table></div>

<p>　　显示安装的插件文件,即所有的插件都安装在libexec这个目录下。</p>
<p>　　7、启动服务</p>
<p>　　启动前先检查下配置文件是否正确</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code516'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340516"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code516"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nagios <span style="color: #660033;">-v</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagios.cfg</pre></td></tr></table></div>

<p>　　如果没有报错，可以启动Nagios服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code517'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340517"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code517"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nagios <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagios.cfg</pre></td></tr></table></div>

<p>　　查看Nagios运行状态</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code518'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340518"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code518"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nagiostats</pre></td></tr></table></div>

<p>　　8、安装NRPE</p>
<p>　　由于Nagios只能监测自己所在的主机的一些本地情况,例如，cpu负载、内存使用、硬盘使用等等。如果想要监测被监控的服务器上的这些本地情况，就要用到NRPE。NRPE(Nagios Remote Plugin Executor)是Nagios的一个扩展，它被用于被监控的服务器上，向Nagios监控平台提供该服务器的一些本地的情况。NRPE可以称为Nagios的Linux客户端。</p>
<p>　　由于NRPE是通过SSL方式在监控和被监控主机上进行数据传输的，所以必须先安装ssl相关的软件包。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code519'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340519"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code519"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libssl-dev libssl0.9.8</pre></td></tr></table></div>

<p>　　编译安装NRPE</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code520'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340520"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2340code520"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nrpe-<span style="color: #000000;">2.12</span>.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nrpe-<span style="color: #000000;">2.12</span>
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span> all
<span style="color: #c20cb9; font-weight: bold;">make</span> install-plugin
<span style="color: #c20cb9; font-weight: bold;">make</span> install-daemon
<span style="color: #c20cb9; font-weight: bold;">make</span> install-daemon-config</pre></td></tr></table></div>

<p>　　注：监控主机上只需要make install-plugin这一步就可以了。监控机上只要有一个check_nrpe插件用于连接被监控端nrpe的daemon就行了。</p>
<p>　　启动NRPE</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code521'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340521"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code521"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nrpe <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nrpe.cfg <span style="color: #660033;">-d</span></pre></td></tr></table></div>

<p>　　验证NRPE是否正确安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code522'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340522"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code522"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec<span style="color: #000000; font-weight: bold;">/</span>check_nrpe <span style="color: #660033;">-H</span> localhost</pre></td></tr></table></div>

<p>　　注：如果成功，会返回NRPE的版本号。<br />
　　<br />
　　C、Nagios被控端安装配置</p>
<p>　　1、创建Nagios用户及组</p>
<p>　　建立Nagios账号</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code523'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340523"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code523"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>useradd <span style="color: #660033;">-m</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nologin nagios</pre></td></tr></table></div>

<p>　　2、编译并安装Nagios插件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code524'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340524"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2340code524"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nagios-plugins-1.4.15.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nagios-plugins-1.4.15
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-nagios-user</span>=nagios <span style="color: #660033;">--with-nagios-group</span>=nagios
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　验证程序是否被正确安装：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code525'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340525"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code525"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec</pre></td></tr></table></div>

<p>　　显示安装的插件文件,即所有的插件都安装在libexec这个目录下。</p>
<p>　　3、安装NRPE</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code526'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340526"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2340code526"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nrpe-<span style="color: #000000;">2.12</span>.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nrpe-<span style="color: #000000;">2.12</span>
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span> all
<span style="color: #c20cb9; font-weight: bold;">make</span> install-plugin
<span style="color: #c20cb9; font-weight: bold;">make</span> install-daemon
<span style="color: #c20cb9; font-weight: bold;">make</span> install-daemon-config
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　4、启动NRPE</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code527'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340527"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code527"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nrpe <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nrpe.cfg <span style="color: #660033;">-d</span></pre></td></tr></table></div>

<p>　　验证NRPE是否正确安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code528'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340528"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2340code528"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec<span style="color: #000000; font-weight: bold;">/</span>check_nrpe <span style="color: #660033;">-H</span> localhost</pre></td></tr></table></div>

<p>　　注：如果成功，会返回NRPE的版本号。</p>
<p>　　5、修改NRPE配置文件，让监控主机可以访问被监控主机的NRPE。</p>
<p>　　缺省NRPE配置文件中只允许本机访问NRPE的Daemon</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code529'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340529"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2340code529"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nrpe.cfg
&nbsp;
<span style="color: #666666; font-style: italic;">#缺省为127.0.0.1，只能本机访问</span>
<span style="color: #007800;">allowed_hosts</span>=192.168.1.108</pre></td></tr></table></div>

<p>　　6、重启nrpe的方法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2340code530'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2340530"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2340code530"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">killall</span> nrpe
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nrpe <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nrpe.cfg <span style="color: #660033;">-d</span></pre></td></tr></table></div>

<p>　　三、参考文档</p>
<p>　　http://www.google.com<br />
　　http://www.linuxidc.com/Linux/2011-05/36092.htm<br />
　　http://bbs.linuxtone.org/forum.php?mod=viewthread&#038;tid=7404&#038;page=1<br />
　　http://www.xtgly.com/2010/09/21/centos-5-5-nginx-nagios监控端和被控端安装配置指南.htm<br />
　　http://www.xtgly.com/2010/09/20/nginx-fastcgi-perl-pl、cgi支持.htm</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/nginx-install-nagios-monitor-platform/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04下构建Nagios监控平台</title>
		<link>http://www.mike.org.cn/articles/ubuntu-nagios-monitor-platform/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-nagios-monitor-platform/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 11:20:17 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2330</guid>
		<description><![CDATA[　　Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务，同时提供异常通知功能等 　　Nagios可运行在Linux/Unix平台之上，同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态，各种系统问题，以及日志等等。 　　Nagios的主要功能特点： 　　&#8211;监视网络服务 (SMTP, POP3, HTTP, NNTP, PING等) 　　&#8211;监视主机资源 (进程, 磁盘等) 　　&#8211;简单的插件设计可以轻松扩展Nagios的监视功能 　　&#8211;服务等监视的并发处理 　　&#8211;错误通知功能 (通过email, pager, 或其他用户自定义方法) 　　&#8211;可指定自定义的事件处理控制器 　　&#8211;可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态，各种系统问题，以及日志等等 　　&#8211;可以通过手机查看系统监控信息 　　一、安装前准备 　　安装的机器上必须有一个WEB服务，本文是在Apache环境上安装的。 　　下载nagios主程序和相关插件程序包 ?View Code BASH1 2 3 wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz 　　安装GD库(Nagios中的statusmap和trends模块必须) ?View Code BASH1 apt-get install libgd2-noxpm libgd2-noxpm-dev 　　二、Nagios监控端安装 　　1、创建Nagios用户及组 　　建立Nagios账号 ?View Code BASH1 /usr/sbin/useradd -m -s /sbin/nologin nagios 　　2、创建一个名为nagcmd的用户组，用于从web接口执行外部命令。将Nagios用户和Apache用户加入组中。 [...]]]></description>
			<content:encoded><![CDATA[<p>　　Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务，同时提供异常通知功能等</p>
<p>　　Nagios可运行在Linux/Unix平台之上，同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态，各种系统问题，以及日志等等。 </p>
<p>　　Nagios的主要功能特点： </p>
<p>　　&#8211;监视网络服务 (SMTP, POP3, HTTP, NNTP, PING等)<br />
　　&#8211;监视主机资源 (进程, 磁盘等)<br />
　　&#8211;简单的插件设计可以轻松扩展Nagios的监视功能<br />
　　&#8211;服务等监视的并发处理<br />
　　&#8211;错误通知功能 (通过email, pager, 或其他用户自定义方法)<br />
　　&#8211;可指定自定义的事件处理控制器<br />
　　&#8211;可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态，各种系统问题，以及日志等等<br />
　　&#8211;可以通过手机查看系统监控信息<span id="more-2330"></span></p>
<p>　　一、安装前准备</p>
<p>　　安装的机器上必须有一个WEB服务，本文是在Apache环境上安装的。</p>
<p>　　下载nagios主程序和相关插件程序包</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code607'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330607"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2330code607"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>prdownloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>sourceforge<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>nagios-3.2.3.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>prdownloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>sourceforge<span style="color: #000000; font-weight: bold;">/</span>nagiosplug<span style="color: #000000; font-weight: bold;">/</span>nagios-plugins-1.4.15.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>prdownloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>sourceforge<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>nrpe-<span style="color: #000000;">2.12</span>.tar.gz</pre></td></tr></table></div>

<p>　　安装GD库(Nagios中的statusmap和trends模块必须)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code608'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330608"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code608"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libgd2-noxpm libgd2-noxpm-dev</pre></td></tr></table></div>

<p>　　二、Nagios监控端安装</p>
<p>　　1、创建Nagios用户及组</p>
<p>　　建立Nagios账号</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code609'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330609"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code609"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>useradd <span style="color: #660033;">-m</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nologin nagios</pre></td></tr></table></div>

<p>　　2、创建一个名为nagcmd的用户组，用于从web接口执行外部命令。将Nagios用户和Apache用户加入组中。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code610'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330610"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2330code610"><pre class="bash" style="font-family:monospace;">groupadd nagcmd
usermod <span style="color: #660033;">-a</span> <span style="color: #660033;">-G</span> nagcmd nagios
usermod <span style="color: #660033;">-a</span> <span style="color: #660033;">-G</span> nagcmd www-data</pre></td></tr></table></div>

<p>　　注：上面的www-data是Apache用户所属的组，如有不同请自行调整。</p>
<p>　　3、编译安装Nagios</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code611'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330611"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code" id="p2330code611"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nagios-3.2.3.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nagios-3.2.3
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-command-group</span>=nagcmd
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> all
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> install-init
<span style="color: #c20cb9; font-weight: bold;">make</span> install-config
<span style="color: #c20cb9; font-weight: bold;">make</span> install-commandmode
<span style="color: #c20cb9; font-weight: bold;">make</span> install-webconf
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　注：make install 用于安装主要的程序、CGI及HTML文件<br />
　　　　make install-init 用于生成init启动脚本<br />
　　　　make install-config 用于安装示例配置文件<br />
　　　　make install-commandmode 用于设置相应的目录权限<br />
　　　　make install-webconf 用于安装Apache配置文件</p>
<p>　　4、验证程序是否被正确安装</p>
<p>　　切换目录到安装路径，这里是/usr/local/nagios,看是否存在etc、bin、 sbin、 share、 var这五个目录，如果存在则可以表明程序被正确的安装到系统了。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code612'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330612"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2330code612"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span>  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>
bin<span style="color: #000000; font-weight: bold;">/</span>     etc<span style="color: #000000; font-weight: bold;">/</span>     sbin<span style="color: #000000; font-weight: bold;">/</span>    share<span style="color: #000000; font-weight: bold;">/</span>   var<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　注；bin&#8211;Nagios执行程序所在目录，其中的nagios文件即为主程序。<br />
　　　　etc&#8211;Nagios配置文件位置<br />
　　　　sbin&#8211;Nagios cgi文件所在目录，也就是执行外部命令所需文件所在的目录<br />
　　　　Share&#8211;Nagios网页文件所在的目录<br />
　　　　var&#8211;Nagios日志文件、spid 等文件所在的目录<br />
　　　　var/archives&#8211;日志归档目录<br />
　　　　var/rw&#8211;用来存放外部命令文件</p>
<p>　　5、配置Nagios Web界面登陆帐号及密码</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code613'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330613"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code613"><pre class="bash" style="font-family:monospace;">htpasswd <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>htpasswd.users mike</pre></td></tr></table></div>

<p>　　修改Nagios配置文件，给新增的用户增加访问权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code614'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330614"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p2330code614"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>cgi.cfg
&nbsp;
<span style="color: #666666; font-style: italic;">#以下几项中分别加入新增的用户，多用户用逗号分隔。</span>
<span style="color: #007800;">authorized_for_system_information</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_configuration_information</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_system_commands</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_all_services</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_all_hosts</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_all_service_commands</span>=nagiosadmin,mike
<span style="color: #007800;">authorized_for_all_host_commands</span>=nagiosadmin,mike</pre></td></tr></table></div>

<p>　　6、编译并安装Nagios插件</p>
<p>　　由于Nagios主程序只是提供一个运行框架，其具体监控是靠运行在其下的插件完成的，所以Nagios插件是必须安装的。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code615'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330615"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2330code615"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nagios-plugins-1.4.15.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nagios-plugins-1.4.15
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-nagios-user</span>=nagios <span style="color: #660033;">--with-nagios-group</span>=nagios
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>　　验证Nagios插件是否正确安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code616'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330616"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code616"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">//</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec</pre></td></tr></table></div>

<p>　　显示安装的插件文件,即所有的插件都安装在libexec这个目录下。</p>
<p>　　７、启动服务</p>
<p>　　启动前先检查下配置文件是否正确</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code617'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330617"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code617"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nagios <span style="color: #660033;">-v</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagios.cfg</pre></td></tr></table></div>

<p>　　如果没有报错，可以启动Nagios服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code618'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330618"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code618"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nagios <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagios.cfg</pre></td></tr></table></div>

<p>　　查看Nagios运行状态</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code619'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330619"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code619"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nagiostats</pre></td></tr></table></div>

<p>　　8、安装NRPE</p>
<p>　　由于Nagios只能监测自己所在的主机的一些本地情况,例如，cpu负载、内存使用、硬盘使用等等。如果想要监测被监控的服务器上的这些本地情况，就要用到NRPE。NRPE(Nagios Remote Plugin Executor)是Nagios的一个扩展，它被用于被监控的服务器上，向Nagios监控平台提供该服务器的一些本地的情况。NRPE可以称为Nagios的Linux客户端。</p>
<p>　　由于NRPE是通过SSL方式在监控和被监控主机上进行数据传输的，所以必须先安装ssl相关的软件包。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code620'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330620"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code620"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libssl-dev libssl0.9.8</pre></td></tr></table></div>

<p>　　编译安装NRPE</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code621'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330621"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2330code621"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nrpe-<span style="color: #000000;">2.12</span>.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nrpe-<span style="color: #000000;">2.12</span>
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span> all
<span style="color: #c20cb9; font-weight: bold;">make</span> install-plugin
<span style="color: #c20cb9; font-weight: bold;">make</span> install-daemon
<span style="color: #c20cb9; font-weight: bold;">make</span> install-daemon-config</pre></td></tr></table></div>

<p>　　注：监控主机上只需要make install-plugin这一步就可以了。监控机上只要有一个check_nrpe插件用于连接被监控端nrpe的daemon就行了。</p>
<p>　　启动NRPE</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code622'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330622"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code622"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nrpe <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nrpe.cfg <span style="color: #660033;">-d</span></pre></td></tr></table></div>

<p>　　验证NRPE是否正确安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code623'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330623"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code623"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec<span style="color: #000000; font-weight: bold;">/</span>check_nrpe <span style="color: #660033;">-H</span> localhost</pre></td></tr></table></div>

<p>　　注：如果成功，会返回NRPE的版本号。<br />
　　<br />
　　三、Nagios被控端安装配置</p>
<p>　　1、创建Nagios用户及组</p>
<p>　　建立Nagios账号</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code624'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330624"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code624"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>useradd <span style="color: #660033;">-m</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nologin nagios</pre></td></tr></table></div>

<p>　　2、编译并安装Nagios插件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code625'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330625"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code625"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nagios-plugins-1.4.15.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nagios-plugins-1.4.15
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-nagios-user</span>=nagios <span style="color: #660033;">--with-nagios-group</span>=nagios
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　验证程序是否被正确安装：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code626'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330626"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code626"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec</pre></td></tr></table></div>

<p>　　显示安装的插件文件,即所有的插件都安装在libexec这个目录下。</p>
<p>　　3、安装NRPE</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code627'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330627"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2330code627"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nrpe-<span style="color: #000000;">2.12</span>.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> nrpe-<span style="color: #000000;">2.12</span>
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span> all
<span style="color: #c20cb9; font-weight: bold;">make</span> install-plugin
<span style="color: #c20cb9; font-weight: bold;">make</span> install-daemon
<span style="color: #c20cb9; font-weight: bold;">make</span> install-daemon-config
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　4、启动NRPE</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code628'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330628"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code628"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nrpe <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nrpe.cfg <span style="color: #660033;">-d</span></pre></td></tr></table></div>

<p>　　验证NRPE是否正确安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code629'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330629"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code629"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec<span style="color: #000000; font-weight: bold;">/</span>check_nrpe <span style="color: #660033;">-H</span> localhost</pre></td></tr></table></div>

<p>　　注：如果成功，会返回NRPE的版本号。</p>
<p>　　5、修改NRPE配置文件，让监控主机可以访问被监控主机的NRPE。</p>
<p>　　缺省NRPE配置文件中只允许本机访问NRPE的Daemon</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code630'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330630"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2330code630"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nrpe.cfg
&nbsp;
<span style="color: #666666; font-style: italic;">#缺省为127.0.0.1，只能本机访问</span>
<span style="color: #007800;">allowed_hosts</span>=192.168.1.108</pre></td></tr></table></div>

<p>　　6、重启nrpe的方法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code631'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330631"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2330code631"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">killall</span> nrpe
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>nrpe <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nrpe.cfg <span style="color: #660033;">-d</span></pre></td></tr></table></div>

<p>　　四、Nagios配置文件关系说明</p>
<p>　　Nagios的配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code632'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330632"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</pre></td><td class="code" id="p2330code632"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#控制cgi访问的配置文件</span>
cgi.cfg
<span style="color: #666666; font-style: italic;">#Nagios主配置文件</span>
nagios.cfg
<span style="color: #666666; font-style: italic;">#resource.cfg</span>
定义了一些变量，以便被其他文件引用，如<span style="color: #007800;">$USER1</span><span style="color: #007800;">$resource</span>.cfg
<span style="color: #666666; font-style: italic;">#objects是一个目录，用于定义Nagios对象</span>
objects
<span style="color: #666666; font-style: italic;">#servers是自己创建的一个目录，Nagios可以加载一个目录下面的所有配置文件（需要在nagios.cfg中配置）</span>
servers
&nbsp;
.<span style="color: #000000; font-weight: bold;">/</span>objects:
<span style="color: #666666; font-style: italic;">#命令定义配置文件，里面定义的命令可以被其他文件引用</span>
commands.cfg
<span style="color: #666666; font-style: italic;">#联系人和联系人组配置文件</span>
contacts.cfg
<span style="color: #666666; font-style: italic;">#监控本地机器的配置文件</span>
localhost.cfg
<span style="color: #666666; font-style: italic;">#监控打印机的一个事例配置文件（默认未启用）</span>
printer.cfg
<span style="color: #666666; font-style: italic;"># 监控路由器的一个事例配置文件（默认未启用）</span>
switch.cfg
<span style="color: #666666; font-style: italic;"># 模板配置文件，在此可以定义模板，在其他文件中引用</span>
templates.cfg
<span style="color: #666666; font-style: italic;"># 定义监控时间段的配置文件</span>
timeperiods.cfg
<span style="color: #666666; font-style: italic;"># 监控Windows的一个事例配置文件（默认未启用）</span>
windows.cfg
&nbsp;
.<span style="color: #000000; font-weight: bold;">/</span>server:
&nbsp;
<span style="color: #666666; font-style: italic;"># 自己创建的主机群组配置文件</span>
hostgroup.cfg
<span style="color: #666666; font-style: italic;"># 自己创建的监控远程Linux主机的配置文件</span>
linux.cfg</pre></td></tr></table></div>

<p>　　五、监控应用</p>
<p>　　监控一个项目最重要的有下面三点:首先是监控哪台机器,然后是这个监控要用什么命令实现,最后就是出了问题的时候要通知哪个联系人。</p>
<p>　　A、定义监控的主机<br />
　　<br />
　　创建一个用于存放监控的项目的目录</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code633'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330633"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code633"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server</pre></td></tr></table></div>

<p>　　配置nagios.cfg文件</p>
<p>　　让Nagios能够访问自定义的目录下的配置文件，增加以下内容：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code634'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330634"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code634"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">cfg_dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server</pre></td></tr></table></div>

<p>　　创建要监控主机的配置文件</p>
<p>　　这里我以示例的localhost.cfg为基础进行创建</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code635'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330635"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code635"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>localhost.cfg  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever1.cfg</pre></td></tr></table></div>

<p>　　先修改对linuxsever.cfg文件中对主机定义部分，服务部分的定义放在后面来说。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code636'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330636"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p2330code636"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define host<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                     linux-server            ; Name of host template to use
							; This host definition will inherit all variables that are defined
							; <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>or inherited by<span style="color: #7a0874; font-weight: bold;">&#41;</span> the linux-server host template definition.
        host_name               linuxsever1
        <span style="color: #7a0874; font-weight: bold;">alias</span>                   linuxsever1
        address                 192.168.1.106
        <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Define an optional hostgroup for Linux machines</span>
&nbsp;
define hostgroup<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        hostgroup_name  linuxsever ; The name of the hostgroup
        <span style="color: #7a0874; font-weight: bold;">alias</span>           linuxsever ; Long name of the group
        members         linuxsever1     ; Comma separated list of hosts that belong to this group
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　B、定义监控的命令</p>
<p>　　要对主机上的服务进行监控，首先需要定义监控服务所使用的监控命令。</p>
<p>　　监控远程服务和资源的命令以及如何发送邮件命令的定义一般都在commands.cfg中进行。大部分监控远程服务和资源的命令都是通过/usr/local/nagios/libexec下的脚本实现，如ping命令为check_ping。</p>
<p>　　配置commands.cfg文件 </p>
<p>　　我们这里要对被监控服务器的一些本地资源情况，这里就先加入NRPE的支持。</p>
<p>　　定义NRPE支持，commands.cfg中增加以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code637'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330637"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code637"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>commands.cfg
&nbsp;
define <span style="color: #7a0874; font-weight: bold;">command</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
	command_name check_nrpe
	command_line <span style="color: #007800;">$USER1</span>$<span style="color: #000000; font-weight: bold;">/</span>check_nrpe <span style="color: #660033;">-H</span> <span style="color: #007800;">$HOSTADDRESS</span>$ <span style="color: #660033;">-c</span> <span style="color: #007800;">$ARG1</span>$
	<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　定义发送邮件的命令，实现邮件报警</p>
<p>　　修改commands.cfg中的notify-host-by-email和notify-service-by-email命令</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code638'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330638"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p2330code638"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>commands.cfg
&nbsp;
<span style="color: #666666; font-style: italic;"># 'notify-host-by-email' command definition</span>
define <span style="color: #7a0874; font-weight: bold;">command</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
	command_name	notify-host-by-email
	command_line    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;%b&quot;</span> <span style="color: #ff0000;">&quot;***** Nagios *****<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Notification Type: <span style="color: #007800;">$NOTIFICATIONTYPE</span>$<span style="color: #000099; font-weight: bold;">\n</span>Host: <span style="color: #007800;">$HOSTNAME</span>$<span style="color: #000099; font-weight: bold;">\n</span>State: <span style="color: #007800;">$HOSTSTATE</span>$<span style="color: #000099; font-weight: bold;">\n</span>Address: <span style="color: #007800;">$HOSTADDRESS</span>$<span style="color: #000099; font-weight: bold;">\n</span>Info: <span style="color: #007800;">$HOSTOUTPUT</span>$<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Date/Time: <span style="color: #007800;">$LONGDATETIME</span>$<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sendEmail <span style="color: #660033;">-f</span> nagiosdemo<span style="color: #000000; font-weight: bold;">@</span><span style="color: #000000;">163</span>.com <span style="color: #660033;">-t</span> <span style="color: #007800;">$CONTACTEMAIL</span>$ <span style="color: #660033;">-s</span> smtp.163.com <span style="color: #660033;">-u</span> <span style="color: #ff0000;">&quot;** <span style="color: #007800;">$NOTIFICATIONTYPE</span>$ Host Alert: <span style="color: #007800;">$HOSTNAME</span>$ is <span style="color: #007800;">$HOSTSTATE</span>$ **&quot;</span> <span style="color: #660033;">-xu</span> nagiosdemo <span style="color: #660033;">-xp</span> nagiosdemo
	<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># 'notify-service-by-email' command definition</span>
define <span style="color: #7a0874; font-weight: bold;">command</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
	command_name	notify-service-by-email
	command_line    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;%b&quot;</span> <span style="color: #ff0000;">&quot;***** Nagios *****<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Notification Type: <span style="color: #007800;">$NOTIFICATIONTYPE</span>$<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Service: <span style="color: #007800;">$SERVICEDESC</span>$<span style="color: #000099; font-weight: bold;">\n</span>Host: <span style="color: #007800;">$HOSTALIAS</span>$<span style="color: #000099; font-weight: bold;">\n</span>Address: <span style="color: #007800;">$HOSTADDRESS</span>$<span style="color: #000099; font-weight: bold;">\n</span>State: <span style="color: #007800;">$SERVICESTATE</span>$<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Date/Time: <span style="color: #007800;">$LONGDATETIME</span>$<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Additional Info:<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #007800;">$SERVICEOUTPUT</span>$<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sendEmail <span style="color: #660033;">-f</span> nagiosdemo<span style="color: #000000; font-weight: bold;">@</span><span style="color: #000000;">163</span>.com <span style="color: #660033;">-t</span> <span style="color: #007800;">$CONTACTEMAIL</span>$ <span style="color: #660033;">-s</span> smtp.163.com <span style="color: #660033;">-u</span> <span style="color: #ff0000;">&quot;** <span style="color: #007800;">$NOTIFICATIONTYPE</span>$ Service Alert: <span style="color: #007800;">$HOSTALIAS</span>$/<span style="color: #007800;">$SERVICEDESC</span>$ is <span style="color: #007800;">$SERVICESTATE</span>$ **&quot;</span> <span style="color: #660033;">-xu</span> nagiosdemo <span style="color: #660033;">-xp</span> nagiosdemo
	<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　注：监控主机上没有安装任何SMTP服务，这里就采用了外部邮件服务器上SMTP服务进行发送邮件。这样就需要一个可自定义SMTP服务器的邮件客户端。这里采用的是sendEmail。</p>
<p>　　SendEmail简单介绍</p>
<p>　　SendEmail官方地址：http://caspian.dotconf.net/menu/Software/SendEmail/</p>
<p>　　安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code639'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330639"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code639"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> sendemail</pre></td></tr></table></div>

<p>　　基本用法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code640'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330640"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code640"><pre class="bash" style="font-family:monospace;">sendemail <span style="color: #660033;">-f</span> nagiosdemo<span style="color: #000000; font-weight: bold;">@</span><span style="color: #000000;">163</span>.com <span style="color: #660033;">-t</span> nagiosdemo<span style="color: #000000; font-weight: bold;">@</span><span style="color: #000000;">163</span>.com <span style="color: #660033;">-s</span> smtp.163.com <span style="color: #660033;">-u</span> “from nagios” <span style="color: #660033;">-xu</span> nagiosdemo <span style="color: #660033;">-xp</span> nagiosdemo <span style="color: #660033;">-m</span> happy</pre></td></tr></table></div>

<p>　　各参数具体含义</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code641'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330641"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2330code641"><pre class="bash" style="font-family:monospace;">-f　表示发送者的邮箱
-t　表示接收者的邮箱
-s　表示SMTP服务器的域名或者ip
-u　表示邮件的主题
<span style="color: #660033;">-xu</span>  表示SMTP验证的用户名
<span style="color: #660033;">-xp</span>  表示SMTP验证的密码<span style="color: #7a0874; font-weight: bold;">&#40;</span>注意:这个密码有限制,一些特殊符号或者超长度密码不能被正确识别<span style="color: #7a0874; font-weight: bold;">&#41;</span>
-m　表示邮件的内容</pre></td></tr></table></div>

<p>　　更详细用法可参考官方文档或直接运行sendEmail就会显示详细的用法。</p>
<p>　　小技巧：如果这里的收件邮箱采用139的邮箱，就一举两得的同时实现了邮件报警和短信报警的两个功能。因为139邮箱提供了邮件到达后，免费短信提醒通知功能。也算是短信通知了另一种实现方式吧，呵呵！</p>
<p>　　注：飞信机器人在Ubuntu 10.04环境下不能成功运行，提示&#8217;No such file or directory&#8217;,由于无更多提示信息，暂不能解决。CentOS5.2下能成功运行，不知是不是由于官方提供的飞信机器人支持库是在CentOS环境编译的原因！</p>
<p>　　C、定义监控联系人和联系人组</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code642'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330642"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p2330code642"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>contacts.cfg
&nbsp;
define contact<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        contact_name                    mike            ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template <span style="color: #7a0874; font-weight: bold;">&#40;</span>defined above<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        <span style="color: #7a0874; font-weight: bold;">alias</span>                           Nagios Admin            ; Full name of user
&nbsp;
        email                           nagios<span style="color: #000000; font-weight: bold;">@</span>nagios.com  ; <span style="color: #000000; font-weight: bold;">&lt;&lt;*****</span> CHANGE THIS TO YOUR EMAIL ADDRESS <span style="color: #000000; font-weight: bold;">******</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
define contactgroup<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        contactgroup_name       admins
        <span style="color: #7a0874; font-weight: bold;">alias</span>                   Nagios Administrators
        members                 mike
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　D、定义常用监控的服务</p>
<p>　　Nagios监控功能非常的强大，这里只说下比较常见的一些监控项目。</p>
<p>　　A、通过NRPE监控被监控主机的本地资源信息</p>
<p>　　1、监控被监控主机的负载情况</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code643'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330643"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2330code643"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Current Load
	check_command			check_nrpe<span style="color: #000000; font-weight: bold;">!</span>check_load
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　2、监控被监控主机上的登陆用户数</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code644'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330644"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2330code644"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Current Users
	check_command			check_nrpe<span style="color: #000000; font-weight: bold;">!</span>check_users
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　3、监控被监控主机上的根分区磁盘使用情况</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code645'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330645"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2330code645"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Root Partition
	check_command			check_nrpe<span style="color: #000000; font-weight: bold;">!</span>check_sda1
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　4、监控被监控主机上的Swap使用情况</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code646'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330646"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2330code646"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Swap Usage
	check_command			check_nrpe<span style="color: #000000; font-weight: bold;">!</span>check_swap
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　5、监控被监控主机上的运行的总进程数</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code647'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330647"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2330code647"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Total Processes
	check_command			check_nrpe<span style="color: #000000; font-weight: bold;">!</span>check_total_procs
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　B、监控被监控主机上的应用服务</p>
<p>　　1、监控MySQL</p>
<p>　　监控MySQL有两种方法，一种是通过官方的check_mysql插件，另一种是通过第三方的check_mysql_health的插件。check_mysql_health的功能更为强大一些，这里我两种都简单的说下。<br />
　　<br />
　　a、通过官方的check_mysql插件实现</p>
<p>　　在被监控主机上的数据库添加监控帐号密码</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code648'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330648"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2330code648"><pre class="bash" style="font-family:monospace;">GRANT ALL PRIVILEGES ON <span style="color: #000000; font-weight: bold;">*</span>.<span style="color: #000000; font-weight: bold;">*</span> TO <span style="color: #ff0000;">'nagios'</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #ff0000;">'192.168.1.%'</span> IDENTIFIED BY <span style="color: #ff0000;">'000000'</span>;
Flush Privileges;</pre></td></tr></table></div>

<p>　　commands.cfg加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code649'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330649"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code649"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>commands.cfg
&nbsp;
define <span style="color: #7a0874; font-weight: bold;">command</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
	command_name check_mysql
	command_line <span style="color: #007800;">$USER1</span>$<span style="color: #000000; font-weight: bold;">/</span>check_mysql <span style="color: #660033;">-H</span> <span style="color: #007800;">$ARG1</span>$ <span style="color: #660033;">-P</span> <span style="color: #007800;">$ARG2</span>$ <span style="color: #660033;">-u</span> <span style="color: #007800;">$ARG3</span>$ <span style="color: #660033;">-p</span> <span style="color: #007800;">$ARG4</span>$
	<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　linuxsever.cfg中加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code650'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330650"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2330code650"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
	 use                     generic-service
	 host_name               linuxsever1
	 service_description     mysql
	 check_command           check_mysql<span style="color: #000000; font-weight: bold;">!</span>192.168.1.106<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">3306</span><span style="color: #000000; font-weight: bold;">!</span>nagios<span style="color: #000000; font-weight: bold;">!</span>000000
	 notifications_enabled   <span style="color: #000000;">1</span>
	<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　b、通过check_mysql_health插件实现MySQL监控</p>
<p>　　check_mysql_health插件比起官方的check_mysql插件功能更为强大，check_mysql_health不但能监控MySQL是否正常运行，还能监控MySQL主从、MySQL连接数情况、MySQL慢查询等多种监控指标。</p>
<p>　　check_mysql_health官方主页：http://labs.consol.de/nagios/check_mysql_health/</p>
<p>　　安装check_mysql_health</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code651'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330651"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code651"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>labs.consol.de<span style="color: #000000; font-weight: bold;">/</span>wp-content<span style="color: #000000; font-weight: bold;">/</span>uploads<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2011</span><span style="color: #000000; font-weight: bold;">/</span>04<span style="color: #000000; font-weight: bold;">/</span>check_mysql_health-2.1.5.1.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf check_mysql_health-2.1.5.1.tar.gz 
<span style="color: #7a0874; font-weight: bold;">cd</span> check_mysql_health-2.1.5.1
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>　　check_mysql_health插件基本用法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code652'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330652"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code652"><pre class="bash" style="font-family:monospace;">check_mysql_health <span style="color: #660033;">--hostname</span> 192.168.1.106 <span style="color: #660033;">--port</span> <span style="color: #000000;">3306</span> <span style="color: #660033;">--username</span> nagios <span style="color: #660033;">--password</span> 000000 <span style="color: #660033;">--mode</span> slave-io-running</pre></td></tr></table></div>

<p>　　各参数具体含义</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code653'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330653"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2330code653"><pre class="bash" style="font-family:monospace;">--hostname　定义被监控主机的IP或机器名
--port　　　  定义被监控主机上MySQL的运行端口
--username　定义被监控主机上MySQL的用户名
--password　 定义被监控主机上MySQL的密码
--mode　　　定义被监控主机上MySQL的监控指标</pre></td></tr></table></div>

<p>　　监控MySQL主从</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code654'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330654"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2330code654"><pre class="bash" style="font-family:monospace;">GRANT super,process ON <span style="color: #000000; font-weight: bold;">*</span>.<span style="color: #000000; font-weight: bold;">*</span> TO <span style="color: #ff0000;">'nagios'</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #ff0000;">'192.168.1.%'</span> IDENTIFIED BY <span style="color: #ff0000;">'000000'</span>;
Flush Privileges;</pre></td></tr></table></div>

<p>　　commands.cfg加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code655'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330655"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code655"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>commands.cfg
&nbsp;
define <span style="color: #7a0874; font-weight: bold;">command</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
        command_name check_mysql_health
        command_line <span style="color: #007800;">$USER1</span>$<span style="color: #000000; font-weight: bold;">/</span>check_mysql_health <span style="color: #660033;">--hostname</span> <span style="color: #007800;">$ARG1</span>$ <span style="color: #660033;">--port</span> <span style="color: #007800;">$ARG2</span>$ <span style="color: #660033;">--username</span> <span style="color: #007800;">$ARG3</span>$ <span style="color: #660033;">--password</span> <span style="color: #007800;">$ARG4</span>$ <span style="color: #660033;">--mode</span> <span style="color: #007800;">$ARG5</span>$
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　linuxsever.cfg中加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code656'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330656"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p2330code656"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             check_mysql_slave_io
        check_command                   check_mysql_health<span style="color: #000000; font-weight: bold;">!</span>192.168.1.106<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">3306</span><span style="color: #000000; font-weight: bold;">!</span>nagios<span style="color: #000000; font-weight: bold;">!</span>000000<span style="color: #000000; font-weight: bold;">!</span>slave-io-running
        notifications_enabled           <span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             check_mysql_slave_sql
        check_command                   check_mysql_health<span style="color: #000000; font-weight: bold;">!</span>192.168.1.106<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">3306</span><span style="color: #000000; font-weight: bold;">!</span>nagios<span style="color: #000000; font-weight: bold;">!</span>000000<span style="color: #000000; font-weight: bold;">!</span>slave-sql-running
        notifications_enabled           <span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　监控MySQL连接时间</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code657'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330657"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2330code657"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             check_mysql_connection_time
        check_command                   check_mysql_health<span style="color: #000000; font-weight: bold;">!</span>192.168.2.50<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">3306</span><span style="color: #000000; font-weight: bold;">!</span>nagios<span style="color: #000000; font-weight: bold;">!</span>PoGtvEu4qkhP8jILruo0<span style="color: #000000; font-weight: bold;">!</span>connection-time
        notifications_enabled           <span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　监控MySQL连接数</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code658'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330658"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2330code658"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             check_mysql_threads_connected
        check_command                   check_mysql_health<span style="color: #000000; font-weight: bold;">!</span>192.168.2.50<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">3306</span><span style="color: #000000; font-weight: bold;">!</span>nagios<span style="color: #000000; font-weight: bold;">!</span>PoGtvEu4qkhP8jILruo0<span style="color: #000000; font-weight: bold;">!</span>threads-connected
        notifications_enabled           <span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　监控MySQL慢查询情况</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code659'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330659"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2330code659"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             check_mysql_slow_queries
        check_command                   check_mysql_health<span style="color: #000000; font-weight: bold;">!</span>192.168.2.50<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">3306</span><span style="color: #000000; font-weight: bold;">!</span>nagios<span style="color: #000000; font-weight: bold;">!</span>PoGtvEu4qkhP8jILruo0<span style="color: #000000; font-weight: bold;">!</span>slow-queries
        notifications_enabled           <span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　监控MySQL锁表情况</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code660'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330660"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2330code660"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             check_mysql_table_lock_contention
        check_command                   check_mysql_health<span style="color: #000000; font-weight: bold;">!</span>192.168.2.50<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">3306</span><span style="color: #000000; font-weight: bold;">!</span>nagios<span style="color: #000000; font-weight: bold;">!</span>PoGtvEu4qkhP8jILruo0<span style="color: #000000; font-weight: bold;">!</span>table-lock-contention
        notifications_enabled           <span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　2、监控Rsync</p>
<p>　　下载监控脚本check_rsync2</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code661'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330661"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2330code661"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>libexec<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-O</span> check_rsync2 <span style="color: #ff0000;">'http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=307&amp;cf_id=29'</span> 
<span style="color: #c20cb9; font-weight: bold;">chown</span> nagios:nagios check_rsync2
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> check_rsync2</pre></td></tr></table></div>

<p>　　commands.cfg加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code662'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330662"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code662"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>commands.cfg
&nbsp;
define <span style="color: #7a0874; font-weight: bold;">command</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
	command_name check_rsync
	command_line <span style="color: #007800;">$USER1</span>$<span style="color: #000000; font-weight: bold;">/</span>check_rsync2 <span style="color: #660033;">-H</span> <span style="color: #007800;">$HOSTADDRESS</span>$ <span style="color: #660033;">-p</span> <span style="color: #007800;">$ARG1</span>$
	<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　linuxsever.cfg中加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code663'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330663"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2330code663"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
	 use                     generic-service
	 host_name               linuxsever1
	 service_description     rsync
	 check_command           check_rsync<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">873</span>
	 notifications_enabled   <span style="color: #000000;">1</span>
	<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　3、监控HTTP</p>
<p>　　linuxsever.cfg中加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code664'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330664"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2330code664"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             HTTP
	check_command			check_http
	notifications_enabled		<span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　用check_http插件监控某个页面是否包含特定的内容</p>
<p>　　以监控http://192.168.1.106:8080/checkstatus.php为例</p>
<p>　　commands.cfg加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code665'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330665"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code665"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>commands.cfg
&nbsp;
define <span style="color: #7a0874; font-weight: bold;">command</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
        command_name check_http_page
        command_line <span style="color: #007800;">$USER1</span>$<span style="color: #000000; font-weight: bold;">/</span>check_http <span style="color: #660033;">-H</span> <span style="color: #007800;">$ARG1</span>$ <span style="color: #660033;">-p</span> <span style="color: #007800;">$ARG2</span>$ <span style="color: #660033;">-u</span> <span style="color: #007800;">$ARG3</span>$ <span style="color: #660033;">-R</span> <span style="color: #007800;">$ARG4</span>$
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　linuxsever.cfg中加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code666'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330666"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2330code666"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             check_http_page_status
        check_command                   check_http_page<span style="color: #000000; font-weight: bold;">!</span>192.168.1.106<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">8080</span><span style="color: #000000; font-weight: bold;">!/</span>checkstatus.php<span style="color: #000000; font-weight: bold;">!</span><span style="color: #ff0000;">'ok'</span><span style="color: #000000; font-weight: bold;">!</span>
        notifications_enabled           <span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　注：这里是用的check_http的-R参数来做搜索的。-R参数是不区分大小的，另外还有-s和-r也可达到类似目的。如下面的例子：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code667'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330667"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2330code667"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>check_http <span style="color: #660033;">-H</span> 192.168.1.106 <span style="color: #660033;">-p</span> <span style="color: #000000;">8080</span> <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;">/</span>checkstatus.php <span style="color: #660033;">-R</span> <span style="color: #ff0000;">'ok'</span>
.<span style="color: #000000; font-weight: bold;">/</span>check_http <span style="color: #660033;">-H</span> 192.168.1.106 <span style="color: #660033;">-p</span> <span style="color: #000000;">8080</span> <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;">/</span>checkstatus.php <span style="color: #660033;">-s</span> <span style="color: #ff0000;">'Ok'</span>
.<span style="color: #000000; font-weight: bold;">/</span>check_http <span style="color: #660033;">-H</span> 192.168.1.106 <span style="color: #660033;">-p</span> <span style="color: #000000;">8080</span> <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;">/</span>checkstatus.php <span style="color: #660033;">-r</span> <span style="color: #ff0000;">'Ok'</span></pre></td></tr></table></div>

<p>　　-s <string>　预期页面代码中的内容(区分大小写)<br />
　　-r <string>　检查页面的返回值(区分大小写)<br />
　　-R <string>　检查页面的返回值(不区分大小写)</p>
<p>　　4、监控SSH</p>
<p>　　linuxsever.cfg中加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code668'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330668"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2330code668"><pre class="bash" style="font-family:monospace;">define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             SSH
	check_command			check_ssh
	notifications_enabled		<span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　5、监控PING</p>
<p>　　linuxsever.cfg中加入以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code669'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330669"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code669"><pre class="bash" style="font-family:monospace;">define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             PING
	check_command			check_ping<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">100.0</span>,<span style="color: #000000;">20</span><span style="color: #000000; font-weight: bold;">%!</span><span style="color: #000000;">500.0</span>,<span style="color: #000000;">60</span><span style="color: #000000; font-weight: bold;">%</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　六、一些说明</p>
<p>　　我整体的Nagios的配置都是以官方自带模板文件(objects/templates.cfg)为基础进行扩展的，这里把模板文件中一些常用选项做一个简单的说明。</p>
<p>　　主要修改的也只有templates.cfg的一些选项，监控时段定义采用的缺省定义(objects/timeperiods.cfg)。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code670'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330670"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2330code670"><pre class="bash" style="font-family:monospace;">check_interval          <span style="color: #000000;">5</span>       <span style="color: #666666; font-style: italic;">#每5分钟检测一次</span>
retry_check_interval    <span style="color: #000000;">1</span>       <span style="color: #666666; font-style: italic;">#出现问题时每1分钟重检测一次</span>
max_check_attempts      <span style="color: #000000;">3</span>       <span style="color: #666666; font-style: italic;">#检测失败后最大重试次数</span>
notification_interval   <span style="color: #000000;">10</span>      <span style="color: #666666; font-style: italic;">#10分钟发送一次警报</span>
notification_period     24x7    <span style="color: #666666; font-style: italic;">#发送警报的时间段</span>
notification_options    <span style="color: #c20cb9; font-weight: bold;">w</span>,u,c,r <span style="color: #666666; font-style: italic;">#什么情况发送警报</span></pre></td></tr></table></div>

<p>　　检测间隔的单位是由nagios.cfg里interval_length定义的，缺省nagios.cfg里面的nterval_length为60秒，就是1分钟！</p>
<p>　　报警状态说明：</p>
<p>　　w—报警(warning)<br />
　　u—未知(unkown)<br />
　　c—严重(critical)<br />
　　r—从异常情况恢复正常(recoveries)<br />
　　d—当机(down)<br />
　　f—(flapping)检测主机或服务处于抖动状态<br />
　　s—(scheduled)计划的开始和结束停机。</p>
<p>　　注：当主机状态过度频繁地变换状态时可以考虑状态处于“抖动”(flapping)。一个明显的例子就是一台主机由于加载操作系统而不断地重启动，这种状态就是处于抖动。</p>
<p>　　七、给Nagios加入性能图表</p>
<p>　　PNP4Nagios是一个用于显示Nagios性能图表的插件，基于RRDTool日志分析，并以Kohana(一个PHP开发框架)呈现在Web端，可以以Action Url的形式集成到Nagios中。</p>
<p>　　A、安装相关环境</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code671'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330671"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code671"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> rrdtool librrds-perl php5-gd</pre></td></tr></table></div>

<p>　　Apache启用rewrite模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code672'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330672"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code672"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>mods-available<span style="color: #000000; font-weight: bold;">/</span>rewrite.load <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>mods-enabled<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　B、安装PNP4Nagios</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code673'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330673"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p2330code673"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>projects<span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>PNP-<span style="color: #000000;">0.6</span><span style="color: #000000; font-weight: bold;">/</span>pnp4nagios-0.6.13.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf  pnp4nagios-0.6.13.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> pnp4nagios-0.6.13
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-nagios-user</span>=nagios <span style="color: #660033;">--with-nagios-group</span>=nagcmd
<span style="color: #c20cb9; font-weight: bold;">make</span> all
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> install-webconf
<span style="color: #c20cb9; font-weight: bold;">make</span> install-config
<span style="color: #c20cb9; font-weight: bold;">make</span> install-init
&nbsp;
<span style="color: #666666; font-style: italic;">#使用下面这条命令可以替换所有的make命令</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> fullinstall
&nbsp;
<span style="color: #666666; font-style: italic;">#重启Apache,让PNP4Nagios的Web访问生效</span>
apache2ctl restart</pre></td></tr></table></div>

<p>　　注：如果单独编译安装的rrdtoool，则需使用&#8211;with-rrdtool显示指定rrdtool的位置。如：&#8211;with-rrdtool=/usr/local/rrdtool-1.2.xx/bin/rrdtool这样的形式</p>
<p>　　C、配置PNP4Nagios</p>
<p>　　PNP4Nagios有三种工作模式，分别是Synchronous Mode、Bulk Mode和Bulk Mode with NPCD，下面以Synchronous Mode来配置PNP4Nagios。</p>
<p>　　修改Nagios的主配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code674'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330674"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2330code674"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nagios.cfg
&nbsp;
<span style="color: #007800;">process_performance_data</span>=<span style="color: #000000;">1</span>
<span style="color: #007800;">service_perfdata_command</span>=process-service-perfdata
<span style="color: #007800;">host_perfdata_command</span>=process-host-perfdata</pre></td></tr></table></div>

<p>　　修改Nagios的command.cfg配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code675'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330675"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p2330code675"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>commands.cfg
&nbsp;
<span style="color: #666666; font-style: italic;">#增加以下两个命令</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#process-service-perfdata command definition</span>
&nbsp;
define <span style="color: #7a0874; font-weight: bold;">command</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
       command_name    process-service-perfdata
       command_line    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>libexec<span style="color: #000000; font-weight: bold;">/</span>process_perfdata.pl
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#process-host-perfdata command definition</span>
&nbsp;
define <span style="color: #7a0874; font-weight: bold;">command</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
       command_name    process-host-perfdata
       command_line    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>libexec<span style="color: #000000; font-weight: bold;">/</span>process_perfdata.pl <span style="color: #660033;">-d</span> HOSTPERFDATA
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　注意：commands.cfg已经定义了相应命令，需要先注释掉。否则后面重启Nagios时，会因为配置文件中命令重复而报错。</p>
<p>　　D、检查PNP4Nagios是否正确安装</p>
<p>　　访问http://ip/php4nagios，会进行一些必要的环境测试，如果页面最下方出现[Your environment passed all requirements. Remove or rename the /usr/local/pnp4nagios/share/install.php file now.]这一行绿色的提示就表示PNP4Nagios环境已正确。</p>
<p>　　如果所有的环境都配置正确了，删除或重命名install.php文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code676'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330676"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code676"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mv</span>  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>install.php  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>install.php.bak</pre></td></tr></table></div>

<p>　　E、将性能图集成到nagios的web页面中</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code677'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330677"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p2330code677"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>templates.cfg
&nbsp;
<span style="color: #666666; font-style: italic;">#在最后添加</span>
&nbsp;
define host <span style="color: #7a0874; font-weight: bold;">&#123;</span>
   name       host-pnp
   action_url <span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>index.php<span style="color: #000000; font-weight: bold;">/</span>graph?<span style="color: #007800;">host</span>=<span style="color: #007800;">$HOSTNAME</span>$<span style="color: #000000; font-weight: bold;">&amp;</span><span style="color: #007800;">srv</span>=_HOST_
   register   <span style="color: #000000;">0</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
define service <span style="color: #7a0874; font-weight: bold;">&#123;</span>
   name       srv-pnp
   action_url <span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>index.php<span style="color: #000000; font-weight: bold;">/</span>graph?<span style="color: #007800;">host</span>=<span style="color: #007800;">$HOSTNAME</span>$<span style="color: #000000; font-weight: bold;">&amp;</span><span style="color: #007800;">srv</span>=<span style="color: #007800;">$SERVICEDESC</span>$
   register   <span style="color: #000000;">0</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　让PNP4Nagios显示的性能图表在Nagios的主机或服务中显示，需要在定义主机和服务时加入host-pnp和srv-pnp配置实例。</p>
<p>　　具体修改文件视Nagios中定义而定，下面只是一个示例，主要的修改就是在use行加入相应的模板。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code678'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330678"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p2330code678"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>linuxsever.cfg
&nbsp;
define host<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                     linux-server,host-pnp            ; Name of host template to use
                                                        ; This host definition will inherit all variables that are defined
                                                        ; <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>or inherited by<span style="color: #7a0874; font-weight: bold;">&#41;</span> the linux-server host template definition.
        host_name               192.168.1.106
        <span style="color: #7a0874; font-weight: bold;">alias</span>                   192.168.1.106
        address                 192.168.1.106
        <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
define service<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        use                             generic-service,srv-pnp         ; Name of service template to use
        host_name                       192.168.1.106
        service_description             PING
        check_command                   check_ping<span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">100.0</span>,<span style="color: #000000;">20</span><span style="color: #000000; font-weight: bold;">%!</span><span style="color: #000000;">500.0</span>,<span style="color: #000000;">60</span><span style="color: #000000; font-weight: bold;">%</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　注：如果有多个主机和服务，每一个定义中都需要加入。</p>
<p>　　F、重启Nagios服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code679'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330679"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code679"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>nagios restart</pre></td></tr></table></div>

<p>　　访问http://ip/nagios，点击主机或服务后面小太阳图标就可查看相应图表。</p>
<p>　　G、弹窗方式显示性能图表</p>
<p>　　上面的方法必须点击主机或服务后面小太阳图标才能查看相应的性能图表，下面的方法可直接在Nagios页面中以弹出窗口显示性能图表。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code680'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330680"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code680"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> pnp4nagios-0.6.13<span style="color: #000000; font-weight: bold;">/</span>contrib<span style="color: #000000; font-weight: bold;">/</span>ssi<span style="color: #000000; font-weight: bold;">/</span>status-header.ssi <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>ssi<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　注：contrib/ssi/status-header.ssi在源代码目录中<br />
　　　　status-header.ssi文件必须没有执行权限</p>
<p>　　修改Nagios的模板文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code681'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330681"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p2330code681"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nagios<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>objects<span style="color: #000000; font-weight: bold;">/</span>templates.cfg
&nbsp;
define host <span style="color: #7a0874; font-weight: bold;">&#123;</span>
   name       host-pnp
   action_url <span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>index.php<span style="color: #000000; font-weight: bold;">/</span>graph?<span style="color: #007800;">host</span>=<span style="color: #007800;">$HOSTNAME</span>$<span style="color: #000000; font-weight: bold;">&amp;</span><span style="color: #007800;">srv</span>=_HOST_<span style="color: #ff0000;">' class='</span>tips<span style="color: #ff0000;">' rel='</span><span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>index.php<span style="color: #000000; font-weight: bold;">/</span>popup?<span style="color: #007800;">host</span>=<span style="color: #007800;">$HOSTNAME</span>$<span style="color: #000000; font-weight: bold;">&amp;</span><span style="color: #007800;">srv</span>=_HOST_
   register   <span style="color: #000000;">0</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
define service <span style="color: #7a0874; font-weight: bold;">&#123;</span>
   name       srv-pnp
   action_url <span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>index.php<span style="color: #000000; font-weight: bold;">/</span>graph?<span style="color: #007800;">host</span>=<span style="color: #007800;">$HOSTNAME</span>$<span style="color: #000000; font-weight: bold;">&amp;</span><span style="color: #007800;">srv</span>=<span style="color: #007800;">$SERVICEDESC</span>$<span style="color: #ff0000;">' class='</span>tips<span style="color: #ff0000;">' rel='</span><span style="color: #000000; font-weight: bold;">/</span>pnp4nagios<span style="color: #000000; font-weight: bold;">/</span>index.php<span style="color: #000000; font-weight: bold;">/</span>popup?<span style="color: #007800;">host</span>=<span style="color: #007800;">$HOSTNAME</span>$<span style="color: #000000; font-weight: bold;">&amp;</span><span style="color: #007800;">srv</span>=<span style="color: #007800;">$SERVICEDESC</span>$
   register   <span style="color: #000000;">0</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>　　注：如果按文中之前的方式定义过，请先注释掉。</p>
<p>　　重启Nagios服务</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2330code682'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2330682"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2330code682"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>nagios restart</pre></td></tr></table></div>

<p>　　访问http://ip/nagios，鼠标移动到主机或服务后面小太阳图标上就会显示相应的性能图表。</p>
<p>　　八、参考文档</p>
<p>　　http://www.google.com<br />
　　http://www.codelast.com/?p=1037<br />
　　http://www.codelast.com/?p=2301<br />
　　http://nagios-cn.sourceforge.net<br />
　　http://www.rossi.url.tw/wordpress/?p=327<br />
　　http://www.viyin.net/2010/03/nginx-nagios.html<br />
　　http://blog.csdn.net/wangxiaosen/article/details/5941384<br />
　　http://nomyself.info/index.php/2011/06/15/the-alarm-control-nagios/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-nagios-monitor-platform/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Unbutu 10.04(X64)下编译安装LNMP平台(Nginx1.0+PHP5.3.6+Mysql5.5.11)</title>
		<link>http://www.mike.org.cn/articles/unbutu-compile-install-lnmp/</link>
		<comments>http://www.mike.org.cn/articles/unbutu-compile-install-lnmp/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 18:59:03 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[myql]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2325</guid>
		<description><![CDATA[　　本文用Unbutu 10.04+Nginx1.0+PHP5.3.6+Mysql5.5.11构建LNMP(X64)平台。 　　文档以上次写的[CentOS 5.6(X64)下编译安装LNMP平台(Nginx1.0+PHP5.3.6+Mysql5.5.11)]为基础，将相关内容修改成了Unbutu的方式。 　　一、获取相关开源程序 　　１、本文基本以源码编译为主，首先需要安装基础编译环境所需要的软件和库。本文安装Ubuntu系统时只安装最基础的包(安装时软件套件都未选择)，下面的所需要的包可根据自己系统环境情况自行调整。 　　安装编译所需的基础环境 ?View Code BASH1 2 3 4 5 6 7 8 &#160; apt-get -y install gcc g++ autoconf \ libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev libpng3 libfreetype6 libfreetype6-dev libxml2 \ libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libglib2.0-0 libglib2.0-dev bzip2 \ libbz2-dev libzip-dev libncurses5-dev libncurses5 curl libcurl3 libcurl4-openssl-dev e2fsprogs \ libkrb5-3 libkrb5-dev libidn11 [...]]]></description>
			<content:encoded><![CDATA[<p>　　本文用Unbutu 10.04+Nginx1.0+PHP5.3.6+Mysql5.5.11构建LNMP(X64)平台。</p>
<p>　　文档以上次写的[<a title="CentOS 5.6(X64)下编译安装LNMP平台(Nginx1.0+PHP5.3.6+Mysql5.5.11)" href="http://www.mike.org.cn/articles/centos56-x64-compile-install-lemp/" target="_blank">CentOS 5.6(X64)下编译安装LNMP平台(Nginx1.0+PHP5.3.6+Mysql5.5.11)</a>]为基础，将相关内容修改成了Unbutu的方式。</p>
<p>　　一、获取相关开源程序</p>
<p>　　１、本文基本以源码编译为主，首先需要安装基础编译环境所需要的软件和库。本文安装Ubuntu系统时只安装最基础的包(安装时软件套件都未选择)，下面的所需要的包可根据自己系统环境情况自行调整。</p>
<p>　　安装编译所需的基础环境<span id="more-2325"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2325code691'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325691"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2325code691"><pre class="bash" style="font-family:monospace;">&nbsp;
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #660033;">-y</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #c20cb9; font-weight: bold;">g++</span> <span style="color: #c20cb9; font-weight: bold;">autoconf</span> \
libjpeg62 libjpeg62-dev libpng12-<span style="color: #000000;">0</span> libpng12-dev libpng3 libfreetype6 libfreetype6-dev libxml2 \
libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libglib2.0-<span style="color: #000000;">0</span> libglib2.0-dev <span style="color: #c20cb9; font-weight: bold;">bzip2</span> \
libbz2-dev libzip-dev libncurses5-dev libncurses5 curl libcurl3 libcurl4-openssl-dev e2fsprogs \
libkrb5-<span style="color: #000000;">3</span> libkrb5-dev libidn11 libidn11-dev openssl  libtool \
libevent-dev libevent-<span style="color: #000000;">1.4</span>-<span style="color: #000000;">2</span> slapd ldap-utils libnss-ldap \
libguile-ltdl-<span style="color: #000000;">1</span> libltdl-dev <span style="color: #c20cb9; font-weight: bold;">bison</span> libsasl2-dev ctags</pre></td></tr></table></div>

<p>　　２、下载最新的Nginx、Mysql、PHP程序及相关库的源码包</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2325code692'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325692"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p2325code692"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>software
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>software
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>nginx.org<span style="color: #000000; font-weight: bold;">/</span>download<span style="color: #000000; font-weight: bold;">/</span>nginx-1.0.0.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>cn.php.net<span style="color: #000000; font-weight: bold;">/</span>get<span style="color: #000000; font-weight: bold;">/</span>php-5.3.6.tar.gz<span style="color: #000000; font-weight: bold;">/</span>from<span style="color: #000000; font-weight: bold;">/</span>this<span style="color: #000000; font-weight: bold;">/</span>mirror
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>dev.mysql.com<span style="color: #000000; font-weight: bold;">/</span>get<span style="color: #000000; font-weight: bold;">/</span>Downloads<span style="color: #000000; font-weight: bold;">/</span>MySQL-<span style="color: #000000;">5.5</span><span style="color: #000000; font-weight: bold;">/</span>mysql-5.5.11.tar.gz<span style="color: #000000; font-weight: bold;">/</span>from<span style="color: #000000; font-weight: bold;">/</span>http:<span style="color: #000000; font-weight: bold;">//</span>mysql.ntu.edu.tw<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>ftp.gnu.org<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>gnu<span style="color: #000000; font-weight: bold;">/</span>libiconv<span style="color: #000000; font-weight: bold;">/</span>libiconv-1.13.1.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #ff0000;">&quot;http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&amp;big_mirror=0&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #ff0000;">&quot;http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&amp;big_mirror=0&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>pecl.php.net<span style="color: #000000; font-weight: bold;">/</span>get<span style="color: #000000; font-weight: bold;">/</span>memcache-2.2.6.tgz
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #ff0000;">&quot;http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&amp;big_mirror=0&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #c20cb9; font-weight: bold;">ftp</span>:<span style="color: #000000; font-weight: bold;">//</span>ftp.csx.cam.ac.uk<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>programming<span style="color: #000000; font-weight: bold;">/</span>pcre<span style="color: #000000; font-weight: bold;">/</span>pcre-<span style="color: #000000;">8.12</span>.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>bart.eaccelerator.net<span style="color: #000000; font-weight: bold;">/</span>source<span style="color: #000000; font-weight: bold;">/</span>0.9.6.1<span style="color: #000000; font-weight: bold;">/</span>eaccelerator-0.9.6.1.tar.bz2
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>pecl.php.net<span style="color: #000000; font-weight: bold;">/</span>get<span style="color: #000000; font-weight: bold;">/</span>PDO_MYSQL-1.0.2.tgz
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #c20cb9; font-weight: bold;">ftp</span>:<span style="color: #000000; font-weight: bold;">//</span>mirror.aarnet.edu.au<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>imagemagick<span style="color: #000000; font-weight: bold;">/</span>ImageMagick-6.6.9-<span style="color: #000000;">10</span>.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>pecl.php.net<span style="color: #000000; font-weight: bold;">/</span>get<span style="color: #000000; font-weight: bold;">/</span>imagick-3.0.0.tgz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.cmake.org<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>v2.8<span style="color: #000000; font-weight: bold;">/</span>cmake-2.8.4.tar.gz</pre></td></tr></table></div>

<p>　　二、安装MySQL 5.5.11</p>
<p>　　1、首先安装CMAKE(Mysql5.5.11已经采用CMAKE编译)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2325code693'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325693"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2325code693"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf cmake-2.8.4.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> cmake-2.8.4
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>usr
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　2、安装MySQL 5.5.11</p>
<p>　　a)新建一个用于运行MySQL的用户</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2325code694'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325694"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2325code694"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>groupadd mysql
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>useradd <span style="color: #660033;">-g</span> mysql mysql</pre></td></tr></table></div>

<p>　　b)解包并编译安装MySQL</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2325code695'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325695"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code" id="p2325code695"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> xvf mysql-5.5.11.tar.gz 
<span style="color: #7a0874; font-weight: bold;">cd</span> mysql-5.5.11
&nbsp;
cmake . -DCMAKE_INSTALL_PREFIX=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span> \
-DMYSQL_DATADIR=<span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>data \
-DMYSQL_UNIX_ADDR=<span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>mysqld.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=<span style="color: #000000;">1</span> \
-DWITH_MYISAM_STORAGE_ENGINE=<span style="color: #000000;">1</span> \
-DENABLED_LOCAL_INFILE=<span style="color: #000000;">1</span> \
-DMYSQL_TCP_PORT=<span style="color: #000000;">3306</span> \
-DWITH_EXTRA_CHARSETS:<span style="color: #007800;">STRING</span>=utf8,gbk \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_UNIX_ADDR=<span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>mysql.sock \
-DWITH_DEBUG=<span style="color: #000000;">0</span> \
-DWITH_READLINE=<span style="color: #000000;">1</span> \
-DWITH_SSL=<span style="color: #c20cb9; font-weight: bold;">yes</span> \
<span style="color: #660033;">-DSYSCONFDIR</span>=<span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..</pre></td></tr></table></div>

<p>　　c)将MySQL安装目录的权限赋予mysql用户</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2325code696'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325696"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2325code696"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> +<span style="color: #c20cb9; font-weight: bold;">w</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>mysql
<span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> mysql:mysql <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>mysql</pre></td></tr></table></div>

<p>　　d)创建MySQL数据库存放目录</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2325code697'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325697"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2325code697"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>binlog<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>relaylog<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> mysql:mysql <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　e)以mysql用户帐号的身份建立数据表</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2325code698'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2325698"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2325code698"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>mysql_install_db <span style="color: #660033;">--basedir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>mysql <span style="color: #660033;">--datadir</span>=<span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>data <span style="color: #660033;">--user</span>=mysql</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/unbutu-compile-install-lnmp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu 11.04下搭建tomcat 7.0</title>
		<link>http://www.mike.org.cn/articles/ubuntu-build-tomcat7/</link>
		<comments>http://www.mike.org.cn/articles/ubuntu-build-tomcat7/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 09:23:32 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2311</guid>
		<description><![CDATA[　　Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器，按照Sun Microsystems提供的技术规范，实现了对Servlet和JavaServer Page(JSP)的支持，并提供了作为Web服务器的一些特有功能，如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器，它也可以被视作一个单独的Web服务器。Apache Tomcat包含了一个配置管理工具，也可以通过编辑XML格式的配置文件来进行配置。目前最新版本是7.0。 　　一、安装JAVA环境 　　Java有2种，一种是Ubuntu源自带的open-java(icedtea)，OpenJDK是由Sun公司建立的开发Java SE开源实现的团体。一个是Oracle的sun-java6。前者是Ubuntu默认的Java，这里采用的是sun-java6。 　　目前，Ubuntu 11.04的JAVA源尚未更新，无法通过“官方”安装。解决的方法有以下两种： 　　A、通过Ubuntu 10.10相关软件库在Ubuntu11.04中安装Java(JRE/JDK和Java插件) 　　首先加入源 ?View Code BASH1 add-apt-repository &#34;deb http://archive.canonical.com/ lucid partner&#34; 　　注：如果系统提示没有add-apt-repository命令，则需要先安装python-software-properties，命令sudo apt-get install python-software-properties。另外，有些版本的ubuntu即使安装了python-software-properties也无add-apt-repository命令,此时需要手动添加此行”deb http://archive.canonical.com/ubuntu maverick partner”到/etc/apt/sources.list文件中。) 　　手动加入源的方法 ?View Code BASH1 2 3 vi /etc/apt/source.list &#160; deb http://archive.canonical.com/ubuntu maverick partner&#34; 　　安装Java JDK ?View Code BASH1 2 apt-get update apt-get install sun-java6-jdk 　　注：安装过程中需要你回答是否同意使用协议(终端中红蓝色的提示界面)，此时按tab键至OK，再按回车即可正常安装。 　　如果还要安装Java JRE和Java plugin，则可以运行下面命令: [...]]]></description>
			<content:encoded><![CDATA[<p>　　Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器，按照Sun Microsystems提供的技术规范，实现了对Servlet和JavaServer Page(JSP)的支持，并提供了作为Web服务器的一些特有功能，如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器，它也可以被视作一个单独的Web服务器。Apache Tomcat包含了一个配置管理工具，也可以通过编辑XML格式的配置文件来进行配置。目前最新版本是7.0。</p>
<p> 　　一、安装JAVA环境</p>
<p>　　Java有2种，一种是Ubuntu源自带的open-java(icedtea)，OpenJDK是由Sun公司建立的开发Java SE开源实现的团体。一个是Oracle的sun-java6。前者是Ubuntu默认的Java，这里采用的是sun-java6。<span id="more-2311"></span></p>
<p>　　目前，Ubuntu 11.04的JAVA源尚未更新，无法通过“官方”安装。解决的方法有以下两种：</p>
<p>　　A、通过Ubuntu 10.10相关软件库在Ubuntu11.04中安装Java(JRE/JDK和Java插件)</p>
<p>　　首先加入源</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code721'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311721"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code721"><pre class="bash" style="font-family:monospace;">add-apt-repository <span style="color: #ff0000;">&quot;deb http://archive.canonical.com/ lucid partner&quot;</span></pre></td></tr></table></div>

<p>　　注：如果系统提示没有add-apt-repository命令，则需要先安装python-software-properties，命令sudo apt-get install python-software-properties。另外，有些版本的ubuntu即使安装了python-software-properties也无add-apt-repository命令,此时需要手动添加此行”deb http://archive.canonical.com/ubuntu maverick partner”到/etc/apt/sources.list文件中。) </p>
<p>　　手动加入源的方法</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code722'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311722"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2311code722"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>source.list
&nbsp;
deb http:<span style="color: #000000; font-weight: bold;">//</span>archive.canonical.com<span style="color: #000000; font-weight: bold;">/</span>ubuntu maverick partner<span style="color: #ff0000;">&quot;</span></pre></td></tr></table></div>

<p>　　安装Java JDK</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code723'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311723"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2311code723"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> sun-java6-jdk</pre></td></tr></table></div>

<p>　　注：安装过程中需要你回答是否同意使用协议(终端中红蓝色的提示界面)，此时按tab键至OK，再按回车即可正常安装。 </p>
<p>　　如果还要安装Java JRE和Java plugin，则可以运行下面命令:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code724'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311724"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code724"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> sun-java6-jre sun-java6-plugin</pre></td></tr></table></div>

<p>　　B、通过PPA在Ubuntu11.04中安装java</p>
<p>　　通过Ubuntu PPA方式安装。首先加入源：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code725'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311725"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code725"><pre class="bash" style="font-family:monospace;">add-apt-repository ppa:ferramroberto<span style="color: #000000; font-weight: bold;">/</span>java</pre></td></tr></table></div>

<p>　　安装Java JDK</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code726'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311726"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2311code726"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> sun-java6-jdk</pre></td></tr></table></div>

<p>　　安装Java JRE和Java plugin，则运行命令:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code727'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311727"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code727"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> sun-java6-jre sun-java6-plugin</pre></td></tr></table></div>

<p>　　注：PPA是Personal Package Archive(个人软件包存档)的缩写，Ubuntu Launchpad网站提供的一项源服务，允许个人用户上传软件源代码，通过Launchpad进行编译并发布为2进制软件包，作为apt/新立得源供其他用户下载和更新。PPA是默认情况下并未被包含在Ubuntu中的软件的一个集合。通常这些存储库的侧重点是单个的程序，不过他们也可以包含更多内容，这取决于这些存储库的维护者。一个PPA有可能关注的是一个未发布的软件。PPA以比Ubuntu自身快得多的速度来为你所喜爱的软件提供更新。</p>
<p>　　设置当前默认的java解释器和编译器(如果没有安装多个java虚拟机可跳过这一步)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code728'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311728"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code728"><pre class="bash" style="font-family:monospace;">update-java-alternatives <span style="color: #660033;">-s</span> java-<span style="color: #000000;">6</span>-sun</pre></td></tr></table></div>

<p>　　C、配置JAVA环境变量</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code729'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311729"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2311code729"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>environment
&nbsp;
<span style="color: #007800;">JAVA_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>jvm<span style="color: #000000; font-weight: bold;">/</span>java-<span style="color: #000000;">6</span>-sun
<span style="color: #007800;">CLASSPATH</span>=.:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>jvm<span style="color: #000000; font-weight: bold;">/</span>java-<span style="color: #000000;">6</span>-sun<span style="color: #000000; font-weight: bold;">/</span>lib</pre></td></tr></table></div>

<p>　　使用以下命令使配置生效</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code730'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311730"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code730"><pre class="bash" style="font-family:monospace;">. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>environment</pre></td></tr></table></div>

<p>　　二、安装Tomcat</p>
<p>　　A、获取Tomcat安装包</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code731'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311731"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code731"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>apache.etoak.com<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>tomcat-<span style="color: #000000;">7</span><span style="color: #000000; font-weight: bold;">/</span>v7.0.14<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>apache-tomcat-7.0.14.tar.gz</pre></td></tr></table></div>

<p>　　B、解压并安装</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code732'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311732"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2311code732"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">tar</span>  xvzf  apache-tomcat-7.0.14.tar.gz <span style="color: #660033;">-C</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #666666; font-style: italic;">#重命名安装目录</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> apache-tomcat-7.0.14<span style="color: #000000; font-weight: bold;">/</span> tomcat</pre></td></tr></table></div>

<p>　　C、设置tomcat以独立的用户运行</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code733'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311733"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2311code733"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#添加一个系统用户tomcat，并且设置为不可登录系统。 </span>
useradd <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nologin tomcat</pre></td></tr></table></div>

<p>　　D、设置用户tomcat对tomcat目录的访问权限</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code734'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311734"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code734"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> tomcat.tomcat <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　E、配置Tomcat环境变量</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code735'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311735"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2311code735"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>environment
&nbsp;
<span style="color: #007800;">CATALINA_BASE</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat
<span style="color: #007800;">CATALINA_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat
TOMCAT_USER＝tomcat</pre></td></tr></table></div>

<p>　　使用以下命令使配置生效</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code736'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311736"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code736"><pre class="bash" style="font-family:monospace;">. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>environment</pre></td></tr></table></div>

<p>　　F、启动tomcat</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code737'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311737"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2311code737"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>startup.sh 
&nbsp;
Using CATALINA_BASE:   <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat
Using CATALINA_HOME:   <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat
Using CATALINA_TMPDIR: <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>temp
Using JRE_HOME:        <span style="color: #000000; font-weight: bold;">/</span>usr
Using CLASSPATH:       <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>bootstrap.jar:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>tomcat-juli.jar</pre></td></tr></table></div>

<p>　　G、测试</p>
<p>　　访问http://ip:8080/，如果看到Tomcat缺省界面就表示成功了。</p>
<p>　　H、停止Tomcat</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code738'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311738"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2311code738"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>shutdown.sh</pre></td></tr></table></div>

<p>　　I、设置Tomcat管理员帐号</p>
<p>　　在</tomcat-users>的标签前添加以下内容</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code739'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311739"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p2311code739"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>tomcat-users.xml
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;</span>role <span style="color: #007800;">rolename</span>=<span style="color: #ff0000;">&quot;admin-gui&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>role <span style="color: #007800;">rolename</span>=<span style="color: #ff0000;">&quot;admin-script&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>role <span style="color: #007800;">rolename</span>=<span style="color: #ff0000;">&quot;manager-gui&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>role <span style="color: #007800;">rolename</span>=<span style="color: #ff0000;">&quot;manager-script&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>role <span style="color: #007800;">rolename</span>=<span style="color: #ff0000;">&quot;manager-jmx&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>role <span style="color: #007800;">rolename</span>=<span style="color: #ff0000;">&quot;manager-status&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>user <span style="color: #007800;">username</span>=<span style="color: #ff0000;">&quot;admin&quot;</span> <span style="color: #007800;">password</span>=<span style="color: #ff0000;">&quot;000000&quot;</span> <span style="color: #007800;">roles</span>=<span style="color: #ff0000;">&quot;manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></pre></td></tr></table></div>

<p>　　保存关闭后，重新运行tomcat即可输入上面定交的用户名和密码，便登录Tomcat的管理页面。 </p>
<p>　　J、以守护进程方式运行tomcat</p>
<p>　　按照tomcat官方的要求，tomcat作为一个守护进程运行，需要用到jsvc工具</p>
<p>　　安装jsvc</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code740'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311740"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2311code740"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span>  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">tar</span> xvzf  commons-daemon-native.tar.gz 
<span style="color: #7a0874; font-weight: bold;">cd</span> commons-daemon-1.0.5-native-src<span style="color: #000000; font-weight: bold;">/</span>unix<span style="color: #000000; font-weight: bold;">/</span>
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> jsvc ..<span style="color: #000000; font-weight: bold;">/</span>..
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>..</pre></td></tr></table></div>

<p>　　运行下面的命令，便可以守护进程运行tomcat</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code741'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311741"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2311code741"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span>  <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>
.<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>jsvc <span style="color: #660033;">-cp</span> .<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>bootstrap.jar:.<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>tomcat-juli.jar <span style="color: #660033;">-outfile</span> .<span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>catalina.out <span style="color: #660033;">-errfile</span> .<span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>catalina.err org.apache.catalina.startup.Bootstrap</pre></td></tr></table></div>

<p>　　访问http://ip:8080/，如果看到Tomcat缺省界面就表示成功了。</p>
<p>　　K、设置开机启动tomcat</p>
<p>　　本打算以守护程序方式设置开机启动的，研究N久未果，先暂时用下面的方法吧！<br />
　　<br />
　　编辑/etc/rc.local，加入启动脚本</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2311code742'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2311742"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p2311code742"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.local
&nbsp;
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>webserver<span style="color: #000000; font-weight: bold;">/</span>tomcat<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>startup.sh</pre></td></tr></table></div>

<p>　　重启,访问http://ip:8080/，如果看到Tomcat缺省界面就表示成功了。</p>
<p>　　三、参考文档</p>
<p>　　http://www.google.com<br />
　　http://wiki.ubuntu.org.cn/Sun-java6<br />
　　http://wiki.ubuntu.org.cn/Tomcat<br />
　　http://tomcat.apache.org/tomcat-7.0-doc/setup.html<br />
　　http://article.yeeyan.org/view/213582/193672?from=rss_related<br />
　　http://blog.163.com/lgh_2002/blog/static/44017526201032803748503/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/ubuntu-build-tomcat7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ZRM for MySQL 使用指南</title>
		<link>http://www.mike.org.cn/articles/zrm-for-mysql-guide/</link>
		<comments>http://www.mike.org.cn/articles/zrm-for-mysql-guide/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 19:46:57 +0000</pubDate>
		<dc:creator>easylife</dc:creator>
				<category><![CDATA[工作学习]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[zrm]]></category>
		<category><![CDATA[备份]]></category>

		<guid isPermaLink="false">http://www.mike.org.cn/?p=2303</guid>
		<description><![CDATA[　　MySQL是一个最常见和多功能的数据库软件，越来越多的用户选择了MySQL。MySQL支持从一个用户的应用程序到上百万用户的应用程序。遗憾的是它没有任何系统有效的管理和备份工具。大约30%-40%的MySQL数据库没有系统的备份，很多数据库管理用通过脚本来实现MySQL数据库备份。 　　一、什么是ZRM 　　ZRM(Zmanda Recovery Manager for MySQL)是一个健壮MySQL备份和还原解决方案，具有自动化和灵活的特征。它可以非常方便数据库管理员完成备份和恢复工作。ZRM分为商业版和社区版。社区版是免费的，最新的发行版是MySQL-zrm-2.2.0。 　　ZRM主要功能包括： 　　1、根据你的需求定时备份 　　2、集中备份MySQL，集中管理ZRM服务 　　3、详细的备份报表输出 　　4、通过默认提供的插件可以定制化备份方案 　　5、本地备份或者远程备份MySQL数据库 　　6、本地存储备份数据，通过SAN硬盘存储或者NAS/SAN存储 　　下面的图显示了在本机运行的ZRM for MySQL备份两台MySQL-Server上多个mysql数据库 　　备份的功能 　　ZRM for MySQL可以备份被mysql服务器管理的多个数据库 　　可以备份多台mysql服务器上的多个数据库 　　可以备份单个数据库中的表 　　可以对数据库进行热备 　　根据MySQL表使用的不同的存储引擎支持多种不同的备份方式 　　具有两种级别的备份：全备份和对数据库的增量备份 　　可以使用mysqldump,mysqlhotcopy,snapshots(Linux LVM/Solaris ZFS)和MySQL replication作为不同的备份方式 　　透明实现各种数据库表引擎数据库备份 　　在ZRM备份服务器与数据库服务器之间支持SSL认证，可以通过Internet和防火墙安全备份。 　　检验备份数据的完整性 　　使用标准的工具如gzip，GPG等可以对备份镜像进行压缩或者加密 　　灵活控制备份作业 　　支持快照备份，并转换真实备份 　　恢复的功能 　　ZRM for MySQL使得恢复备份的数据变得很容易 　　支持使用备份索引文件(index)记录备份过程信息 　　它可以使用报表工具查看备份索引文件 　　支持恢复完全备份和增量备份 　　通过选择MySQL二进制日志中的时间或位置，可选择性的恢复误操作的数据，恢复点可以是二进制日志中时间点或位置 　　ZRM for MySQL通过MySQL二进制日志可以很容易的过滤出对数据库操作的行为，可以帮助决定哪些被恢复，哪些不被恢复 　　根据你所做的备份的类型，可以使用备份在本机恢复或者在不同的机器上进行恢复 　　报告和计划任务能力 　　ZRM for MySQL可以立即执行备份计划或者按天/按周/按月做备份计划任务 　　它可以自动生成备份报告 　　它具有预先设定的备份报告也可以用户自定义的备份报告 　　它可以报告任何备份的统计或者这些统计的组合 [...]]]></description>
			<content:encoded><![CDATA[<p>　　MySQL是一个最常见和多功能的数据库软件，越来越多的用户选择了MySQL。MySQL支持从一个用户的应用程序到上百万用户的应用程序。遗憾的是它没有任何系统有效的管理和备份工具。大约30%-40%的MySQL数据库没有系统的备份，很多数据库管理用通过脚本来实现MySQL数据库备份。 </p>
<p>　　一、什么是ZRM</p>
<p>　　ZRM(Zmanda Recovery Manager for MySQL)是一个健壮MySQL备份和还原解决方案，具有自动化和灵活的特征。它可以非常方便数据库管理员完成备份和恢复工作。ZRM分为商业版和社区版。社区版是免费的，最新的发行版是MySQL-zrm-2.2.0。<span id="more-2303"></span></p>
<p>　　ZRM主要功能包括：</p>
<p>　　1、根据你的需求定时备份<br />
　　2、集中备份MySQL，集中管理ZRM服务<br />
　　3、详细的备份报表输出<br />
　　4、通过默认提供的插件可以定制化备份方案<br />
　　5、本地备份或者远程备份MySQL数据库<br />
　　6、本地存储备份数据，通过SAN硬盘存储或者NAS/SAN存储</p>
<p>　　下面的图显示了在本机运行的ZRM for MySQL备份两台MySQL-Server上多个mysql数据库</p>
<p><a href="http://www.mike.org.cn/wp-content/uploads/2011/06/MySQL_ZRM.png" class="floatbox" rev="group:2303 caption:`MySQL_ZRM`"><img class="size-full wp-image-2304 alignnone" title="MySQL_ZRM" src="http://www.mike.org.cn/wp-content/uploads/2011/06/MySQL_ZRM.png" alt="" width="552" height="307" /></a></p>
<p>　　备份的功能</p>
<p>　　ZRM for MySQL可以备份被mysql服务器管理的多个数据库<br />
　　可以备份多台mysql服务器上的多个数据库<br />
　　可以备份单个数据库中的表<br />
　　可以对数据库进行热备<br />
　　根据MySQL表使用的不同的存储引擎支持多种不同的备份方式<br />
　　具有两种级别的备份：全备份和对数据库的增量备份<br />
　　可以使用mysqldump,mysqlhotcopy,snapshots(Linux LVM/Solaris ZFS)和MySQL replication作为不同的备份方式<br />
　　透明实现各种数据库表引擎数据库备份<br />
　　在ZRM备份服务器与数据库服务器之间支持SSL认证，可以通过Internet和防火墙安全备份。<br />
　　检验备份数据的完整性<br />
　　使用标准的工具如gzip，GPG等可以对备份镜像进行压缩或者加密<br />
　　灵活控制备份作业<br />
　　支持快照备份，并转换真实备份</p>
<p>　　恢复的功能</p>
<p>　　ZRM for MySQL使得恢复备份的数据变得很容易<br />
　　支持使用备份索引文件(index)记录备份过程信息<br />
　　它可以使用报表工具查看备份索引文件<br />
　　支持恢复完全备份和增量备份<br />
　　通过选择MySQL二进制日志中的时间或位置，可选择性的恢复误操作的数据，恢复点可以是二进制日志中时间点或位置<br />
　　ZRM for MySQL通过MySQL二进制日志可以很容易的过滤出对数据库操作的行为，可以帮助决定哪些被恢复，哪些不被恢复<br />
　　根据你所做的备份的类型，可以使用备份在本机恢复或者在不同的机器上进行恢复</p>
<p>　　报告和计划任务能力</p>
<p>　　ZRM for MySQL可以立即执行备份计划或者按天/按周/按月做备份计划任务<br />
　　它可以自动生成备份报告<br />
　　它具有预先设定的备份报告也可以用户自定义的备份报告<br />
　　它可以报告任何备份的统计或者这些统计的组合<br />
　　它支持HTML或者Text格式的报告<br />
　　它可以发送email告知备份的运行状态<br />
　　它还可以通过RSS feed的方式提供备份报告</p>
<p>　　插件</p>
<p>　　ZRM for MySQL提供插件来扩展工具功能，数据库管理员通过插件来定制数据库备份。ZRM提供了插件模版，使得创建插件更加容易<br />
    它提供了以下可以使用的插件：预先日程插件、预先备份插件、在备份之后插件、拷贝插件、二进制日志分析插件、快照插件。</p>
<p>　　二、安装ZRM</p>
<p>　　ZRM for MySQL套件是使用perl写的，所以使用环境必须支持perl，这个套件支持MySQL的版本有4.0.x(4.0.24或以上版本)，4.1.x，5.x。</p>
<p>　　在安装ZRM for MySQL时首先需要检查下列事项：</p>
<p>　　1、MySQL的版本是否是被ZRM for MySQL支持的<br />
　　2、确认ZRM服务器和mysql服务器上存在mysql用户和组。同时MySQL服务进程是使用相同的用户和组启动的<br />
　　3、在MySQL服务器和ZRM服务器上的mysql用户的uid和gid要相同<br />
　　4、ZRM for MySQL需要用到mysqladmin、mysqlhotcopy、mysqldump、mysqlbinlog、mysql这些MySql客户端的命令，这些命令需要安装在ZRM for MySQL运行的服务器上<br />
　　5、MySQL ZRM必须的perl模块：perl-DBI、perl-DBD-MySQL、perl-XML-Parser</p>
<p>　　安装需要的perl模块</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code766'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303766"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2303code766"><pre class="bash" style="font-family:monospace;">yum <span style="color: #c20cb9; font-weight: bold;">install</span> perl-XML-Parser perl-DBI perl-DBD-MySQL</pre></td></tr></table></div>

<p>　　获取ZRM安装包</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code767'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303767"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2303code767"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.zmanda.com<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>community<span style="color: #000000; font-weight: bold;">/</span>ZRM-MySQL<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.2</span><span style="color: #000000; font-weight: bold;">/</span>RPM<span style="color: #000000; font-weight: bold;">/</span>MySQL-zrm-2.2.0-<span style="color: #000000;">1</span>.noarch.rpm</pre></td></tr></table></div>

<p>　　安装ZRM</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code768'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303768"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2303code768"><pre class="bash" style="font-family:monospace;">rpm  <span style="color: #660033;">-ivh</span> MySQL-zrm-2.2.0-<span style="color: #000000;">1</span>.noarch.rpm</pre></td></tr></table></div>

<p>　　三、创建MySQL执行备份和恢复的用户</p>
<p>　　推荐新建一个MySQL备份用户来代替root用户。ZRM需要的mysql数据备份用户和mysql数据恢复用户所需的最小权限分别为：：</p>
<p>　　备份用户：LOCK TABLES,SELECT,FILE,RELOAD,SUPER,SHOW VIEW</p>
<p>　　还原用户：CREATE,DROP,INDEX,SHUTDOWN,INSERT,ALTER,SUPER,REPLICATION CLIENT,CREATE VIEW</p>
<p>　　注：在MySQL5.x上执行逻辑备份时，SHOW VIEW and CREATE VIEW 权限是必须的。</p>
<p>　　建立一个给ZRM用的备份用户</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code769'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303769"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2303code769"><pre class="bash" style="font-family:monospace;">mysql<span style="color: #000000; font-weight: bold;">&gt;</span>grant <span style="color: #000000; font-weight: bold;">select</span>,insert,update,create,<span style="color: #c20cb9; font-weight: bold;">file</span>,index,drop,reload,shutdown,alter,super,lock tables,replication client,show view,create view on <span style="color: #000000; font-weight: bold;">*</span>.<span style="color: #000000; font-weight: bold;">*</span> to <span style="color: #ff0000;">'zrm_backup'</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #ff0000;">'192.168.１.%'</span> identified by <span style="color: #ff0000;">'000000'</span>;</pre></td></tr></table></div>

<p>　　四、配置ZRM</p>
<p>　　备份集</p>
<p>　　ZRM for MySQL使用了”备份集”的功能来优化数据库备份。一个备份集包含的一套数据库或表，同一个备份集将使用同样的备份方式和同样的备份计划。每个备份集的名称在一个备份服务器上是唯一的。</p>
<p>　　在全局配置文件/etc/mysql-zrm/mysql-zrm.conf中的参数会作用于所有的数据库，或被备份集中的配置文件参数所覆盖</p>
<p>　　要指定备份集的备份参数，需要在备份集目录中添加mysql-zrm.conf配置文件。备份集目录里mysql-zrm.conf定义的参数可以覆盖全局配置文件中定义的。</p>
<p>　　除了可以在全局配置文件(通常为/etc/mysql-zrm.conf)和备份集配置文件(通常为/etc/backupsetname/mysql-zrm.conf)中指定备份参数，还可以直接在备份命令中指定参数。当配置了同样的备份参数时，它们的优先级是这样的：备份命令行－备份集的配置文件－全局配置文件。也就是说备份集配置文件中的备份参数会覆盖全局配置文件中的备份参数，备份命令行中的备份参数会覆盖备份集配置文件和全局配置文件中的备份参数。</p>
<p>　　在没有设置参数时，ZRM for MySQL采用默认的配置参数。</p>
<p>　　多个备份集的好处</p>
<p>　　1、根据MySQL数据应用及备份将花费的时间，创建多个备份组是非常明智的。同一个应用的多个数据库或表的备份应该在同一个备份组中。<br />
　　2、在一个备份集中，用户可以定义要备份的数据库/表，用户可以定义要备份的数据库，或要备份的表，或要备份的数据库和表。<br />
　　3、不同的备份集可以定义备份不同的数据库/表和不同的MySQL数据库备份参数。<br />
　　4、所有的备份集可以共享备份数据存储路径。<br />
　　<br />
　　常用备份集配置参数</p>
<p>　　备份参数</p>
<p>　　backup-level=0|1<br />
　　备份级别指完全备份和增量备份，0代表完全备份，1代表增量备份。默认为0</p>
<p>　　backup-mode=raw|logical<br />
　　备份模式指逻辑备份和裸备份，裸备份包含真实的数据库文件。logical是通过mysqldump进行备份的文件，逻辑备份包含SQL语句(CREATE TABLE,INSERT)列表。逻辑备份恢复时需要重新执行备份的SQL语句，备份的数据可以很容易的移植到不同的系统平台和数据库平台(不是 MySQL)。默认为raw。</p>
<p>　　backup-type<br />
　　备份类型指正常备份和快速备份，快速备份使用文件系统自己的快照备份，而不从快照卷复制数据。快速备份可以转换为正常备份。可以从快速备份和正常备份恢复数据。</p>
<p>　　destination=/var/lib/mysql-zrm<br />
　　指定MySQL备份数据存放的位置，该参数可选，默认是备份服务器上的/var/lib/mysql-zrm目录。该目录应有足够的空 间来存储备份文件，否则备份时会报错。备份用户(通常为root用户)应对该目录具有写权限，并具有创建子目录的权限。</p>
<p>　　retention-policy=#nD|nW|nM<br />
　　指备份数据保留的时间，可以按天(D)，周(W)，月(M)，年(Y)。一般一个月按30天，一年按365天计算。 如：retention-policy为10M，指备份数据将会保留300天。该参数可选，默认保留时间为永远。</p>
<p>　　compress<br />
　　该参数值为1表示压缩备份数据，默认为0.默认的压缩程序是gzip(GNU zip)。如果要指定其他的压缩程序，必须用compress-plugin参数指定。</p>
<p>　　compress-plugin<br />
　　使用绝对路径指定压缩软件，用来压缩已经备份的数据文件。压缩程序必须支持-d选项来解压缩。只有当compress选项为1时，该选 项才有作用。该选项是可选的，默认为gzip程序。</p>
<p>　　encrypt<br />
　　需要给备份数据文件加密时，需要使该选项置为1.ZRM for MySQL不支持密钥管理。加密程序必须要在encrypt-plugin选项中以绝对路径指定。默认数据文件不会加密，没有指定默认的加密程序。</p>
<p>　　encrypt-plugin<br />
　　使用绝对路径指定加密软件所在的位置。如果encrypt选项设置为1，该选项必须指定。decrypt-option选项也必须指定。</p>
<p>　　decrypt-option<br />
　　该选项指定要传递给加密程序的参数，指定解密用到的选项。默认是-d选项，如果是其他选项，或包含多个选项，则要指定多个选项组。</p>
<p>　　replication<br />
　　当要备份的数据是MySQL复制结构的从服务器是，该选项为1.这样选项备份数据时，不影响生产库。ZRM for MySQL不能自动创建MySQL从服务器，它必须另外单独设置。</p>
<p>　　snapshot-plugin<br />
　　指定执行快照备份的插件程序，默认为lvm-snapshot。该选项可选，裸备份时，使用快照备份必须制定指定该选项。可以为lvm-snapshot 或zfs-snapshot。如：/usr/share/mysql-zrm/plugins/lvm-snapshot.pl</p>
<p>　　snapshot-size<br />
　　定义快照备份大小</p>
<p>　　comment<br />
　　MySQL备份的注释，该注释有助于数据库管理员管理备份数据。可以再后续的报表中看到该注释。</p>
<p>　　tmpdir<br />
　　以绝对路径指定备份时临时文件的存储位置，包括备份服务器和MySQL数据库服务器上。在备份时，备份服务器和数据库服务器中该目录应有充足的空间；恢复 时，备份服务器该目录也要有充足的空间。如果没有设置，默认为/tmp目录。</p>
<p>　　备份组中的数据库/表</p>
<p>　　备份时，可以指定单个或多个数据库/表。如果没有指定，默认为所有的数据库。</p>
<p>　　all-databases<br />
　　如果要备份所有的数据库，该选项应设置为1。</p>
<p>　　databases<br />
　　用空格隔开列出要备份的多个数据库，</p>
<p>　　database<br />
　　该选项仅指定一个要备份的数据库。选项tables列出的数据表应属于该数据库。</p>
<p>　　tables<br />
　　用空格隔开列出备份组中要备份的多个数据表，所有的数据表应属于database选项指定的数据库。要使该选项起作用，必须开启 database选项。ZRM for MySQL不会验证数据表是否属于database选项指定的数据库，当在数据库中找不到相应的表时，备份将会失败。</p>
<p>　　MySQL服务参数</p>
<p>　　user<br />
　　Mysql用户，用于ZRM for MySQL备份和还原。该用户应具有足够的备份及还原权限。参考MySQL备份用户了解更多的信息。如果该选项没有指定，会从my.cnf配置文件读取。</p>
<p>　　password<br />
　　指定MySQL备份用户的登录密码。密码为明文，所有保证该配置文件的安全。如果该选项没有指定，会从my.cnf配置文件读取</p>
<p>　　host<br />
　　指定将要备份的MySQL数据库服务器。如果该选项没有指定，会从my.cnf配置文件读取</p>
<p>　　port<br />
　　MySQL连接端口，该选项可选，默认为3306。</p>
<p>　　socket<br />
　　指定连接MySQL数据库的套接字接口，该选项可选。如：/var/lib/mysql/mysql.sock</p>
<p>　　ssl-options<br />
　　连接MySQL服务器的SSL选项。要使用该选项要求MySQL服务器启用了SSL。该选项只有逻辑备份时使用。如：<br />
　　ssl-options=”–ssl –ssl-ca=<mysql_conf_dir>/openssl/cacert.pem –ssl-cert=<mysql_conf_dir>/openssl/client-cert.pem –ssl-key=<mysql_conf_dir>/openssl/client-key.pem”</p>
<p>　　routines<br />
　　逻辑备份时，启用该选项可以备份存储过程。默认不启用。</p>
<p>　　default-character-set<br />
　　逻辑备份时，该选项指定备份字符集。默认为utf-8</p>
<p>　　mysql-binpath<br />
　　MySQL命令所在目录。该选项为可选的。当MySQL命令不在/usr/bin目录下时，需要指定。默认按以下顺序搜索：/usr/bin:/usr /sbin:/sbin:/bin:/usr/ucb</p>
<p>　　mysql-binlog-path<br />
　　MySQL二进制文件所在目录。在增量备份时，需要启用二进制日志。该选项为可选，默认为/var/lib/mysql目录。</p>
<p>　　ZRM程序参数</p>
<p>　　verbose<br />
　　启用冗长的日志输出，可以为0(精简)或1(冗长)。ZRM for MySQL日志文件一般为/var/log/mysql-zrm/mysql-zrm.log</p>
<p>　　mailto<br />
　　在执行完备份命令后，会发送邮件到该邮件地址。一般为数据库管理员的邮件。该选项可选。</p>
<p>　　html-reports<br />
　　在备份完成后，输出的预定义的备份报表。该选项只有在指定了html-report-directory或webserver-url选项时才起作用。如 果该选项没有起用，会产生预定义报表backup-status-info。可以用逗号(，)分隔指定多个预定义报表。</p>
<p>　　html-report-directory<br />
　　在备份服务器上指定备份报表的输出目录。指定该目录后，备份报表会在每次备份后自动产生。html格式的报表将创建在html子目录，txt格式的报表将 创建在txt子目录中。该参数同样作用于mysql-zrm-report命令的-o选项。如果没有指定该参数，将会在当前工作目录创建报表目录。该参数和邮件通知参数无冲突。</p>
<p>　　webserver-url<br />
　　定义访问html报表和RSS feed的URL。要使备份报表的RSS feed起作用，就必须定义rss-header-location参数。若前面启用的html-reports参数，则相应的报表就会产生。同时需要保证html-report-directory目录必须能被web服务器访问。如：http://www.mike.org.cn/reports/html</p>
<p>　　rss-header-location<br />
　　用于指定rss所用的header文件，用户可以自定义该文件。有个模版头文件：/usr/share/mysql-zrm /plugins/RSS.header</p>
<p>　　ZRM组件参数</p>
<p>　　所有的组件都是可选的。</p>
<p>　　copy-plugin<br />
　　以绝对路径定义复制组件，该组件用于在备份服务器和MySQL服务器直接互相传输文件。下面的情况需要使用该组件</p>
<p>　　1、远程增量备份<br />
　　2、从远程服务器复制MySQL从服务器数据文件<br />
　　3、执行mysqlhotcopy时，从远程复制数据<br />
　　4、恢复数据到远程的MySQL数据库</p>
<p>　　ssh-user<br />
　　定义使用SSH登录的用户，该选项只作用于ssh-copy.pl组件。MySQL服务应该也以该用户运行。该选项可选，默认为 mysql用户。</p>
<p>　　remote-mysql-binpath<br />
　　指定远程MySQL服务器上mysql命令所在目录。如：/opt/lampp/bin。该选项只作用于ssh-copy.pl和 socket-copy.pl组件。如果没有指定，默认为/usr/bin</p>
<p>　　socket-remote-port<br />
　　socket-copy.pl组件将要使用的服务端口。该选项只作用于socket-copy.pl组件。该选项可选，默认为端口25300.</p>
<p>　　passfile<br />
　　GPG加密要用的短语密码。支持GPG加密的组件为：/usr/share/mysql-zrm/plugins/encrypt.pl</p>
<p>　　pre-backup-plugin<br />
　　备份前要执行的脚本组件，该组件在每次备份前执行。在/usr/share/mysql-zrm/plugins目录中有一个预执行脚本组件的模版。</p>
<p>　　pre-backup-plugin-options<br />
　　要传递到预执行组件的多个参数，用双引号指定。</p>
<p>　　post-backup-plugin<br />
　　备份后要执行的脚本组件，该组件在每次备份后执行。在/usr/share/mysql-zrm/plugins目录中有一个后执行脚本组件的模版。</p>
<p>　　post-backup-plugin-options<br />
　　要传递到后执行组件的多个参数，用双引号指定。</p>
<p>　　pre-scheduler-plugin<br />
　　指定备份命令执行的时间，可以用该组件定义要延迟或跳过的备份命令，或者指定备份命令执行的条件，如服务器/某一程序开启时。</p>
<p>　　五、实例</p>
<p>　　创建备份集</p>
<p>　　安装完后,/etc/mysql-zrm/是其配置文件的所在地。/etc/mysql-zrm/目录下有一个mysql-zrm.conf文件，这是最重要的配置文件。你也可以在/etc/mysql-zrm/目录下，创建一些目录，每一个目录就是一个备份集的名称。</p>
<p>　　这里我们先创建一个测试用备份集</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code770'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303770"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2303code770"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">test</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span>  <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm.conf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">test</span></pre></td></tr></table></div>

<p>　　修改配置文件</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code771'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303771"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p2303code771"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm.conf
&nbsp;
backup-level=<span style="color: #000000;">0</span>
backup-mode=logical
backup-type=regular
<span style="color: #007800;">destination</span>=<span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>zrmtest
retention-policy=30D
<span style="color: #007800;">compress</span>=<span style="color: #000000;">1</span>
<span style="color: #007800;">database</span>=<span style="color: #ff0000;">&quot;test&quot;</span>
<span style="color: #007800;">user</span>=<span style="color: #ff0000;">&quot;root&quot;</span>
<span style="color: #007800;">password</span>=<span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #007800;">port</span>=<span style="color: #000000;">3306</span>
<span style="color: #007800;">socket</span>=<span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>mysql.sock
mysql-binpath=<span style="color: #ff0000;">&quot;/usr/local/webserver/mysql/bin/&quot;</span>
mysql-binlog-path=<span style="color: #ff0000;">&quot;/data0/mysql/binlog/&quot;</span></pre></td></tr></table></div>

<p>　　创建备份文件</p>
<p>　　全备(逻辑)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code772'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303772"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2303code772"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#使用test备份集进行逻辑全备</span>
mysql-zrm-backup  <span style="color: #660033;">--backup-set</span>  <span style="color: #7a0874; font-weight: bold;">test</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#查看生成的备份数据(在备份目录下生成了一个以备份集和备份日期为文件夹名的目录)</span>
<span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>zrmtest<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">20110530022130</span><span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
backup-data  index  zrm_checksum</pre></td></tr></table></div>

<p>　　下面的例子我都直接在命令行修改对应参数来说明了，这样方便一些。</p>
<p>　　全备(物理)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code773'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303773"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2303code773"><pre class="bash" style="font-family:monospace;">mysql-zrm-backup <span style="color: #660033;">--backup-set</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">--backup-mode</span>=raw
&nbsp;
<span style="color: #666666; font-style: italic;">#查看生成的备份数据(物理备份会产生一个对应的备份目录，里面是所备份表的相关物理文件。)</span>
<span style="color: #c20cb9; font-weight: bold;">ls</span> test<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">20110530034948</span><span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
index  <span style="color: #7a0874; font-weight: bold;">test</span>  zrm_checksum</pre></td></tr></table></div>

<p>　　增量备份</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code774'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303774"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2303code774"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#查看生成的备份数据(增量与全备不同的地方是，增备备份的是二进制日志文件。)</span>
mysql-zrm-backup <span style="color: #660033;">--backup-set</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">--backup-level</span>=<span style="color: #000000;">1</span> <span style="color: #660033;">--backup-mode</span>=logical <span style="color: #660033;">--database</span>=<span style="color: #7a0874; font-weight: bold;">test</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">ls</span> test<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">20110530040430</span><span style="color: #000000; font-weight: bold;">/</span>
binlog.000041  index          zrm_checksum</pre></td></tr></table></div>

<p>　　恢复备份数据</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code775'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303775"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2303code775"><pre class="bash" style="font-family:monospace;">mysql-zrm-restore <span style="color: #660033;">--backup-set</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">--source-directory</span>=<span style="color: #000000; font-weight: bold;">/</span>data0<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>zrmtest<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">20110530040430</span><span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>　　注：这里以上面的增量备份恢复数据，其它同理。</p>
<p>　　自动定时备份</p>
<p>　　创建一个自动备份计划</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code776'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303776"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p2303code776"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#建立了一个每天凌晨1点执行test备份集的备份计划</span>
mysql-zrm-scheduler <span style="color: #660033;">--add</span> <span style="color: #660033;">--interval</span> daily <span style="color: #660033;">--start</span> 01:00 <span style="color: #660033;">--backup-set</span> <span style="color: #7a0874; font-weight: bold;">test</span>
&nbsp;
schedule:INFO: ZRM <span style="color: #000000; font-weight: bold;">for</span> MySQL Community Edition - version 2.2.0
Logging to <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm-scheduler.log
DONE</pre></td></tr></table></div>

<p>　　查询已创建的备份计划</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code777'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303777"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2303code777"><pre class="bash" style="font-family:monospace;">mysql-zrm-scheduler <span style="color: #660033;">--query</span>
&nbsp;
schedule:INFO: ZRM <span style="color: #000000; font-weight: bold;">for</span> MySQL Community Edition - version 2.2.0
Logging to <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm-scheduler.log
<span style="color: #000000;">0</span> <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>zrm-pre-scheduler <span style="color: #660033;">--action</span> backup <span style="color: #660033;">--backup-set</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">--backup-level</span> <span style="color: #000000;">0</span> <span style="color: #660033;">--interval</span> daily</pre></td></tr></table></div>

<p>　　删除已创建的备份计划</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code778'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303778"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p2303code778"><pre class="bash" style="font-family:monospace;">mysql-zrm-scheduler <span style="color: #660033;">--delete</span> <span style="color: #660033;">--interval</span> daily <span style="color: #660033;">--start</span> 01:00
&nbsp;
schedule:INFO: ZRM <span style="color: #000000; font-weight: bold;">for</span> MySQL Community Edition - version 2.2.0
&nbsp;
Logging to <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm-scheduler.log
<span style="color: #000000;">1</span> crontab entry deleted
DONE
&nbsp;
mysql-zrm-scheduler <span style="color: #660033;">--query</span>
&nbsp;
schedule:INFO: ZRM <span style="color: #000000; font-weight: bold;">for</span> MySQL Community Edition - version 2.2.0
Logging to <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm-scheduler.log
No mysql-zrm related schedule entry found.</pre></td></tr></table></div>

<p>　　查看备份报告</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code779'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303779"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p2303code779"><pre class="bash" style="font-family:monospace;">mysql-zrm-reporter <span style="color: #660033;">--where</span> backup-set=<span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">--show</span> backup-status-info
&nbsp;
REPORT TYPE : backup-status-info 
&nbsp;
          backup_set  backup_date                  backup_level  backup_status         backup_type       comment
<span style="color: #660033;">-----------------------------------------------------------------------------------------------------------------------------</span>
                <span style="color: #7a0874; font-weight: bold;">test</span>  <span style="color: #000000;">2011</span>年05月<span style="color: #000000;">30</span>日                       <span style="color: #000000;">1</span>  Backup succeeded      regular           <span style="color: #660033;">----</span>
                      星期一 04时04分<span style="color: #000000;">30</span>秒
                <span style="color: #7a0874; font-weight: bold;">test</span>  <span style="color: #000000;">2011</span>年05月<span style="color: #000000;">30</span>日                       <span style="color: #000000;">0</span>  Backup succeeded      regular           <span style="color: #660033;">----</span>
                      星期一 03时<span style="color: #000000;">49</span>分<span style="color: #000000;">48</span>秒</pre></td></tr></table></div>

<p>　　从这个报告中我们可以看到备份的名字、备份时间、备份级别、备份的状态。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code780'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303780"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p2303code780"><pre class="bash" style="font-family:monospace;">mysql-zrm-reporter <span style="color: #660033;">--where</span> backup-set=<span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">--show</span> backup-performance-info
&nbsp;
REPORT TYPE : backup-performance-info 
&nbsp;
          backup_set  backup_date                  backup_level     backup_size  backup_size_compressed     backup_time   backup_type       compress_encrypt_time
<span style="color: #660033;">----------------------------------------------------------------------------------------------------------------------------------------------------------------</span>
                <span style="color: #7a0874; font-weight: bold;">test</span>  <span style="color: #000000;">2011</span>年05月<span style="color: #000000;">30</span>日                       <span style="color: #000000;">0</span>         <span style="color: #000000;">9.38</span> MB  <span style="color: #000000;">2.42</span> MB                    00:00:01      regular           00:00:<span style="color: #000000;">10</span></pre></td></tr></table></div>

<p>　　这份报告中我们能看到备份的大小，压缩后的大小，备份所用时间等</p>
<p>　　检验备份数据是否正确</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code781'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303781"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2303code781"><pre class="bash" style="font-family:monospace;">mysql-zrm-verify-backup <span style="color: #660033;">--backup-set</span> <span style="color: #7a0874; font-weight: bold;">test</span>
&nbsp;
verify-backup:INFO: ZRM <span style="color: #000000; font-weight: bold;">for</span> MySQL Community Edition - version 2.2.0
<span style="color: #7a0874; font-weight: bold;">test</span>:verify-backup:INFO: Verification successful</pre></td></tr></table></div>

<p>　　远程备份</p>
<p>　　ZRM远程备份数据库有两种方法</p>
<p>　　1、使用远程socket连接<br />
　　<br />
　　配置远程mysql服务器</p>
<p>　　获取ZRM客户端安装包</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code782'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303782"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2303code782"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.zmanda.com<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>community<span style="color: #000000; font-weight: bold;">/</span>ZRM-MySQL<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.2</span><span style="color: #000000; font-weight: bold;">/</span>RPM<span style="color: #000000; font-weight: bold;">/</span>MySQL-zrm-client-2.2.0-<span style="color: #000000;">1</span>.noarch.rpm</pre></td></tr></table></div>

<p>　　安装ZRM客户端</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code783'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303783"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2303code783"><pre class="bash" style="font-family:monospace;">rpm <span style="color: #660033;">-ivh</span> MySQL-zrm-client-2.2.0-<span style="color: #000000;">1</span>.noarch.rpm</pre></td></tr></table></div>

<p>　　查看监听端口是否正常启动</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code784'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303784"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p2303code784"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">netstat</span>  -ln<span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #000000;">25300</span>
tcp        <span style="color: #000000;">0</span>      <span style="color: #000000;">0</span> 0.0.0.0:<span style="color: #000000;">25300</span>               0.0.0.0:<span style="color: #000000; font-weight: bold;">*</span>                   LISTEN</pre></td></tr></table></div>

<p>　　修改备份服务器ZRM的配置</p>
<p>　　这里主要修改全局配置文件，以方便下面的备份集都可以使用。在上面配置的文件主要增加以下几项</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code785'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303785"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2303code785"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm.conf
&nbsp;
<span style="color: #666666; font-style: italic;">#执行远程拷贝的脚本</span>
copy-plugin=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>plugins<span style="color: #000000; font-weight: bold;">/</span>socket-copy.pl
<span style="color: #666666; font-style: italic;">#远程mysql服务器上binlog的路径</span>
remote-mysql-binpath=<span style="color: #ff0000;">&quot;/usr/local/webserver/mysq/bin&quot;</span>
<span style="color: #666666; font-style: italic;">#远程client的端口，跟远程数据库上启动监听端口需一致</span>
socket-remote-port=<span style="color: #ff0000;">&quot;25300&quot;</span></pre></td></tr></table></div>

<p>　　测试：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code786'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303786"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code" id="p2303code786"><pre class="bash" style="font-family:monospace;">mysql-zrm-backup <span style="color: #660033;">--backup-set</span> <span style="color: #7a0874; font-weight: bold;">test</span>  <span style="color: #660033;">--backup-mode</span>=logical <span style="color: #660033;">--host</span>=192.168.1.106
&nbsp;
backup:INFO: ZRM <span style="color: #000000; font-weight: bold;">for</span> MySQL Community Edition - version 2.2.0
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: START OF BACKUP
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE START: Initialization
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: The quick backup-type is supported only <span style="color: #000000; font-weight: bold;">for</span> snapshot backups. Setting backup-type to <span style="color: #ff0000;">'regular'</span>
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: backup-set=<span style="color: #7a0874; font-weight: bold;">test</span>
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: backup-date=<span style="color: #000000;">20110530061443</span>
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: mysql-server-os=Linux<span style="color: #000000; font-weight: bold;">/</span>Unix
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: backup-type=regular
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: <span style="color: #007800;">host</span>=192.168.1.106
......
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE END: Running post backup plugin
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE START: Cleanup
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE END: Cleanup
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: END OF BACKUP</pre></td></tr></table></div>

<p>　　2、使用SSH连接</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code787'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303787"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p2303code787"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm.conf
&nbsp;
<span style="color: #666666; font-style: italic;">#执行远程拷贝的脚本</span>
copy-plugin=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>mysql-zrm<span style="color: #000000; font-weight: bold;">/</span>plugins<span style="color: #000000; font-weight: bold;">/</span>ssh-copy.pl
<span style="color: #666666; font-style: italic;">#远程mysql服务器上binlog的路径</span>
remote-mysql-binpath=<span style="color: #ff0000;">&quot;/usr/local/webserver/mysq/bin&quot;</span>
<span style="color: #666666; font-style: italic;">#指定SSH所用的用户</span>
ssh-user=<span style="color: #ff0000;">&quot;root&quot;</span></pre></td></tr></table></div>

<p>　　测试</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p2303code788'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2303788"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p2303code788"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># mysql-zrm-backup --backup-set test  --backup-mode=logical --host=192.168.1.107 --user=root</span>
backup:INFO: ZRM <span style="color: #000000; font-weight: bold;">for</span> MySQL Community Edition - version 2.2.0
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: START OF BACKUP
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE START: Initialization
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: The quick backup-type is supported only <span style="color: #000000; font-weight: bold;">for</span> snapshot backups. Setting backup-type to <span style="color: #ff0000;">'regular'</span>
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: backup-set=<span style="color: #7a0874; font-weight: bold;">test</span>
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: backup-date=<span style="color: #000000;">20110530071039</span>
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: mysql-server-os=Linux<span style="color: #000000; font-weight: bold;">/</span>Unix
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: backup-type=regular
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: <span style="color: #007800;">host</span>=192.168.1.107
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: backup-date-epoch=<span style="color: #000000;">1306710639</span>
......
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: Backup succeeded
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE START: Running post backup plugin
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE END: Running post backup plugin
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE START: Cleanup
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: PHASE END: Cleanup
<span style="color: #7a0874; font-weight: bold;">test</span>:backup:INFO: END OF BACKUP</pre></td></tr></table></div>

<p>　　六、参考文档</p>
<p>　　http://www.google.com<br />
　　http://www.wenzizone.cn/?p=237<br />
　　http://www.shubo.info/?m=20110322<br />
　　http://blog.wgzhao.com/2009/04/15/backup-remote-mysql-with-zrm.html　　<br />
　　http://wiki.zmanda.com/index.php/Zmanda_Recovery_Manager_for_MySQL_Users_Manual<br />
　　http://wiki.zmanda.com/index.php/Zmanda_Recovery_Manager_for_MySQL_Man_pages<br />
　　http://www.mysqlsystems.com/2010/03/zmanda-for-mysql-backup_recovery.html<br />
　　http://bbs.chinaunix.net/viewthread.php?tid=1569522&#038;extra=&#038;page=1</p>
<p style="margin:0;padding:0;height:1px;overflow:hidden;">
    <script type="text/javascript"><!--
        var wumiiSitePrefix = "http://www.mike.org.cn";
        var wumiiEnableCustomPos = true;
        var wumiiParams = "&#038;num=8&#038;mode=3&#038;displayInFeed=1&#038;version=1.0.5.5&#038;pf=WordPress3.3.1";
    //--></script><script type="text/javascript" src="http://widget.wumii.com/ext/relatedItemsWidget.htm"></script><a href="http://www.wumii.com/widget/relatedItems.htm" style="border:0;"><img src="http://static.wumii.com/images/pixel.png" alt="无觅相关文章插件，快速提升流量" style="border:0;padding:0;margin:0;" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike.org.cn/articles/zrm-for-mysql-guide/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced (User is logged in)
Database Caching using disk: basic
Object Caching 15542/15751 objects using disk: basic

Served from: www.mike.org.cn @ 2012-05-18 21:03:18 -->
