Archive

Archive for March, 2010

apache .htaccess 基本功能

March 31st, 2010 No comments

.htaccess可以做大量范围的事情,包括:文件夹密码保护、用户自动重新指向、自定义错误页面、变更你的文件扩展名、屏蔽特定的用户IP地址、只允许特定的IP地址、停止目录表以及使用其他文件作为index文件,等等……。希望这个.htaccess文件使用权威指南可以帮助到你。

  如果你还不知道.htaccess是什么的话,可以看这里:

  .htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

  Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。
  
  笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。(更多介绍)

  1. Introduction 介绍
  
文件名 .htaccess 属性 644 (RW-R–R–)
  htaccess会影响它所在目录下的所有子目录
  注意大多数内容都要求保持在一行之内,不要换行,否则会引起错误

  2. Error Documents 错误文档
  
Official document: ErrorDocument Directive
  ErrorDocument code document

  例子
  ErrorDocument 400 /errors/badrequest.html
  ErrorDocument 404 http://yoursite/errors/notfound.html
  ErrorDocument 401 “Authorization Required”

  (注意之后内容如果出现的双引号需要转义为 \”)
  常见HTTP状态码
  Successful Client Requests
  200 OK
  201 Created
  202 Accepted
  203 Non-Authorative Information
  204 No Content
  205 Reset Content
  206 Partial Content
  Client Request Redirected
  300 Multiple Choices
  301 Moved Permanently
  302 Moved Temporarily
  303 See Other
  304 Not Modified
  305 Use Proxy
  Client Request Errors
  400 Bad Request
  401 Authorization Required
  402 Payment Required (not used yet)
  403 Forbidden
  404 Not Found
  405 Method Not Allowed
  406 Not Acceptable (encoding)
  407 Proxy Authentication Required
  408 Request Timed Out
  409 Conflicting Request
  410 Gone
  411 Content Length Required
  412 Precondition Failed
  413 Request Entity Too Long
  414 Request URI Too Long
  415 Unsupported Media Type
  Server Errors
  500 Internal Server Error
  501 Not Implemented
  502 Bad Gateway
  503 Service Unavailable
  504 Gateway Timeout
  505 HTTP Version Not Supported

  3. Password Protection 密码保护
  
Official document: Authentication, Authorization and Access Control
  假设密码文件为.htpasswd

  AuthUserFile /usr/local/safedir/.htpasswd (这里必须使用全路径名)
  AuthName EnterPassword
  AuthType Basic

  两种常见验证方式:

  Require user windix
  (仅允许用户windix登陆)

  Require valid-user
  (所有合法用户都可登陆)

  Tip: 如何生成密码文件
  使用htpasswd命令(apache自带)

  第一次生成需要创建密码文件
  htpasswd -c .htpasswd user1

  之后增加新用户
  htpasswd .htpasswd user2

  4. Enabling SSI Via htaccess 通过htaccess允许SSI(Server Side Including)功能
  AddType text/html .shtml
  AddHandler server-parsed .shtml
  Options Indexes FollowSymLinks Includes
  DirectoryIndex index.shtml index.html

  5. Blocking users by IP 根据IP阻止用户访问
  
order allow,deny
  deny from 123.45.6.7
  deny from 12.34.5. (整个C类地址)
  allow from all

  6. Blocking users/sites by referrer 根据referrer阻止用户/站点访问
  
需要mod_rewrite模块

  例1. 阻止单一referrer: badsite.com

  RewriteEngine on
  # Options +FollowSymlinks
  RewriteCond %{HTTP_REFERER} badsite\.com [NC]
  RewriteRule .* – [F]

  例2. 阻止多个referrer: badsite1.com, badsite2.com

  RewriteEngine on
  # Options +FollowSymlinks
  RewriteCond %{HTTP_REFERER} badsite1\.com [NC,OR]
  RewriteCond %{HTTP_REFERER} badsite2\.com
  RewriteRule .* – [F]

  [NC] – 大小写不敏感(Case-insensite)
  [F] – 403 Forbidden
  注意以上代码注释掉了”Options +FollowSymlinks”这个语句。如果服务器未在 httpd.conf 的 段落设置 FollowSymLinks, 则需要加上这句,否则会得到”500 Internal Server error”错误。

  7. Blocking bad bots and site rippers (aka offline browsers) 阻止坏爬虫和离线浏览器
  需要mod_rewrite模块
  坏爬虫? 比如一些抓垃圾email地址的爬虫和不遵守robots.txt的爬虫(如baidu?)
  可以根据 HTTP_USER_AGENT 来判断它们
  (但是还有更无耻的如”中搜 zhongsou.com”之流把自己的agent设置为 “Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)” 太流氓了,就无能为力了)

  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
  RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
  RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
  RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
  RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
  RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
  RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
  RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
  RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
  RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
  RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
  RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
  RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
  RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
  RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
  RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
  RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
  RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
  RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
  RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
  RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
  RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
  RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
  RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
  RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
  RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
  RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
  RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
  RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
  RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
  RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
  RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
  RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
  RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
  RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
  RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
  RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
  RewriteCond %{HTTP_USER_AGENT} ^Zeus
  RewriteRule ^.* – [F,L]

  [F] – 403 Forbidden
  [L] – 连接(Link)

  8. Change your default directory page 改变缺省目录页面
  DirectoryIndex index.html index.php index.cgi index.pl

  9. Redirects 转向
  
单个文件
  Redirect /old_dir/old_file.html http://yoursite.com/new_dir/new_file.html
  整个目录
  Redirect /old_dir http://yoursite.com/new_dir

  效果: 如同将目录移动位置一样

  http://yoursite.com/old_dir -> http://yoursite.com/new_dir
  http://yoursite.com/old_dir/dir1/test.html -> http://yoursite.com/new_dir/dir1/test.html

  Tip: 使用用户目录时Redirect不能转向的解决方法
  当你使用Apache默认的用户目录,如 http://mysite.com/~windix,当你想转向 http://mysite.com/~windix/jump时,你会发现下面这个Redirect不工作:

  Redirect /jump http://www.google.com

  正确的方法是改成

  Redirect /~windix/jump http://www.google.com
  (source: .htaccess Redirect in “Sites” not redirecting: why?)

  10. Prevent viewing of .htaccess file 防止.htaccess文件被查看
  
order allow,deny
  deny from all

  11. Adding MIME Types 添加 MIME 类型
  AddType application/x-shockwave-flash swf

  Tips: 设置类型为 application/octet-stream 将提示下载

  12. Preventing hot linking of images and other file types 防盗链
  需要mod_rewrite模块

  RewriteEngine on
  RewriteCond %{HTTP_REFERER} !^$
  RewriteCond %{HTTP_REFERER} !^http://(www/\.)?mydomain.com/.*$ [NC]
  RewriteRule \.(gif|jpg|js|css)$ – [F]

  解析:
  若 HTTP_REFERER 非空 (来源为其他站点,非直接连接) 并且
  若 HTTP_REFERER 非(www.)mydomain.com开头(忽略大小写[NC]) (来源非本站)
  对于所有含有 .gif/.jpg/.js/.css 结尾的文件给出 403 Forbidden 错误[F]
  也可指定响应,如下例显示替换图片
  RewriteRule \.(gif|jpg)$ [R,L]
  [R] – 转向(Redirect)
  [L] – 连接(Link)

  13. Preventing Directory Listing 防止目录列表时显示
  
IndexIgnore *
  IndexIgnore *.jpg *.gif

  Tips:
  允许目录列表显示: Options +Indexes
  禁止目录列表显示: Options -Indexes
  显示提示信息: 页首 文件HEADER, 页尾 文件README

  • Share/Bookmark

.htaccess设置指南

March 31st, 2010 No comments

.htaccess 会降低APACHE的性能,除非你对目录权限要求很高或需要做UrlRewrite,否则不推荐你使用.

如果你的服务器目录结构是这样:

/usr/corsak/wwwroot/www/maindir

如果Apache指令中开启了AllowOverride支持.htaccess文件,每访问一次会依次搜索:

/usr/corsak/wwwroot/www/maindir/.htaccess
/usr/corsak/wwwroot/www/.htaccess
/usr/corsak/wwwroot/.htaccess

下面是一份详细的文档,不知道哪年从哪找的。
因为在一个国外的空间的根文件夹下看到这个.htaccess,搞不懂是干什么的,在落伍论坛找到一篇文章,先转过来放着,以后再慢慢研究,嘿嘿..
    Apache指南: .htaccess文件

.htaccess文件提供了针对目录改变配置的方法。

* .htaccess文件
* 工作原理和使用方法
* 使用.htaccess文件的场合
* 指令的生效
* 认证举例
* 服务器端包含举例
* CGI举例
* 疑难解答

top
.htaccess文件
相关模块     相关指令

* core
* mod_auth
* mod_cgi
* mod_include
* mod_mime

    

* AccessFileName
* AllowOverride
* Options
* AddHandler
* SetHandler
* AuthType
* AuthName
* AuthUserFile
* AuthGroupFile
* Require

top
工作原理和使用方法

.htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。

说明:如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。 例如,需要使用.config,则可以在服务器配置文件中按以下方法配置:

AccessFileName .config

允许放在这些文件中的指令取决于AllowOverride指令, 此指令按类别决定了.htaccess文件中哪些指令才是有效的。如果一个指令允许放在.htaccess文件中,则,在本手册的说明中,此指令会有一个覆盖段,其中说明了为使此指令生效而必须在AllowOverride指令中设置的值。

例如,本手册对AddDefaultCharset指令的说明表明了, 此指令可以用于.htaccess文件(见 Context一行),而Override一行是”FileInfo”,那么为使.htaccess中的此指令有效,则至少要设置”AllowOverride FileInfo”。
例子:
Context:     server config, virtual host, directory, .htaccess
Override:     FileInfo

如果不能确定一个特定的指令是否允许用于.htaccess文件, 可以查阅手册中对指令的说明,看在Context(“上下文”)行中是否有”.htaccess.”。
top
使用.htaccess文件的场合

一般情况下,不应该使用.htaccess文件,除非你对主服务器配置文件没有存取权限。 有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,但并不是这样, 把用户认证写在主服务器配置中是完全可行的,而且是一种很好的方法。

在内容提供者需要针对目录改变服务器的配置而对服务器系统没有root权限时,则应该使用.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在一个机器上 宿主多个用户站点,而又希望用户可以自己改变配置的情况下。

虽然如此,一般都应该尽可能地避免使用.htaccess文件。 任何希望放在.htaccess文件中的配置,都可以放在主服务器的<Directory>段中,而且更高效。

