00、硬盘分区、挂载硬盘

00、用主系统制作临时系统,然后chroot到临时系统
-——————————————————-以上完成制作环境

01、建dev,proc,sys等目录
02、建FHS相关目录
03、建系统用户
04、编译内核头文件
05、编译glibc
06、调整工具链(由临时系统调整到目标系统)
07、编译binutils,gcc (汇编、编译、连接器等)
-——————————————————–以上完成目标系统的工具链,(工具链是linux系统的基础)

08、安装基础功能软件(如udev,grub,bootscript,make,tar,openssl等)
      关于软件安装目录:
             如QQ:其命令qq.exe安装在   bin文件夹下
                          其库文件安装在          bin文件夹下
                          其他相关文件安装在   bin文件夹下
             而linux的软件呢:
                          其命令安装在               /usr/bin文件夹下
                          其库文件安装在            /usr/lib文件夹下
                          其他相关文件安装在     /usr/share/相关文件夹下
           一个是什么都放在一个文件夹下,一个是分开放,仅此而已
-———————————————————
09、安装linux内核
10、配置系统(如设定时间、键盘、网络、fstab等)
11、设置启动器(将grub写入MBR)
-——————————————————以上完成系统制作

其实以上过程跟我们用光盘安装系统的过程相类似,只是一个是手动安装一个是脚本自动安装
1、设置语言
2、设置键盘
3、设置时区
4、分区 、格式化
5、安装软件、内核
6、设置用户名、密码
7、设置启动器
重启完成系统安装
-——————————————————-

12、安装完后,缺少什么软件装什么软件

我看的是 《手把手教你构建自己的linux系统》 作者:孙海勇
此书拼写错误的地方比较多,不过大多不影响制作。

学做lfs,可以学linux构建原理,linux文件系统,linux内核编译,make等命令的使用,系统配置等。

虽然是照着书上做出来的,不过毕竟是自己一个字一个字打出来的 哈哈
花了我2个星期的时间!
新年的第一天,送上自己最好的礼物~~~

转载自:http://zhiyi.us/category/internet
对互联网有了解的人都有自己的想法,有人就把想法付诸实现,做个网站然后开始运营。其实从纯网站技术上来说,因为开源模式的发展,现在建一个小网站已经很简单也很便宜。当访问量到达一定数量级的时候成本就开始飙升了,问题也开始显现了。因为带宽的增加、硬件的扩展、人员的扩张所带来的成本提高是显而易见的,而还有相当大的一部分成本是因为代码重构、架构重构,甚至底层开发语言更换引起的,最惨的就是数据丢失,辛辛苦苦好几年,一夜回到创业前。

减少成本就是增加利润。很多事情,我们在一开始就可以避免,先打好基础,往后可以省很多精力,少操很多心。

假设你是一个参与创业的技术人员,当前一穷二白,什么都要自己做,自己出钱,初期几十万的资金,做一个应用不是特别复杂的网站,那么就要注意以下几点:
一、开发语言

一般来说,技术人员(程序员)创业都是根据自己技术背景选择自己最熟悉的语言,不过考虑到不可能永远是您一个人写程序,这点还得仔细想想。无论用什么语言,最终代码质量是看管理,所以我们还是从纯语言层面来说实际一点。现在流行的java、php、.net、python、ruby都有自己的优劣,python和ruby,现在人员还是相对难招一些,性能优化也会费些力气,.net平台买不起windows server。java、php用的还是最多。对于初期,应用几乎都是靠前端支撑的网站来说,php的优势稍大一些,入门简单、设计模式简单、写起来快、性能足够等,不过不注重设计模式也是它的劣势,容易变得松散,隐藏bug稍多、难以维护。java的优势在于整套管理流程已经有很多成熟工具来辅助,强类型也能避免一些弱智BUG,大多数JAVA程序员比较注重设计模式,别管实不实际,代码格式看起来还是不错的。这也是个劣势,初学者可能太注重模式而很难解决实际需求。

