手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

在 Ubuntu 9.10 Server 上安装 Nginx 0.8.34

本文的内容对我来说或许可以有用,因为我的VPS用的就是9.10,用默认的apache好象效率并不高,所以。。。真的可以参考一下。

Nginx 在 3 月 3 日放出了 0.8.34 这个开发版。张宴也随即更新了《Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器》 到第六版。不过,他写的记录是针对 CentOS、Redhat 等 rpm 包管理的服务器。由于习惯了 debian 系列的服务器,特别是用惯了 ubuntu 服务器,在这里特别做一下 Ubuntu 9.10 下的安装笔记。其他基于 deb 包管理的发行版也类似。

首先,为了编译 Nginx,应在新装好的 Ubuntu server 环境下安装如下软件包:

sudo apt-get install build-essential libpcre3-dev libssl-dev libxslt-dev libgd2-xpm-dev libgeoip-dev

然后下载 0.8.34 版本的 Nginx:

wget http://www.nginx.org/download/nginx-0.8.34.tar.gz

解压:

tar xvzf nginx-0.8.34.tar.gz

下载 upstream fair 模块。upstream fair 是比内建的负载均衡更加智能的负载均衡模块。它采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。

wget http://github.com/gnosek/nginx-upstream-fair/tarball/master

解压:

tar xvzf gnosek-nginx-upstream-fair-2131c73.tar.gz

然后进入 nginx 源码目录执行 configure 配置编译选项。下面是我所使用的配置:


XML/HTML代码
  1. ./configure --conf-path=/etc/nginx/nginx.conf \--error-log-path=/var/log/nginx/error.log \  
  2. --pid-path=/var/run/nginx.pid \  
  3. --lock-path=/var/lock/nginx.lock \  
  4. --http-log-path=/var/log/nginx/access.log \  
  5. --http-client-body-temp-path=/var/lib/nginx/body \  
  6. --http-proxy-temp-path=/var/lib/nginx/proxy \  
  7. --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \  
  8. --with-debug \  
  9. --with-http_stub_status_module \  
  10. --with-http_flv_module \  
  11. --with-http_ssl_module \  
  12. --with-http_dav_module \  
  13. --with-http_gzip_static_module \  
  14. --with-mail \  
  15. --with-mail_ssl_module \  
  16. --with-ipv6 \  
  17. --with-http_realip_module \  
  18. --with-http_geoip_module \  
  19. --with-http_xslt_module \  
  20. --with-http_image_filter_module \  
  21. --with-sha1=/usr/include/openssl \  
  22. --with-md5=/usr/include/openssl \  
  23. --add-module=/home/mikespook/gnosek-nginx-upstream-fair-2131c73  

这个配置来自于 Jeff Waugh 的 PPA 中的 nginx 0.8.34 编译选项。配置、lock、pid 等文件的位置都是按照 ubuntu 系统惯例设置的。需要注意的是 –add-module 指向的是 upstream fair 的解压缩目录的绝对路径。这样就可以将 upstream fair 编译进 nginx。

然后编译并安装:

make && make install

nginx 就安装成功了。目录 /var/lib/nginx 需要手工建立,否则启动 nginx 会报错:

[emerg]: mkdir() "/var/lib/nginx/body" failed (2: No such file or directory)

建立shell 脚本 /etc/init.d/nginx:

XML/HTML代码
  1. #! /bin/sh  
  2.    
  3. ### BEGIN INIT INFO  
  4. # Provides:          nginx  
  5. # Required-Start:    $all  
  6. # Required-Stop:     $all  
  7. # Default-Start:     2 3 4 5  
  8. # Default-Stop:      0 1 6  
  9. # Short-Description: starts the nginx web server  
  10. # Description:       starts nginx using start-stop-daemon  
  11. ### END INIT INFO  
  12.    
  13. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  
  14. DAEMON=/usr/local/nginx/sbin/nginx  
  15. NAME=nginx  
  16. DESC=nginx  
  17.    
  18. test -x $DAEMON || exit 0  
  19.    
  20. # Include nginx defaults if available  
  21. if [ -f /etc/default/nginx ] ; then  
  22.         . /etc/default/nginx  
  23. fi  
  24.    
  25. set -e  
  26.    
  27. case "$1" in  
  28.   start)  
  29.         echo -n "Starting $DESC: "  
  30.         start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \  
  31.                 --exec $DAEMON -- $DAEMON_OPTS  
  32.         echo "$NAME."  
  33.         ;;  
  34.   stop)  
  35.         echo -n "Stopping $DESC: "  
  36.         start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \  
  37.                 --exec $DAEMON  
  38.         echo "$NAME."  
  39.         ;;  
  40.   restart|force-reload)  
  41.         echo -n "Restarting $DESC: "  
  42.         start-stop-daemon --stop --quiet --pidfile \  
  43.                 /var/run/$NAME.pid --exec $DAEMON  
  44.         sleep 1  
  45.         start-stop-daemon --start --quiet --pidfile \  
  46.                 /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS  
  47.         echo "$NAME."  
  48.         ;;  
  49.   reload)  
  50.       echo -n "Reloading $DESC configuration: "  
  51.       start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \  
  52.           --exec $DAEMON  
  53.       echo "$NAME."  
  54.       ;;  
  55.   *)  
  56.         N=/etc/init.d/$NAME  
  57.         echo "Usage: $N {start|stop|restart|force-reload}" >&2  
  58.         exit 1  
  59.         ;;  
  60. esac  
  61.    
  62. exit 0  