避免使用.htaccess文件有两个主要原因。

首先是性能。 如果AllowOverride允许使用.htaccess文件,则,Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到, 允许使用.htaccess文件都会导致性能的下降。另外,每次请求一个页面时,都需要读取.htaccess文件。

还有,Apache必须在所有更高级的目录中查找.htaccess文件, 使所有有效的指令都起作用(参见how directives are applied.),所以, 如果有对/www/htdocs/example中页面的请求,Apache必须查找以下文件:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

而且,对此目录以外的每个文件访问,还有4个附加的文件系统访问,即使这些文件都不存在。 (注意,这可能仅仅发生在 / 允许使用.htaccess文件的情况下,虽然这种情况并不多。)

其次是安全。 如此,会允许用户修改服务器的配置,可能会导致未加限制的修改,请认真考虑是否给予用户这样的特权。但是,如果给予用户较少的特权而不能满足其需要,则会带来额外的技术支持请求,所以,必须明确地告诉用户已经给予他们的权限,说明AllowOverride设置的值, 并引导他们参阅相应的说明,以免日后许多麻烦。

注意,在/www/htdocs/example目录下.htaccess文件中放置指令,与, 在主服务器配置文件中<Directory /www/htdocs/example>段中放置相同指令, 是等效的。:

/www/htdocs/example中的.htaccess:
/www/htdocs/example中.htaccess文件的内容

AddType text/example .exm
httpd.conf文件中的段

<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>

但是,把这个配置放置在服务器配置文件中则更加高效,因为只需要在Apache启动时读取一次, 而不是在有文件请求时每次都读取。

将AllowOverride设置为”none”可以完全禁止使用.htaccess文件。

AllowOverride None
top
指令的生效

.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,但是,很重要需要记住的是,其更高级的目录也可能会有.htaccess文件, 而指令是按查找顺序依次生效,所以,一个特定目录下的.htaccess文件中的指令可能会覆盖其更高级目录中的 .htaccess文件的指令,即,子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。

例如:

目录/www/htdocs/example1中的.htaccess文件有如下内容:

Options +ExecCGI

(注意: 必须设置”AllowOverride Options”以允许在.htaccess文件中使用 “Options”指令。)

在目录/www/htdocs/example1/example2中的.htaccess文件有如下内容:

Options Includes

由于第二个.htaccess文件的存在,/www/htdocs/example1/example2中 的CGI执行是不允许的,而只允许Options Includes,它完全覆盖了之前的设置。
top
认证举例

如果你为了知道如何认证,直接从这里开始看,有很重要的一点需要注意,有一种常见的误解,认为实现密码认证必须要使用.htaccess文件,其实不是这样。把认证指令放在主服务器配置文件的<Directory>段中,是一个更好的方法,而.htaccess文件应该仅仅用于无权访问主服务器配置文件的时候。 参见上述的使用.htaccess文件的场合。

有此声明在先,如果你仍然需要使用.htaccess文件,请看以下说明。

必须设置”AllowOverride AuthConfig”以允许这些指令生效

.htaccess文件的内容:

AuthType Basic
AuthName “Password Required”
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins

注意,必须设置AllowOverride AuthConfig以允许这些指令生效

更详细的有关身份识别和认证的说明,请参见authentication tutorial。
top
服务器端包含举例

.htaccess文件的另一个常见用途是允许一个特定目录的服务器端包含(Server Side Includes), 可以在需要的目录中放置.htaccess文件,并如下配置:

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml

注意,必须同时设置AllowOverride Options和 AllowOverride FileInfo使这些指令生效。

更详细的有关服务器端包含的说明,请参见SSI tutorial。
top
CGI举例

最后,可以通过.htaccess文件允许在特定目录中执行CGI程序,需按如下配置:

Options +ExecCGI
AddHandler cgi-script cgi pl

另外,如下,可以使给定目录下所有文件被视为CGI程序:

Options +ExecCGI
SetHandler cgi-script

注意,必须设置AllowOverride Options使这些指令生效。

更详细的有关CGI编程和配置的说明,请参见CGI tutorial。
top
疑难解答

如果在.htaccess文件中写入了配置指令但不起作用,可能有多种原因。

最常见的原因是,AllowOverride指令没有被正确设置, 必须确保没有对此文件区域设置AllowOverride None。有一个很好的测试方法,即, 在.htaccess文件随便增加点没用的内容,如果服务器没有返回了一个错误消息,那么几乎可以断定设置了AllowOverride None。

在访问文档时,如果收到服务器的出错消息,应该检查Apache的出错日志, 可以知道.htaccess文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。

.htaccess文件使用手册

- .htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过 Apache的AllowOverride指令来设置。

- 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。

- .htaccess必须以ASCII模式上传,最好将其权限设置为644。

错误文档的定位

常用的客户端请求错误返回代码:
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
常见的服务器错误返回代码:
500 Internal Server Error

用户可以利用.htaccess指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置这些页面。然后再.htaccess中,加入如下的指令:

ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html

一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:

ErrorDocument 错误代码 /目录名/文件名.扩展名

如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:

ErrorDocument 401 “<body bgcolor=#ffffff><h1>你没有权限访问该页面,请放弃!</h1></body>”

文档访问的密码保护

要利用.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,例如:

zheng:y4E7Ep8e7EYV

这里密码经过加密,用户可以自己找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。

有了授权用户文档,可以在.htaccess中加入如下指令了:

AuthUserFile .htpasswd的服务器目录
AuthGroupFile /dev/null (需要授权访问的目录)
AuthName EnterPassword
AuthType Basic (授权类型)

require user wsabstract (允许访问的用户,如果希望表中所有用户都允许,可以使用 require valid-user)

注,括号部分为学习时候自己添加的注释

拒绝来自某个IP的访问

如果我不想某个政府部门访问到我的站点的内容,那可以通过.htaccess中加入该部门的IP而将它们拒绝在外。

例如:

order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all

第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.5.45.0~219.2.45.255

想要拒绝所有人?用deny from all好了。不止用IP,也可以用域名来设定。

保护.htaccess文档

在使用.htaccess来设置目录的密码保护时,它包含了密码文件的路径。从安全考虑,有必要把.htaccess也保护起来,不让别人看到其中的内容。虽然可以用其他方式做到这点,比如文档的权限。不过,.htaccess本身也能做到,只需加入如下的指令:

<Files .htaccess>
order allow,deny
deny from all
</Files>

URL转向

我们可能对网站进行重新规划,将文档进行了迁移,或者更改了目录。这时候,来自搜索引擎或者其他网站链接过来的访问就可能出错。这种情况下,可以通过如下指令来完成旧的URL自动转向到新的地址:

Redirect /旧目录/旧文档名 新文档的地址

或者整个目录的转向:

Redirect 旧目录 新目录

改变缺省的首页文件

一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在pmwiki中是pmwiki.php。这种情况下,要用户记住文件名来访问很麻烦。在.htaccess中可以轻易的设置新的缺省文件名:

DirectoryIndex 新的缺省文件名

也可以列出多个,顺序表明它们之间的优先级别,例如:

DirectoryIndex filename.html index.cgi index.pl default.htm

防止盗链

如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通过htaccess的指令来做到。

所需要的指令如下:

RewriteEngine on
RewriteCond % !^$
RewriteCond % !^[url]http://(www/.)?mydomain.com/.[/url]*$ [NC]
RewriteRule \.(gif|jpg)$ – [F]

如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:

RewriteEngine on
RewriteCond % !^$
RewriteCond % !^[url]http://(www/.)?mydomain.com/.[/url]*$ [NC]
RewriteRule \.(gif|jpg)$ [url]http://www.mydomain.com/[/url]替代图片文件名 [R,L]

- .htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

- 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。

- .htaccess必须以ASCII模式上传,最好将其权限设置为644。

错误文档的定位

常用的客户端请求错误返回代码:
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
常见的服务器错误返回代码:
500 Internal Server Error

用户可以利用.htaccess指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置这些页面。然后再.htaccess中,加入如下的指令:

ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html

一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:

ErrorDocument 错误代码 /目录名/文件名.扩展名

如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:

ErrorDocument 401 “<body bgcolor=#ffffff><h1>你没有权限访问该页面,请放弃!</h1></body>”

文档访问的密码保护

要利用.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,例如:

zheng:y4E7Ep8e7EYV

这里密码经过加密,用户可以自己找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。

有了授权用户文档,可以在.htaccess中加入如下指令了:

AuthUserFile .htpasswd的服务器目录
AuthGroupFile /dev/null (需要授权访问的目录)
AuthName EnterPassword
AuthType Basic (授权类型)

require user wsabstract (允许访问的用户,如果希望表中所有用户都允许,可以使用 require valid-user)

注,括号部分为学习时候自己添加的注释

拒绝来自某个IP的访问

如果我不想某个政府部门访问到我的站点的内容,那可以通过.htaccess中加入该部门的IP而将它们拒绝在外。

例如:

order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all

第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.5.45.0~219.2.45.255

想要拒绝所有人?用deny from all好了。不止用IP,也可以用域名来设定。

保护.htaccess文档

在使用.htaccess来设置目录的密码保护时,它包含了密码文件的路径。从安全考虑,有必要把.htaccess也保护起来,不让别人看到其中的内容。虽然可以用其他方式做到这点,比如文档的权限。不过,.htaccess本身也能做到,只需加入如下的指令:

<Files .htaccess>
order allow,deny
deny from all
</Files>

URL转向

我们可能对网站进行重新规划,将文档进行了迁移,或者更改了目录。这时候,来自搜索引擎或者其他网站链接过来的访问就可能出错。这种情况下,可以通过如下指令来完成旧的URL自动转向到新的地址:

Redirect /旧目录/旧文档名 新文档的地址

或者整个目录的转向:

Redirect 旧目录 新目录

改变缺省的首页文件

一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在pmwiki中是pmwiki.php。这种情况下,要用户记住文件名来访问很麻烦。在.htaccess中可以轻易的设置新的缺省文件名:

DirectoryIndex 新的缺省文件名

也可以列出多个,顺序表明它们之间的优先级别,例如:

DirectoryIndex filename.html index.cgi index.pl default.htm

防止盗链

如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通过htaccess的指令来做到。

所需要的指令如下:

RewriteEngine on
RewriteCond % !^$
RewriteCond % !^[url]http://(www/.)?mydomain.com/.[/url]*$ [NC]
RewriteRule \.(gif|jpg)$ – [F]

如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:

RewriteEngine on
RewriteCond % !^$
RewriteCond % !^[url]http://(www/.)?mydomain.com/.[/url]*$ [NC]
RewriteRule \.(gif|jpg)$ [url]http://www.mydomain.com/[/url]替代图片文件名 [R,L]

一. 自定义404,401,等错误
1.
首先建立一个名为: .htaccess
写入以下内容
ErrorDocument 401 /err401.html
ErrorDocument 402 /err402.html
ErrorDocument 403 /err403.html
ErrorDocument 404 /err404.html

其中,401,402,403,404代表错误类型,
后面的err401.html代表其相对应的页面,

2.
分别建立名字为:
err401.html,err402.html………
的文件,当出现对应的错误的时候,
就会指向对面的页面

3.
传到根目录下,
也就是 public_html 目录下
一切就OK了

二. 去掉广告
建个文件名 .htaccess 的文件, 文件内容如下:
LayoutIgnoreURI *.php
LayoutIgnoreURI *.cgi
LayoutIgnoreURI *.htm
LayoutIgnoreURI *.html

将 .htaccess 上传至空间的 Public_html 目录下,即可去掉广告!

注意 *.* 这里..想去那种扩展名的文件,就写上那种文件的扩展名!
这个是最简单的方法,只要在根目录加这个文件,那么整个网站都不会有广告!

  • Share/Bookmark

NoSQL数据库探讨之一 - 为什么要用非关系数据库?

March 28th, 2010 No comments

关键字: nosql

随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:

1、High performance – 对数据库高并发读写的需求
web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求,例如像JavaEye网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当普遍的需求。

2、Huge Storage – 对海量数据的高效率存储和访问的需求
类似Facebook,twitter,Friendfeed这样的SNS网站,每天用户产生海量的用户动态,以Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数据库也很难应付。

3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?

在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如:

1、数据库事务一致性需求
很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。

2、数据库的写实时性和读实时性需求
对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说我(JavaEye的robbin)发一条消息之后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。

3、对复杂的SQL查询,特别是多表关联查询的需求
任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,现在这两年,各种各样非关系数据库,特别是键值数据库(Key-Value Store DB)风起云涌,多得让人眼花缭乱。前不久国外刚刚举办了NoSQL Conference,各路NoSQL数据库纷纷亮相,加上未亮相但是名声在外的,起码有超过10个开源的NoSQLDB,例如:

Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable, Riak,Tin, Flare, Lightcloud, KiokuDB,Scalaris, Kai, ThruDB,  ……

这些NoSQL数据库,有的是用C/C++编写的,有的是用Java编写的,还有的是用Erlang编写的,每个都有自己的独到之处,看都看不过来了,我(robbin)也只能从中挑选一些比较有特色,看起来更有前景的产品学习和了解一下。这些NoSQL数据库大致可以分为以下的三类:

一、满足极高读写性能需求的Kye-Value数据库:Redis,Tokyo Cabinet, Flare

高性能Key-Value数据库的主要特点就是具有极高的并发读写性能,Redis,Tokyo Cabinet, Flare,这3个Key-Value DB都是用C编写的,他们的性能都相当出色,但出了出色的性能,他们还有自己独特的功能:

1、Redis
Redis是一个很新的项目,刚刚发布了1.0版本。Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是我知道的性能最快的Key-Value DB。

Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存List链表和Set集合的数据结构,而且还支持对List进行各种操作,例如从List两端push和pop数据,取List区间,排序等等,对Set支持各种集合的并集交集操作,此外单个value的最大限制是1GB,不像memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一个功能加强版的memcached来用。

Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,并且它没有原生的可扩展机制,不具有scale(可扩展)能力,要依赖客户端来实现分布式读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。目前使用Redis的网站有github,Engine Yard。

2、Tokyo Cabinet和Tokoy Tyrant
TC和TT的开发者是日本人Mikio Hirabayashi,主要被用在日本最大的SNS网站mixi.jp上,TC发展的时间最早,现在已经是一个非常成熟的项目,也是Kye-Value数据库领域最大的热点,现在被广泛的应用在很多很多网站上。TC是一个高性能的存储引擎,而TT提供了多线程高并发服务器,性能也非常出色,每秒可以处理4-5万次读写操作。

TC除了支持Key-Value存储之外,还支持保存Hashtable数据类型,因此很像一个简单的数据库表,并且还支持基于column的条件查询,分页查询和排序功能,基本上相当于支持单表的基础查询功能了,所以可以简单的替代关系数据库的很多操作,这也是TC受到大家欢迎的主要原因之一,有一个Ruby的项目miyazakiresistance将TT的hashtable的操作封装成和ActiveRecord一样的操作,用起来非常爽。

TC/TT在mixi的实际应用当中,存储了2000万条以上的数据,同时支撑了上万个并发连接,是一个久经考验的项目。TC在保证了极高的并发读写性能的同时,具有可靠的数据持久化机制,同时还支持类似关系数据库表结构的hashtable以及简单的条件,分页和排序操作,是一个很棒的NoSQL数据库。

TC的主要缺点是在数据量达到上亿级别以后,并发写数据性能会大幅度下降,NoSQL: If Only It Was That Easy提到,他们发现在TC里面插入1.6亿条2-20KB数据的时候,写入性能开始急剧下降。看来是当数据量上亿条的时候,TC性能开始大幅度下降,从TC作者自己提供的mixi数据来看,至少上千万条数据量的时候还没有遇到这么明显的写入性能瓶颈。

这个是Tim Yang做的一个Memcached,Redis和Tokyo Tyrant的简单的性能评测,仅供参考

3、Flare
TC是日本第一大SNS网站mixi开发的,而Flare是日本第二大SNS网站green.jp开发的,有意思吧。Flare简单的说就是给TC添加了scale功能。他替换掉了TT部分,自己另外给TC写了网络服务器,Flare的主要特点就是支持scale能力,他在网络服务端之前添加了一个node server,来管理后端的多个服务器节点,因此可以动态添加数据库服务节点,删除服务器节点,也支持failover。如果你的使用场景必须要让TC可以scale,那么可以考虑flare。

flare唯一的缺点就是他只支持memcached协议,因此当你使用flare的时候,就不能使用TC的table数据结构了,只能使用TC的key-value数据结构存储。

二、满足海量存储需求和访问的面向文档的数据库:MongoDBCouchDB

面向文档的非关系数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。MongoDB是用C++开发的,而CouchDB则是Erlang开发的:

1、MongoDB
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

Mongo主要解决的是海量数据的访问效率问题,根据官方的文档,当数据量达到50GB以上的时候,Mongo的数据库访问速度是MySQL的10倍以上。Mongo的并发读写效率不是特别出色,根据官方提供的性能测试表明,大约每秒可以处理0.5万-1.5次读写请求。对于Mongo的并发读写性能,我(robbin)也打算有空的时候好好测试一下。

因为Mongo主要是支持海量数据存储的,所以Mongo还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储,但我也看到有些评论认为GridFS性能不佳,这一点还是有待亲自做点测试来验证了。

最后由于Mongo可以支持复杂的数据结构,而且带有强大的数据查询功能,因此非常受到欢迎,很多项目都考虑用MongoDB来替代MySQL来实现不是特别复杂的Web应用,比方说why we migrated from MySQL to MongoDB就是一个真实的从MySQL迁移到MongoDB的案例,由于数据量实在太大,所以迁移到了Mongo上面,数据查询的速度得到了非常显著的提升。

MongoDB也有一个ruby的项目MongoMapper,是模仿Merb的DataMapper编写的MongoDB的接口,使用起来非常简单,几乎和DataMapper一模一样,功能非常强大易用。

2、CouchDB
CouchDB现在是一个非常有名气的项目,似乎不用多介绍了。但是我却对CouchDB没有什么兴趣,主要是因为CouchDB仅仅提供了基于HTTP REST的接口,因此CouchDB单纯从并发读写性能来说,是非常糟糕的,这让我立刻抛弃了对CouchDB的兴趣。

三、满足高可扩展性和可用性的面向分布式计算的数据库:Cassandra,Voldemort

面向scale能力的数据库其实主要解决的问题领域和上述两类数据库还不太一样,它首先必须是一个分布式的数据库系统,由分布在不同节点上面的数据库共同构成一个数据库服务系统,并且根据这种分布式架构来提供online的,具有弹性的可扩展能力,例如可以不停机的添加更多数据节点,删除数据节点等等。因此像Cassandra常常被看成是一个开源版本的Google BigTable的替代品。Cassandra和Voldemort都是用Java开发的:

1、Cassandra
Cassandra项目是Facebook在2008年开源出来的,随后Facebook自己使用Cassandra的另外一个不开源的分支,而开源出来的Cassandra主要被Amazon的Dynamite团队来维护,并且Cassandra被认为是Dynamite2.0版本。目前除了Facebook之外,twitter和digg.com都在使用Cassandra。

Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。我看到有文章说Facebook的Cassandra群集有超过100台服务器构成的数据库群集。

Cassandra也支持比较丰富的数据结构和功能强大的查询语言,和MongoDB比较类似,查询功能比MongoDB稍弱一些,twitter的平台架构部门领导Evan Weaver写了一篇文章介绍Cassandra:http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/,有非常详细的介绍。

Cassandra以单个节点来衡量,其节点的并发读写性能不是特别好,有文章说评测下来Cassandra每秒大约不到1万次读写请求,我也看到一些对这个问题进行质疑的评论,但是评价Cassandra单个节点的性能是没有意义的,真实的分布式数据库访问系统必然是n多个节点构成的系统,其并发性能取决于整个系统的节点数量,路由效率,而不仅仅是单节点的并发负载能力。

2、Voldemort
Voldemort是个和Cassandra类似的面向解决scale问题的分布式数据库系统,Cassandra来自于Facebook这个SNS网站,而Voldemort则来自于Linkedin这个SNS网站。说起来SNS网站为我们贡献了n多的NoSQL数据库,例如Cassandar,Voldemort,Tokyo Cabinet,Flare等等。Voldemort的资料不是很多,因此我没有特别仔细去钻研,Voldemort官方给出Voldemort的并发读写性能也很不错,每秒超过了1.5万次读写。

从Facebook开发Cassandra,Linkedin开发Voldemort,我们也可以大致看出国外大型SNS网站对于分布式数据库,特别是对数据库的scale能力方面的需求是多么殷切。前面我(robbin)提到,web应用的架构当中,web层和app层相对来说都很容易横向扩展,唯有数据库是单点的,极难scale,现在Facebook和Linkedin在非关系型数据库的分布式方面探索了一条很好的方向,这也是为什么现在Cassandra这么热门的主要原因。