前端不只是html、css这类。整个负责跟用户交互的部分都是前端,包括处理程序。这类程序还是建议用php,主要原因就是开发迅速、从业人员广泛。至于后端例如行为分析、银行接口、异步消息处理等,随便用什么程序,那个只能是根据不同业务需求来选择不同语言了。
二、代码版本管理

如果开发人员之间的网络速度差不多,就SVN;比较分散例如跨国,就hg。大多数人还是svn的.

假设选了svn,那么有几点考虑。一是采用什么树结构。初期可能只有一条主干,往后就需要建立分支,例如一条开发分支,一条上线分支,再往后,可能要每个小组一个分支。建议一开始人少时选择两条分支,开发和线上,每个功能本地测试无误后提交到开发分支,最后统一测试,可以上线时合并到上线分支。如果喜欢把svn当做移动硬盘用,写一点就commit一次也无所谓,就是合并的时候头大一些,这些人可以自己建个分支甚至建立个本地代码仓库,随便往自己的分支提交,测试完毕后再提交到开发分支上。

部署,可以手工部署也可以自动部署。手工部署相对简单,一般是直接在服务器上svn update,或者找个新目录svn checkout,再把web root给ln -s过去。应用越复杂,部署越复杂,没有什么统一标准,只要别再用ftp上传那种形式就好,一是上传时文件引用不一致错误率增加,二是很容易出现开发人员的版本跟线上版本不一致,导致本来想改个错字结果变成回滚的杯具。如果有多台服务器还是建议自动部署,更换代码的机器从当前服务池中临时撤出,更新完毕后再重新加入。

不管项目多小,养成使用版本管理的好习惯,最起码还可以当做你的备份,我的 http://zhiyi.us 虽然就是一个wordpress,可还是svn了,只改动一两句css那也是劳动成果。
三、服务器硬件

别羡慕大客户和有钱人,看看机房散户区,一台服务器孤独的支撑的网站数不清。如果资金稍微充足,建议至少三台的标准配置,分别用作web处理、数据库、备份。web服务器至少要8G内存,双sata raid1,如果经济稍微宽松,或静态文件或图片多,则15k sas raid1+0。数据库至少16G内存,15k sas raid 1+0。备份服务器最好跟数据库服务器同等配置。硬件可以自己买品牌的底板,也就是机箱配主板和硬盘盒,CPU内存硬盘都自己配,也可以上整套品牌,也可以兼容机。三台机器,市场行情6、7万也就配齐了。

web服务器可以既跑程序又当内存缓存,数据库服务器则只跑主数据库(假如是MySQL的话),备份服务器干的活就相对多一些,web配置、缓存配置、数据库配置都要跟前两台一致,这样WEB和数据库任意一台出问题,把备份服务器换个ip就切换上去了。备份策略,可以drbd,可以rsync,或者其他的很多很多的开源备份方案可选择。rsync最简单,放cron里自己跑就行。备份和切换,建议多做测试,选最安全最适合业务的,并且尽可能异地备份。
四、机房

三种机房尽量不要选:联通访问特别慢的电信机房、电信访问特别慢的联通机房、电信联通访问特别慢的移动或铁通机房。那网通机房呢?亲,网通联通N久以前合并改叫联通了。多多寻找,实地参观,多多测试,多方打探,北京、上海、广州等各个主节点城市,还是有很多优质机房的,找个网络质量好,管理严格的机房,特别是管理要严格,千万别网站无法访问了,打个电话过去才知道别人维护时把你网线碰掉了,这比DOS都头疼。自己扯了几根光纤就称为机房的,看您抗风险程度和心理素质了。机房可以说是非常重要,直接关系到网站访问速度,网站访问速度直接关系到用户体验,我可以翻墙看风景,但买个网游vpn才能打开你这个还不怎么知名的网站就有难度了。或许您网站的ajax很出色,可是document怎么也不ready,一些代码永远绝缘于用户。
五、架构

