第一页 上页 17 18 19 20 21 22 23 24 25 26 下页 最后页 [ 显示模式: 摘要 | 列表 ]

Release date: in 2012, August 25

Usage of web servers broken down by ranking

This diagram shows the percentages of websites using various web servers broken down by ranking. Cross-technology reports only include technologies with more than 1% usage to ensure statistical significance of the results. See technologies overview for explanations on the methodologies used in the surveys.

How to read the diagram:
Apache is used by 64.9% of all the websites whose web server we know.
Apache is used by 55.2% of all the websites whose web server we know and that rank in the top 100.000.

原文地址:http://w3techs.com/technologies/cross/web_server/ranking

vim 批量替换

[不指定 2012/01/02 23:49 | by 刘新修 ]

使用vim批量替换多个文件中的

PHP 代码:
==============================================================================
*
26.3*    
改动多个文件

假定你有个变量名为 
"x_cnt" 而你要把他改为 "x_counter"
。这个变量在多个 C 文件都
被用到了。你需要在所有文件中作此改动。你得这么做。
   把所有相关文件放进参数列表
: >

    :
args *.
c
<
这个命令会找到所有的 C 文件并编辑其中的第一个。现在你可以对所有这些文件执行
置换命令
: >

    :
argdo %s/<x_cnt>/x_counter/ge 
update

命令 
":argdo" 
把另一个命令当作其参数。而后者将对参数列表内所有的文件执行。
   作为参数的替换命令 
"%s" 作用于所有文本行。它用 "\<x_cnt\>" 
来查找
"x_cnt"。 "\<" 和 "\>" 用来指定仅匹配那些完整的词,而不是 "px_cnt" 

"x_cnt2"

   替换命令的标记中包含 
"g",用以置换同一行文本内出现的所有的匹配词 "x_cnt"

标记 
"e" 用于避免因文件中找不到 "x_cnt" 而出现错误信息。否则 ":argdo" 
命令
就会在遇到第一个找不到 
"x_cnt" 
的文件时中断。
   字符 
"|" 分隔两条命令。后面的 "update" 
命令将那些有改动的文件存盘。如果
没有 
"x_cnt" 被改成 "x_counter"
,这个命令什么也不做。

还有一个 
":windo" 命令,用于在所有视窗内执行其参数所规定的命令。以及 
":bufdo" 
命令,对所有缓冲执行其参数所规定的命令。使用中要小心,因为你在缓冲列表中的文
件数量可能超过你能想像的。请用 
":buffers" 命令 (或 ":ls"
来检查缓冲列表。

============================================================================== 

2012年【元旦】

[不指定 2012/01/01 13:06 | by 刘新修 ]

2012元旦终于到来了,望去窗外默许一愿$

希望愿望可以在若干年后实现…… 2012-01-01 13:10

Vim设置字体和颜色主题
今天在Windows xp下面安装了gvim,最近决定好好学习Vim所以俺在Win和Ubuntu中都安装了.
gvim安装完成后默认的字体和主题颜色用起来感觉别别扭扭的,很不舒服,所以决定将其改
的好看一点,于是到网上搜罗了一把。
1、首先更改gvim的字体
   找到安装gvim的目录,一般默认安装的目录在C:\Program Files\Vim。找到_vimrc文件,
   打开该文件在文件末尾添加如下内容:
        if has("win32")
                set guifont=Courier_New:h10:cANSI
        endif
  将字体改成Courier_New。

2、更改gvim默认颜色主题
  同样是_vimrc文件,在该文件末尾添加如下内容:
  colorscheme  slate

简单吧,呵呵。刚开始学,很多我也还是一知半解的,希望这个对刚学Vim的有所帮助吧。
 

为了控制/操作/远程LINUX桌面,在本地WIN XP 下安装了VNC 客户端,即VNC Viewer 来实现跨平台连接远程桌面。

因为VNC 连接LINUX桌面,必须是用户登录状态。

也就是说必须保证GDM 是登录启动的状态,所以修改maste 自动登录GDM

====================================================

GDM的自动登录可以通过设置/etc/gdm/custom.conf文件。

在[daemon]这一段中加入如下内容,其他内容保留。注意AutomaticLoginTimedLogin后面跟的是你希望自动登录的用户名。

[daemon]

AutomaticLogin=master

GtkModulesList=gail:atk-bridge:/usr/lib/gtk-2.0/modules/libkeymouselistener:/usr/lib/gtk-2.0/modules/libdwellmouselistener

AddGtkModules=true

RemoteGreeter=/usr/libexec/gdmgreeter

AutomaticLoginEnable=true

TimedLoginEnable=true

TimedLogin=master

TimedLoginDelay=1


修改完后,可以使用init 3;init 5命令重新启动x使设置生效,而且它默认就会以sengi用户登录,如果你通过Ctrl+Alt +Backspace实现注销GNOME,它有会5s时间等待,但是,只要操作移动鼠标或操作键盘,默认时间会变成30s。

如果你默认的运行级别是3,当你init 5启动x时,它就会默认登录到sengi帐户。
 

http://at.liuxinxiu.com/2011/12/image/VNC-1.gifhttp://at.liuxinxiu.com/2011/12/image/VNC-2.gif

  set encoding=gbk     -------- 如果fileencodings 全部探测不到,则以该编码替换fileencoding 存盘,内部数据编码
  set termencoding=utf-8
  set fileencoding=utf-8  ----- 以该编码格式进行文件存盘
  set fileencodings=ucs-bom,utf-8,gbk,cp936,gb18030,big5,gb2312     ----- 自动探测文件编码格式,如果符合其中一种替换到fileencoding
  set langmenu=zh_CN.gbk   ------  设置整套窗口语言环境
  language messages zh_cn.gbk    ------  设置整套菜单语言环境

VIM 查看当前文件编码  :set fileencoding

VIM 设置当前文件编码  :set fileencoding=utf-8

=============== (转)详细分析 ======================================================

很惭愧,作为vim的忠实用户,自从2年多前从help里知道了:edit
++enc=xxx这个命令之后,我就没有去了解过vim的编码设定了。这些年来,我遇到编码出错,总是:edit
++enc=xxx。今天:help了一下encoding等,终于搞清楚了相关的各个变量的作用和关系。
简单的说,有三个设置。(我下面基本以中文环境来作为说明)


1) 在.vimrc或者_vimrc里加入set
fileencodings=utf-8,gb2312,gbk,gb18030,big5这句就基本OK了。vim会依次使用这些编码对文件进行编码的猜测。
2) 如果还是不行,那么在打开文件之后,用:edit
++enc=gbk这个命令强制使用某个编码。
3) 如果依然不行,请检查你的$LANG环境变量。