如今,NoSQL数据库是个令人很兴奋的领域,总是不断有新的技术新的产品冒出来,改变我们已经形成的固有的技术观念,我自己(robbin)稍微了解了一些,就感觉自己深深的沉迷进去了,可以说NoSQL数据库领域也是博大精深的,我(robbin)也只能浅尝辄止,我(robbin)写这篇文章既是自己一点点钻研心得,也是抛砖引玉,希望吸引对这个领域有经验的朋友来讨论和交流。

从我(robbin)个人的兴趣来说,分布式数据库系统不是我能实际用到的技术,因此不打算花时间深入,而其他两个数据领域(高性能NoSQLDB和海量存储NoSQLDB)都是我很感兴趣的,特别是Redis,TT/TC和MongoDB这3个NoSQL数据库,因此我接下来将写三篇文章分别详细介绍这3个数据库

  • Share/Bookmark

推荐中国速度很快的美国服务器机房

March 28th, 2010 No comments

推荐中国速度很快的美国服务器机房

  有很多的网友需要美国的服务器,又不知道哪里速度更快,我们研究了许多机房发现位于美国加州附近的美国服务器机房的中国速度访问最快,这也是距离中国最近的一个周,所以这个里机房国内网通电信访问都很快。

      1、Peer1 dedicated洛杉矶机房,网站 http://www.peer1.com/
      peer1公司成立于1999年,在北美拥有12个数据中心,强大的实力和完善的软硬件设施保障了服务器的安全与稳定,这个机房针对中国电信线路进行了优化,ping值在200ms以内,网通的访问也可以接受。提供多种方案,Dedicated hosting最便宜的每月$75,价格还可以。可自己选择数据中心位置,目前优惠是买2年送2个月,并有免费防火墙。

     在这个机房的还有http://www.resellerspanel.com/   ,独立服务器价格从$170起

      2、krypt圣安娜机房   网站http://www.krypt.com/
    对中国速度快,结点少,ping值200ms左右,krypt有四个机房,应该说各机房速度差别不大,价格从每月79.95美元起,不过有的机房已经满了,有些型号可能买不到,大家可以在他们网站上看看。目前的价格是优惠10%,网站有中文切换标志,原以为已经有中文版,却是指向了google翻译界面,可见对中国客户比较重视的。目前推出了reseller计划,可以享受更多的优惠。

    3、he.net 加州(Frement)机房
he.net机房位于加州,这个线路对中国电信和网通比较友好,结点少,速度快。ping值200ms左右。这个主机商也有虚拟主机提供,最便宜的1美元每月,2G空间。独立主机速度比较好,linode(加州数据中心)用的就是这个机房。其他主机商有:http://www.hostdepartment.com/,这个每月的价格是$5.45,速度还是比较不错的。

4、pacificrack的nLayer优化段
       PacificRack在美国加州洛杉矶有自己的机房,其母公司为OC3网络,成立于1999年,机房带宽接入商有Mzima,Level(3),Global Crossing,Sprint,Savvis,PCCW/BTN,Any2Exchange Peering – 1 Wilshire等,机房带宽超过50Gbps,中国大陆访问速度很不错。访问中国大陆速度比较快,结点少,ping值200ms左右。

  • Share/Bookmark

选择美国主机的机房地理位置与网络分析

March 28th, 2010 No comments

选择美国主机的机房地理位置与网络分析

很多人在选择虚拟主机(Virtual Hosting)或者VPS的时候因为备案,网络审查,外贸等原因都倾向于把主机放在美国。美国作为互联网的中心,有个分布最密集的光纤网络,带宽等成本因为规模庞大,竞争激烈等因素也是全球最低的。

正是嗅到了美国主机的商机,海外主机代购也自然而然蓬勃发展起来了。考虑美国主机,除了选择何种类型的主机(虚拟主机还是VPS亦或是主机合租),主机商自身的信誉,服务,价格,稳定些等之外,如果你的网站受众主要还是来自大陆,主机所在的机房位置也是一个重要的考虑因素。

中美之间的网络电话等数据传输毫无疑问得通过跨域太平洋的海底光缆来进行。目前中美之间有两条直达海底光缆,一条是China-US Cable NetworkCUCN 网络容量达到了80Gbps,中国大陆登陆点为崇明岛和汕头,美国登陆点为加州的San Luis Obispo(位于圣何塞与洛杉矶之间)。还有一条即著名的Trans Pacific Cable,设计容量达到了惊人的5.12Tbps,大陆登陆点为上海(中国电信)和青岛(中国联通),美国登Trans-Pacific_Express 陆点为俄勒冈州的Nedonna沙滩。两条光缆均已开通商用,但从目前我多次traceroute的结果来看,TPE似乎还没有向一般宽带用户开放。中美之间的带宽增长速度相当惊人,根据CNNIC的统计数据,截至2008年底中国电信与美国之间的带宽为203980MB,而中国网通为110456MB.目前中国电信在北美西海岸的节点有华盛顿州的西雅图,加州的圣何塞,洛杉矶和帕拉阿图。

因此,一般电信/网通用户访问美国站点网络数据传输所走的路线先是本地ISP网络,然后是城域网,接着是各省市网络节点,然后是骨干网,最后从上海等出口出去,跨越一万多公里的浩瀚太平洋后,在美国加州/俄勒冈州登陆。网络延时(latency)在200ms以上。很多人误认为GFW的网络过滤会影响网速,但事实上这种影响可以忽略不计的,网络延时在200ms以上主要还是在于传输距离太长,日本/澳大利亚网民的对美网络延时和大陆用户差不多的,而欧洲用户跨越大西洋一般在100ms以上。如果是你是移动用户的话,带宽资源想对于两大巨头要少的可怜,移动用户一般是先南下到香港连接NTT的节点,然后绕道日本达到美国,网络延时达到了惊人的七八百毫秒。

这样对于大陆用户来说最佳的机房所在地应该是在西海岸加州,加州的机房最集中的主要有三个,San Jose(圣何塞),Fremont和洛杉矶。其中,San Jose和Fremont都位于湾区,也即是硅谷的入口。本文主要介绍的是机房,机房一般不会提供虚拟主机/VPS等面向普通顾客的服务,这些机房都只提供服务器托管/租用服务器等服务。如果你需要的是虚拟主机等类型的主机,可以寻找在服务器位于以下机房的主机服务商。

在San Jose/Fremont的主要机房有Peer1,Equinix和Hurricane Electric。

peer1logo 

VPS主机商Linode四个机房当中的一个就位于Fremont的HE机房,虚拟主机服务商LiqiudNet的服务器在Fremont的Peer1机房。

在洛杉矶的主要机房机房有Peer1,Equinix,OC3,Telecom Center LA和Dreamhost.

peer1logo   

Dreamhost作为最大的虚拟主机商之一,位于洛杉矶,自建机房,因为性价比高,可以转卖,推广有提成等原因在国内得到了很多人的使用与推荐,但应该是因为接入的运营商,带宽与使用人数过多等原因在国内速度并不是很快。国内主机商梦游科技的美国主机托管在洛杉矶的awknet,严格来说awknet并不拥有自己的机房,只是拥有部分的Telecom Center LA的空间Telecom Center LA毗邻Any2 One Wilshire互联网交换中心(Carrier Hotel),通过光纤直连One Wilshire.One Wilshire是美国西部最大的交换中心,中国电信/中国联通/中国网通等全世界最主要的运营商都在这里设置了节点(POPs).因此对亚洲的网络连接十分理想。OC3在洛杉矶也拥有自己的数据中心,光纤直连One Wilshire。而Kevworks是我所知道的美国主机商中唯一有中国电信网络接入的。虚拟主机商Sharkspace也有主机位于洛杉矶机房。

如果你在上述地点没有找到合适的主机商,将主机放在达拉斯,芝加哥,西雅图,丹佛也是不错的选择。比如达拉斯,电信网通用户访问速度均很理想,在我这边(江苏电信)下载能够到200多KB,网络延时在230ms左右,达拉斯位于美国中部偏南,这样的地理位置到美国各地,南美,欧洲距离都很适中。而芝加哥本来就是美国东西南北交通的一个枢纽,从西海岸连接芝加哥一般只要经过丹佛这个节点就行了。西雅图位于美国西北部,从圣何塞有直连西雅图的光缆。

在达拉斯的著名的数据中心有Softlayer,The Planet,Limestone,Colo4,Cologuys.

cologuys

使用Softlayer达拉斯机房的主机商数不胜数,著名的有Hawkhost,Mddhosting.在The Planet机房的有Hostgator,Linode,Site5.选择Limestone机房的有Stablehost.

根据我几次的测试结果,下载速度上:Softlayer>The Planet>Limestone.

在芝加哥的主机商有Wiredtree/Coresite.Downtownhost在丹佛。

此外,需要提醒各位的选择几个好的机房除了他的地理外,他有那些网络运营商接入也是重要的考虑因素。国外的独立机房一般都有自己的AS自治系统号码,可以有自己的IP地址段,通过BGP(边界网关协议)与其他网络运营商来互联。美国对大陆网络访问较好的有PCCW/Cogent/Hurricane Electric.因此在考虑机房时候看看机房是否有上述的网络运营商接入,如果只是只使用这些运营商那是再好不过了。

国内有很多主机商在做美国主机的生意,要么是代购要么是购买美国主机商的reseller hosting再转卖,有自己的服务器或者租用服务器的不多。需要提醒各位的是要找一个有信誉值得信赖的主机商。如果你的英文还行,有信用卡就没有必要经过这样的中间环节可以直接去找一家美国主机商购买。选择中间商加了一层风险,还要考虑到不能含有敏感内容防止连累同在一个IP上的其他网站。很多国内主机商购买了国外Reseller Hosting后,没有节制的超卖(Oversell),一个服务器上承载了太多网站,性能降低,风险增加是无可避免的。

速度测试:

加州Fremont

HE机房:100 MB http://fremont30.linode.com/Tailing-Aaron.mov

洛杉矶

OC3 机房:72.11.144.84 100 MB  http://s4t7.welcomesearchers.com/100mb.bin

Telecom Center LA机房 http://67.220.70.132/SSH.exe

西雅图

Soft Layer机房:http://sea.hawkhost.com/100mb.zip

达拉斯

Soft Layer机房: http://dal.hawkhost.com/100mb.zip

The Planet机房:http://www.theshore.net/moto/20060825_Stecoah/Tailing-Aaron.mov

Limestone机房:http://cp06.stablehost.com/speedtest.zip