初期架构一般比较简单,web负载均衡+数据库主从+缓存+分布式存储+队列。大方向上也确实就这几样东西,细节上也无数文章都重复过了,按照将来会有N多WEB,N多主从关系,N多缓存,N多xxx设计就行,基本方案都是现成的,只是您比其他人厉害之处就在于设计上考虑到缓存失效时的雪崩效应、主从同步的数据一致性和时间差、队列的稳定性和失败后的重试策略、文件存储的效率和备份方式等等意外情况。缓存总有一天会失效,数据库复制总有一天会断掉,队列总有一天会写不进去,电源总有一天会烧坏。根据墨菲定律,如果不考虑这些,网站早晚会成为茶几。
六、服务器软件

Linux、nginx、php、mysql,几乎是标配,我们除了看名字,还得选版本。Linux发行版众多,只要没特殊要求,就选个用的人最多的,社区最活跃的,配置最方便的,软件包最全最新的,例如debian、ubuntu。至于RHEL之类的嘛,你用只能在RHEL上才能运行的软件么?剩下的nginx、php、mysql、activemq、其他的等等,除非你改过这些软件或你的程序真的不兼容新版本,否则尽量版本越新越好,版本新,意味着新特性增多、BUG减少、性能增加。总有些道听途说的人跟你说老的版本稳定。所谓稳定,是相对于特殊业务来说的,而就一个php写的网站,大多数人都没改过任何服务器软件源代码,绝大多数情况是能平稳的升级到新版本的。类似于jdk5到 jdk6,python2到python3这类变动比较大的升级还是比较少见的。看看ChangeLog,看看升级说明,结合自己情况评估一下,越早升级越好,别人家都用php6写程序了这边还php4的逛游呢。优秀的开源程序升级还是很负责任的,看好文档,别怕。

以上这六点准备完毕,现在我们有了运行环境,有了基本架构骨架,有了备份和切换方案,应该开始着手设计开发方面的事情了。开发方面的事情无数,下一篇会先说一些重点。

七、数据库

几乎所有操作最后都要落到数据库身上,它又最难扩展(存储也挺难)。对于mysql,什么样的表用myisam,什么样的表用innodb,在开发之前要确定。复制策略、分片策略,也要确定。表引擎方面,一般,更新不多、不需要事务的表可以用myisam,需要行锁定、事务支持的,用innodb。 myisam的锁表不一定是性能低下的根源,innodb也不一定全是行锁,具体细节要多看相关的文档,熟悉了引擎特性才能用的更好。现代WEB应用越来越复杂了,我们设计表结构时常常设计很多冗余,虽然不符合传统范式,但为了速度考虑还是值得的,要求高的情况下甚至要杜绝联合查询。编程时得多注意数据一致性。

复制策略方面,多主多从结构也最好一开始就设计好,代码直接按照多主多从来编写,用一些小技巧来避免复制延时问题,并且还要解决多数据库数据是否一致,可以自己写或者找现成的运维工具。

分片策略。总会有那么几个表数据量超大,这时分片必不可免。分片有很多策略,从简单的分区到根据热度自动调整,依照具体业务选择一个适合自己的。避免自增ID作为主键,不利于分片。

用存储过程是比较难扩展的,这种情形多发生于传统C/S,特别是OA系统转换过来的开发人员。低成本网站不是一两台小型机跑一个数据库处理所有业务的模式,是机海作战。方便水平扩展比那点预分析时间和网络传输流量要重要的多的多。

NoSQL。这只是一个概念。实际应用中,网站有着越来越多的密集写操作、上亿的简单关系数据读取、热备等,这都不是传统关系数据库所擅长的,于是就产生了很多非关系型数据库,比如Redis/TC&TT/MongoDB/Memcachedb等,在测试中,这些几乎都达到了每秒至少一万次的写操作,内存型的甚至5万以上。例如MongoDB,几句配置就可以组建一个复制+自动分片+failover的环境,文档化的存储也简化了传统设计库结构再开发的模式。很多业务是可以用这类数据库来替代mysql的。
八、缓存。