下面是详细的说明。
vim编码主要涉及三个变量。
encoding
vim的内部编码,包括内存数据的编码,vim配置文件的编码。encoding取自变量$LANG,如果$LANG为空,则取latin1。这个编码应该和你的终端编码保持一致的。
fileencoding
文件的编码。vim在加载文件的时候,会把这个编码转换成encoding参数的编码。同样的,保存文件的时候,内存的编码会由encoding转变为fileencoding。
需要注意的是,在vimrc里设置这个参数,不会起作用。因为打开一个文件的时候,fileencodings或者encoding会覆盖fileencoding。关于这个,可以看下面提到的打开文件流程。
fileencodings=utf-8,gbk,gb2312
vim在加载一个文件的时候,会依次尝试使用fileencodings里的编码作为fileencoding。如果全部失败,那么vim会使用encoding作为fileencoding。
另外,如果vim使用了错误的编码,可以使用edit
++enc=gbk这个命令。意思是,重新读取文件,并强制使用gbk作为fileencoding。这时候会忽略filencodings。
以下是一些vim操作的内部流程
打开文件
首先从文件读入数据到内存,然后从fileencodings里依次使用各个编码来尝试转换为encoding。如果有一个成功,则中止尝试。如果找不到,则取encoding作为fileencoding。也就是说,这里有一个从fileencoding转换为encoding的过程。
保存文件


把内存的数据,从encoding,转换为fileencoding,然后写入文件。
其实在这里最容易让人搞不清楚的就是encoding和fileencoding的区别。因为在大多数GUI特别是WINDOWS平台的编辑器里,encoding都是不需要设置的。通常这个encoding都是默认和GUI环境的编码保持一致。encoding是数据在内存里的存储编码,而fileencoding才是文件的编码。
 

由WINDOWS XP 下新建TXT文件,编码默认为WIN下:ANSI 文件名称为中文,PUT 上传至linux 下,并且打开apache列表索引,英文正常,中文目录及其文件夹名称显示乱码。
分析:linux 下文件系统默认编码默认为UTF-8 而WIN下默认为GB2312/GBK 初始状态apache生成的列表索引并无指定任何编码,导致出现乱码。

http://at.liuxinxiu.com/2011/12/image/apache-IndexOptions-Charset-1.gif
解决方法:设置apache 目录列表索引模式,并设置字符集为utf-8
Options Indexes
IndexOptions Charset=UTF-8

参数"Options Indexes"表示启用目录浏览,"IndexOptions Charset=UTF-8"设置字符集,以消除中文乱码!

http://at.liuxinxiu.com/2011/12/image/apache-IndexOptions-Charset-2.gif

============================================================================