Colo4机房:http://www.igxhost.com/speed_test/100MBtest%20(1).zip

芝加哥

FDCservers机房:66.90.103.47 http://s7r9.welcomesearchers.com/test100.zip

  • Share/Bookmark

关键词有效性指标keyword effectiveness index

March 28th, 2010 No comments

什么是关键词有效性指标(KEI-keyword effectiveness index)?

关键词有效性指标keyword effectiveness index

 

又称为:关键词效力指标,是一个对关键词受欢迎程度(搜索包含的关键词数)与其受欢迎程度的用途(网页中发现的词数)相比的数学表示方法。对关键词常用程度的数学性描述(有多少个搜索包含它),与其使用度相对应(网页中被发现的个数)。

http://www.hafidxu.com/wiki/kei-090416/

  • Share/Bookmark

博客赚钱

March 28th, 2010 No comments

1、首先,你必须拥有10个可以自定义HTML的主流博客。
  
2、每天更新文章,注:每个博客每天更新文章数:10篇
  
文章内容:去搜狗指数http://www.sogou.com/top/index.html查博客看瞬间指数,找一些流量大的关键词去百度搜索一下便有一大堆,选前7—-15的文章上传到你的博客上(注:标题修改下,但标题中的关键词可不能动哦!)
  
3、把每篇文章都收藏进几个网摘,提高文章的反链接和权重
  
4、等着来流量吧。
  三人月之后,你的每个博客你流量都应该在10000PV(我现在的是2.5Wpv)以上,那你放置GG广告的话,你的收入就很可观的。我的博客广告点击率一般在1%—1.5之间,少数点。1%就可以了,单价在2—4美分徘徊,少算点,单价2美分便可
  
10000*0.01*0.02*6.8*10=136元/天,就算没这么理想,减去36,那一天就100元,一个月不就3000元了吗?
  