数据库很脆弱,一定要有缓存在前面挡着,其实我们优化速度,几乎就是优化缓存,能用缓存的地方,就不要再跑到后端数据库那折腾。缓存有持久化缓存、内存缓存,生成静态页面是最容易理解的持久化缓存了,还有很多比如varnish的分块缓存、前面提到的memcachedb等,内存缓存,memcached首当其冲。缓存更新可用被动更新和主动更新。被动更新的好处是设计简单,缓存空了就自动去数据库取数据再把缓存填上,但容易引发雪崩效应,一旦缓存大面积失效,数据库的压力直线上升很可能挂掉。主动缓存可避免这点但是可能引发程序取不到数据的问题。这两者之间如何配合,程序设计要多动脑筋。
九、队列。

用户一个操作很可能引发一系列资源和功能的调动,这些调动如果同时发生,压力无法控制,用户体验也不好,可以把这样一些操作放入队列,由另几个模块去异步执行,例如发送邮件,发送手机短信。开源队列服务器很多,性能要求不高用数据库当做队列也可以,只要保证程序读写队列的接口不变,底层队列服务可随时更换就可以,类似Zend Framework里的Zend_Queue类,java.util.Queue接口等。
十、文件存储。

除了结构化数据,我们经常要存放其他的数据,像图片之类的。这类数据数量繁多、访问量大。典型的就是图片,从用户头像到用户上传的照片,还要生成不同的缩略图尺寸。存储的分布几乎跟数据库扩展一样艰难。不使用专业存储的情况下,基本都是靠自己的NAS。这就涉及到结构。拿图片存储举例,图片是非常容易产生热点的,有些图片上传后就不再有人看,有些可能每天被访问数十万次,而且大量小文件的异步备份也很耗费时间。

为了将来图片走cdn做准备,一开始最好就将图片的域名分开,且不用主域名。很多网站都将cookie设置到了.domain.ltd,如果图片也在这个域名下,很可能因为cookie而造成缓存失效,并且占多余流量,还可能因为浏览器并发线程限制造成访问缓慢。

如果用普通的文件系统存储图片,有一个简单的方法。计算文件的hash值,比如md5,以结果第一位作为第一级目录,这样第一级有16个目录。从0 到F,可以把这个字母作为域名,0.yourimg.com到f.yourimg.com(客户端dns压力会增大),还可以扩展到最多16个NAS集群上。第二级可用年月例如,201011,第三级用日,第四级可选,根据上传量,比如am/pm,甚至小时。最终的目录结构可能会是 e/201008/25/am/e43ae391c839d82801920cf.jpg。rsync备份时可以用脚本只同步某年某日某时的文件,避免计算大量文件带来的开销。当然最好是能用专门的分布式文件系统或更专业点的存储解决方案。

下面,我们要谈谈代码了。

这一系列的最后一篇写给普通编程人员,如果不感兴趣可直接看本文最后几段。

开始设计代码结构之前,先回顾一下之前准备过的事情:我们有负载均衡的WEB服务器,有主从DB服务器并可能分片,有缓存,有可扩展的存储。在组织代码的各个方面,跟这些准备息息相关,我一二三的列出来分别说,并且每一条都以“前面讲到”这个经典句式开头,为了方便对照。

别着急看经典句式,我思维跳跃了,插一段。实际开发中,我们总会在性能和代码优雅性上作折中。对于当今的计算机和语言解释器,多几层少几层对象调用、声明变量为Map还是HashMap这种问题是最后才需要考虑的问题,永远要考虑系统最慢的部分,从最慢的部分解决。例如看看你用的ORM是不是做了很多你用不到的事情,是不是有重复的数据调用。我们做的是web应用开发,不是底层框架API,代码易读易懂是保证质量很重要的一方面,你的程序是为了什么而设计,有不同的方法……算了,这个话题另起一篇文章来说,扯远了,想交流可关注我的微博 http://t.sina.com.cn/liuzhiyi,咱继续……