并执行命令:

sudo update-rc.d -f nginx defaults

更新 rc 后,即可使用:

sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx restart

控制 nginx 启动。
其他配置不再累述,张宴的 blog 里写得非常清晰。只补充一下 upstream fair 的使用,只要在 nginx 配置文件的 upstream 段加入 fair 开关即可:

upstream backend {
server server1;
server server2;
fair;
}

当然,ubuntu 还可以用上面提到的 Jeff 的 ppa 源进行安装:

XML/HTML代码
  1. echo "deb http://ppa.launchpad.net/jdub/devel/ubuntu hardy main" >> /etc/apt/sources.list  
  2. apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E9EEF4A1  
  3. apt-get update  
  4. apt-get install nginx  

简单快捷。

原文来自:http://www.mikespook.com/index.php/archives/483,做个参考 。。。。

信息过载如何应对

以前,我们总是认为自己获取新信息新资料等等不够。总觉得自己看到的资料太少,信息获取渠道匮乏,可如今不对了,在这个信息爆炸的时代,你缺少的不是资料,而是缺少如何整理资料或者说如何在如海一样的资料中获取你想要的资料。100滴水,对你有用的可能只有5滴,那么你如何过滤到剩下的95滴呢?

看到有个人的博客这么认为信息过载:

XML/HTML代码
  1. * 很难从海量信息找到到合适的信息。  
  2. * 获取高质量的信息成本越来越高。  
  3. * 浪费的时间越来越多。比如点开一个新闻站点之后可能会不知不觉浪费很多时间来看新闻  
  4. * 心态越来越浮躁,很难静下心来去思考和吸引知识。网络上的文章都以快餐化为主,看整本书的人越来越少。  
  5. * 注意力非常容易就会分散。比如IM、邮件、RSS、Twitter、电话、短信、游戏等等。  

而他的应对方法也很简单:

XML/HTML代码
  1. 明确自己的目标,确定自己目前信息获取的关注范围。部分方向包括:学习研究(细分的方向在10种左右)、沟通方式、财务自由、国学、中医保健及养生、宏观经济学、厨艺、IT、外语等方面。  
  2. 在每个系统中建立自己的知识框架,应用知识管理来不断完善,同时记录心得。  
  3. 形成自己的GTD系统,不断完善和改进。  
  4. 定期进行反馈和思考  
  5. 把身边的信息源划分不同层次,明确轻重缓急  
  6. 拿出固定时间来放松自己,缓解压力  

他认为具体可以这样做:

XML/HTML代码
  1. 1、对于遇到信息过载的人,说白了就是个人的目标不明确不具体,不清楚自己到底是需要什么信息,才会觉得信息越来越多。当你的目标明确之后,会发现高质量的信息还是很少。  
  2. 2、强烈推荐学习快速阅读和思维导图,会发现带来的好处越出想象,同时节省大量时间  
  3. 3、学习从无到有建设一个知识框架,并记录每一步的心得和反思  
  4. 4、目前获得信息质量最好的办法还是书籍,网络上的信息质量越高,付出的时间成本就越大  
  5. 5、尽可能少的去阅读新闻,新闻95%以上都对你的本人无效,同时会浪费大量时间  
  6. 6、学习GTD,提高时间有效利用率  
  7. 7、象IM、Twitter这类的东西能不用就用,浪费的时间会越出你的想象。象偷菜之类的网页游戏也少玩,或者想办法不玩。  
  8. 8、你不是神不可能把一切做得完美,不要过于极端  
  9. 9、学习利用手机来帮助自己  
  10. 10、找出放松自己的办法,比如游戏、运动。  
  11. 11、利用网络书店、社区、豆瓣、博客和朋友推荐的方式来得到书籍阅读清单,应用速读在书店和图书馆快速略读和路读来寻找自己对有帮助的书籍  
  12. 12、学好英语,网络上很大部分的资料还是英文的  
  13. 13、同时进行多任务操作,会分散你的注意力,要学习集中注意力,并练习延长集中的时间。  
  14. 14、想办法建立或加入一个与你目标相同或相近的圈子,会对你有很大的帮助。  
  15. 15、定期的反思和改进,非常重要,一定要养成这个习惯  
不过我自己还是觉得对于时间的管理是最重要的。当然不能全部用来看书或者查资料。锻炼身体其实也很重要,没有身体,一切都是白搭。对于一些你认为以后可能会用到,而目前暂时用不到的,可以用一些软件记录下来。并用标签进行一些整理。相信以后有机会会用上吧。

上面3段转贴都来自于http://www.read.org.cn/html/978-how-do-i-deal-with-information-overload.html,各人的方法不一样,仅作参考

 