解释:
  认为不可操作的人,原因只有一个字“懒”,只想坐享其成的人,天上会掉馅饼吗?有人说是以前的东西,是不是以前的我不知道,但每一个字都是我辛辛苦苦的敲出来的,每一句话都是经过自己的大脑想出来的,至于与以前哪位前辈的想法不谋而合,那只能说你已经浪费了一段可以让你过上小康的黄金岁月!反过来在乎别人的想法是不是第一个,你不觉得自己很傻吗?找别人的弱点对你来说重要还是快点致富重要……
  
  相关技巧:
  
  1,经过反复实践证明以下门户博客权重较高:
  
  和讯(www.hexun.com
  
  中华网(www.china.com
  
  天涯(www.tianya.cn
  
  百度空间(hi.baidu.com)对百度的权重高
  
  2,关键词的选择:
  
  百度中文搜索风云榜:http://top.baidu.com(互联网热门搜索词语)
  
  百度指数:http://index.baidu.com(某关键词搜索热度)
  
  相关搜索:http://d.baidu.com/rs.php(用于发掘该类相关热门搜索词语)
  
  搜狗指数http://www.sogou.com/top/index.html
  
  3,SEO设置:
  
  拿曾经最热门的“陈冠希”举例,那么博客名字就应该取为chenguanxi,如果chenguanxi已经被别人注册
  
  了,那么就在后面添加数字,比如chenguanxi8、chenguanxi9等~~~
  
  标题就应该写上跟陈冠希有关的关键字,比如“陈冠希事件”、“陈冠希视频”等~~~不要太多,大概1-2
  
  组关键词即可,剩余的可以多添加几篇文章进行。
  
  你只需要摘抄一段新闻自己稍加修改,然后把里面包含“陈冠希”的关键词统统加粗,保证在文章的开头、中间和结尾都有这些关键词出现即可。不过不要堆积关键词,这样会被搜索引擎K掉,一篇百字的文章里面包含大概2-3次的关键词就够了。
  
  4,如何将博客的流量引出并创造现金?
  
  在文章中加入醒目的图片或者文字,从而把博客浏览者引导到你想推广的产品的网站上。比如一个亚交注册、一个火狐浏览器下载或上面那个博客做的UUSee产品等等,这个时候你需要准备的就是产品推广的网页;通过在博客文章中添加醒目的文字或者图片方式,把流量引到该网页上来。
 分析:
  
     可以计算下,一般一个每天500IP流量的博客,有300人被引导到了你的产品页
   根据你的产品页面具体情况,在有足够吸引的前提下,大概会有10-20人注册或者下载,如果该产品每个认证佣金是1-2元,那么做一个博客你就能赚到该产品推广佣金20元左右
  如果你再勤奋点做到10个以上这样的博客,那么你每天的收入也会在200元,一个月做5000-6000绝对不是问题。
      这种操作就很明显了,你花一个星期的时间做出30个博客,每做一个你应该用个表格做好记录。其中包括
  
  选用关键词:
  
  使用的博客:
  
  使用博客的用户名和密码:
  
  博客网址:
  
  那么这30个博客如果运气好,做到10个能有如此流量的博客你就及格了,如果你不满足还想赚更多的钱就继续不断重复你的劳动~~
  
  如果只有少数几个博客做上流量了,那说明可能你还没有完全掌握该技术或运气不佳,也不用气馁再花一个星期的时间这样去做,哪怕每个星期只有1-2个博客做到了,时间长了一样可以凑齐10个以上。

  • Share/Bookmark
Categories: SEO Tags: , ,

心理学家帮你分析:你具备成为亿万富翁的素质吗?

March 28th, 2010 No comments

 

你是否具有成为亿万富翁的潜质呢?你是甘于悠闲平稳的生活还是敢于开拓属于自己的事业?美国心理学家琼·凯恩及大卫·巴拉德提出的问题,帮你自我评价:

你能容忍并且处理好分歧吗?

一个成功的企业家能透过分歧得到自己想要的信息。成功人士有着自己的着重点,能够分清主次划清区域,不让自己沉溺于繁杂的细节。

你有为公司发展主导大局的魄力吗?

当然,你的下属官员会为你的公司发展把关。但他们的作用会在公司发展到一定程度的时候慢慢变小或者起着反作用。这时,你要勇于做出自己的决定,一旦有周密计划就不要受制于他人的想法。

你喜欢公开演讲吗?

任何一家大公司都要树立起自己的公众形象。企业家们每周都要出席不同的会议包括股东大会,甚至电视采访。这时你要在闪烁的镁光灯下镇定自若,即使你不擅长抛头露面的讲话,也要逼自己成长,找一个有价值的话题让公众接受你的想法。

你能否和众人达成共识?

多数情况下,你的企业越大,你就要从身边采集更多的信息。那就意味着你要接受众多的意见,并与有价值的观点达成共识。

你能与他们保持沟通吗?

你的企业越大,你就越少有时间和员工们进行交流。如果你不清楚每个部门所发生的事件和状况,那从何谈发展呢?

你能忍受孤独吗?

亿万富翁们很孤独。尽管他们的朋友遍布天下,但一段真挚的情谊是很难维持的。要获得成功,必须要耐得住寂寞,并且适时地在圈内找到可信并且悦己的人。

  • Share/Bookmark

Linux系统下终端setup显示乱码的解决方法

March 28th, 2010 No comments

方法一:配置SSH工具

SecureCRT中文版配置

[全局选项]→[默认会话]→[编辑默认设置]→[终端]→[外观]→[字体]→[新宋体 10pt CHINESE_GB2312]→[字符编码 UTF-8]

putty配置

[window]→[Appearance]→[Font settings]→[Change]→[Fixedsys CHINESE_GB2312]

[window]→[Appearance]→[Translation]→[Received data assumed to be in which character set]→[Use font encoding UTF-8]

如果经常使用,把这些设置保存在session里面。

打开putty,登录成功后,在shell中输入:export LC_ALL=’zh_CN.utf8′

方法二:配置系统

操作系统语言是中文,显示中文字符

编辑/etc/sysconfig/i18n,修改为如下内容:

LANG=”zh_CN.GB2312″

SUPPORTED=”zh_CN.UTF-8:zh_CN:zh”

SYSFONT=”latarcyrheb-sun16″

或者

LANG=zh_CN.GB18030

LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN

export LANG LANGUAGE

这样就能在终端输入和显示中文了,并且shell脚本里原本的中文显示乱码问题也解决了。

操作系统语言是英文,显示中文字符

编辑/etc/sysconfig/i18n,修改为如下内容:

LANG=”en_US”

SUPPORTED=”en_US.UTF-8:en_US:en”

SYSFONT=”latarcyrheb-sun16″

  • Share/Bookmark

bash: groupadd: command not found 错误解决

March 28th, 2010 No comments

bash: groupadd: command not found 错误解决

groupadd命令是要用ROOT用户来执行的,而出错的用户是用 su root切换到ROOT用户下,这个命令不会把环境带过去!!!!, 要用 su – root 命令

  • Share/Bookmark
Categories: centos Tags: , ,

搭建自己的vps服务器

March 16th, 2010 No comments

首先在服务器上安装CENTOS5.X 确保能连上网络

一.准备工作

1.然后更新:

yum check-update
yum update

2.打开防火墙8001端口

/sbin/iptables -I INPUT -p tcp –dport 8001 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart

二.安装OpenVZ(vps)软件

1.添加OpenVZ源

cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm –import http://download.openvz.org/RPM-GPG-Key-OpenVZ

2.安装OpenVZ

yum search ovzkernel
yum -y install ovzkernel
yum -y install vzctl vzquota

vi /etc/sysctl.conf

看看以下代码是不是存在
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.default.forwarding = 1

生效

sysctl -p

vi /etc/sysconfig/selinux

改为
SELINUX=disabled
SELINUXTYPE=targeted

vi /etc/vz/vz.conf

改为
NEIGHBOUR_DEVS=all

3.重新启动

reboot

4.查看内核

uname -r

显示
2.6.18-128.2.1.el5.028stab064.4

三.安装Vtonf的VPS控制面版

1.安装依赖文件

yum -y install vzpkg expect

2.安装Vtonf控制面版

cd /tmp
wget http://mesh.dl.sourceforge.net/sourceforge/vtonf/vtonfinstaller.1.0-beta1.tar.gz
tar xvfz vtonfinstaller.1.0-beta1.tar.gz
cd vtonfinstaller.1.0-beta1
./install
cd ../

确定2个yes就进入安装了,安装过程中需要设置控制面版的管理员帐号和密码

安装完成后使用http://ip:8001登陆Vtonf控制面版

  • Share/Bookmark

centos vps安装kloxo控制面板教程

March 12th, 2010 No comments

目前主流的国外vps以linux系统居多,因为linux系统是免费的,对服务商或用户来说都可以省一点钱,况且对于一般的网络应用,linux平台的性能和稳定性都大大优于win平台。唯一的不足就是linux平台的server不采用图形界面,易用性较差,大多数非专业人员配置、操控起来有难度,即使是专业人员,很多操作在命令行下也稍显繁琐,为了解决这个问题,就有了各种基于web的linux平台控制面板,将常用操作图形化,使之便于管理。

附自动安装脚本:

在众多linux发行版中,centos是非常优秀的一个,因为它是基于原来的Redhat Linux,是相对于RHEL(Red Hat Enterprise Linux,现已收费)的免费版本,性能优良,可用文档等资源也很丰富。而在众多的面板中,从资源占用、易用性等方面综合考虑,kloxo(原lxadmin)无疑最比较适合vps新手的,而且它的基本功能是免费的,唯一的商业限制是不能绑定超过40个域名,对一般用户来说完全够用。因此centos+kloxo平台是用vps搭建web服务非常不错的选择。

下面分几步来说明拿到vps后初始化设置的步骤,仅作简单记述以备忘。下面的方法主要来自网上收集。

先更改计算机root密码

password 回车

输入新密码

再更改计算机名

第一步:
shell 命令 #hostname yourhostname 

第二步:
修改/etc/sysconfig/network中的hostname
[root@suzhouP ~]# vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
#HOSTNAME=localhost.localdomain
HOSTNAME=yourhostname

~

第三步:
修改/etc/hosts文件

加入一行 yourpublicip    yourhostname
[root@suzhouP ~]# vim /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost yourhostname
::1 localhost6.localdomain6 localhost6

如果ip是dhcp的话 vim /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static
ONBOOT=yes
IPADDR=YOURIP
NETMASK=YOURMASK
GATEWAY=YOURGATEWAY

然后 切忌检查网络设置正常,再执行网络重启命令 service network restart

再 vim /etc/resolv.conf 

nameserver YOURNAMESERVER
nameserver YOURNAMESERVER

exit注销后重新登录即可,如果不行请重启centos

centos修改主机名

——————————- 第一步 ——————————-

因为拿到的vps一般是安装了centos完全版的,自带有apache等组件,我们要使用kloxo自带的服务器组件,就需要先卸载自带的apache、mysql等。

yum remove httpd* php* mysql* -y

卸载Mysql
# rpm -qa | grep mysql
mysql-3.23.58-9
php-mysql-4.3.4-11
mod_auth_mysql-20030510-4.1
mysql-server-3.23.58-9
说明:rpm -qa | grep mysql 命令是为了把mysql相关的包都列出来,卸载从最下面的一个包开始,直到卸载掉第一个为止。
比如:在这个例子中,我们应该先卸载mysql-server-3.23.58-9 方法如下:
rpm -e mysql-server
说明:rpm -e 是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的,比如我们下一步卸载mod_auth_mysql-20030510-4.1包,方法如下:
rpm -e mod_auth_mysql

卸载Apache
# rpm -qa | grep httpd

卸载PHP
# rpm -qa | grep php

注意:卸载的时候如果卸载不掉,系统一般会提示包的依赖关系,并且列出依赖的包的名称,先卸载提示依赖的包就可以了。如果实在实在有卸载不掉的包,可以加-nodeps这个参数来卸载,比如我们卸载php-4.3.4-11,实在卸不掉了。就用:
rpm -e php-4.3.4-11 -nodeps
命令很强硬,应该行的。

——————————- 第二步 ——————————-

如果没有wget命令,先执行 yum install wget

mkdir -p /data/soft
cd /data/soft
wget http://download.lxlabs.com/download/kloxo/production/kloxo-install-master.sh
sh ./kloxo-install-master.sh

yum install php-bcmath /*高精度数学运算组件,默认没安装,MD5运算时用到*/
yum check-update /*检查全部更新*/
yum update /*更新全部更新*/
yum clean all /*清理全部缓存的安装文件以节省空间*/

这就安装完了kloxo,可以web登陆面板了。
地址:https://yourdomain:7777/ /*安全连接*/
http://yourdomain:7778/ /*普通链接,常用*/
一般出于安全考虑要在面板里修改掉默认的7777和7778端口,修改后要ssh里运行:
/script/restart
重启kloxo服务使之生效。

下面就可以按照面板里的说明添加网站了。

附自动安装脚本:kloxo_with_chinese_language

——————————- 第三步 ——————————-

centos系统安全设置

1、更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降
vi /etc/ssh/ssh_config
vi /etc/ssh/sshd_config
然后修改为port为需要的端口号
以root身份service sshd restart

2、删除系统臃肿多余的账号:
userdel adm
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel uucp
userdel operator
userdel games
userdel gopher
userdel ftp 如果你不允许匿名FTP,就删掉这个用户帐号
groupdel adm
groupdel lp
groupdel news
groupdel uucp
groupdel games
groupdel dip
groupdel pppusers

3、增加普通账号,并禁止root远程登录:
useradd newuser  //添加新用户
passwd newuser  //修改密码
usermod -G10 newuser
或usermod -G wheel newuser    //将用户加入wheel组,允许使用 su – 命令提权成root
vi /etc/ssh/sshd_config
添加一行:
PermitRootLogin no  //禁止root远程登录
vi /etc/pam.d/su
#auth required /lib/security/$ISA/pam_wheel.so use_uid   ← 找到此行,去掉行首的“#”
echo “SU_WHEEL_ONLY yes” >> /etc/login.defs  //以上为禁止不在wheel组的用户使用su -命令
重启sshd服务
#service sshd restart

4、更改下列文件权限,使任何人没有更改账户权限:
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow

5、编辑“host.conf”文件(vi /etc/host.conf)加入下面这些行:
order bind,hosts
multi on
nospoof on
chmod 600 /etc/xinetd.conf
vi /etc/xinetd.conf  禁止所有不需要的服务,如:ftp、telnet、shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth等等,也可以直接通过setup命令来设置服务项。
改变了“inetd.conf”文件之后,别忘了给inetd进程发一个SIGHUP信号:
killall -HUP xinetd
chattr +i /etc/xinetd.conf  //把inetd.conf设成不可改变,如果要改变xinetd.conf文件,你必须先清除这个不允许改变的标志:
chattr -i /etc/inetd.conf

又是为了服务器安全,可以配置防ping:

先用/sbin/ifconfig查看网卡信息,找到外网网卡名字,如venet0
运行
/sbin/iptables -A OUTPUT -o venet0 -p icmp -j ACCEPT
/sbin/iptables -A INPUT -i venet0 -p icmp –icmp-type echo-reply -j ACCEPT
/sbin/iptables -A INPUT -i venet0 -p icmp –icmp-type echo-request -j DROP
/sbin/service iptables save
看到OK后重启即可。

也可以通过使用MySQLTuner分析优化MySQL。MySQLTuner是一个Perl脚本,用来分析你的MySQL性能,并给出优化建议。

下载,执行:
# wget http://mysqltuner.com/mysqltuner.pl
# chmod +x mysqltuner.pl
# ./mysqltuner.pl

  • Share/Bookmark
Categories: centos Tags: , , ,

项目经理、系统架构师或技术骨干应该具备的水平

March 2nd, 2010 No comments

 一直想写一篇这样的总结性文章,但不是没有时间就是没有勇气写下去,因为怕别人丢臭鸡蛋。这两天有时间,终于鼓起勇气,将这篇文章写来下!也希望对一些正在寻找更好发展的朋友能有点帮助,也希望对于一些技术跟管理方面的牛人,能给予一些建议。

      作为一名项目经理系统架构师或技术骨干,其水平如何,关系到公司的项目管理、软件质量管理等方面的问题。项目经理或技术骨干应该要起带头作用,使整个团队的开发及管理能达到一种更高的水平。

      那作为一名项目经理或公司技术骨干应该学会那些工具及知识点呢?涉及到这一块的工具及技术点非常多,如何去选择,是摆在项目经理、系统架构师跟技术骨干面前的问题。根据公司及团队的情况,选择合适的工具或技术框架,这一点非常重要。在项目的不同阶段,需要有不同的工具来支持。

      按照软件系统的生命周期的六个阶段,一般分为需求分析阶段、系统设计阶段、系统开发阶段、软件测试阶段、系统发布阶段、系统维护阶段,这几个阶段都需要有不同工具的支持。

一、需求分析阶段:
第一、项目管理及需求管理工具

    项目管理工具很多公司都在使用,为什么要使用这些工具?假如没有使用这些工具,而是使用Excel或Word进行记录,那当需求变更?需求实现情况的跟踪?软件是否能按时交付?将是一件非常烦锁且容易出错的事情。一个软件项目、开发团队能否获得成功,管理非常关键。比较有名的商业化工具有:MicroSoft Project ServerProject 2003IBM Rational RequisiteProJIRAPowerDesinger。比较有名的开源需求管理工具包括:OSRMT(Open Source Requirements Management Tools)XplannerOpenworkbench等等。

    很多软件公司都会使用SharePoint,在SharePoint平台上,只要你想得到,基本上都可以通过配置方式来满足你的业务需求。在SharePoint上,可以跟MicroSoft Project Server很好的结合,再配置Project 2003为客户端,进行公司的项目管理。也许对Project操作习惯的问题,在Web界面进行项目管理的时候,总觉得很不方便。

    IBM Rational RequisiteProhttp://www.ibm.com )可以算是最骨灰级的一个软件了,假如你公司整个软件生命周期管理都是采用IBM的解决方案,那使用RequisitePro是一个非常好的解决方案。需要这些软件可以到IBM官方网站上去下载一个最新版本,或者在电驴上面下载一些“特别”版本。设计工具、管理工具的完美结合,这个正是IBM Rational RequisitePro的强项。RequisiteProOffce结合得也是非常完美。

    JIRAhttp://www.atlassian.com )原来只是一个缺陷跟踪系统,你可以在JIRA上面创建新的ISSUE,当ISSUE分配给某个程序员时,系统会自动发送一封邮件给该程序员,提示有新的BUG。JIRA也有提供一个Eclipse插件,你可以在Eclipse上面,查到属于自己的ISSUE,并快速解决。现在JIRA也可以用来做项目管理,在操作方面非常人性化,个人一直非常喜欢使用JIRA来进行项目管理、缺陷管理,再结合Eclipse,简直就是完美!但作为商业的软件,价格也非常贵,互联网上也有很多Crack,大家有兴趣也可以搜一下。

    OSRMThttp://sourceforge.net/projects/osrmt )是一个开源的需求管理工具,分为客户端跟服务器,也提供了一个安装界面供用户安装,做开源的已经算是做得非常完美了。当前最新版本是V1.5,有兴趣的朋友可以下载一个最新版本玩一下,操作还算是挺人性化的。

    Xplannerhttp://www.xplanner.org )是一个开源的,基于XP编程的项目管理软件,它可以帮我们生成一些统计图表。这个软件从06年底发布0.7b7版后,就再也没有更新过了,我对开源工具的看法就是:版本号没有超过1.0版,我都不会应用于生产!对于Xplanner,也是停留在试用的阶段。

    Openworkbenchhttp://www.openworkbench.org )也是一个开源的项目管理软件,其功能跟Project 2003相似,是一个值得大家去使用的一个工具,但对于中国很多软件公司,都是使用特别版的Project 2003。假如你很尊重版权,又不想使用Project 2003,那Openworkbench是一个非常好的选择。

第二、需求分析工具
    需求分析工具用得比较多可能就是Rational RoseMicroSoft VisioMindManager,一般我们使用Rational Rose来进行用例分析,画用例图,画状态图;使用MicroSoft Visio来画出应用系统的结构图、流程图等。当然,对于MicroSoft Visio能画出来的东西,其实Rose也一样可以实现,只是,大家都是这么干,我们也没有必要专门去做一些特例的东西,特别是对于一些比较特殊的公司及行业。

    Ration Rose 2003是一个值得怀念的工具,至今还是有很多公司跟个人都是使用,个人觉得这个软件版本算是最经典的一个,但对于现在所见即所得的要求下,使用Rose 2003,可能没有办法满足你,因为它需要经过一些小操作才能满足你的要求。但不可否认,它是一个非常优秀的软件。现在对于一些喜欢使用新工具新技术的程序员,也许现在他们正在使用RSA。

    MicroSoft Visiohttp://www.microsoft.com )是每个搞设计的人都会用的一个工具,我们一般使用Visio来画系统结构图、关键流程图、系统部署结构图等。MicroSoft Visio也提供了UML的功能,可以用它来画用例图、类图、状态图,时序图等,但一般这个功能很少使用。至少我基本上不用。

    MindManagerhttp://www.mindjet.com )是一个非常好用的工具,我们用来描述我们的思维,很多人都不喜欢通过软件来描述,而是通过一张纸,然后在上面进行涂鸦,接着跟客户或团队进行思维沟通。MindManager很好地解决了这个问题。MindManager跟Office结合得非常完美,可以生成Word、Excel、PDF等文件。这个工具是我一直在使用的一个软件,非常好用。最新版本为7,大家有兴趣可以下载一个试用一下,也可以在网搜搜索一些“特别”版本。

二、系统设计阶段:
第一、系统设计工具
    主流的系统设计工具有大家非常熟悉的Rose2003,不过,现在已经不叫Rose了,现在IBM最新的设计工具是RSA(Ration Software Architect),Borland Together,SyBase PowerDesinger,MicroSoft Visio,对于开源的系统设计工具也有很多,比如ArgoUML、DBDesigner等等。

    RSAhttp://www.ibm.com ):IBM最新的设计工具,它是一个基于Eclipse平台的一个工具,对于你使用RSA,那也许你会将你的整个团队的工具都采用IBM的整套解决方案,使用RequisitePro来进行需求管理、使用RSA来进行建模、使用ClearCase来进行配置管理、使用ClearQuest来进行缺陷跟踪、使用RFT(Rational Functional Tester)来进行测试……RSA有一个最大的优点,那就是跟Word结合得非常好。这一点可以肯定。

    Togetherhttp://www.borland.com ):Borland公司的NB的设计工具,Together 2006版本也是一个基于Eclipse平台的软件,功能也是非常强大,其所见所得的功能,是我非常喜欢它的一个原因。还有一个原因就是基于Eclipse平台,这个可以跟我的开发工具很完美地整合在一起。不过,整合要注意一个问题,那就是Eclipse兼容性问题,这一点是非常烦人的。

    PowerDesignerhttp://www.sybase.com ): PowerDesigner是“一站式”建模与设计解决方案,物理数据模型的数据库平台无关性,所见即所得,反向工程,报表生成等等功能,使得它成为数据库设计人员心目中最好的产品,它的易用性深深地吸引了我!特别它的Repository模型库的功能,更让我们实现了模型设计的版本控制。最新的PowerDesigner,使得我觉得它是一件艺术品。做设计的人员一般会使用PowerDesigner来进行数据库物理模型设计,它是我心目中的首选工具。之前曾经对比过RSA、Together、ERWin的数据库模型设置工具,最终我还是更加喜欢使用PowerDesigner,也许,我的操作习惯已经被PowerDesigner腐蚀。

第二、开发的技术框架
    技术框架的选择是非常关键,一个好的技术框架,可以让我们的开发更加快速、团队的分工更加合理、系统能够支持多种数据库平台、我们的维护更加方便。

    Web前端MVC框架是Struts 2。Struts 2可以说是Struts穿上了WebWork的外衣,其内核大部分都是采用了WebWork的技术,并且基于AOP的设计思想,让我们在软件设计上的能够更加多地体现“高内聚,低耦合”的设计思想。

    J2EE框架是Spring,作为一个开源的J2EE框架,虽然它没有太多的新技术点,但它的整合性,拿得我们的开发更加简单,IOC、AOP、事务处理、开源框架的整合支持等等,使得作为一个J2EE框架的首选。

    持久层框架是Hibernate,作为一个开源的项目,我想,没有一个开源项目的社区能够你Hibernate一样,丰富的文档,活跃的社区,基于Hibernate的开发团队的庞大,使得它作为持久层框架的首先。基于 Hibernate,我们可以开发出数据库平台无关性的产品。但是,Hibernate也有自身的问题,假如使用不当,也许会有所失控,一旦失控,它所带来的,就是性能问题。对于最新的Hibernate3,存储过程的支持,外部SQL的定制,很好地解决了这个问题。但在关联关系上,使用还是要小心为好。

    页面框架,可以多考虑使用DIV技术、JSTL标签库、Struts 2标签库、DWR、AJAX、XML+XSLT等技术来让我们页面更好维护,使用OSCache缓存技术来提高我们页面的访问速度。

第三、开发规范的定制
    文件命名规范、数据库设计规范、编码规范、团队协作规定等等一些规范性的东西,需要在系统开发前就规定好,并且做相应的培训。QA也要做好监督的作用,定期做评审工作,对已发生的问题及可能出现的问题,及早发现,及早处理。

第四、开发工具的选择
    团队一定要选择同样的开发工具,开发工具相同,软件版本相同。为什么要这样子做,其实假如你作为一个Team Leader,你会在管理你的团队的时候发现很多问题,而解决这个问题,那在项目编码前,就把什么东西都规定好,以免其中发生问题,影响整个团队的开发速度。开发工具的选择也是非常重要的,目前企业用得比较多的开发工具有:Eclipse、Jbuilder、NetBeans、IDEA。

    Jbuilder:最新的Jbuilder版本是2007,2007版基本上可以算是重新开发的版本,因为它是基于Eclipse之上的。我算是Borland公司最为忠实的Fans啦,从Jbuilder6,到Jbuilder7,再到Jbuilder8,再到Jbuilder9、Jbuilder X,Jbuilder 2005,Jbuilder 2006,我经常跟我学生说,对于Jbuilder,相信没有人比我更熟悉他了,做Java开发接近6年时间,超过4年的时间,每天都都在使用的工具,Jbuilder见证了我的长成。使用过Jbuilder的人很多人知道一点,就是Jbuilder的盗版问题,安装完Jbuilder之后,假如你一个不小心,没有安装防火墙,那Jbuilder会不时通过8888端口向Borland总部发送一些你的计算机信息,这个是一种非常可怕的“木马”,什么是“木马”?这个就是!这种情况自从Jbuilder X以后就一直有。假如你不怕Borland公司的人跟工商局过来查你公司的软件的话,那选择Jbuilder是一个不错的选择。作为Java IDE开发平台的老大,Jbuilder在企业应用开发是非常有优势的,特别是开发EJB跟WebService,偶只能用一个句来形容,那就是牛。Jbuilder 2007,王者归来,相信对于很多Borland的Fans,还是非常喜欢并乐意去尝试的,不过,价格还是会让很多公司都受不了、速度会让很多程序员也受不了。我的Jbuilder的缘分到2006就基本上已经结束了。现在我的开发环境基本上都是Eclipse。

    Eclipse:IBM捐出来的好东西,发展挺快的,现在已经到了Eclipse3.3,非常好用的一个工具。但Eclipse只是一个基础平台,假如你需要其他的功能,那你需要下载相关的插件进行扩展,下载的插件要注意一下跟Eclipse平台的兼容性问题。Eclipse+MyEclipsehttp://www.myeclipseide.com )是个是很多WEB开发人员都是在采用的一个整合工具,但MyEclipse要钱,如果公司愿意为此支付29.9美元的话,那它是一个非常好的选择;比MyEclipse更上一个档次的还有Exadelhttp://www.exadel.com/web/portal/home ),不过,价格贵得离谱,因为它本身就是一家咨询服务公司做出来,主要还是靠咨询服务,培训挣钱,并且,运行时的不稳定,也让我放弃了选择这个插件作为我的开发工具,虽然这个工具真的是很强大。Eclipse+WTPhttp://www.eclipse.org )也是一个非常好的免费的开发工具,从eclipse官方网站上可以下载WTP跟Eclipse整合在一起的工具,现在教学基本上用这个。Lombozhttp://lomboz.objectweb.org/ )也是一个非常好用的免费J2EE插件,学生用的很多,因为好像有不少书都是用这个进行教学的。通过插件来的扩展本来是一件好事,但当它的版本问题?兼容性问题?安全性问题?语言问题?出现的时候,你就会骂着,为什么不提供一站式开发平台呢?如果你下载了语言包,你会发现,有些地方是中文的,有些地方是英文的,极其丑陋!也许,Eclipse作为一个基础平台,它确实是太基础了。但现在,我们也可以下载一些All-In-One版本的Eclipse,但个人感觉还是不够,很多功能,我们还需要去找插件来进行扩展。也许,Eclipse的决策者认为,作为基础平台,肯定是越简单越好,需要什么就加什么,这样,资源占用会更少。正如东方标准最咨深的平面老师曾宇飞讲过一句话:你会去麦当劳点酸菜鱼吃吗?

    NetBeans:作为Sun公司出品的开发工具,功能一样也是非常强大,不管你是做应用程序开发还是做应用系统开发,NetBeans都是一个不错的选择。NetBeans也跟Eclispe一样,也是一个基础平台,但这个基础平台做得比Eclipse强大很多,基本上你下载一个NetBeans就可以开发应用程序或J2EE应用系统了。并且,NetBeans的中文支持非常好,基本上一个新版本出来,就已经有中文版、英文版跟日语版了。看来,NetBeans的决策者还是比较看好这些人群的。NetBeans的Mobile插件开发J2ME是最快最好用的,至少我个人这么认为。开发J2ME应用产品,我首选的就是NetBeans。目前NetBeans已经发展到6.0的版本了,界面非常华丽,有兴趣的朋友可以下载一个玩一下。NetBeans的下载地址是:http://www.netbeans.org

    IDEA:对于IDEA的评价,我只能用六个字来形容,那就是:实用的艺术品。它非常好用,界面非常华丽,相当如果你是一个女性的项目经理或技术牛人,你会喜欢上这件艺术器的。IDEA开发应用程序非常强大,这一点绝对可以肯定。官方提供的插件也非常丰富,当你需要那一方面的功能,基本上都可以找得到,找插件,你只需要在官方插件库里面去找就可以了,并且自动安装,自动更新。作为2003年拿到JavaWorld大将的一个作品,相信,它可以带来很多IDEA的创新。它是属于商业化的工具,价格也只有499美元,而个人买也就249美元,如果你愿意牺牲某些功能,那你完全可以下载一个免费的版本。价格方面,个人觉得完全对得起这件艺术品价值。有兴趣的话可以下载一个试用版玩一下:http://www.jetbrains.com/idea ,小声地说,上一下baidu,插件一下,其实你可以找到很多注册号。

    Ant是apache的一个开源项目,可以从Ant官方网站上下载一个最新的版本:http://ant.apache.com 。虽然该项目虽然现在发展变得非常缓慢,但可以非常肯定地讲,它是一个好东西。我们可以使用ant来对我们整个工程进行编译,打包,单元测试,部署等等,基本上你想得到的东西,Ant可以帮你做得到。Maven(http://maven.apache.com )是一人比Ant还要强大的工具,现在大有Maven将会代替Ant的趋势,Maven也是项目经理要关注的一个技术点。基本上现在主流的开发工具都提供共了对Ant的支持,有些甚至是依赖,比如:NetBeans,你在NetBeans当中创建一个新的工程,那系统会自动地创建一个ant的运行脚本程序。对于你进行编译、打包、发布,那完全都是依赖于这个ant脚本。我们可以使用Ant来开发一个DailyBuild(微软叫每日产品生成,XP叫持久集成)的流程,来提高我们整个团队的软件开发质量。Ant的使用非常简单,多看手册,多花点心思,那你会做得更好。

三、开发阶段
第一、配置管理工具

代码管理工具有很多,现在公司用得比较多的代码管理工具有CVSVSSSVN
对于一个开发团队只有2-5个人,并且这两三个人是同一间办公室里,那使用VSS是一个非常不错的选择,个人觉得他小团队的管理方面非常好用。个人觉得VSS唯一的缺点就是一个文件当被一个人锁定,那其他人就没有办法进行修改了,当一个文件为多个人所共用且开发团队人数较多时,这种问题将会显示非常严重。VSS客户端跟服务器你都可以从Visio Studio里面找到。

Eclipse的VSS客户端插件:http://vssplugin.sourceforge.net/

    对于一个开发团队有超过5个人,那此如选择CVS或SVN将是一个更好的选择,并且,假如你的团队是分散的,可能不在一间办公室或者根本不在同一个城市,那使用CVS或SVN是一个非常更想的选择。CVS的服务器一般是使用CVSNT或CVSServer。

CVSServer
Linux for X86http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-linux/RPMS/i386/
Window for X86http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-woe/
CVSNThttp://www.cvsnt.org/
CVSClient
    WinCVShttp://www.wincvs.org
    TortoiseCVShttp://www.tortoisecvs.org/
    JBuilderEclipseNetBeansIDEA集成的CVS客户端

    作为版本管理工具,CVS出现至今,已经有二十个年头,可以说他已经走到了尽头,但可以肯定,它将继续存在着。SVN是作为CVS的代替产品而出现的。现在很多开源组织,都慢慢地转到SVN上,比如Apache跟SourceForge。SVN有着比CVS更强大的功能,比如,它可记录目录的更改,它的性能比CVS会快很多等等。目前SVN慢慢地被企业所接受,但个人觉得其Eclipse的客户端的稳定性还有待提高,也许这个跟Eclipse的版本兼容性有一定关系。但这些不稳定性,让我现在对这个产品的使用还继续停留在试用的阶段。

SVNServerhttp://subversion.tigris.org/
SVNClient
    TortoiseSVN http://tortoisesvn.net/
    Eclipse插件:http://subclipse.tigris.org/
目前SVN插件支持包括Eclipse、Jdeveloper、NetBeans等开发工具。

第二、知识库管理工具
团队每一个人在开发的时候都会发现一些问题,最终,有些问题可能没有办法解决,有些问题可以解决。一般情况,大部分问题经过团队成员的共同努力,都是可以解决的,那解决问题的方法,解决问题的步骤,这些都应该形成知识。作为一个团队的Leader,我们必须重视这些知识,因为,这些知识非常有用,它对于一些新手或没有遇到此类问题的同事,能够提供相应的帮助。

    Confluencehttp://www.atlassian.com/software/confluence ),跟JIRA来自同一家公司的产品,它跟JIRA可以整合得非常好。我们可以通过JIRA的ISSUE,将该ISSUE上升为一个知识。假如你是使用JIRA来进行项目管理跟缺陷管理,那使用Confluence是一个最佳选择。

    PHPBBhttp://www.phpbb.com ),论坛其实也是一个非常好的知识库管理工具,当某一个工程师遇到一些疑难杂症的时候,最终,通过自己的努力或团队其他同事的努力,终于解决问题了。那作为Leader的你,应该鼓励他们将这些知识,写一些文章,然后发布在公司自己的BBS上。供大家参考及讨论。这个是一种很好的方法。记得我以前,我在网上看到一些有用的信息,我就把它保存在我本机的PHPBB上。只可怜,后来电脑被人偷了。贼郁闷。

四、软件测试阶段
第一、缺陷管理工具
    软件你不能保证它永远不会错,只是,有些错误你暂时还没有发现而已;有些错误需要在某些特定的环境下它才会发生。就像Windows,时不时会有一些系统更新文件要求更新。可能这些更新不是错误,只是一些系统安全方面的隐患。这些都可以算是软件系统的缺陷。那这些缺陷我们应该怎么进行管理?怎么进行跟踪呢?现在缺陷管理用得比较多的有两个:第一个是开源的bugzilla,另一个是商业的JIRA。

    Bugzillahttp://www.bugzilla.org ),作为开源界缺陷管理系统的鼻祖,它发展到现在已从98年到现在经有10的时间了。它的开发语言是Perl,这使得它的安装变得很麻烦,Bugzilla可以安装在Windows、Linux、Unix等操作系统上。现在的Eclipse也提供了对它的支持,我们可以在Eclispe平台上,找到应用系统的BUG,功能做得非常强大。如果安装能更加轻松一点,或者提供一个All-In-One版本,那会更好!

    JIRA,作为商为上化的缺陷管理系统,JIRA的价格对得起它的功能。JIRA不只是一个缺陷管理系统,它更是一个集项目管理、缺陷管理、统计分析为一身的工具。这个工具我一直在使用,只是使用一些“特别”版本而已。

第二、软件性能监测工具
    Jprofilerhttp://www.ej-technologies.com )是一个非常好的性能监测工具,使用这个工具,你可以快速发现系统那些模块出现性能瓶颈或算法导致的性能问题;它还可以分析内存泄漏的问题。这个工具也提供了相应的Eclipse插件,让你开发更加快速方便。它支持主流的服务器。

    Borland Optimizeit Suitehttp://www.borland.com )也是一个非常好的性能监测工具,它跟Borland产品整合得非常好。不过,运行这个工具,你最好准备一下,最好有2G内存,否则,本来系统好好的,一运行起来,你机器反而死掉了。

第三、软件性能测试工具
    Ant+Windows计划任务创建公司的DailyBuild自动化测试流程,这个是以前做的一个测试流程。使用这种测试流程,无非一个目的,就是提高公司的软件质量。

    Jmeterhttp://jakarta.apache.org/jmeter ),这个工具是apache出品的,作为apache忠实的Fans,我对Jmeter也是很喜欢,使用Jmeter,你可以摸似多用户环境,对应用系统进行测试,测试整个应用系统能够承受的最大并发量。

    LoadRunnerhttp://www.hp.com ),假如你不知道这个软件,那你肯定做不了测试工程师,这个是最专业的一个软件性能测试工具,它可以模似上千万个用户量来进行压力测试,检测系统能够承受的最大并发量。这个软件我只用过几次,编写脚本,进行测试,使用来讲其实算是比较简单。

五、软件发布
    软件的发布我们会怎么去做呢?我们一般做法就是,将数据库脚本化,包括建表语句、初始化数据等,还有制作WAR文件或EAR文件。然后到客户那边,我们需要将数据库表及数据进行初始化,接着,将WAR或EAR文件发布到应用服务器上。这个也许是我们到客户现在发布经常在做的一件事情。那能不能做得更加简单呢?做法一般有两个,第一个就是使用Ant,编写一个初始化数据库跟发布应用程序模块的Ant脚本,然后到生产机上直接运行该脚本即可;第二个就是制作安装文件,一般用来制作安装文件的有IzPack,这个是用得最多的一个免费工具,你可以使用这个免费工具来制作安装程序。也许客户都习惯了安装程序的安装方式了,制作一个可执的安装程序,有助于提高软件产品化的档次。

六、软件维护阶段
第一、客户CASE跟踪管理工具
    客户CASE跟踪系统相信很多做CISCO公司金牌代理的人都会用过。我们必须在公司内部建立相应的CASE跟踪制度。当用户使用系统的时候,发现一些问题,那我们需要对这些问题进行录入并进行跟踪。像客户呼叫服务系统等等一些商业化的软件外面还是很多的,这些系统其实公司自己开发一个也是很快的。但必须要有。这个也是提高整个公司整体服务形象的一种态度。

暂时先写这些,以后再慢慢修改补充!
版权所有,欢迎转载,转载请标明转自http://www.suneca.com

  • Share/Bookmark