前面讲到,WEB服务器是要做负载均衡的,图片服务器是要分开的。对于这点,代码在处理客户端状态时,不要把状态放到单机上,举例,不要用文件 session,嗯,常识。如果有可能,最好在一开始就做好用户单点认证的统一接口,包括跨域如何判断状态、静态页面如何判断状态,需要登录时的跳转和返回参数定义,底层给好接口,应用层直接就用(可参考GAE的 user服务)。登录方面的设计要考虑移动设备的特性,比如电脑可以用浮动层窗口,但NOKIA自带的浏览器或UCWEB就无法处理这种表现形式,程序一定既能处理AJAX请求又能直接通过URL来处理请求。图片服务器分开,资源文件最好也布局到图片服务器,也就是WEB服务器只服务动态程序。虽然开发测试时稍微复杂(因为需要绝对URI才能访问),但将来页面前端优化上会轻松许多,并且你的WEB服务器IO优化也轻松许多。程序引用资源文件时,要有一个统一的处理方法,在方法内部可以自动完成很多事情,例如将css/js根据组合,拼成一个文件,或者自动在生成的URI后面加上QUERYSTRING,如果将来前端用了缓存服务,那生成QUERYSTRING是最简单的刷新服务端缓存和客户端缓存的办法。

前面讲到,数据库会有复制,可能会多主多从,可能会分片。我们程序在处理数据的过程中,最好能抽象出来单独放做一层。拿现在流行的MVC模式来说,就是在M层下方再放一个数据层,这个数据层不是通常所说的JDBC/PDO/ActiveRecord等,而是你自己的存取数据层,仅对外暴露方法,隐藏数据存取细节。这个数据层内部不要怕写的难看,但一定要提供所有的数据存储功能,其他任何层次不要看到跟数据库打交道的字眼。之所以这样做,是因为在单关系数据库的情况下,可能会SELECT…JOIN…或直接INSERT…INTO…,可你可能会将一些表放到key-value数据库里存储,或者分片,这么做之后原来的语句和方式要全部改变,如果过于分散,则移植时会耗费很大精力,或得到一个很大的Model。在数据层面的设计上,尽量避免JOIN查询,我们可以多做冗余,多做缓存,每种数据尽量只需要一次查询,然后在你的程序里面进行组合。对于比较复杂的数据组合,在实时性要求不高的情况下,可采用异步处理,用户访问时只取处理后的结果。在对于主键的处理上,避免使用自增ID,可以用一定规则生成的唯一值当做主键,这种主键是最简单的分片分布策略。即使用自增ID,也最好用一个自增ID发生器,否则从数据库不小心被写了一下,那主键很容易冲突。

前面讲到,咱数据库前面还有某些缓存挡着。别把mysql的query cache当缓存,应用稍复杂的时候QUERY CACHE反而会成为累赘。缓存跟数据库和业务结合的很紧密,正因为跟业务关系紧密,所以这点没有放之四海而皆准的方法。但我们还是有一些规则可参照。规则一:越接近前端,缓存的颗粒度越大。例如在WEB最前端缓存整个页面,再往后一层缓存部分页面区域,再往后缓存区域内的单条记录。因为越靠近后端,我们的可操作性越灵活,并且变化最多的前端代码也比较方便编写。在实践中,因为产品需求变化速度非常快,迭代周期越来越短,有时很难将Controller和 Model分的那么清楚,Controller层面处理部分缓存必不可免,但要保证如果出现这种情况,Controller所操作的缓存一定不要影响其他数据需求方,也就是要保证这个缓存数据只有这一个Controller在用。规则二:没有缓存时程序不能出错。在不考虑缓存失效引发的雪崩效应时,你的程序要有缓存跟没缓存一个样,不能像新浪微博一样,缓存一失效,粉丝微博全空,整个应用都乱套了。在缓存必不可少的情况下,给用户出错信息都比给一个让人误解的信息强。规则三,缓存更新要保证原子性或称作线程安全,特别是采用被动缓存的方式时,很可能两个用户访问时导致同一个缓存被更新,通常情况这不是大问题,可缓存失效后重建时很可能是引发连锁反应的原因之一。规则四:缓存也是有成本的。不只是技术成本,还有人工时间成本。如果一个功能使用缓存和不使用,在可预见的访问量情况下区别微小,但使用缓存会使复杂度增加,那就不用,我们可以加个TODO标注,在下次迭代的时候加上缓存处理。

