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

<channel>
	<title>海盗船长 &#187; 编程开发</title>
	<atom:link href="http://www.1986x.net/develop/feed" rel="self" type="application/rss+xml" />
	<link>http://www.1986x.net</link>
	<description>博客开始运行在Debian+apache 上</description>
	<lastBuildDate>Fri, 30 Jul 2010 04:12:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>一个不错的python学习网站</title>
		<link>http://www.1986x.net/archives/2626.html</link>
		<comments>http://www.1986x.net/archives/2626.html#comments</comments>
		<pubDate>Fri, 30 Jul 2010 04:11:21 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2626</guid>
		<description><![CDATA[最近很忙，其实也不知道忙什么  每天就那样迷迷糊糊的过啦    估计google都快把我忘啦 今天不多说啦   直接上网址 老王python-每天更新一篇python教程 相关文章2010年04月6日 -- 用Python操作Mysql2010年03月29日 -- Django 结构及处理流程分析2010年03月22日 -- ubuntu环境下python+apache2+mod_python部署django2009年09月2日 -- python脚本中的#!/usr/bin/python2009年08月5日 -- Python文件操作 打开,读取,关闭]]></description>
			<content:encoded><![CDATA[<p>最近很忙，其实也不知道忙什么  每天就那样迷迷糊糊的过啦    估计google都快把我忘啦</p>
<p>今天不多说啦   直接上网址</p>
<h1 id="BlogTitle"><a href="http://www.cnpythoner.com/">老王python-每天更新一篇python教程</a></h1>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2010年04月6日 -- <a href="http://www.1986x.net/archives/2519.html" title="用Python操作Mysql">用Python操作Mysql</a></li><li>2010年03月29日 -- <a href="http://www.1986x.net/archives/2502.html" title="Django 结构及处理流程分析">Django 结构及处理流程分析</a></li><li>2010年03月22日 -- <a href="http://www.1986x.net/archives/2471.html" title="ubuntu环境下python+apache2+mod_python部署django">ubuntu环境下python+apache2+mod_python部署django</a></li><li>2009年09月2日 -- <a href="http://www.1986x.net/archives/1879.html" title="python脚本中的#!/usr/bin/python">python脚本中的#!/usr/bin/python</a></li><li>2009年08月5日 -- <a href="http://www.1986x.net/archives/1720.html" title="Python文件操作 打开,读取,关闭">Python文件操作 打开,读取,关闭</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2626.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.htaccess详解</title>
		<link>http://www.1986x.net/archives/2610.html</link>
		<comments>http://www.1986x.net/archives/2610.html#comments</comments>
		<pubDate>Sun, 13 Jun 2010 02:08:11 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2610</guid>
		<description><![CDATA[转载自：http://hi.baidu.com/woaidelphi/blog/item/83d9fa309678ae92a8018e2e.html Apache配置： 支持httpd.conf 配 置和目录 .htaccess配 置 启用rewrite # LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 # LoadModule rewrite_module modules/mod_rewrite.so 启用.htaccess AllowOverride None 修 改为： AllowOverride All 让apache服务器支持.htaccess 如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支 持.htaccess了。打开httpd.conf文件用文本编辑器打开后,查找 &#60;Directory /&#62; Options FollowSymLinks AllowOverride None &#60;/Directory&#62; 改为 &#60;Directory /&#62; Options FollowSymLinks AllowOverride All &#60;/Directory&#62; 就可以了。 RewriteEngine On RewriteBase / 伪静态 RewriteRule ^(article)-([0-9]+)\.htm$  $1.php\?id=$2 根据IP阻止用户访问 order allow,deny deny [...]]]></description>
			<content:encoded><![CDATA[<div>
<div>转载自：http://hi.baidu.com/woaidelphi/blog/item/83d9fa309678ae92a8018e2e.html</div>
<div><strong>Apache</strong><strong>配置： </strong></div>
<div><strong> </strong></div>
<div><strong>支持</strong><strong>httpd.conf </strong><strong>配 置和目录</strong><strong> .htaccess</strong><strong>配 置 </strong></div>
<div><strong> </strong></div>
<div><strong>启用</strong><strong>rewrite<br />
</strong></div>
<div><strong># LoadModule rewrite_module  modules/mod_rewrite.so </strong></div>
<div><strong>去除前面的</strong><strong> # </strong></div>
<div><strong>LoadModule rewrite_module  modules/mod_rewrite.so </strong></div>
<div><strong> </strong></div>
<div><strong>启用</strong><strong>.htaccess<br />
</strong><strong> </strong></div>
<div><strong>AllowOverride None </strong><strong>修 改为：</strong><strong> </strong><strong>AllowOverride All </strong></div>
</div>
<p><strong><br />
让apache服务器支持.htaccess</strong><br />
如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支  持.htaccess了。打开httpd.conf文件用文本编辑器打开后,查找<br />
<span style="color: #0000ff;">&lt;Directory /&gt;</span><br />
<span style="color: #0000ff;">Options FollowSymLinks</span><br />
<span style="color: #0000ff;">AllowOverride </span><span style="color: #ff0000;">None</span><br />
<span style="color: #0000ff;">&lt;/Directory&gt;</span><br />
改为<br />
<span style="color: #0000ff;">&lt;Directory /&gt;</span><br />
<span style="color: #0000ff;">Options FollowSymLinks</span><br />
<span style="color: #0000ff;">AllowOverride </span><span style="color: #ff0000;">All</span><br />
<span style="color: #0000ff;">&lt;/Directory&gt;</span><br />
就可以了。</p>
<p>RewriteEngine On<br />
RewriteBase /</p>
<p>伪静态<br />
RewriteRule ^(article)-([0-9]+)\.htm$  $1.php\?id=$2<br />
根据IP阻止用户访问<br />
order allow,deny<br />
deny from 127.0.0.1<br />
allow from all</p>
<p>Redirects 转向<br />
Redirect /article.php http://www.baidu.com</p>
<p>防止.htaccess文件被查看<br />
order allow,deny<br />
deny from all</p>
<p>制作错误提醒页面<br />
ErrorDocument 404 http://www.baidu.com</p>
<p>添加 MIME 类型<br />
AddType application/x-shockwave-flash swf<br />
Tips: 设置类型为 application/octet-stream 将提示下载</p>
<p>改变缺省的首页文件<br />
DirectoryIndex aa.html index.html index.pl default.htm</p>
<p>防止目录列表时显示<br />
IndexIgnore *</p>
<p>RewriteEngine On<br />
RewriteBase /<br />
RewriteCond %{REQUEST_FILENAME} -s [OR]<br />
RewriteCond %{REQUEST_FILENAME} -l [OR]<br />
RewriteCond %{REQUEST_FILENAME} -d<br />
RewriteRule ^.*$ &#8211; [NC,L]<br />
RewriteRule ^([0-9a-zA-Z.]+)$  demo.php?id=$1</p>
<div><strong>mod_rewrite</strong><strong> </strong><strong>规 则</strong><strong>修正符</strong></div>
<div>
<div><strong>1) R </strong><strong>强制外部重定向 </strong></div>
<div><strong>2) F </strong><strong>禁用</strong><strong>URL,</strong><strong>返 回</strong><strong>403HTTP</strong><strong>状态码。 </strong></div>
<div><strong>3) G </strong><strong>强制</strong><strong>URL</strong><strong>为</strong><strong>GONE</strong><strong>， 返回</strong><strong>410HTTP</strong><strong>状态 码。 </strong></div>
<div><strong>4) P </strong><strong>强制使用代理转发。 </strong></div>
<div><strong>5) L </strong><strong>表明当前规则是最后一条规则，停止分析 以后规则的重写。 </strong></div>
<div><strong>6) N </strong><strong>重新从第一条规则开始运行重写过程。 </strong></div>
<div><strong>7) C </strong><strong>与下一条规则关联 </strong></div>
<div><strong> </strong></div>
<div><strong>如果规则匹配则正常处理，以下修正符无效 </strong></div>
<div><strong> </strong></div>
<div><strong> <img src='http://www.1986x.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> T=MIME-type(force MIME type) </strong><strong>强 制</strong><strong>MIME</strong><strong>类型 </strong></div>
<div><strong>9) NS </strong><strong>只用于 不是内部子请求 </strong></div>
<div><strong>10) NC </strong><strong>不区分大小写 </strong></div>
<div><strong>11) QSA </strong><strong>追加请求字符串 </strong></div>
<div><strong>12) NE </strong><strong>不在输出转义特殊字符</strong><strong> </strong><strong>\%3d$1 </strong><strong>等价于</strong><strong> =$1 </strong></div>
</div>
<div><strong>RewriteEngine on </strong></div>
<div><strong>RewriteCond %{HTTP_HOST} !^www.php100.com  [NC] </strong></div>
<div><strong>RewriteRule   ^(.*) </strong><strong>http://www.php100.com/</strong><strong> [L] </strong></div>
<div><strong> </strong></div>
<div><strong>RewriteEngine on </strong></div>
<div><strong>RewriteRule ^test([0-9]*).html$ test.php?id=$1<br />
</strong><strong>RewriteRule ^new([0-9]*)/$ new.php?id=$1  [R]</p>
<p></strong><strong><span style="color: #0000ff;">1、Rewrite规则简介：</span></strong></p>
<p>Rewirte主要的功能就是实现URL的跳转，它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的  (.htaccess)两种方式。如果要想用到rewrite模块，必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接  安装rewrite模块，别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。</p>
<p>基于服务器级的(httpd.conf)有两种方法，一种是在httpd.conf的全局下直接利用RewriteEngine  on来打开rewrite功能;另一种是在局部里利用RewriteEngine  on来打开rewrite功能,下面将会举例说明，需要注意的是,必须在每个virtualhost里用RewriteEngine  on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。</p>
<p>基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明 RewriteEngine on。</p>
<p><strong><span style="color: #0000ff;">2、举例说明：</span></strong></p>
<p>下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.colorme.com和203.81.23.202都跳转到   主机前缀为http://www.colorme.com.cn，避免当用户在地址栏写入http://colorme.com.cn时不能以会员方式登  录网站。</p>
<p>NameVirtualHost 192.168.100.8:80</p>
<p>ServerAdmin webmaster@colorme.com.cn<br />
DocumentRoot &#8220;/web/webapp&#8221;<br />
ServerName www.colorme.com.cn<br />
ServerName colorme.com.cn<br />
RewriteEngine on #打开rewirte功能<br />
RewriteCond %{HTTP_HOST} !^www.colorme.com.cn [NC]  #声明Client请求的主机中前缀不是www.colorme.com.cn,[NC]的意思是忽略大小写<br />
RewriteCond %{HTTP_HOST} !^203.81.23.202 [NC]  #声明Client请求的主机中前缀不是203.81.23.202,[NC]的意思是忽略大小写<br />
RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空,[NC]的意思是忽略大小写<br />
RewriteRule ^/(.*) http://www.colorme.com.cn/ [L]<br />
#含义是如果Client请求的主机中的前缀符合上述条件，则直接进行跳转到http://www.colorme.com.cn/,[L]意味着立即停   止重写操作，并不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符，()括号的功能是把所有的字符做一个标记，以便于后面的应用.就是  引用前面里的(.*)字符。<br />
例二.将输入 folio.test.com 的域名时跳转到profile.test.com</p>
<p>listen 8080<br />
NameVirtualHost 10.122.89.106:8080<br />
ServerAdmin webmaster@colorme.com.cn<br />
DocumentRoot &#8220;/usr/local/www/apache22/data1/&#8221;<br />
ServerName profile.test.com<br />
RewriteEngine on<br />
RewriteCond %{HTTP_HOST} ^folio.test.com [NC]<br />
RewriteRule ^/(.*) http://profile.test.com/ [L]</p>
<p><strong><span style="color: #0000ff;">3.Apache mod_rewrite规则重写的标志一览</span></strong></p>
<p>1) R[=code](force redirect) 强制外部重定向<br />
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定，将用缺省的302  HTTP状态码。<br />
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。<br />
3) G(force URL to be gone) 强制URL为GONE，返回410HTTP状态码。<br />
4) P(force proxy) 强制使用代理转发。<br />
5) L(last rule) 表明当前规则是最后一条规则，停止分析以后规则的重写。<br />
6) N(next round) 重新从第一条规则开始运行重写过程。<br />
7) C(chained with next rule) 与下一条规则关联</p>
<p>如果规则匹配则正常处理，该标志无效，如果不匹配，那么下面所有关联的规则都跳过。</p>
<p> <img src='http://www.1986x.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> T=MIME-type(force MIME type) 强制MIME类型<br />
9) NS (used only if no internal sub-request) 只用于不是内部子请求<br />
10) NC(no case) 不区分大小写<br />
11) QSA(query string append) 追加请求字符串<br />
12) NE(no URI escaping of output) 不在输出转义特殊字符<br />
例如：RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]  将能正确的将/foo/zoo转换成/bar?arg=P1=zed<br />
13) PT(pass through to next handler) 传递给下一个处理<br />
例如：<br />
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理<br />
Alias /def /ghi<br />
14) S=num(skip next rule(s)) 跳过num条规则<br />
15) E=VAR:VAL(set environment variable) 设置环境变量</p>
<p><strong><span style="color: #0000ff;">4.Apache rewrite例子集合</span></strong></p>
<p>在 httpd 中将一个域名转发到另一个域名虚拟主机世界近期更换了域名，新域名为 www.wbhw.com,  更加简短好记。这时需要将原来的域名webhosting-world.com, 以及论坛所在地址  webhosting-world.com/forums/定向到新的域名，以便用户可以找到，并且使原来的论坛 URL 继续有效而不出现 404  未找到，比如原来的http://www.webhosting-world.com/forums/-f60.html,  让它在新的域名下继续有效，点击后转发到http://bbs.wbhw.com/-f60.html, 这就需要用 apache 的  Mod_rewrite 功能来实现。</p>
<p>在中添加下面的重定向规则：</p>
<p>RewriteEngine On<br />
# Redirect webhosting-world.com/forums to bbs.wbhw.com<br />
RewriteCond %{REQUEST_URI} ^/forums/<br />
RewriteRule /forums/(.*) http://bbs.wbhw.com/$1 [R=permanent,L]<br />
# Redirect webhosting-world.com to wbhw.com<br />
RewriteCond %{REQUEST_URI} !^/forums/<br />
RewriteRule /(.*) http://www.wbhw.com/$1 [R=permanent,L]</p>
<p>添加了上面的规则以后， 里的全部内容如下：</p>
<p>ServerAlias webhosting-world.com<br />
ServerAdmin admin@webhosting-world.com<br />
DocumentRoot /path/to/webhosting-world/root<br />
ServerName www.webhosting-world.com<br />
RewriteEngine On<br />
# Redirect webhosting-world.com/forums to bbs.wbhw.com<br />
RewriteCond %{REQUEST_URI} ^/forums/<br />
RewriteRule /forums/(.*) http://bbs.wbhw.com/$1 [R=permanent,L]<br />
# Redirect webhosting-world.com to wbhw.com<br />
RewriteCond %{REQUEST_URI} !^/forums/<br />
RewriteRule /(.*) http://www.wbhw.com/$1 [R=permanent,L]</p>
<p><strong>URL重定向</strong></p>
<p>例子一:</p>
<p>1.http://www.zzz.com/xxx.php-&gt; http://www.zzz.com/xxx/<br />
2.http://yyy.zzz.com-&gt; http://www.zzz.com/user.php?username=yyy 的功能<br />
RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^www.zzz.com<br />
RewriteCond %{REQUEST_URI} !^user\.php$<br />
RewriteCond %{REQUEST_URI} \.php$<br />
RewriteRule (.*)\.php$ http://www.zzz.com/$1/ [R]<br />
RewriteCond %{HTTP_HOST} !^www.zzz.com<br />
RewriteRule ^(.+) %{HTTP_HOST} [C]<br />
RewriteRule ^([^\.]+)\.zzz\.com http://www.zzz.com/user.php?username=$1</p>
<p>例子二：</p>
<p>/type.php?typeid=*    &#8211;&gt; /type*.html<br />
/type.php?typeid=*&amp;page=*    &#8211;&gt; /type*page*.html<br />
RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]<br />
RewriteRule ^/type([0-9]+)page([0-9]+).html$  /type.php?typeid=$1&amp;page=$2 [PT]</p>
<p><strong><span style="color: #0000ff;">5.使用Apache的URL Rewrite配置多用户虚拟服务器</span></strong></p>
<p>要实现这个功能，首先要在DNS服务器上打开域名的泛域名解析（自己做或者找域名服务商做）。比如，我就把 *.semcase.com和  *.semcase.cn全部解析到了我的这台Linux Server上。</p>
<p>然后，看一下我的Apache中关于*.semcase.com的虚拟主机的设定。</p>
<p>#*.com,*.osall.net</p>
<p>ServerAdmin webmaster@semcase.com<br />
DocumentRoot /home/www/www.semcase.com<br />
ServerName dns.semcase.com<br />
ServerAlias dns.semcase.com semcase.com semcase.net *.semcase.com  *.semcase.net<br />
CustomLog /var/log/httpd/osa/access_log.log&#8221; common<br />
ErrorLog /var/log/httpd/osa/error_log.log&#8221;<br />
AllowOverride None<br />
Order deny,allow<br />
#AddDefaultCharset GB2312</p>
<p>RewriteEngine on<br />
RewriteCond %{HTTP_HOST}         ^[^.]+\.osall\.(com|net)$<br />
RewriteRule ^(.+)      %{HTTP_HOST}$1    [C]<br />
RewriteRule ^([^.]+)\.osall\.(com|net)(.*)$<br />
/home/www/www.semcase.com/sylvan$3?un=$1&amp;%{QUERY_STRING} [L]<br />
在这段设定中，我把*.semcase.net和*.semcase.com 的Document Root都设定到了  /home/www/www.semcase.com</p>
<p>但是，继续看下去，看到&#8230;配置了吗？在这里我就配置了URL Rewrite规则。<br />
RewriteEngine on #打开URL Rewrite功能<br />
RewriteCond %{HTTP_HOST} ^[^.]+.osall.(com|net)$ #匹配条件，如果用户输入的URL中主机名是类似  xxxx.semcase.com 或者 xxxx.semcase.cn 就执行下面一句<br />
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]  #把用户输入完整的地址（GET方式的参数除外）作为参数传给下一个规则，[C]是Chain串联下一个规则的意思<br />
RewriteRule ^([^.]+).osall.(com|net)(.*)$  /home/www/dev.semcase.com/sylvan$3?un=$1&amp;%{QUERY_STRING} [L]<br />
# 最关键的是这一句，使用证则表达式解析用户输入的URL地址，把主机名中的用户名信息作为名为un的参数传给/home/www  /dev.semcase.com目录下的脚本，并在后面跟上用户输入的GET方式的传入参数。并指明这是最后一条规则（[L]规则）。注意，在这一句中   指明的重写后的地址用的是服务器上的绝对路径，这是内部跳转。如果使用http://xxxx这样的URL格式，则被称为外部跳转。使用外部跳转的话，浏  览着的浏览器中的URL地址会改变成新的地址，而使用内部跳转则浏览器中的地址不发生改变，看上去更像实际的二级域名虚拟服务器。</p>
<p><strong>Apache下禁止特定目录PHP，特定虚拟主机不支持PHP</strong><br />
有两种方式：方式一：.htaccess控制，适用于没有服务器管理权限。在可写文件夹的目录下，建一个.htaccess文件，内容为:<br />
&lt;Files  ~  &#8220;.php&#8221;&gt;<br />
Order  allow,deny<br />
Deny  from  all<br />
&lt;/Files&gt;<br />
方式二：修改Apache配置文件，适用于有服务器管理权限。配置中增加如下内容：<br />
&lt;Directory  &#8220;特定目录地址&#8221;&gt;<br />
&lt;Files  ~  &#8220;.php&#8221;&gt;<br />
Order  allow,deny<br />
Deny  from  all<br />
&lt;/Files&gt;<br />
&lt;/Directory&gt;<br />
这样只特定目录不支持php，其他不受影响</p>
<p><span style="color: #0000ff;"><strong>6、防盗链，防止别人盗用你的资源</strong></span><br />
RewriteEngine on<br />
RewriteCond %{HTTP_REFERER} !^http://www.xing.com/.*$ [NC]<br />
RewriteCond %{HTTP_REFERER} !^http://localhost/.*$ [NC]<br />
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$  http://www.xing.com  [R,NC]</div>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>2009年06月12日 -- <a href="http://www.1986x.net/archives/977.html" title="核桃SEO第5辑包括什么内容？">核桃SEO第5辑包括什么内容？</a></li><li>2009年07月20日 -- <a href="http://www.1986x.net/archives/1456.html" title="什么是百度降权以及降权实例">什么是百度降权以及降权实例</a></li><li>2010年02月27日 -- <a href="http://www.1986x.net/archives/2410.html" title="GSPAY支付的介绍">GSPAY支付的介绍</a></li><li>2009年05月25日 -- <a href="http://www.1986x.net/archives/475.html" title="关于网摘的实验（二）">关于网摘的实验（二）</a></li><li>2009年10月30日 -- <a href="http://www.1986x.net/archives/2098.html" title="刚无意间从douban看到一个女孩子的blog">刚无意间从douban看到一个女孩子的blog</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2610.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu 10.04更新源</title>
		<link>http://www.1986x.net/archives/2574.html</link>
		<comments>http://www.1986x.net/archives/2574.html#comments</comments>
		<pubDate>Fri, 30 Apr 2010 15:33:24 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2574</guid>
		<description><![CDATA[ 昨天把系统升级到ubuntu10.04了，虽然在升级过程中出现了点以外，但最终还算顺利升级成功，下面是我找到的ubuntu10.04更新源。]]></description>
			<content:encoded><![CDATA[<div id="blog_text">
<div>昨天把系统升级到ubuntu10.04了，虽然在升级过程中出现了点以外，但最终还算顺利升级成功，下面是我找到的ubuntu10.04更新源。</div>
<div><strong>ubuntu 10.04 源1:</strong></div>
<div>
<blockquote>
<div>deb <a href="http://tw.archive.ubuntu.com/ubuntu/">http://tw.archive.ubuntu.com/ubuntu/</a> lucid main universe restricted multiverse<br />
deb-src <a href="http://tw.archive.ubuntu.com/ubuntu/">http://tw.archive.ubuntu.com/ubuntu/</a> lucid main universe restricted multiverse<br />
deb <a href="http://tw.archive.ubuntu.com/ubuntu/">http://tw.archive.ubuntu.com/ubuntu/</a> lucid-security universe main multiverse restricted<br />
deb-src <a href="http://tw.archive.ubuntu.com/ubuntu/">http://tw.archive.ubuntu.com/ubuntu/</a> lucid-security universe main multiverse restricted<br />
deb <a href="http://tw.archive.ubuntu.com/ubuntu/">http://tw.archive.ubuntu.com/ubuntu/</a> lucid-updates universe main multiverse restricted<br />
deb-src <a href="http://tw.archive.ubuntu.com/ubuntu/">http://tw.archive.ubuntu.com/ubuntu/</a> lucid-updates universe main multiverse restricted</div>
</blockquote>
</div>
<p>SRT Sources</p>
<div><strong>ubuntu  10.04 源2:</strong></div>
<div>
<blockquote>
<div>deb <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid main restricted universe multiverse<br />
deb <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid-security main restricted universe multiverse<br />
deb <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid-updates main restricted universe multiverse<br />
deb <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid-proposed main restricted universe multiverse<br />
deb <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid-backports main restricted universe multiverse<br />
deb-src <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid main restricted universe multiverse<br />
deb-src <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid-security main restricted universe multiverse<br />
deb-src <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid-updates main restricted universe multiverse<br />
deb-src <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid-proposed main restricted universe multiverse<br />
deb-src <a href="http://ubuntu.srt.cn/ubuntu/">http://ubuntu.srt.cn/ubuntu/</a> lucid-backports main restricted universe multiverse</div>
</blockquote>
</div>
<p><strong>ubuntu 10.04 源3（网易）:</strong></p>
<div>
<blockquote>
<div>deb <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid main universe restricted multiverse<br />
deb-src <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid main universe restricted multiverse<br />
deb <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid-security universe main multiverse restricted<br />
deb-src <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid-security universe main multiverse restricted<br />
deb <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid-updates universe main multiverse restricted<br />
deb <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid-proposed universe main multiverse restricted<br />
deb-src <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid-proposed universe main multiverse restricted<br />
deb <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid-backports universe main multiverse restricted<br />
deb-src <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid-backports universe main multiverse restricted<br />
deb-src <a href="http://mirrors.163.com/ubuntu/">http://mirrors.163.com/ubuntu/</a> lucid-updates universe main multiverse restricted</div>
</blockquote>
</div>
</div>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>2009年09月24日 -- <a href="http://www.1986x.net/archives/1997.html" title="昨天很疯狂">昨天很疯狂</a></li><li>2009年06月13日 -- <a href="http://www.1986x.net/archives/992.html" title="如何做人">如何做人</a></li><li>2010年03月16日 -- <a href="http://www.1986x.net/archives/2451.html" title="第一台linux服务器  ">第一台linux服务器  </a></li><li>2010年05月22日 -- <a href="http://www.1986x.net/archives/2588.html" title="注册IxWebHosting免费域名的简易教程">注册IxWebHosting免费域名的简易教程</a></li><li>2009年05月28日 -- <a href="http://www.1986x.net/archives/574.html" title="台湾飞鸟游戏SEO修改方案">台湾飞鸟游戏SEO修改方案</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2574.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>configure命令详解</title>
		<link>http://www.1986x.net/archives/2572.html</link>
		<comments>http://www.1986x.net/archives/2572.html#comments</comments>
		<pubDate>Wed, 28 Apr 2010 16:42:11 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2572</guid>
		<description><![CDATA[由于一直使用的是ubuntu,对源码安装使用的较少，虽然想用但是对configure 之类的参数是在不懂，一直不敢用，今天找到篇以供linux初学者参考 –cache-file=FILE 　　’configure’会在你的系统上测试存在的特性(或者bug!).为了加速随后进行的配置,测试的结果会存储在一个cache file里.当configure一个每个子树里都有’configure’脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助. –help 　　输出帮助信息.即使是有经验的用户也偶尔需要使用使用’–help’选项,因为一个复杂的项目会包含附加的选项.例如,GCC包里的’configure’脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项. –no-create 　　’configure’中的一个主要函数会制作输出文件.此选项阻止’configure’生成这个文件.你可以认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了. –quiet –silent 　　当’configure’进行他的测试时,会输出简要的信息来告诉用户正在作什么.这样作是因为’configure’可能会比较慢,没有这种输出的话用户将会被扔在一旁疑惑正在发生什么.使用这两个选项中的任何一个都会把你扔到一旁.(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!) –version 　　打印用来产生’configure’脚本的Autoconf的版本号. –prefix=PEWFIX 　　’–prefix’是最常用的选项.制作出的’Makefile’会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分. 举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到”/opt/gnu/share”: $ ./configure –prefix=/opt/gnu –exec-prefix=EPREFIX 　　与’–prefix’选项类似,但是他是用来设置结构倚赖的文件的安装位置.编译好的’emacs’二进制文件就是这样一个问件.如果没有设置这个选项的话,默认使用的选项值将被设为和’–prefix’选项值一样. –bindir=DIR 　　指定二进制文件的安装位置.这里的二进制文件定义为可以被用户直接执行的程序. –sbindir=DIR 　　指定超级二进制文件的安装位置.这是一些通常只能由超级用户执行的程序. –libexecdir=DIR [...]]]></description>
			<content:encoded><![CDATA[<p>由于一直使用的是ubuntu,对源码安装使用的较少，虽然想用但是对configure 之类的参数是在不懂，一直不敢用，今天找到篇以供linux初学者参考<br />
–cache-file=FILE</p>
<p>　　’configure’会在你的系统上测试存在的特性(或者bug!).为了加速随后进行的配置,测试的结果会存储在一个cache file里.当configure一个每个子树里都有’configure’脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助.</p>
<p>–help</p>
<p>　　输出帮助信息.即使是有经验的用户也偶尔需要使用使用’–help’选项,因为一个复杂的项目会包含附加的选项.例如,GCC包里的’configure’脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项.</p>
<p>–no-create</p>
<p>　　’configure’中的一个主要函数会制作输出文件.此选项阻止’configure’生成这个文件.你可以认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了.</p>
<p>–quiet</p>
<p>–silent</p>
<p>　　当’configure’进行他的测试时,会输出简要的信息来告诉用户正在作什么.这样作是因为’configure’可能会比较慢,没有这种输出的话用户将会被扔在一旁疑惑正在发生什么.使用这两个选项中的任何一个都会把你扔到一旁.(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)</p>
<p>–version</p>
<p>　　打印用来产生’configure’脚本的Autoconf的版本号.</p>
<p>–prefix=PEWFIX</p>
<p>　　’–prefix’是最常用的选项.制作出的’Makefile’会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分. 举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到”/opt/gnu/share”:</p>
<p>$ ./configure –prefix=/opt/gnu</p>
<p>–exec-prefix=EPREFIX</p>
<p>　　与’–prefix’选项类似,但是他是用来设置结构倚赖的文件的安装位置.编译好的’emacs’二进制文件就是这样一个问件.如果没有设置这个选项的话,默认使用的选项值将被设为和’–prefix’选项值一样.</p>
<p>–bindir=DIR</p>
<p>　　指定二进制文件的安装位置.这里的二进制文件定义为可以被用户直接执行的程序.</p>
<p>–sbindir=DIR</p>
<p>　　指定超级二进制文件的安装位置.这是一些通常只能由超级用户执行的程序.</p>
<p>–libexecdir=DIR</p>
<p>　　指定可执行支持文件的安装位置.与二进制文件相反,这些文件从来不直接由用户执行,但是可以被上面提到的二进制文件所执行.</p>
<p>–datadir=DIR</p>
<p>　　指定通用数据文件的安装位置.</p>
<p>–sysconfdir=DIR</p>
<p>　　指定在单个机器上使用的只读数据的安装位置.</p>
<p>–sharedstatedir=DIR</p>
<p>　　指定可以在多个机器上共享的可写数据的安装位置.</p>
<p>–localstatedir=DIR</p>
<p>　　指定只能单机使用的可写数据的安装位置.</p>
<p>–libdir=DIR</p>
<p>　　指定库文件的安装位置.</p>
<p>–includedir=DIR</p>
<p>　　指定C头文件的安装位置.其他语言如C++的头文件也可以使用此选项.</p>
<p>–oldincludedir=DIR</p>
<p>　　指定为除GCC外编译器安装的C头文件的安装位置.</p>
<p>–infodir=DIR</p>
<p>　　指定Info格式文档的安装位置.Info是被GNU工程所使用的文档格式.</p>
<p>–mandir=DIR</p>
<p>　　指定手册页的安装位置.</p>
<p>–srcdir=DIR</p>
<p>　　这个选项对安装没有作用.他会告诉’configure’源码的位置.一般来说不用指定此选项,因为’configure’脚本一般和源码文件在同一个目录下.</p>
<p>–program-prefix=PREFIX</p>
<p>　　指定将被加到所安装程序的名字上的前缀.例如,使用’–program-prefix=g’来configure一个名为’tar’的程序将会使安装的程序被命名为’gtar’.当和其他的安装选项一起使用时,这个选项只有当他被`Makefile.in’文件使用时才会工作.</p>
<p>–program-suffix=SUFFIX</p>
<p>　　指定将被加到所安装程序的名字上的后缀.</p>
<p>–program-transform-name=PROGRAM</p>
<p>　　这里的PROGRAM是一个sed脚本.当一个程序被安装时,他的名字将经过`sed -e PROGRAM’来产生安装的名字.</p>
<p>–build=BUILD</p>
<p>　　指定软件包安装的系统平台.如果没有指定,默认值将是’–host’选项的值.</p>
<p>–host=HOST</p>
<p>　　指定软件运行的系统平台.如果没有指定,将会运行`config.guess’来检测.</p>
<p>–target=GARGET</p>
<p>　　指定软件面向(target to)的系统平台.这主要在程序语言工具如编译器和汇编器上下文中起作用.如果没有指定,默认将使用’–host’选项的值.</p>
<p>–disable-FEATURE</p>
<p>　　一些软件包可以选择这个选项来提供为大型选项的编译时配置,例如使用Kerberos认证系统或者一个实验性的编译器最优配置.如果默认是提供这些特性,可以使用’–disable-FEATURE’来禁用它,这里’FEATURE’是特性的名字.例如:</p>
<p>$ ./configure –disable-gui</p>
<p>-enable-FEATURE[=ARG]</p>
<p>　　相反的,一些软件包可能提供了一些默认被禁止的特性,可以使用’–enable-FEATURE’来起用它.这里’FEATURE’是特性的名字.一个特性可能会接受一个可选的参数.例如:</p>
<p>$ ./configure –enable-buffers=128</p>
<p>`–enable-FEATURE=no’与上面提到的’–disable-FEATURE’是同义的.</p>
<p>–with-PACKAGE[=ARG]</p>
<p>　　在自由软件社区里,有使用已有软件包和库的优秀传统.当用’configure’来配置一个源码树时,可以提供其他已经安装的软件包的信息.例如,倚赖于Tcl和Tk的BLT器件工具包.要配置BLT,可能需要给’configure’提供一些关于我们把Tcl和Tk装的何处的信息:</p>
<p>$ ./configure –with-tcl=/usr/local –with-tk=/usr/local</p>
<p>‘–with-PACKAGE=no’与下面将提到的’–without-PACKAGE’是同义的.</p>
<p>–without-PACKAGE</p>
<p>　　有时候你可能不想让你的软件包与系统已有的软件包交互.例如,你可能不想让你的新编译器使用GNU ld.通过使用这个选项可以做到这一点:</p>
<p>$ ./configure –without-gnu-ld</p>
<p>–x-includes=DIR</p>
<p>　　这个选项是’–with-PACKAGE’选项的一个特例.在Autoconf最初被开发出来时,流行使用’configure’来作为 Imake 的一个变通方法来制作运行于X的软件.’–x-includes’选项提供了向’configure’脚本指明包含X11头文件的目录的方法.</p>
<p>–x-libraries=DIR</p>
<p>　　类似的,’–x-libraries’选项提供了向’configure’脚本指明包含X11库的目录的方法.</p>
<p>　　在源码树中运行’configure’是不必要的同时也是不好的.一个由’configure’产生的良好的’Makefile’可以构筑源码属于另一棵树的软件包.在一个独立于源码的树中构筑派生的文件的好处是很明显的:派生的文件,如目标文件,会凌乱的散布于源码树.这也使在另一个不同的系统或用不同的配置选项构筑同样的目标文件非常困难.建议使用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵安装树(install tree).这里有一个很接近的例子,是使用这种方法来构筑GNU malloc包:</p>
<p>$ gtar zxf mmalloc-1.0.tar.gz</p>
<p>$ mkdir build &#038;&#038; cd build</p>
<p>$ ../mmalloc-1.0/configure</p>
<p>creating cache ./config.cache</p>
<p>checking for gcc… gcc</p>
<p>checking whether the C compiler (gcc ) works… yes</p>
<p>checking whether the C compiler (gcc ) is a cross-compiler… no</p>
<p>checking whether we are using GNU C… yes</p>
<p>checking whether gcc accepts -g… yes</p>
<p>checking for a BSD compatible install… /usr/bin/install -c</p>
<p>checking host system type… i586-pc-linux-gnu</p>
<p>checking build system type… i586-pc-linux-gnu</p>
<p>checking for ar… ar</p>
<p>checking for ranlib… ranlib</p>
<p>checking how to run the C preprocessor… gcc -E</p>
<p>checking for unistd.h… yes</p>
<p>checking for getpagesize… yes</p>
<p>checking for working mmap… yes</p>
<p>checking for limits.h… yes</p>
<p>checking for stddef.h… yes</p>
<p>updating cache ../config.cache</p>
<p>creating ./config.status</p>
<p>这样这棵构筑树就被配置了,下面可以继续构筑和安装这个包到默认的位置’/usr/local’:</p>
<p>$ make all &#038;&#038; make install</p>
<p>一个软件包通过编译源代码安装后，如何完全的卸载？？</p>
<p>如果原先的source还在的话，很多source的Makefile都有写uninstall规则，直接在Souce里make uninstall就可行，不过碰到无良作者没写的，那一句一句看Makefile里install部分他都干了些什么，然后挨个删除。</p>
<p>如果source没了…..那就一边郁闷吧</p>
<p>到目前为止, 我装的都可以make uninstall…….</p>
<p>(因为总是不小心装错地方, 结果就make uninstall&#038;&#038;make clean,然后重新configure……)</p>
<p>linux下软件的基本安装和卸载</p>
<p>Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中，我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似，在Linux下有一个功能强大的软件安装卸载工具，名为 RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm，就可获得该命令的帮助信息。</p>
<p>软件的安装</p>
<p>Linux下软件的安装主要有两种不同的形式。第一种安装文件名为xxx.tar.gz；另一种安装文件名为xxx.i386.rpm。以第一种方式发行的软件多为以源码形式发送的；第二种方式则是直接以二进制形式发送的。</p>
<p>对于第一种，安装方法如下：</p>
<p>1 .首先，将安装文件拷贝至你的目录中。例如，如果你是以root身份登录上的，就将软件拷贝至/root中。</p>
<p>#cp xxx.tar.gz /root</p>
<p>2 .由于该文件是被压缩并打包的,应对其解压缩。命令为：</p>
<p>#tar xvzf filename.tar.gz 如果是filename.tar.bz2格式的，应该是tar jxvf filename.tar.bz2来解压</p>
<p>3. 执行该命令后，安装文件按路径，解压缩在当前目录下。用ls命令可以看到解压缩后的文件。通常在解压缩后产生的文件中，有“Install”的文件。该文件为纯文本文件，详细讲述了该软件包的安装方法。</p>
<p>4.执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库，以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为： #./configure</p>
<p>如果您想把软件安装到指定目录，应该用#./configure –prefix=/您自己指定的目录，比如我想把一个mlterm安装到/opt/mlterm目录中，应该如下输入</p>
<p>#./configure –prefix=/opt/mlterm</p>
<p>5.检查通过后，将生成用于编译的MakeFile文件。此时，可以开始进行编译了。编译的过程视软件的规模和计算机性能的不同，所耗费的时间也不同。命令为： #make。</p>
<p>6.成功编译后，键入如下的命令开始安装：</p>
<p>#make install</p>
<p>7.安装完毕，应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令：</p>
<p>#make clean</p>
<p>#make distclean</p>
<p>至此，软件的安装结束。</p>
<p>对于第二种，其安装方法要简单得多。</p>
<p>同第一种方式一样，将安装文件拷贝至你的目录中。然后使用rpm来安装该文件。命令如下：</p>
<p>#rpm -i filename.i386.rpm</p>
<p>rpm将自动将安装文件解包，并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中。参数i的作用是使rpm进入安装模式。</p>
<p>软件的卸载</p>
<p>1.软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令：</p>
<p>#rpm -q -a</p>
<p>即可查询到当前系统中安装的所有的软件包。</p>
<p>2. 确定了要卸载的软件的名称，就可以开始实际卸载该软件了。键入命令：</p>
<p>#rpm -e [package name]</p>
<p>即可卸载软件。参数e的作用是使rpm进入卸载模式。对名为[package name]的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载，rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系，直接开始卸载：</p>
<p>#rpm -e [package name] -nodeps</p>
<p>忽略依赖关系的卸载可能会导致系统中其它的一些软件无法使用</p>
<p>如果想知道rpm包安装到哪里了呢？</p>
<p>应该用 #rpm -ql [package name]</p>
<p>3.如何卸载用源码包安装的软件？</p>
<p>最好是看README和INSTALL ；一般的情况下都有说，但大多软件没有提供源码包的卸载方法；我们可以找到软件的安装点删除。主要看你把它安装在哪了。</p>
<p>比如：</p>
<p>如果安装软件时，指定个目录。这个问题也不会难；</p>
<p>比如用源码包安装gaim 的</p>
<p>#./configure –prefix=/opt/gaim</p>
<p>#make</p>
<p>#make install</p>
<p>如果安装mlterm</p>
<p>#./configure –prefix=/opt/mlterm</p>
<p>#make</p>
<p>#make install</p>
<p>把源码包安装的软件，都指定安装在 /opt目录中，这样不就知道了？？</p>
<p>如果删除，就删除相应的软件目录；</p>
<p>有些软件要在解压安装目录中执行 make uninstall ，这样就卸载掉了</p>
<p>http://www.ownlinux.cn/2009/10/22/configure%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3.html</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>2009年06月21日 -- <a href="http://www.1986x.net/archives/1062.html" title="包小柏愤怒离场视频 不满争议选手晋级">包小柏愤怒离场视频 不满争议选手晋级</a></li><li>2009年06月7日 -- <a href="http://www.1986x.net/archives/942.html" title="莆田SEO更新速度变快原因分析">莆田SEO更新速度变快原因分析</a></li><li>2009年07月20日 -- <a href="http://www.1986x.net/archives/1489.html" title="好多链接，黑帽还是白帽？">好多链接，黑帽还是白帽？</a></li><li>2009年10月15日 -- <a href="http://www.1986x.net/archives/2027.html" title="越多越好，把你累跨  哈哈">越多越好，把你累跨  哈哈</a></li><li>2009年11月1日 -- <a href="http://www.1986x.net/archives/2136.html" title="高仿xp仿win7透明主题免费下载">高仿xp仿win7透明主题免费下载</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2572.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux chmod 命令详解</title>
		<link>http://www.1986x.net/archives/2562.html</link>
		<comments>http://www.1986x.net/archives/2562.html#comments</comments>
		<pubDate>Thu, 22 Apr 2010 08:01:12 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux chmod]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2562</guid>
		<description><![CDATA[linux下目录和文件的权限区别 文件：读文件内容（r）、写数据到文件（w）、作为命令执行文件（x）。 目录：读包含在目录中的文件名称（r）、写信息到目录中去（增加和删除索引点的连结）、搜索目录（能用该目录名称作为路径名去访问它所包含的文件和子目 录） 具体说就是： （1）有只读权限的用户不能用cd进入该目录：还必须有执行权限才能进入。 （2）有执行权限的用户只有在知道文件名，并拥有读权利的情况下才可以访问目录下的文件。 （3）必须有读和执行权限才可以ls列出目录清单，或使用cd命令进入目录。 （4）有目录的写权限，可以创建、删除或修改目录下的任何文件或子目录，即使使该文件或子目录属于其他用户也是如此。 linux chmod 命令详解 chmod命令是非常重要的，用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。 该命令有两种用法。一种是包含字母和操作符表达式的文字设定法；另一种是包含数字的数字设定法。 1. 文字设定法 chmod [who] [+ &#124; - &#124; =] [mode] 文件名? 命令中各选项的含义为： 操作对象who可是下述字母中的任一个或者它们的组合： u 表示“用户（user）”，即文件或目录的所有者。 g 表示“同组（group）用户”，即与文件属主有相同组ID的所有用户。 o 表示“其他（others）用户”。 a 表示“所有（all）用户”。它是系统默认值。 操作符号可以是： + 添加某个权限。 - 取消某个权限。 = 赋予给定权限并取消其他所有权限（如果有的话）。 设置mode所表示的权限可用下述字母的任意组合： r 可读。 w 可写。 x 可执行。 X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。 s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u＋s”设置文件的用户ID位，“g＋s”设置组ID位。 t [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.chinaunix.net/u/30648/showart.php?" target="_blank"><span style="color: #ff00ff;"><strong></strong></span></a></p>
<p>linux下目录和文件的权限区别<br />
文件：读文件内容（r）、写数据到文件（w）、作为命令执行文件（x）。<br />
目录：读包含在目录中的文件名称（r）、写信息到目录中去（增加和删除索引点的连结）、搜索目录（能用该目录名称作为路径名去访问它所包含的文件和子目 录）<br />
具体说就是：<br />
（1）有只读权限的用户不能用cd进入该目录：还必须有执行权限才能进入。<br />
（2）有执行权限的用户只有在知道文件名，并拥有读权利的情况下才可以访问目录下的文件。<br />
（3）必须有读和执行权限才可以ls列出目录清单，或使用cd命令进入目录。<br />
（4）有目录的写权限，可以创建、删除或修改目录下的任何文件或子目录，即使使该文件或子目录属于其他用户也是如此。</p>
<p>linux chmod 命令详解<br />
chmod命令是非常重要的，用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。<br />
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法；另一种是包含数字的数字设定法。<br />
1. 文字设定法<br />
chmod [who] [+ | - | =] [mode] 文件名?<br />
命令中各选项的含义为：<br />
操作对象who可是下述字母中的任一个或者它们的组合：<br />
u 表示“用户（user）”，即文件或目录的所有者。<br />
g 表示“同组（group）用户”，即与文件属主有相同组ID的所有用户。<br />
o 表示“其他（others）用户”。<br />
a 表示“所有（all）用户”。它是系统默认值。<br />
操作符号可以是：<br />
+ 添加某个权限。<br />
- 取消某个权限。<br />
= 赋予给定权限并取消其他所有权限（如果有的话）。<br />
设置mode所表示的权限可用下述字母的任意组合：<br />
r 可读。<br />
w 可写。<br />
x 可执行。<br />
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。<br />
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u＋s”设置文件的用户ID位，“g＋s”设置组ID位。<br />
t 保存程序的文本到交换设备上。<br />
u 与文件属主拥有一样的权限。<br />
g 与和文件属主同组的用户拥有一样的权限。<br />
o 与其他用户拥有一样的权限。<br />
文件名：以空格分开的要改变权限的文件列表，支持通配符。<br />
在一个命令行中可给出多个权限方式，其间用逗号隔开。例如：chmod g+r，o+r example<br />
使同组和其他用户对文件example 有读权限。<br />
2. 数字设定法<br />
我们必须首先了解用数字表示的属性的含义：0表示没有权限，1表示可执行权限，2表示可写权限，4表示可读权限，然后将其相加。所以数字属性的格式应为3 个从0到7的八进制数，其顺序是（u）（g）（o）。<br />
例如，如果想让某个文件的属主有“读/写”二种权限，需要把4（可读）+2（可写）＝6（读/写）。<br />
数字设定法的一般形式为：<br />
chmod [mode] 文件名?<br />
例子：<br />
（1）文字设定法：<br />
例1：$ chmod a+x sort<br />
即设定文件sort的属性为：<br />
文件属主（u） 增加执行权限<br />
与文件属主同组用户（g） 增加执行权限<br />
其他用户（o） 增加执行权限<br />
例2：$ chmod ug+w，o-x text<br />
即设定文件text的属性为：<br />
文件属主（u） 增加写权限<br />
与文件属主同组用户（g） 增加写权限<br />
其他用户（o） 删除执行权限<br />
例3：$ chmod u+s a.out<br />
假设执行chmod后a.out的权限为（可以用ls C l a.out命令来看）：<br />
Crws&#8211;x&#8211;x 1 inin users 7192 Nov 4 14:22 a.out<br />
并且这个执行文件要用到一个文本文件shiyan1.c，其文件存取权限为“Crw&#8212;&#8212;-”，即该文件只有其属主具有读写权限。<br />
当其他用户执行a.out这个程序时，他的身份因这个程序暂时变成inin（由于chmod命令中使用了s选项），所以他就能够读取shiyan1.c这 个文件（虽然这个文件被设定为其他人不具备任何权限），这就是s的功能。<br />
因此，在整个系统中特别是root本身，最好不要过多的设置这种类型的文件（除非必要）这样可以保障系统的安全，避免因为某些程序的bug而使系统遭到入 侵。<br />
例4：$ chmod aCx mm.txt<br />
$ chmod Cx mm.txt<br />
$ chmod ugoCx mm.txt<br />
以上这三个命令都是将文件mm.txt的执行权限删除，它设定的对象为所有使用者。<br />
（2）数字设定法：<br />
例1： $ chmod 644 mm.txt<br />
$ ls Cl<br />
即设定文件mm.txt的属性为：<br />
-rw-r&#8211;r&#8211; 1 inin users 1155 Nov 5 11:22 mm.txt<br />
文件属主（u）inin 拥有读、写权限<br />
与文件属主同组人用户（g） 拥有读权限<br />
其他人（o） 拥有读权限<br />
例2： $ chmod 750 wch.txt<br />
$ ls Cl<br />
-rwxr-x&#8212; 1 inin users 44137 Nov 12 9:22 wchtxt<br />
即设定wchtxt这个文件的属性为：<br />
文件主本人（u）inin 可读/可写/可执行权<br />
与文件主同组人（g） 可读/可执行权<br />
其他人（o） 没有任何权限</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>2009年06月3日 -- <a href="http://www.1986x.net/archives/760.html" title="臺灣SEO怎么搜索引擎行銷">臺灣SEO怎么搜索引擎行銷</a></li><li>2009年11月1日 -- <a href="http://www.1986x.net/archives/2136.html" title="高仿xp仿win7透明主题免费下载">高仿xp仿win7透明主题免费下载</a></li><li>2009年07月13日 -- <a href="http://www.1986x.net/archives/1409.html" title="利用Google Search Appliance 服务器做SEO ">利用Google Search Appliance 服务器做SEO </a></li><li>2009年06月7日 -- <a href="http://www.1986x.net/archives/942.html" title="莆田SEO更新速度变快原因分析">莆田SEO更新速度变快原因分析</a></li><li>2009年07月20日 -- <a href="http://www.1986x.net/archives/1469.html" title="英国女狱警卡耶拉因“太美”被解雇(组图)">英国女狱警卡耶拉因“太美”被解雇(组图)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2562.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu系统网络应用服务器Apache配置基础</title>
		<link>http://www.1986x.net/archives/2511.html</link>
		<comments>http://www.1986x.net/archives/2511.html#comments</comments>
		<pubDate>Wed, 31 Mar 2010 17:18:43 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2ctl]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2511</guid>
		<description><![CDATA[官方发布的 Apache 的主配置文件是 httpd.conf, 服务器还会读取一个包含 MIME 文件类型的文件，其文件名由 TypesConfig 指令确定，默认值是mime.types 。 Ubuntu/Debian 下的 Apache 的主配置文件是 /etc/apache2/apache2.conf, 包含 MIME 文件类型的文件是 /etc/mime.types 。 此外，为了按逻辑分割配置，还可以用 Include 指令和通配符附加许多其他配置文件。Ubuntu 下附加了如下的配置文件： # 包含动态模块的配置: Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf # 包含用户自己的配置: Include /etc/apache2/httpd.conf # 包含端口监听的配置: Include /etc/apache2/ports.conf # 包含一般性的配置语句片断: Include /etc/apache2/conf.d/[^.#]* …… # 包含虚拟主机的配置指令: Include /etc/apache2/sites-enabled/[^.#]* 配置文件的语法 *每一行包含一个指令，在行尾使用反斜杠”\”可以表示续行 *配置文件中的指令不区分大小写，但是指令的参数 (argument) 通常区分大小写 *以 ”#” 开头的行被视为注解并在读取时被忽略。注解不能出现在指令的后边 [...]]]></description>
			<content:encoded><![CDATA[<p>官方发布的 Apache 的主配置文件是 httpd.conf, 服务器还会读取一个包含 MIME 文件类型的文件，其文件名由 TypesConfig 指令确定，默认值是mime.types 。</p>
<p>Ubuntu/Debian 下的 Apache 的主配置文件是 /etc/apache2/apache2.conf, 包含 MIME 文件类型的文件是 /etc/mime.types 。</p>
<p>此外，为了按逻辑分割配置，还可以用 Include 指令和通配符附加许多其他配置文件。Ubuntu 下附加了如下的配置文件：<span id="more-2511"></span></p>
<p># 包含动态模块的配置:<br />
Include /etc/apache2/mods-enabled/*.load<br />
Include /etc/apache2/mods-enabled/*.conf</p>
<p># 包含用户自己的配置:<br />
Include /etc/apache2/httpd.conf</p>
<p># 包含端口监听的配置:<br />
Include /etc/apache2/ports.conf</p>
<p># 包含一般性的配置语句片断:<br />
Include /etc/apache2/conf.d/[^.#]*</p>
<p>……</p>
<p># 包含虚拟主机的配置指令:<br />
Include /etc/apache2/sites-enabled/[^.#]*</p>
<p>配置文件的语法</p>
<p>*每一行包含一个指令，在行尾使用反斜杠”\”可以表示续行<br />
*配置文件中的指令不区分大小写，但是指令的参数 (argument) 通常区分大小写<br />
*以 ”#” 开头的行被视为注解并在读取时被忽略。注解不能出现在指令的后边<br />
*空白行和指令前的空白字符将在读取时被忽略，因此可以采用缩进以保持配置层次的清晰</p>
<p>无论是主配置文件还是用 Include 语句包含的配置文件，都应该遵从 Apache 的配置语法。<br />
Apache 的模块</p>
<p>Apache 是模块化的服务器，它有两种编译方式：</p>
<p>*静态编译：将核心模块和所需要的模块一次性编译<br />
o<br />
优点：运行速度快<br />
o<br />
缺点：要增加或删除模块必须重新编译整个 Apache<br />
*动态编译：只编译核心模块和 DSO （动态共享对象）模块 — mod_so<br />
o<br />
优点：各模块可以独立编译，并可随时用 LoadModule 指令加载，用于特定模块的指令可以用 指令包含起来，使之有条件地生效。<br />
o<br />
缺点：运行速度稍慢</p>
<p>Ubuntu 中的 Apache 是动态编译的。在 Ubuntu 下配置模块：</p>
<p>1.视需要修改 mods-available/ 目录下相关模块的配置文件<br />
2.使用 a2enmod 命令启用模块； 使用 a2dismod 命令停用模块</p>
<p>例如： 启用 rewrite 模块可以用如下命令：</p>
<p>sudo a2enmod rewrite</p>
<p>停用 cgi 模块可以用如下命令：</p>
<p>sudo a2dismod cgi</p>
<p>指令的作用域</p>
<p>从指令的作用域来划分，Apache 中有两类指令：</p>
<p>*普通指令：普通指令对整个服务器都有效<br />
*容器指令：可以放置在容器内对特定的访问资源实施额外的配置，它只对特定的访问资源有效</p>
<p>Apache 中常用的容器包括：</p>
<p>*和 : 用于对指定的目录实施额外的配置<br />
*和 : 用于对指定的文件实施额外的配置<br />
*和 : 用于对指定的 URL 实施额外的配置</p>
<p>*容器都是成对出现的，所有在容器中使用的配置指令都应该放置在 <> 和 内，如：</p>
<p>……</p>
<p>*以上所有带 “Match” 的容器指令与其相应的不带 “Match” 的容器指令功能相同，只是在描述资源时可以使用正则表达式<br />
*这些容器还可以进行嵌套，以进行更精细的配置</p>
<p>此外，Apache 还具备同时支持多个站点的能力，称为虚拟主机。放置在 容器中的指令仅对特定虚拟主机有效。<br />
虽然大多数指令可以包含在任意的容器中，但是也用特例。要查询一个指令可以被应用于哪些配置段中，可以在 Apache 手册中查看该指令的 作用域 项。<br />
基于目录的配置文件</p>
<p>Apache 除了使用主配置文件之外，还可以使用分布在整个网站目录树中的特殊文件来进行分散配置。这样的特殊配置文件称为基于目录的配置文件， 这些特殊的文件通常叫 .htaccess ，但是也可以用 AccessFileName 指令来改变它的名字。</p>
<p>显然，基于目录的配置文件 （.htaccess 文件）中指令的作用域是存放它的那个目录及其所有子目录。</p>
<p>*.htaccess 文件的语法与主配置文件相同。放在 容器中的指令都可以出现在 .htaccess 文件中，具体能出现哪些指令由主配置文件中的 AllowOverride 指令来决定<br />
*由于客户对服务器的每次访问请求都会读取.htaccess文件，所以对这些文件的修改会立即生效，即无需使服务器加载配置文件或重新启动。</p>
<p>基本配置指令<br />
服务器标识指令</p>
<p>*ServerName : 服务器用于辨识自己的主机名和端口号<br />
*ServerAdmin : 服务器返回给客户端的错误信息中包含的管理员邮件地址<br />
*ServerSignature : 配置服务器生成页面的页脚(错误信息、mod_proxy的ftp目录列表、mod_info的输出)<br />
*ServerTokens : 控制了服务器回应给客户端的”Server:“应答头是否包含关于服务器操作系统类型和编译进的模块描述信息<br />
*UseCanonicalName : 决定 Apache 如何构造 URL 中 SERVER_NAME 和 SERVER_PORT 的指令。</p>
<p>文件定位指令</p>
<p>*DocumentRoot : 组成网络上可见的主文档树的根目录<br />
*ErrorLog : 存放错误日志的位置<br />
*LockFile : 当 AcceptMutex 指令的值是 fcntl 或 flock 的时候，Apache 使用的锁文件的位置<br />
*PidFile : 设置服务器用于记录父进程(监控进程) PID 的文件。<br />
*ScoreBoardFile : 存储子进程协调数据(coordination data)的文件（Apache 使用 scoreboard 在父进程和子进程之间进行通信）<br />
*ServerRoot : 指定服务器安装的基础目录</p>
<p>收紧 Ubuntu 下的 Apache 配置</p>
<p>对于实际的产品服务器，应该首先收紧 Apache 的配置。为此可以在 /etc/apache2/conf.d/ 目录下创建一个新的 local_configs.conf 文件添加如下的配置：</p>
<p>/etc/apache2/conf.d/local_configs.conf</p>
<p># 设置 ServerName<br />
ServerName www.jamond.net<br />
# 对 / 进行保护</p>
<p># Forbid default access to file system locations<br />
Order Deny,Allow<br />
Deny from all<br />
# prevent use of .htaccess files in all directories<br />
# apart from those specifically enabled.<br />
AllowOverride None</p>
<p># 限制显示服务器的可用信息<br />
ServerSignature Off<br />
ServerTokens production</p>
<p>Apache 的管理工具</p>
<p>Apache 套件中包含了许多可执行程序，其中一部分是管理工具，本节仅介绍 apache2ctl。<br />
apache2ctl</p>
<p>apache2ctl 是 Apache2 服务器的前端程序。他可以帮助管理员控制 Apache2 后台守护进程的功能。</p>
<p>apache2ctl脚本有两种操作模式：</p>
<p>*作为简单的 apache2 的前端程序，设置所有必要的环境变量，然后启动 apache2，并传递所有的命令行参数。<br />
*作为 SysV 初始化脚本，接受简单的一个单词的参数，如：start, restart, stop ，并把他们翻译为适当的信号发送给 apache2 。</p>
<p>*在 Ubuntu 的 Apache2 启动脚本 /etc/init.d/apache2 中，就是调用 apache2ctl 实现控制的。</p>
<p>apache2ctl 有两种语法格式：</p>
<p>apache2ctl -参数<br />
apache2ctl 动作选项</p>
<p>使用 apache2ctl 的命令参数</p>
<p>*显示 apache 的版本</p>
<p>apache2ctl -v</p>
<p>*显示 apache 的版本和编译参数</p>
<p>apache2ctl -V</p>
<p>*输出一个可用的命令行选项的简要说明</p>
<p>apache2ctl -h</p>
<p>*输出一个静态编译在服务器中的模块的列表。它不会列出使用 LoadModule 指令动态加载的模块</p>
<p>apache2ctl -l</p>
<p>*输出一个指令的列表，并包含了各指令的有效参数和使用区域</p>
<p>apache2ctl -L</p>
<p>*仅对配置文件执行语法检查。。如果还指定了”-D DUMP_VHOSTS”，则会显示虚拟主机配置的详细信息</p>
<p>apache2ctl -t</p>
<p>*显示从配置文件中读取并解析的设置结果 (目前仅显示虚拟主机的设置)</p>
<p>apache2ctl -S</p>
<p>使用 apache2ctl 的动作选项</p>
<p>*启动 apache2 后台守护进程。如果已经启动，则产生一个错误。</p>
<p>apache2ctl start</p>
<p>*停止 apache2 后台守护进程。</p>
<p>apache2ctl stop</p>
<p>*重新启动 apache2 后台守护进程。如果守护进程尚未运行，则启动它。在重新启动守护进程之前，此命令会使用 configtest 自动检查配置文件，以确保 Apache 不会死掉。</p>
<p>apache2ctl restart</p>
<p>*显示一个简要的状态报告。</p>
<p>apache2ctl status</p>
<p>*优雅地重新启动 apache2 后台守护进程。如果守护进程尚未启动，则启动它。它和标准重新启动的不同之处在于：不会中断当前已经打开的连接，也不会立即关闭日志。这意味着，如果在日志滚动脚本使用它，则在处理日志之前必须加入一个实实在在的延迟，以确保老的日志文件在被处理前已经关闭。在重新启动守护进程之前，此命令会使用 configtest 自动检查配置文件，以确保 apache 不会死掉。</p>
<p>apache2ctl graceful</p>
<p>*优雅地停止 apache2 后台守护进程。它和标准停止的不同之处在于：不会中断当前已经打开的连接，也不会立即关闭日志。</p>
<p>apache2ctl graceful-stop</p>
<p>*执行一次配置文件语法检查。它解析配置文件，并报告 Syntax Ok 或者是特定的语法错误详细信息。</p>
<p>apache2ctl configtest</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2010年03月16日 -- <a href="http://www.1986x.net/archives/2451.html" title="第一台linux服务器  ">第一台linux服务器  </a></li><li>2010年03月31日 -- <a href="http://www.1986x.net/archives/2507.html" title="Ubuntu下Postgresql-8.4安装及配置">Ubuntu下Postgresql-8.4安装及配置</a></li><li>2010年03月22日 -- <a href="http://www.1986x.net/archives/2471.html" title="ubuntu环境下python+apache2+mod_python部署django">ubuntu环境下python+apache2+mod_python部署django</a></li><li>2010年03月22日 -- <a href="http://www.1986x.net/archives/2468.html" title="CentOS Apache配置详解">CentOS Apache配置详解</a></li><li>2010年02月25日 -- <a href="http://www.1986x.net/archives/2393.html" title="开源Web服务器Apache，15岁生日快乐！">开源Web服务器Apache，15岁生日快乐！</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2511.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu下Postgresql-8.4安装及配置</title>
		<link>http://www.1986x.net/archives/2507.html</link>
		<comments>http://www.1986x.net/archives/2507.html#comments</comments>
		<pubDate>Tue, 30 Mar 2010 18:03:32 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2507</guid>
		<description><![CDATA[在Ubuntu下安装Postgresql和pgAdmin3 sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4 sudo apt-get install pgadmin3 以上指令安装客户端和服务端，一些额外的工具、pgAdmin3都可以工作在数据库下工作。 配置Postgresql 现在我们需要重置“postgres”用户的密码。 sudo su postgres -c psql template1 template1=# ALTER USER postgres WITH PASSWORD ‘xxxx’; template1=# \q 这样就修改了数据库中的密码，现在我们也需要在unix用户“postgres”这么作。 sudo passwd -d postgres sudo su postgres -c passwd 然后输入跟之前一样的密码。 现在，我们就可以在数据库服务器上使用psql或者pgAdmin操作数据库了。 但是若想在pgAdmin中能够更好的记录日志和监视的华，在启动pgAdmin前需要建立PostgreSQL admin pack。打开命令行。 首先，我们需要编辑postgresql.conf： sudo gedit /etc/postgresql/8.4/main/postgresql.conf 现在，我们需要修改“连接和权限”两行。 改变行： #listen_addresses = ‘localhost’ 修改为： listen_addresses [...]]]></description>
			<content:encoded><![CDATA[<p>在Ubuntu下安装Postgresql和pgAdmin3</p>
<p>sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4</p>
<p>sudo apt-get install pgadmin3</p>
<p>以上指令安装客户端和服务端，一些额外的工具、pgAdmin3都可以工作在数据库下工作。<span id="more-2507"></span></p>
<p>配置Postgresql</p>
<p>现在我们需要重置“postgres”用户的密码。</p>
<p>sudo su postgres -c psql template1<br />
template1=# ALTER USER postgres WITH PASSWORD ‘xxxx’;<br />
template1=# \q </p>
<p>这样就修改了数据库中的密码，现在我们也需要在unix用户“postgres”这么作。</p>
<p>sudo passwd -d postgres<br />
sudo su postgres -c passwd </p>
<p>然后输入跟之前一样的密码。</p>
<p>现在，我们就可以在数据库服务器上使用psql或者pgAdmin操作数据库了。</p>
<p>但是若想在pgAdmin中能够更好的记录日志和监视的华，在启动pgAdmin前需要建立PostgreSQL admin pack。打开命令行。</p>
<p>首先，我们需要编辑postgresql.conf：</p>
<p>sudo gedit /etc/postgresql/8.4/main/postgresql.conf<br />
现在，我们需要修改“连接和权限”两行。</p>
<p>改变行：<br />
#listen_addresses = ‘localhost’<br />
修改为：<br />
listen_addresses = ‘*’<br />
和行：<br />
#password_encryption = on<br />
修改为：<br />
password_encryption = on<br />
保存并关闭gedit。</p>
<p>最后一步，我们必须设置谁才可以操作数据服务器，这一切都是在pg_hba.conf中完成的。</p>
<p>sudo gedit /etc/postgresql/8.4/main/pg_hba.conf<br />
把以下内容复制到pg_hba.conf底部：</p>
<p># DO NOT DISABLE!<br />
# If you change this first entry you will need to make sure that the<br />
# database<br />
# super user can access the database using some other method.<br />
# Noninteractive<br />
# access to all databases is required during automatic maintenance<br />
# (autovacuum, daily cronjob, replication, and similar tasks).<br />
#<br />
# Database administrative login by UNIX sockets<br />
local all postgres ident sameuser<br />
# TYPE DATABASE USER CIDR-ADDRESS METHOD<br />
# “local” is for Unix domain socket connections only<br />
local all all md5<br />
# IPv4 local connections:<br />
host all all 127.0.0.1/32 md5<br />
# IPv6 local connections:<br />
host all all ::1/128 md5<br />
# Connections for all PCs on the subnet<br />
#<br />
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD<br />
host all all [ip address] [subnet mask] md5<br />
在最后一行中，添加你的子网掩码(如255.255.255.0)和机器IP地址(如138.250.192.115). 如果要使用一个IP地址范围，只需要把最后一个数字用0替换，那么所有这个网段的IP都可以使用了。</p>
<p>重启服务器即可。</p>
<p>sudo /etc/init.d/postgresql-8.4 restart<br />
现在可以在Ubuntu下使用PostgreSQL了。</p>
<p>使用命令行创建数据库</p>
<p>sudo -u postgres createuser -D -A -P mynewuser<br />
sudo -u postgres createdb -O mynewuser mydatabase</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2010年04月1日 -- <a href="http://www.1986x.net/archives/2511.html" title="Ubuntu系统网络应用服务器Apache配置基础">Ubuntu系统网络应用服务器Apache配置基础</a></li><li>2010年03月22日 -- <a href="http://www.1986x.net/archives/2471.html" title="ubuntu环境下python+apache2+mod_python部署django">ubuntu环境下python+apache2+mod_python部署django</a></li><li>2010年03月16日 -- <a href="http://www.1986x.net/archives/2451.html" title="第一台linux服务器  ">第一台linux服务器  </a></li><li>2009年11月1日 -- <a href="http://www.1986x.net/archives/2140.html" title="什么是ubuntu tweak,ubuntu tweak安装教程">什么是ubuntu tweak,ubuntu tweak安装教程</a></li><li>2009年11月1日 -- <a href="http://www.1986x.net/archives/2119.html" title="Ubuntu 9.10 Ubuntu 官方正式发布 ">Ubuntu 9.10 Ubuntu 官方正式发布 </a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2507.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian 下用 rsync 实现网站数据备份</title>
		<link>http://www.1986x.net/archives/2505.html</link>
		<comments>http://www.1986x.net/archives/2505.html#comments</comments>
		<pubDate>Mon, 29 Mar 2010 14:19:07 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[rsync]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2505</guid>
		<description><![CDATA[在debian下实现网站的数据备份，需要用到３个软件，ssh、rsync、cron，服务器的ip是61.*.161.197，备份机的ip是61.*.161.194，也就是备份机（简称194）对服务器（简称197） 进行备份，下面一步步地进行配置。 一、首先进行针对ssh的准备工作 1、在197上面的设置： 编辑ssh的配置文件，保证root 用户可以通过ssh 远程登陆。注：ssh默认root 可以远程登录。nano /etc/ssh/sshd_config（粗黑体为键盘输入的命令，下略），保证PermitRootLogin 的参数为yes PermitRootLogin yes 2、在194上面的操作： 用root帐号，使用ssh-keygen –d的命令，创建一对无密码的公匙和密匙，密匙（id_dsa）留到194上面，公匙（id_dsa.pub）拷贝到197上面。以后ssh通过它们的相互认证来进行备份机和服务器之间的连接。ssh-keygen程序将创建一个名为 .ssh 的隐藏目录，公匙和密匙就在这个目录里面。 www:~/# ssh-keygen -d Generating public/private dsa key pair. Enter file in which to save the key (/root/.ssh/id_dsa): （直接回车） Enter passphrase (empty for no passphrase): （直接回车） Enter same passphrase again: （直接回车） Your identification has been saved in /root/.ssh/id_dsa.   （密匙） [...]]]></description>
			<content:encoded><![CDATA[<p>在debian下实现网站的数据备份，需要用到３个软件，ssh、rsync、cron，服务器的ip是61.*.161.197，备份机的ip是61.*.161.194，也就是备份机（简称194）对服务器（简称197） 进行备份，下面一步步地进行配置。</p>
<p>一、首先进行针对ssh的准备工作</p>
<p>1、在197上面的设置：</p>
<p>编辑ssh的配置文件，保证root 用户可以通过ssh 远程登陆。注：ssh默认root 可以远程登录。nano /etc/ssh/sshd_config（粗黑体为键盘输入的命令，下略），保证PermitRootLogin 的参数为yes<span id="more-2505"></span><br />
PermitRootLogin yes</p>
<p>2、在194上面的操作：</p>
<p>用root帐号，使用ssh-keygen –d的命令，创建一对无密码的公匙和密匙，密匙（id_dsa）留到194上面，公匙（id_dsa.pub）拷贝到197上面。以后ssh通过它们的相互认证来进行备份机和服务器之间的连接。ssh-keygen程序将创建一个名为 .ssh 的隐藏目录，公匙和密匙就在这个目录里面。</p>
<p>www:~/# ssh-keygen -d<br />
Generating public/private dsa key pair.<br />
Enter file in which to save the key (/root/.ssh/id_dsa): （直接回车）<br />
Enter passphrase (empty for no passphrase): （直接回车）<br />
Enter same passphrase again: （直接回车）<br />
Your identification has been saved in /root/.ssh/id_dsa.   （密匙）<br />
Your public key has been saved in /root/.ssh/id_dsa.pub. （公匙）<br />
The key fingerprint is:<br />
04:09:28:be:6b:00:71:00:17:c0:49:98:c2:0b:09:ac <a href="mailto:heishuiguai@qq.com">heishuiguai@qq.com</a></p>
<p>将公匙拷贝到197上面，并将名字改成authorized_keys2。删除194上的公匙id_dsa.pub。然后#ssh 61.*.161.197，测试一下是不是可以不用密码ssh 197了。</p>
<p>scp /root/.ssh/id_dsa.pub 61.*.161.197:/root/.ssh/authorized_keys2</p>
<p>3、197上面的设置：</p>
<p>nano /etc/ssh/sshd_config，使PermitRootLogin 的参数为without-password，这样设置使“root”用户不能从没有密匙的计算机上登陆。然后/etc/init.d/ssh restart，重起ssh。</p>
<p>PermitRootLogin without-password</p>
<p>二、rsync 的配置：</p>
<p>首先安装rsync，命令为：apt-get install rsync</p>
<p>然后写出rsync 语句进行测试，也可以把下面的语句放到cron里面，自动执行，下列语句的含义是把服务器 197 机器上的 /var/www/ 目录，备份到194 上相同的目录中。</p>
<p>rsync -vzrtopg –delete -e ssh 61.*.161.197:/var/www/ /var/www/</p>
<p>rsync 的参数意义如下：</p>
<p>-v ：详细模式输出。<br />
-z ：对备份的文件在传输时进行压缩处理。<br />
-r ：对子目录异地归模式处理。<br />
-t ：保持文件的时间信息。<br />
-o ：保持文件的属主信息。<br />
-p ：保持文件的权限。<br />
-g ：保持文件的属组信息。<br />
–delete ：删除那些DST中SRC没有的文件，保持备份机和服务器的备份文件真正同步。<br />
-e ssh ：表示rsync通过ssh进行。</p>
<p>三、cron的配置</p>
<p>nano /etc/crontab ，编辑 /etc/crontab 文件,在该文件中加入下列代码。cron服务每分钟不仅要读一次 /var/spool/cron内的所有文件，还需要读一次 /etc/crontab，因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的，而编辑 /etc/crontab是针对系统的任务。</p>
<p>10 3 * * * root rsync -vzrtopg –delete -e ssh 61.*.161.197:/var/www/ /var/www/</p>
<p>注：* 号代表五个数字，数字的取值范围和含义如下：</p>
<p>分钟（0-59） 小時（0-23） 日期（1-31） 月份（1-12） 星期（0-6，0代表星期天）</p>
<p>转载自：<a href="http://www.heihe.cc/blog/20070109206.html">http://www.heihe.cc/blog/20070109206.html</a></p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2009年09月26日 -- <a href="http://www.1986x.net/archives/2001.html" title="Debian 5.0.0 Lenny 安装全过程">Debian 5.0.0 Lenny 安装全过程</a></li><li>2009年09月22日 -- <a href="http://www.1986x.net/archives/1913.html" title="Debian定时任务管理cron设置">Debian定时任务管理cron设置</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2505.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos vsftp 配置</title>
		<link>http://www.1986x.net/archives/2495.html</link>
		<comments>http://www.1986x.net/archives/2495.html#comments</comments>
		<pubDate>Wed, 24 Mar 2010 09:45:02 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Centos]]></category>
		<category><![CDATA[vsftp]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2495</guid>
		<description><![CDATA[CentOS 5.3建立Vsftpd虚拟用户 我们登录FTP有三种方式，匿名登录、本地用户登录和虚拟用户登录。 匿名登录：在登录FTP时使用默认的用户名，一般是ftp或anonymous。 本地用户登录：使用系统用户登录，在/etc/passwd中。 虚拟用户登录：这是FTP专有用户，有两种方式实现虚拟用户，本地数据文件和数据库服务器。 FTP虚拟用户是FTP服务器的专有用户，使用虚拟用户登录FTP，只能访问FTP服务器提供的资源，大大增强了系统的安全。 本文的Linux系统是CentOS 5.3 yum -y install vsftpd 一、建立Vsftpd虚拟用户： 1、添加虚拟用户口令文件安装Vsftpd 1 &#91;root@localhost ~&#93;#vi /etc/vsftpd/vftpuser.txt 添加虚拟用户名和密码，一行用户名，一行密码，以此类推。奇数行为用户名，偶数行为密码。 ftp1 #用户名 123456 #密码 ftp2 #用户名 123456 #密码 &#8221;这里有个问题,我在创建的时候,在后面的build过程中出现过如下出错提示: db_load: unexpected end of input data or key/data pair db_load: odd number of key/data pairs 原因大概是在ftpUserInfo.txt最后需要再加个回车,加回车后,就没问题了,在图形界面的文本编辑器保存默认也会添加一个回车,所以,如果是在图形界面的文本编辑器下直接生成的,不会出现该错误.&#8221; 2、生成虚拟用户口令认证文件 将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。 ##################################################################################### 首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。 下面使用db_load命令生成虚拟用户口令认证文件。 1 2 3 &#91;root@localhost ~&#93;# [...]]]></description>
			<content:encoded><![CDATA[<p>CentOS 5.3建立Vsftpd虚拟用户</p>
<p>我们登录FTP有三种方式，匿名登录、本地用户登录和虚拟用户登录。</p>
<p>匿名登录：在登录FTP时使用默认的用户名，一般是ftp或anonymous。</p>
<p>本地用户登录：使用系统用户登录，在/etc/passwd中。</p>
<p>虚拟用户登录：这是FTP专有用户，有两种方式实现虚拟用户，本地数据文件和数据库服务器。<span id="more-2495"></span></p>
<p>FTP虚拟用户是FTP服务器的专有用户，使用虚拟用户登录FTP，只能访问FTP服务器提供的资源，大大增强了系统的安全。</p>
<p>本文的Linux系统是CentOS 5.3</p>
<p>yum -y install vsftpd</p>
<p>一、建立Vsftpd虚拟用户：</p>
<p>1、添加虚拟用户口令文件安装Vsftpd</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>localhost ~<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;">#vi /etc/vsftpd/vftpuser.txt</span></pre></td></tr></table></div>

<p>添加虚拟用户名和密码，一行用户名，一行密码，以此类推。奇数行为用户名，偶数行为密码。</p>
<p>ftp1 #用户名</p>
<p>123456 #密码</p>
<p>ftp2 #用户名</p>
<p>123456 #密码</p>
<p>&#8221;这里有个问题,我在创建的时候,在后面的build过程中出现过如下出错提示:<br />
db_load: unexpected end of input data or key/data pair<br />
db_load: odd number of key/data pairs<br />
原因大概是在ftpUserInfo.txt最后需要再加个回车,加回车后,就没问题了,在图形界面的文本编辑器保存默认也会添加一个回车,所以,如果是在图形界面的文本编辑器下直接生成的,不会出现该错误.&#8221;</p>
<p>2、生成虚拟用户口令认证文件</p>
<p>将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。</p>
<p>#####################################################################################</p>
<p>首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。</p>
<p>下面使用db_load命令生成虚拟用户口令认证文件。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>localhost ~<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># db_load -T -t hash -f /home/vuser.txt /etc/vsftpd_login.db (命令在下面 这是演示)</span>
&nbsp;
-bash: db_load: <span style="color: #7a0874; font-weight: bold;">command</span> not found</pre></td></tr></table></div>

<p>#####################################################################################</p>
<p>出现没有db_load的提示是因为有些db4的包没有安装，需要安装下列包:</p>
<p>db4-*.rpm</p>
<p>db4-tcl-*.rpm</p>
<p>db4-utils-*.rpm</p>
<p>或者直接:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">yum <span style="color: #660033;">-y</span> <span style="color: #c20cb9; font-weight: bold;">install</span> db4 db4-tcl db4-utils</pre></td></tr></table></div>

<p>db_load命令主要是用来生成db数据库使用的</p>
<p>格式：</p>
<p>db_load -T -t hash -f passwd.txt /etc/vsftpd/user_passwd.db</p>
<p>生成一个hash码型的数据库文件供ftp虚拟用户使用。</p>
<p>#####################################################################################</p>
<p>[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vftpuser.txt</p>
<p>/etc/vsftpd/vftpuser.db</p>
<p>3、编辑vsftpd的PAM认证文件</p>
<p>在/etc/pam.d目录下，</p>
<p>[root@localhost ~]#vi /etc/pam.d/vsftpd</p>
<p>将里面其他的都注释掉，添加下面这两行：</p>
<p>auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser</p>
<p>account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser</p>
<p>4、建立本地映射用户并设置宿主目录权限</p>
<p>所有的FTP虚拟用户需要使用一个系统用户，这个系统用户不需要密码。</p>
<p>[root@localhost ~]#useradd -d /home/vftpsite -s /sbin/nologin vftpuser</p>
<p>[root@localhost ~]#chmod 755 /home/vftpsite //网上为700，设置为700后FTP用户无上传权限</p>
<p>5、配置vsftpd.conf（设置虚拟用户配置项）</p>
<p>[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf</p>
<p>guest_enable=YES #开启虚拟用户</p>
<p>guest_username=vftpuser #FTP虚拟用户对应的系统用户[useradd -d /home/vftpsite -s</p>
<p>/sbin/nologin vftpuser]</p>
<p>pam_service_name=vsftpd #PAM认证文件</p>
<p>6、重启vsftpd服务</p>
<p>[root@localhost ~]#service vsftpd restart</p>
<p>7、测试虚拟用户登录FTP</p>
<p>C:\Documents and Settings\Administrator>ftp 192.168.2.12</p>
<p>Connected to 192.168.2.12.</p>
<p>220 (vsFTPd 2.0.5)</p>
<p>User (192.168.2.12:(none)): ftp1</p>
<p>331 Please specify the password.</p>
<p>Password:</p>
<p>500 OOPS: cannot change directory:/home/vftpsiteConnection closed by remote host</p>
<p>.//在配置vsftpd的时候连接vsftpd出现了500 OOPS: cannot change directory:/home/vftpsite</p>
<p>的错误，vftpsite为登录时使用的本地用户名。</p>
<p>解决办法：</p>
<p>[root@localhost ~]# setsebool -P ftp_home_dir on</p>
<p>也有网上说在终端输入命令：</p>
<p>setsebool -P ftpd_disable_trans 1</p>
<p>service vsftpd restart</p>
<p>就ＯＫ了！</p>
<p>测试：</p>
<p>C:\Documents and Settings\Administrator>ftp 192.168.2.12</p>
<p>Connected to 192.168.2.12.</p>
<p>220 (vsFTPd 2.0.5)</p>
<p>User (192.168.2.12:(none)): ftp1</p>
<p>331 Please specify the password.</p>
<p>Password:</p>
<p>230 Login successful.</p>
<p>二、虚拟用户高级设置：</p>
<p>1、virtual_use_local_privs参数</p>
<p>当virtual_use_local_privs=YES时，虚拟用户和本地用户有相同的权限；</p>
<p>当virtual_use_local_privs=NO时，虚拟用户和匿名用户有相同的权限，默认是NO。</p>
<p>当virtual_use_local_privs=YES，write_enable=YES时，虚拟用户具有写权限（上传、下载、删除</p>
<p>、重命名）。</p>
<p>当 virtual_use_local_privs=NO，write_enable=YES，anon_world_readable_only=YES，</p>
<p>anon_upload_enable=YES时，虚拟用户不能浏览目录，只能上传文件，无其他权限。</p>
<p>当 virtual_use_local_privs=NO，write_enable=YES，anon_world_readable_only=NO，</p>
<p>anon_upload_enable=NO时，虚拟用户只能下载文件，无其他权限。</p>
<p>当 virtual_use_local_privs=NO，write_enable=YES，anon_world_readable_only=NO，</p>
<p>anon_upload_enable=YES时，虚拟用户只能上传和下载文件，无其他权限。</p>
<p>当 virtual_use_local_privs=NO，write_enable=YES，anon_world_readable_only=NO，</p>
<p>anon_mkdir_write_enable=YES时，虚拟用户只能下载文件和创建文件夹，无其他权限。</p>
<p>当 virtual_use_local_privs=NO，write_enable=YES，anon_world_readable_only=NO，</p>
<p>anon_other_write_enable=YES时，虚拟用户只能下载、删除和重命名文件，无其他权限。</p>
<p>2. 建立各个虚拟用户自身的配置文件</p>
<p>[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf</p>
<p>添加：</p>
<p>user_config_dir=/etc/vsftpd/vsftpd_user_conf</p>
<p>[root@localhost ~]#mkdir /etc/vsftpd/vsftpd_user_conf</p>
<p>编辑ftp1的配置文件</p>
<p>[root@localhost ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp1</p>
<p>添加：</p>
<p>anon_world_readable_only=NO #开放ftp1的下载权限（只能下载）。注意这个地方千万不能写成YES</p>
<p>，否则ftp1将不能列出文件和目录。</p>
<p>编辑ftp2的配置文件</p>
<p>[root@localhost ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp2</p>
<p>添加：</p>
<p>write_enable=YES #开放ftp2的写权限</p>
<p>anon_world_readable_only=NO #开放ftp2的下载权限</p>
<p>anon_upload_enable=YES #开放ftp2的上传权限</p>
<p>anon_mkdir_write_enable=YES #开放ftp2创建目录的权限</p>
<p>anon_other_write_enable=YES #开放ftp2删除和重命名的权限</p>
<p>3、所有虚拟用户使用一般配置</p>
<p>[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf</p>
<p>write_enable=YES</p>
<p>anonymous_enable=NO</p>
<p>local_enable=YES</p>
<p>guest_enable=YES</p>
<p>guest_username=vftpuser</p>
<p>virtual_use_local_privs=NO</p>
<p>pam_service_name=vsftpd</p>
<p>anon_world_readable_only=NO #可以下载</p>
<p>anon_upload_enable=NO（默认值） #不能上传</p>
<p>anon_mkdir_write_enable=NO（默认值） #不能新建文件夹</p>
<p>anon_other_write_enable=NO（默认值） #不能删除和重命名文件</p>
<p>ftpd_banner=Welcome to yoozhu FTP server</p>
<p>xferlog_enable=YES</p>
<p>xferlog_file=/var/log/vsftpd.log</p>
<p>xferlog_std_format=YES</p>
<p>ascii_upload_enable=YES</p>
<p>ascii_download_enable=YES</p>
<p>tcp_wrappers=NO</p>
<p>setproctitle_enable=YES</p>
<p>listen_port=21</p>
<p>connect_from_port_20=YES</p>
<p>idle_session_timeout=600</p>
<p>data_connection_timeout=120</p>
<p>max_clients=0</p>
<p>max_per_ip=3</p>
<p>local_max_rate=512000</p>
<p>4、各个虚拟用户使用自身配置</p>
<p>[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf</p>
<p>write_enable=YES</p>
<p>anonymous_enable=NO</p>
<p>local_enable=YES</p>
<p>guest_enable=YES</p>
<p>guest_username=vftpuser</p>
<p>virtual_use_local_privs=NO</p>
<p>pam_service_name=vsftpd</p>
<p>user_config_dir=/etc/vsftpd/vsftpd_user_conf #设定用户配置文件存放目录</p>
<p>ftpd_banner=Welcome to yoozhu FTP server</p>
<p>xferlog_enable=YES</p>
<p>xferlog_file=/var/log/vsftpd.log</p>
<p>xferlog_std_format=YES</p>
<p>ascii_upload_enable=YES</p>
<p>ascii_download_enable=YES</p>
<p>tcp_wrappers=NO</p>
<p>setproctitle_enable=YES</p>
<p>listen_port=21</p>
<p>connect_from_port_20=YES</p>
<p>idle_session_timeout=600</p>
<p>data_connection_timeout=120</p>
<p>max_clients=0</p>
<p>max_per_ip=3</p>
<p>local_max_rate=512000</p>
<p>[root@localhost ~]#mkdir /etc/vsftpd/vsftpd_user_conf</p>
<p>编辑ftp1的配置文件</p>
<p>[root@localhost ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp1</p>
<p>anon_world_readable_only=NO</p>
<p>编辑ftp2的配置文件</p>
<p>[root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/ftp2</p>
<p>anon_world_readable_only=NO</p>
<p>anon_upload_enable=YES</p>
<p>anon_mkdir_write_enable=YES</p>
<p>anon_other_write_enable=YES</p>
<p>参考Blog：</p>
<p>http://yuanbin.blog.51cto.com/363003/129071</p>
<p>http://blog.163.com/mike_homis/blog/static/20104948200951614143913/</p>
<p>引用自 http://yoozhu.com/?p=1469=1</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2010年03月22日 -- <a href="http://www.1986x.net/archives/2468.html" title="CentOS Apache配置详解">CentOS Apache配置详解</a></li><li>2010年03月22日 -- <a href="http://www.1986x.net/archives/2466.html" title=" CentOS下用yum配置php+mysql+apache"> CentOS下用yum配置php+mysql+apache</a></li><li>2009年07月2日 -- <a href="http://www.1986x.net/archives/1205.html" title="Centos5下安装 phpMyAdmin ">Centos5下安装 phpMyAdmin </a></li><li>2009年06月26日 -- <a href="http://www.1986x.net/archives/1150.html" title="Centos5更新源163镜像">Centos5更新源163镜像</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2495.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu环境下python+apache2+mod_python部署django</title>
		<link>http://www.1986x.net/archives/2471.html</link>
		<comments>http://www.1986x.net/archives/2471.html#comments</comments>
		<pubDate>Mon, 22 Mar 2010 12:01:57 +0000</pubDate>
		<dc:creator>海盗船长</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[mod_python]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.1986x.net/?p=2471</guid>
		<description><![CDATA[刚买了vps，之前整的django只是用runserver，今天打算整一下ubuntu下的django环境，主要是django安装基本上都是集成。 一、Django安装 在django网站：http://www.djangoproject.com/download/ 下载django程序在任何你可以操作的地方放着 wget -c http://www.djangoproject.com/download/1.1.1/tarball/（找个最新版的自己下吧！） 解压，安装 1 2 3 tar xzvf Django-1.1.1.tar.gz cd Django-1.1.1 sudo python setup.py install django自己安转到python的目录下 网上有人测试是否安转好，我觉得不错，借用下 在Shell命令行中输入 python (回车) 1 &#62;&#62;import django (回车) 只要不报错就证明ok了，挺好的方法，这个证明django实际上就是python的一个包，Django实际文件存在于 /usr/lib/python2.5/site-packages/django。 接着我们开始创建项目，暂时取名djangotest，缺省apache2的文档根目录是/var/www， 1 cd /var/www Django安装成功后，会自动在/usr/bin中建立一个django-admin.py，这个文件很重要，用来生成工程文件 1 python /usr/bin/django-admin.py startproject webanalytics 好了 1 2 cd djangotest ls 应该能看到这些文件，那就成功了 1 2 3 4 __inti__.py manage.py settings.py [...]]]></description>
			<content:encoded><![CDATA[<p>刚买了vps，之前整的django只是用runserver，今天打算整一下ubuntu下的django环境，主要是django安装基本上都是集成。</p>
<p><strong>一、Django安装</strong></p>
<p>在django网站：<a href="http://www.djangoproject.com/download/">http://www.djangoproject.com/download/</a> 下载django程序在任何你可以操作的地方放着</p>
<p>wget -c <a href="http://www.djangoproject.com/download/1.1.1/tarball/">http://www.djangoproject.com/download/1.1.1/tarball/</a>（找个最新版的自己下吧！）</p>
<p>解压，安装</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> xzvf Django-1.1.1.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> Django-1.1.1
<span style="color: #c20cb9; font-weight: bold;">sudo</span> python setup.py <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>django自己安转到python的目录下</p>
<p>网上有人测试是否安转好，我觉得不错，借用下</p>
<p>在Shell命令行中输入</p>
<p>python (回车)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&gt;&gt;</span>import django</pre></td></tr></table></div>

<p>(回车)</p>
<p>只要不报错就证明ok了，挺好的方法，这个证明django实际上就是python的一个包，Django实际文件存在于<br />
/usr/lib/python2.5/site-packages/django。</p>
<p>接着我们开始创建项目，暂时取名djangotest，缺省apache2的文档根目录是/var/www，</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><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</pre></td></tr></table></div>

<p>Django安装成功后，会自动在/usr/bin中建立一个django-admin.py，这个文件很重要，用来生成工程文件</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">python <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>django-admin.py startproject webanalytics</pre></td></tr></table></div>

<p>好了</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> djangotest
<span style="color: #c20cb9; font-weight: bold;">ls</span></pre></td></tr></table></div>

<p>应该能看到这些文件，那就成功了</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">__inti__.py
manage.py
settings.py
uls.py</pre></td></tr></table></div>

<p>到此处基本上一半成功了，接下来就apache的安装</p>
<p>有人说现在可以测试一下，</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> python manage.py runserver</pre></td></tr></table></div>

<p>基本上没有问题的话会有下面的信息</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">Validating models...
<span style="color: #000000;">0</span> errors found.
&nbsp;
Django version 0.96.3, using settings <span style="color: #ff0000;">'webanalytics.settings'</span>
Development server is running at http:<span style="color: #000000; font-weight: bold;">//</span>127.0.0.1:<span style="color: #000000;">8000</span><span style="color: #000000; font-weight: bold;">/</span>
Quit the server with CONTROL-C.</pre></td></tr></table></div>

<p>如果你有图形界面那你就试试，<a href="http://127.0.0.1:8000/">http://127.0.0.1:8000/</a> 应该会有出来一个django的页面，哈哈！如果你没有追求了，那现在就可以试着写django的代码。完全可以运行</p>
<p>但是我是在虚拟机上用的服务器版，那就没有办法了</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">apache mod_python安装
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> apache2
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> libapache2-mod-python2.5</pre></td></tr></table></div>

<p>（python的版本不同的话就修改最后边的版本号），现在基本上就支持到apache2.2 python2.5（ps 貌似mod_python已经属于apache，忘记了）</p>
<p>接下来就是这个配置</p>
<p>现在整整apache与django</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <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>apach2<span style="color: #000000; font-weight: bold;">/</span>site-available<span style="color: #000000; font-weight: bold;">/</span>default</pre></td></tr></table></div>

<p>加入这个代码</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">Directory <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www;
SetHandler python-program
PythonPath <span style="color: #ff0000;">&quot;['/var/www'] + sys.path&quot;</span>
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE webanalytics.settings
PythonDebug On
<span style="color: #000000; font-weight: bold;">&amp;</span>lt;<span style="color: #000000; font-weight: bold;">/</span>Directory<span style="color: #000000; font-weight: bold;">&amp;</span>gt;</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">a2ensite webanalytics  开启网站
a2enmod mod_python</pre></td></tr></table></div>

<p>保存，重启apache，</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><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>打开浏览器看看，很兴奋的页面出来了<br />
<div id="attachment_2485" class="wp-caption alignnone" style="width: 310px"><a href="http://www.1986x.net/wp-content/uploads/2010/03/ubuntu-django.png" rel="shadowbox[post-2471];player=img;"><img src="http://www.1986x.net/wp-content/uploads/2010/03/ubuntu-django-300x169.png" alt="python+apache2+mod_python部署django" title="ubuntu-django" width="300" height="169" class="size-medium wp-image-2485" /></a><p class="wp-caption-text">python+apache2+mod_python</p></div><br />
测试网址：http://www.chinawebanalytics.net/</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2010年03月29日 -- <a href="http://www.1986x.net/archives/2502.html" title="Django 结构及处理流程分析">Django 结构及处理流程分析</a></li><li>2010年07月30日 -- <a href="http://www.1986x.net/archives/2626.html" title="一个不错的python学习网站">一个不错的python学习网站</a></li><li>2010年04月6日 -- <a href="http://www.1986x.net/archives/2519.html" title="用Python操作Mysql">用Python操作Mysql</a></li><li>2010年04月1日 -- <a href="http://www.1986x.net/archives/2511.html" title="Ubuntu系统网络应用服务器Apache配置基础">Ubuntu系统网络应用服务器Apache配置基础</a></li><li>2010年03月31日 -- <a href="http://www.1986x.net/archives/2507.html" title="Ubuntu下Postgresql-8.4安装及配置">Ubuntu下Postgresql-8.4安装及配置</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.1986x.net/archives/2471.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