假设是WIN XP 下上传:说明.txt -->到apache for linux 下,在目录索引点击查看TXT内文本内容显示乱码,则要转变文件本身保存字符集所需用的编码格式。即文件自身编码于linux文件系统编码不一至@

解决方法可使用iconv转换文件编码:http://liuxinxiu.com/iconv/

[转]浅析大型网站的架构

[不指定 2011/12/03 21:07 | by 刘新修 ]

一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站 对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用 的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站 所能比拟的。

大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、 高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。

上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说 我的一些经验。

1、HTML静态化

其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可 能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现, 于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系 统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不 可少的。

除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖 子、文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩就是使用了这样的策略,网易社区等也是如此。

同时,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现,比如论坛 中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这 部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。

2、图片服务器分离

大家知道,对于Web 服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他 们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用 服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule, 保证更高的系统消耗和执行效率。

3、数据库集群和库表散列

大型网站都有复杂的应用,这些应用必须使用数据库,那么在 面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列。

在 数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似 的方案,您使用了什么样的DB,就参考相应的解决方案来实施即可。

上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,库表散列是 常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页 面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了 这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便 能让系统随时增加一台低成本的数据库进来补充系统性能。

4、缓存

缓存一词搞技术的都接触过,很多地方用到缓存。网站 架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。

架构方面的缓存,对Apache比 较熟悉的人都能知道Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能 力。

网站程序开发方面的缓存,Linux上提供的MemoryCache是常用的缓存接口,可以在web开发中使用,比如用Java开 发的时候就可以调用MemoryCache对一些数据进行缓存和通讯共享,一些大型社区使用了这样的架构。另外,在使用web语言开发的时候,各种语言基 本都有自己的缓存模块和方法,PHP有Pear的Cache模块,Java就更多了,.net不是很熟悉,相信也肯定有。

5、镜像

镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和 EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的现 成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。

6、负载均衡

负载均 衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。

负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我 个人接触过一些解决方法,其中有两个架构可以给大家做参考。

硬件四层交换

第四层交换使用第三层和第四层信息包的报头 信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的 协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端 TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。

在硬件四层交换产品领 域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当 初接近2000台服务器使用了三四台Alteon就搞定了。

软件四层交换

大家知道了硬件四层交换机的原理后,基于 OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。但是满足一定量的压力还是游刃有余的,有人说软件实现方式其 实更灵活,处理能力完全看你配置的熟悉能力。

软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是 LinuxVirtualServer,他提供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP配 置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。

一个典型的使用负载均衡的策略就是,在软件或者硬件四层交 换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常 容易。这样的架构我准备空了专门详细整理一下和大家探讨。

对于大型网站来说,前面提到的每个方法可能都会被同时使用到,我这里介绍得比 较浅显,具体实现过程中很多细节还需要大家慢慢熟悉和体会,有时一个很小的squid参数或者apache参数设置,对于系统性能的影响就会很大,希望大 家一起讨论,达到抛砖引玉之效。

不建议使用物理机器作为代理服务器,在物理机器中VM内新建XP机器。并接入无线上网卡,同时使用CCProxy软件进行相关代理;

插入无线网卡后,虚拟机会自动识别出天翼安装程序;

打开:CCProxy 软件进行代理设置;

勾选自动检测本地的内外IP;

二级代理选项卡,选择ALL 选择(启用二级代理)勾选去掉;

网络选项卡,服务器绑定IP(添加无线上网卡外网IP);

=======================================================

以下是第三方机器连接到外网网络相关设置(HTTP QQ)

=======================================================

设置Internet 属性----链接----局域网(使用代理上网);

设置QQ使用代理上网方式;

一般情况下配置开机自动启动Nginx + PHP + Mysql

vi /etc/rc.local

把下面的内容增加到exit 0的上面

/usr/local/server/mysql/mysql start
/usr/local/server/php/sbin/php-fpm start
/usr/local/servernginx/sbin/nginx

最近VPS频繁访问故障,无法正常访问,问题关键是/etc/rc.local 无法正常启动服务!

其他解决方案如下:

touch /etc/init.d/lnmp.local
vi /etc/init.d/lnmp.local

====================================================

#!/bin/sh

/usr/local/server/mysql/mysql start
/usr/local/server/php/sbin/php-fpm start
/usr/local/servernginx/sbin/nginx

====================================================

//给予文件可执行权限
chmod +x /etc/init.d/lnmp.local

//设置启动级别(必须)
update-rc.d lnmp.local start 99 2 3 4 5 . stop 01 0 1 6 .

如需删除脚本的启动级别可进行如下操作

update-rc.d -f rc.local remove

 

第一页 上页 17 18 19 20 21 22 23 24 25 26 下页 最后页 [ 显示模式: 摘要 | 列表 ]