前面讲到,文件存储是独立的,那么所有的文件操作就都是远程调用。可以在文件服务器上提供一个很简单的RESTful接口,也可以提供xmlrpc 或json serveice,WEB服务器端所生成和处理的文件,全部通过接口通知文件服务器去处理,WEB服务器本身不要提供任何文件存储。你会发现很多大网站的上传图片跟保存文章是分两步完成的,就是基于这个原因。

以上几条“前面讲到”,其实无数人都讲过,我也只是结合前几篇文章用自己的话重复了一遍,真正分析起来精髓很简单——除了良好的功能逻辑分层,我们还要为数据库存储、缓存、队列、文件服务等程序外层资源调用单独设计接口,你可以把你的程序想象成是运行在 Amazon EC2 上并用他的所有web service服务,你的数据库就是它的SimpleDB,你的队列就是他的SQS,你的存储就是他的S3,唯一不同是amazon的接口是远程调用,你的是内部调用。

将支撑服务接口化,意味着将MySQL更换到PostgreSQL不需要更改业务处理程序,移植团队甚至不需要跟业务开发团队过多沟通;意味着业务开发团队是对接口编程而不是对数据库编程;意味着不会因为某个业务开发人员的失误而拖垮性能。

对程序扫盲不感兴趣的直接看这里——

产品设计完了,程序框架搭完了,可能有矛盾在这个节骨眼儿产生了。不断有产品设计抱怨说他的创意没实现到预期效果,有程序员抱怨说产品设计不切实际。这种抱怨多缘于产品人员不懂技术,技术人员不理解产品。从广义上来讲,产品包含市场策略、营销手段、功能设计,产品和技术在争论时往往把焦点放在功能上,而实际重点是,实现这个功能所消耗的成本跟能这个功能带来的利益能否换算,能否取其轻重。若可以,争议解决。若不能,则抛硬币看运气。因为一个功能的加强而引发指标井喷,或因项目拖延而导致贻误战机的例子比比皆是。激进的决策者注重利益,保守的决策者注重损失,聪明的决策者会考虑这个问题是否真的那么严重。

关系到未来的事情谁都说不准,要不怎么说创业一半靠运气呢。不过总有能说的准的事情,那就得靠数据说话。

没有100%也有99.9%的网站安装了访问统计代码,连我的 http://zhiyi.us 也不例外,新闻联播也总说科学决策科学发展的。有了统计,能确定的事情就很多了。例如,可以根据来源-目标转化率来分析哪类渠道的人均获取成本低,根据来源-内容访问猜测用户跳出率原因,根据用户点击行为判断链接位置是否合理等。将数据以不同方式组合起来,找到内在联系,分析内因外因,制定对应策略,减少拍脑门决策。靠数据支撑运营是个非常专业的事情,虽然不懂深奥的数学模型不会复杂的公式计算,渐渐学会因为A所以B,因为A和B所以C还是相对简单的。

用的笔记本是msi ex465 ,查无线驱动是rt2870(虽然标着是ms-3870,但看win的inf知道是rt2870)

第一部分:驱动能安装却不能上网

1、下载驱动
       http://www.ralinktech.com/support.php?s=2    下载:RT2870USB(RT2870/RT2770)

2、安装
     1、安装编译环境: sudo apt-get install build-essential linux-headers-generic
     2、配置文件修改:

                tar -xvf 2010_0709_RT2870_Linux_STA_v2.4.0.1.tar.bz2
                cd  2010_0709_RT2870_Linux_STA_v2.4.0.1
                lsusb   

                      #显示:Bus 001 Device 003: ID 0db0:3870 MICRO STAR INTERNATIONAL

                      #记下代码号:0db0:3870
                gedit common/rtusb_dev_id.c
                     {USB_DEVICE(0x0DB0,0x3870)},    

                      #添加在 #ifdef RT2870下面,就是有很多行{USB_DEVIC 的地方
                gedit os/linux/config.mk
                      HAS_WPA_SUPPLICANT=y
                      HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
        3、编译、安装

               sudo su

               make
               make install
               modprobe  rt2870sta
               exit

         4、查看

               iwconfig