Tags: 信息过载

政协委员建议关闭网吧

最近在网上不停的看到《全国政协委员建议关闭网吧 六成网友表示反对》以及相类似的新闻,甚至有黑客去黑了政协委员所在的公司网站。

颇有一番感慨,网吧这玩意,我从97年就开始知道,那时候的网吧还不能算是真正的网吧。或许就象陶教授说的是“游戏吧”,但我也在那段时间里熟悉了电脑的操作、使用,包括一些软件的安装、卸载,甚至是一些硬件的安装(偶尔还有尝试帮网吧老板的电脑超频)。或许这在现在看来是不可想像的事情,但在当时,一台MX166的普通电脑就要6、7000的时候,还真的需要网吧来学电脑。

现在的网吧,或者说是游戏吧。为什么就不需要了呢?由政府来开办公益性网吧?安排几个就业人员?我觉得不应该这样。毕竟孩子玩游戏是天性,关键在于家长怎么疏导。在上世纪90年代,没有网络,好多孩子还是沉迷游戏厅【我就是其中之一】。再说下去就又要谈网瘾了。其实想想,现在的孩子也真可怜,小时候的我们爬上爬下,玩来玩去,大人们管的也少。现在的小孩子,能去哪 里玩?到处是高楼大厦,出个门都得担心被车撞。我们小时候胡同里逛逛,附近的小孩也就都认识了。现在呢?铁门都拴起来了,锁也开始防盗了,天空不是蓝的,水也不是绿的,土地也成了水泥的。小孩还能干嘛?在家里,还不让上网,不让看电视。怎么过啊。。。

不过现在很多事情都是头痛医头,脚痛医脚的。实在没法治了,就直接切除了。

本文实在不算是发表意见,仅当争取多一些搜索关键字吧。因为写了一半不知道写啥了,再写下去怕被和谐。

 

网站压力测试工具

大多数在win下面进行开发的人员,在做压力测试时,都是采用了apache自带的ab.exe进行测试的。工具虽然小,但也算强大。只是Ab的数据不是 特别准确。
除此之一,还有一些工具可以做压力测试,如loadRunner,webbench等。现在我就做一点小小的介绍。。

» 阅读全文

jQuery写的tab切换

花了半小时左右写了这个小东西。没有封装成插件。因为我觉得性能不好。主要就是想试一下$('xxx').data()这个方法。
在页面不大的时候,其实真的可以用这个方法来缓存ajax的数据。

JavaScript代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <html>  
  3.  <head>  
  4.   <title> New Document </title>  
  5.   <meta name="Generator" content="EditPlus">  
  6.   <meta name="Author" content="">  
  7.   <meta name="Keywords" content="">  
  8.   <meta name="Description" content="">  
  9.   <script src="http://localhost/jquery.js"></script>  
  10.   <style>  
  11.     .mytab{border:1px solid #888;cursor:pointer;}  
  12.     .showdiv{border:1px solid #888;cursor:pointer;}  
  13.   </style>  
  14.  </head>  
  15.   
  16.  <body>  
  17.     <div>  
  18.         <span class="mytab">Tab1</span>  
  19.         <span class="mytab">Tab2</span>  
  20.     </div>  
  21.     <div id='tab-1' style="display:none" rel="http://localhost/test.php" class="showdiv">  
  22.     </div>  
  23.     <div id='tab-2' style="display:none" class="showdiv">  
  24.         ddssasdflkjasdflkjalsdkfj  
  25.     </div>  
  26.   
  27.     <input type='button' value="click" id='clickid'>  
  28.     <script language="JavaScript">  
  29.     <!--  
  30.         $(document).ready(function(){  
  31.             $('body').append("<div id='testData' />");  
  32.   
  33.             $('.mytab').each(function(i){  
  34.                 $(this).click(function(){  
  35.                     var j = i+1;  
  36.                     var id = 'tab-' + j;  
  37.                     var src = $('#'+id).attr('rel');  
  38.                     if( src ){  
  39.                         if($('testData').data('data_'+id)){  
  40.                             return ;  
  41.                         }else{  
  42.                             $.get( src ,function(data){  
  43.                                 if(data){  
  44.                                     $('testData').data('data_'+id,data);  
  45.                                     $('#'+id).html(data);  
  46.                                 }  
  47.                             });  
  48.                         }  
  49.                     }  
  50.                     var len = $('.mytab').length;  
  51.                     for (var s=1;s<=len ; s++){  
  52.                         s == j ? $('#'+id).show() : $('#tab-'+s).hide();  
  53.                     }  
  54.   
  55.                 });  
  56.             });  
  57.         });  
  58.     //-->  
  59.     </script>  
  60.  </body>  
  61. </html>  

纯实现,无性能无效果。只是可以运行而己
目前我就在tab的切换和Div的显示方面没有想到更好的。。。其实如果显示内容的div不用ID也可以这样写:

 

JavaScript代码
  1. $('.test').hide();  
  2. $('.test').eq(i).show();  

避免了循环

 

随便写写。。。也请随便看看