ra0 Ralink STA ESSID:”11n-AP” Nickname:”RT2870STA”
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Bit Rate:1 Mb/s
RTS thr:off Fragment thr:off
Link Quality=10/100 Signal level:0 dBm Noise level:0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

      5、每次启动都开启无线

               sudo sh -c ‘echo rt2870sta >> /etc/modules’       

以上安装好后,驱动已经安装了,但是连不了网,经过我一天的努力,终于找到好东西,分享以下 哈哈~~~

第二部分:终极解决方法:

1、在这个页面下下载软件:compat-wireless

            或者 http://linuxwireless.org/download/compat-wireless-2.6/

2、安装

sudo apt-get install build-essential linux-headers-generic

tar -xvf compat-wireless-2.6.tar.bz2

cd compat-wireless-2011-03-20                    #2011-03-20是会变的

sudo su

make

make install 

make unload

reboot

重启后,无线网卡即可工作,自动搜索无线信号 

总结:虽然现在能用无线了,可最终目的还是要解决第一部分遗留的问题,这样才能学到东西

哈哈,开心~~~

参考:

http://ubuntuforums.org/showthread.php?t=1342593

http://linuxforums.org.uk/hardware-compatibility/ralink-rt2870-based-usb-wireless-n-adapters-(ubuntu)/

-——————————————————————————————————————————————–

终极解决方法参考:

http://thinklouder.cn/tag/compat-wireless-26/

http://wireless.kernel.org/en/users/Download

1、sudo apt-get install ophcrach
2、下载彩虹表并安装:
       http://ophcrack.sourceforge.net/tables.php
      解压到tables-tables_xp_free_fast-文件
      然后才能安装彩虹表
3、破解sam文件

相关网址如下:
普及彩虹表(Rainbow Table)知识
使用”彩虹表+ophcrach+pwdump”破解windows密码Hash
如何破解Hash密码

说明:
硬件raid一定要用raid卡或者板载raid功能,用raid卡的硬盘接在raid卡上,用板载raid的硬盘接在硬盘上
软件raid不需要raid卡或者板载raid,只要硬盘插在主板上即可
 
      关于硬盘:
              sas硬盘:串行scsi硬盘
              sata硬盘:普通硬盘,串行ata硬盘
 
     关于网络存储:
              nas:相当于片上系统+硬盘。能独立运行,独立提供存储服务
              san:存储网络,通过服务器对外提供存储服务
              相关知识:
                          NAS与SAN存储解决方案优劣比较
                          家用NAS选购经验谈
                          家用NAS常见处理器全解析

设置:
硬件raid设置:
       1、开机自检时按ctrl+R进入配置界面:
       2、在VD Mgmt中,按F2创建VD
       3、 选RAID模式,选物理硬盘,选容量(就像硬盘分区一样)。这样就创建好一个VD
       4、选初始化VD(就像格式化分区一样)
       5、在选容量、初始化等00000000
   ————————————————–
       6、配置热备:
             全局热备:
            1、按ctrl+R切换到PD Mgmt
            2、选空盘,按F2,选make global hs,按确定即可
             某磁盘组热备:
            1、VD Mgmt界面,选磁盘组,按F2,选manage ded.HS,选硬盘即可
硬件raid–系统安装
          在主板RAID上(俗称的FakeRAID)安装UBUNTU10.04

软件raid设置:(ubuntu)
         1、先对每个硬盘进行分区:建空分区表,分区(选择用于:raid物理卷),备份分区表到其他硬盘
               alt+f2   sudo sfdisk -d /dev/sda | sudo sfdisk  –force /dev/sdb
          2、建raid阵列
                sudo mdadm –create /dev/md0 –auto=yes –force -R –level=raid1 –raid-devices=2 /dev/sd[a-b]1 
   —————————————————
lvm设置:
        1、 对md0进行创建lvm物理卷
        2、创建lvm卷组
        3、想对新硬盘分区一样创建lvm逻辑卷并分区
系统安装:
         跟单硬盘一样安装即可

-———————————————————-
安装操作系统
         ^
对逻辑卷进行文件系统选择和挂在目录
         ^
创建lvm逻辑卷                          lv
         ^
创建lvm卷组                             vg
         ^
对RAID进行创建LVM物理卷     pv
         ^
根据分区数,创建RAID           md
         ^
N个硬盘,各自分区                    sd
-———————————————————–

硬盘容量不够的话,先硬盘分区,建raid,建lvm物理卷,扩lvm卷组,扩某个lvm逻辑卷,扩容xfs分区
linux系统下操作:     cfdisk          mdadm   pvcreate        vgextend     lvextend                xfs_growfs

1、安装lamp环境
     sudo apt-get install apache2 libapache2-mod-php5 php5-mysql mysql-server php5-memcache

1、配置apache2 及awstats 日志分析文件

2、配置mysql
     1、设置root密码
     2、为drupal创建数据库 和用户

3、配置php
      用phpinfo()才测试php是否被apache2支持

4、安装phpmyadmin,并将phpmyadmin链接到自己的网站目录下

5、安装及配置drupal
      软件下载 http://drupal.org/download
      语言包     http://localize.drupal.org/
          将./sites/default 权限设置为 646
          复制./sites/default/default.settings.php 到./sites/default/settings.php 并将settings.php 权限设置为646
     一步一步设置即可~

1、安装webalizer:
     sudo apt-get install webalizer
     sudo webalizer
                    默认页面路径 /var/www/webalizer
     webalizer 配置文件: /etc/webalizer/webalizer.conf
                   logFile         更改要分析的log文件
                   OutputDir    分析好的文件存放位置

2、安装awstats
    1、 sudo apt-get install awstats
     2、让apache下所有站点都可使用awstats
            sudo nano /etc/apache2/awstats.conf
Alias /awstatsclasses “/usr/share/awstats/lib”
                    Alias /awstats-icon/  “/usr/share/awstats/icon/“
                    Alias /awstatscss     “/usr/share/doc/awstats/examples/css”
                    ScriptAlias /cgi-bin/  /usr/lib/cgi-bin/
                    ScriptAlias /awstats/  /usr/lib/cgi-bin/
                    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
           将配置文件加入到apache2.conf中
                    在apache2.conf中最后添加: Include /etc/apache2/awstats.conf
           重新加载apache配置:  sudo /etc/init.d/apache2 reload
     3、修改awstats配置文件 /etc/awstats/awstats.conf
                    1、sudo cp -a awstats.conf awstats.192.168.1.10.conf
                    2、sudo nano /etc/awstats/awstats.192.168.1.10.conf
                             修改LogFile 和 SiteDomain
     4、运行awstats来分析结果(非必须,可嫩cron运行后查看)
                   sudo perl /usr/lib/cgi-bin/awstats.pl -update -config=192.168.1.10

1、安装apache: sudo apt-get install apache2
2、创建虚拟主机:
      cd /etc/apache2/sites-available
      sudo cp -a default blog.test.com
     sudo mkdir /var/www/blog.test.com
     更改blog.test.com配置:略
3、开启虚拟主机:
     sudo a2dissite default
     sudo a2ensite blog.test.com
     sudo /etc/init.d/apache2 restart
4、设置ssl
     1、启动模块 sudo a2enmod ssl
     2、创建key openssl genrsa -des3 -out server.key 1024
           创建csr证书 openssl req -new -key server.key -out server.csr
           创建crt自己认证的证书  openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
     3、安装证书
            sudo cp server.crt /etc/ssl/certs
            sudo cp server.key /etc/ssl/private
     4、修改配置 blog.test.com
          DocumentRoot一行的下方加入内容:
          SSLEngine on
          SSLOptions +StrictRequire
         SSLCertificateFile /etc/ssl/certs/server.crt
         SSLCertificateKeyFile /etc/ssl/private/server.key
      5、重启apache
            sudo /etc/init.d/apache2 restart