2009年4月19日星期日

i3原创: php 常用数组操作函数

1 . array_values() 取数组值:
例子:
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
?>

The above example will output:

Array
(
[0] => XL
[1] => gold
)

--------------------------
2. array_keys() 取数组键值
例子:
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
he above example will output:

Array
(
[0] => 0
[1] => color
)
Array
(
[0] => 0
[1] => 3
[2] => 4
)






-------------------------------------------
i3server
i3server
www.86-00.com

2009年4月18日星期六

i3原创: Drupal 自定义block 区块 步骤

自定义模块中定义 block 区块

1. 在 hook_block() 函数中 的 $op='list' 中 定义 区块名称如:
case 'list':
$blocks[0]['info'] = t('首页新注册企业列表');
$blocks[1]['info'] = t('首页推介企业列表')
return $blocks;

2. 在 在 hook_block() 函数中 定义 区块显示内容:
case 'view':
switch($delta){
case 0:
$blocks['subject'] = t('最新加入企业');
$blocks['content'] = $content;
break;
case 5:
$blocks['subject'] = t('黄页搜索');
$blocks['content'] = drupal_get_form('i3producer_producerlist_search', '', '');
break;

case 1:
$blocks['content'] = _i3producer_index_list();
break;
}
return $blocks;

3. 区块的显示内容,可以定义简单内容,也可以建函数显示。

4. 可以在后台管理中的区块中进行显示设置

-------------------------------------------
i3server
i3server
www.86-00.com

i3原创: Drupal 自定义模块显示样式步骤

新建模块后,自定义模块显示样式步骤:

1. 在 hook_menu 中定义 样式菜单路径.

2. 定义 菜单要运行的 函数

3. 中 hook_theme 定义运行函数的 样式函数名称

4. 新建自定义的样式函数。

5. 清除缓存,即可生效


-------------------------------------------
i3server
i3server
www.86-00.com

2009年4月16日星期四

i3原创: Drupal 的 views 模块常见问题解答

将在 Drupal 遇到的一些 views 模块的一些问题汇总一下:

1. 自定义 views 样式文件无生效:
问题: 已将 views 的样式文件,如: views-view.tpl.php 复制样式目录中,并修改。刷新网页无法生效。
解决: 由于样式文件会进行缓存,所以新复制的 views 样式,要清空缓存后才可以生效。方法在 /admin/settings/performance 性能页中点 "清除缓存数据" 即可


-------------------------------------------
i3server
i3server
www.86-00.com

i3原创: 用 Druapl 的 String Overrides 模块 站点信息 多语言问题

在建 深圳荔枝网 的多语言版本上,内容,菜单等都可以有多语言选择,但是 站点信息 支没有相应的语言选择。 这时可以通过 String Overrides 模块 ,方法:

String Overrides 模块 提供您一个快速且容易的方式来重写网站内的字串。
特性

*简单的替换任何t()内的字串。
*比Locale模组效能更高。
*支持任何语言。
*能够导入/导出*.po ,因而能移入/移出到Locale模组。
*点击"Add row"按扭以新增额外的文字框。

安装说明

1.解压缩到您的sites/all/modules目录下
2.在管理admin >网站建置build >模组modules启用模组
3.到管理admin >网站设定settings > stringoverrides然后填入您想要替换的字串
4.OK可以了

对于站点信息,要在模板 page.tpl.php 中的 $site_name 改为 t($site_name) ;

而网页头 $head_title 也需要加 t() 函数, 改的方法有多种,可以改系统文件,这是最直接。也可以改 page.tpl.php 但要加php代码。

这在 page.tpl.php 在 print $head_title; 加入:

$arg_head_title=explode(' | ',$head_title);
foreach ($arg_head_title as $key => $key_title) {
$arg_head_title[$key] = t($key_title);
}
$head_title = implode(' | ', $arg_head_title);
print $head_title;

这样只要在 String Overrides 输入要替换的文件却可 站点信息多语言了。




-------------------------------------------
By i3server 原创
i3server
www.86-00.com

评: i18n的加强模块

i18n对menu的多语言支持个人感觉不是很好,设置起来相当麻烦,作为i18n的加强版模块,你可以考虑用translation table .它可以快速设置taxonomies和menus的UI,很好地弥补了i18n的不足.

另外,设置多语言也可以考虑用Translation Access ,它提供了对节点的访问控制功能。Menu Translation ,可是对菜单多语言的加强 Cosistent Language Interface ,提供一个可以切换多语言的block.

如果你想更多了解i18n多语言的功能,请参考手册 :http://drupal.org/node/133977

-------------------------------------------
i3server
i3server
www.86-00.com

i3原创: 解决 Drupal i18n 英文不是默认语言时无效问题

在用Drupal 制作多语言时,默认语言是 简体,这时英文版的菜单连接点击时都出去到简体中,

在英文版的链接加上 en/ 还是出错。

开始时还觉的是否一定要英文版是默认语言才可以制作多言语。在网上搜索,得到处理原来是很得单,方法:

在admin/settings/language/edit/en页面的路径前缀的输入框中输入“en”,就可以了。默认安装时我们这里英文版是空白的,所以加上 en 就可以了。如果觉的 zh-han 太长,想将中文的简称改为 cn 可以在 /admin/settings/language/edit/zh-hans 页面的路径前缀的输入框中输入“cn” 即可

-------------------------------------------
i3server
i3server
www.86-00.com

2009年4月15日星期三

i3: 中国分类信息网站

在中国,目前分类信息网站有
赶集网:http://www.ganji.com
58同城:http://www.58.com
爱帮: :http://www.aibang.com
口碑网::http://www.koubei.com

面对以上大型的分类信息网站, i3所创立的 http://www.86-00.com 城市分类信息 之前一直以企业名录信息为主, 对于分类信息与用户的交互信息等没有太多的功能。

http://www.86-00.com 网站用 Drupal 制作后, 分类信息频道将会成为重点,并同时推出多国语言版本与手机版,敬请留意

-------------------------------------------
i3server
i3server
www.86-00.com

i3: 外国分类信息网站网址

外国出名排名较前的 分类信息网站网址

http://newyork.craigslist.org/ 美国 十多年的发展
http://www.Oodle.com/
http://www.marktplaats.nl/ 荷兰
http://dmoz.org/

-------------------------------------------
i3server
i3server
www.86-00.com

评: 网页的布局和配色技巧

有一些关于“我”的事情大多数人可能都不了解:虽然我做设计已经5年了,但我第一个工作是 Flash 工程师,大部分时间都工作在 ActionScript 上。事实上,我的所有教育背景都有关电脑程序设计,而且从来没有专门学习过设计。
尽管如此,有些时候我确定我喜欢设计更多,特别是网页设计。所以我既不是权威的程序员,也不是优秀的艺术家。我只是一个喜欢干净、专业的外观设计,对网页设计略知一二的家伙而已。
我知道很多人很奇怪:一个根本没学过设计的家伙怎么能制作出美观的网站呢?是的,我认为可以做到。怎么做?就用常识!以下是8大有关干净网页设计常识:

1. 布局


如果你不仅想当一个优秀的设计师,还想当一个有效率的设计师,你应该学学如何化繁为简。要学会站在前人的肩膀上。只需使用标准的网页布局就可以了,限幅和执行都会简单得多。

2. 配色方案


可别两眼一抹黑就埋头开始设计。制作一个协调的网页,很重要的是要先决定配色方案。如果你已经有了一个品牌规划(或者至少一个 logo),问题就简单多了。或者也可以使用在线配色工具。建议去 Kuler (来自Adobe Labs)看看。

3. 透明度


是的,没错。透明度是你的朋友。透明度可以帮助你减淡或加深颜色。我总是喜欢用 Alpha 通道处理纯色或选区,以达到我想要的效果。设置透明度也可以丰富你的配色方案。只需要添加一个黑色或白色图层,然后调整图层透明度就可以了。

4. 对比度


这里没什么要点。只要记住确认文字可以清晰显示就可以了。不是每个人都有那么好的眼力,所以要保证内容的易读性。要不然,你的跳出率就会倍增。当然有的时候也要使用较低的对比度,但是打死我也不信红底黑字很美观。

5. 版面与字体


颜色方面,如果你已经有了品牌规划就很简单。但如果没有任何规划或没制订任何标准,问题就大了。如果你还不确定使用什么字体,千万别用那些稀奇古怪的字体。版面和字体可能是建立品牌的最重要的外在因素。找资源的话可以去“ I Love Tipography”:一个专门讨论版面与字体的博客。

6. 渐变


你是否见过那些明显的渐变,从非常暗到非常亮?我恨那些渐变!嗯...当然,也有些设计能很好地利用渐变,但是大多数情况下它们都很糟糕。如果你想用渐变 的话,尽量使用接近的两种颜色。否则,色调很难与文字配合。其实你只要安排好了版面和字体,渐变不渐变就不重要了。以上只是个人的一点拙见。

7. 图片


既然有那么多高质量图片资源,使用低质的图片就是一种耻辱。我个人最喜欢的是 iStockphotoFlickr 的创作共用(首先要读一读版权)。添加图片的时候,你应该谨慎选择文件格式,以保证高质量与高速度并存。

8. 华美的网页


我之所以写这一项,是因为我希望所有人都忘掉了“充斥着GIF、蹩脚的美工图案和满目的阴影”疯狂愚蠢的90年代。否则,我要告诉你两个词:Google+Search">CSS 画廊。好好看看,学点有用的!

9. 好吧,我说谎了!

我知道以上所有内容对于经验丰富的设计师来说都是最基础的,我并不是指望通过分享智慧来获得赞美。这篇文章仅仅面向刚刚接触网页设计的人,提供一些建议,帮助他们制作干净、专业的网站。
我的最后一个建议也许是最重要的一个建议:如果你正处于某种尴尬境地,不知该选择设计工作还是编程工作,不管怎样选择你最热爱的。如果你根本不热爱设计,别选择设计工作,因为所有人都在设计。网络上充斥着无聊蹩脚的设计。当一个牛逼的程序员可比当一个平庸的设计师好多了。

原文标题:8 Common Sense Tips for Creating Clean Designs
原文地址:http://rubiqube.com/8-common-sense-tips-for-creating-clean-designs/
作者:Adrian Diaconescu
译文:http://zanbu.blogbus.com/logs/30138513.html


-------------------------------------------
i3server
i3server
www.86-00.com

评: 如何用drupal创建基本的wiki系统

Build a Wiki System With Drupal
作者: Raincity Studios---- zamir
Wiki是什么?

Wiki概念发明人沃德·坎宁安(Ward Cunningham)为Wiki下了定义:一群相互连接并可自由扩展的网页、一套用来储存与修改信息的超文字系统,所有的网页储存在一套数据库中,任何人透过具有表单功能的浏览器用户程序,皆可轻易加以编辑。
Wiki的特点
1.使用方便,维护快捷:快速创建、存取、更改超文本页面(这也是为什幺叫作“wiki wiki”的原因)。格式简单:用简单的格式标记来取代 HTML 的复杂格式标记。(类似所见即所得的风格)链接方便:通过简单标记,直接以关键字名来建立链接(页面、外部连接、图像等)。命名平易:关键字名就是页面名 称,并且被置于一个单层、平直的名空间中。
2.有组织
自组织的:同页面的内容一样,整个超文本的组织结构也是可以修改、演化的。可汇聚的:系统内多个内容重复的页面可以被汇聚于其中的某个,相应的链接结构也随之改变。
3.可增长
可增长:页面的链接目标可以尚未存在,通过点击链接,我们可以创建这些页面,从而使系统得到增长。修订历史:记录页面的修订历史,页面的各个版本都可以被获取。
4.开放性
开放的:社群的成员可以任意创建、修改、删除页面。可观察:系统内页面的变动可以被访问者观察到。
需要的模块
1.Freelinking (http://drupal.org/project/freelinking) Provides the ability to easilylink between pages
2.Markdown filter (http://drupal.org/project/markdown) Provides an easy, human-readable way to enter HTML formatting
3.Diff (http://drupal.org/project/diff)Shows color-coded list of changes between two revisions of content
4.Pathauto (http://drupal.org/project/pathauto)Automatically creates clean, search-engine-friendly URLs
5.Token (http://drupal.org/project/token)A utility module to provide variables that are later replaced with dynamic bits,such as [user-name]
6.CCK (http://drupal.org/project/cck)
第一步:启用以下模块

diff
markdown
pathauto
freelinking
token
content
content permissions

第二步:添加一个新的内容类型

Name: "Wiki page"
Type: wiki
Description: "A page that any authenticated user may editand view changes."
Workflow settings: in "Default options": uncheck "Promoted to front page", check "Create new revision"
第三步:去掉作者信息的显示

Go to admin/build/themes/settings
第四步:权限设置
Set the permissions "create wiki content" and "edit anywiki content" for "authenticated user"
Set the permissions "revert revisions" and "view revisions"for "authenticated user"
第五步:添加wiki输入格式
Name: "Wiki"
Filter: check "Markdown" and "freelinking filter", uncheck
others

第六步:输入格式设置
Go to admin/settings/filters, set the "Wiki" filter to the Default format.
第七步:freelinking设置
Go to admin/settings/freelinking, change the "Default for new content" to "Wiki page".
第八步:pathauto设置
go to admin/build/path/pathauto, expand the "Node pathsettings" fieldset and in the "Pattern for all Wiki page paths", enter "community/animepedia/[title-raw]".
-------------------------------------------
i3server
i3server
www.86-00.com

评: 30个流行的jQuery插件

现在在网上有很多现成的jQuery插件提供给设计者和开发者,可以帮助你实现惊人的功能和效果。下面这是30个非常有名的例子,包括内容滑块,图 片画廊,工具提示,滑动门效果,幻灯片和模态窗口。下载这些现成的脚本然后添加代码到你的网站上,就可以快速,轻松地改进你的网页设计。
Coda Slider

View Demo
Download

Coda Slider Effect

View Demo
Download

Easy Slider

View Demo
Download

Auto-Playing Featured Content Slider

View Demo
Download

haccordion: A Simple Horizontal Accordion

View Demo
Download

Revealing Photo Slider

View Demo
Download

Fancy Box

View Demo
Download

Facebox Image & Content Viewer

View Demo
Download

JQZoom

View Demo
Download

jQuery Lightbox

View Demo
Download

ThickBox

View Demo
Download

HighSlide

View Demo
Download

Galleria

View Demo
Download

jCarousel

View Demo
Download

jQuery UI/Tabs

View Demo
Download

jQuery.ScrollTo

View Demo
Download

jQuery Tooltip

View Demo
Download

Easy Tooltip and Image Preview

View Demo
Download

jQuery Accordion

View Demo
Download

Space Gallery

View Demo
Download

SimpleModeal

View Demo
Download

Virtual Tour

View Demo
Download

Coda Popup Bubbles

View Demo
Download

Featured Content Slider

View Demo
Download

LavaLamp Menu

View Demo
Download

SuckerFish Style Drop Down Menu

View Demo
Download

Sortables

View Demo
Download

jQuery Corner

View Demo
Download

piroBox

View Demo
Download

Morphing Gallery

View Demo
Download


-------------------------------------------
i3server
i3server
www.86-00.com

2009年4月14日星期二

如何查看fedora磁盘空间使用情况

使用命令:du -sh /*
作用:从根目录/下开始查,看究竟什么东西占了多大空间
eg:
6.7M /bin
14M /boot
392K /dev
192M /etc
du: 无法访问 “/home/yzj/.gvfs”: 权限不够
1.3G /home
4.0K /iso
145M /lib
20K /lost+found
33G /media
8.0K /mnt
29M /opt
du: 无法访问 “/proc/5576/task/5576/fd/4”: 没有那个文件或目录
du: 无法访问 “/proc/5576/task/5576/fdinfo/4”: 没有那个文件或目录
du: 无法访问 “/proc/5576/fd/4”: 没有那个文件或目录
du: 无法访问 “/proc/5576/fdinfo/4”: 没有那个文件或目录
0 /proc
764K /rarlinux-3.7.1.tar.gz
9.3M /root
15M /sbin
0 /selinux
4.0K /srv
0 /sys
258M /tmp
24K /u01
6.7G /usr
322M /var

-------------------------------------------
i3server
i3server
www.86-00.com

2009年4月13日星期一

基于Drupal平台的网站设计成功案例(来源:百度博客)

很多全球知名的商业公司、社团组织、大学及政府机构都从传统的网站设计系统转向了Drupal,或者利用Drupal构建内部交流站点及社区网站。部分基于Drupal的应用包括:

跨国公司-联邦快递、诺基亚、Adobe、Sun

国际著名娱乐公司-华纳兄弟、索尼/BMG、Fox、环球唱片、迪斯尼/ABC

互联网媒体网-Google、Novell、雅虎

新闻杂志-福布斯、The Fast Company、Now Public、花花公子(德国)、The Onion,以及纽约观察报等。

网上社区-Team Sugar、FireFox

高等学府-哈佛大学、MIT

政府机构-白宫网站 , 法国政府、纽约市长Mike Bloomberg、联合国

这些成功的合作案例证明,Drupal不但适合个人站点及网上社区类网站,而且已被国际著名大公司和组织机构所接受和采纳。相信在国内,Drupal也会很快流行起来,成为主流网站设计和开发平台。


-------------------------------------------
i3server
i3server
www.86-00.com

评: drupal的电子商务和网店模块

  • Drupal e-Commerce

Drupal e-Commerce 是适用在 Drupal 內容管理系统的电子商务模块,其功能相当完整,包括:库存管理、交易和付款流程、可以外挂付款和送货模块、发票与送货通知、交易报表与销售统计等,甚至还可以可以运用拍卖模块,建立拍卖网站。
程式语言: PHP
软件授权: GNU General Public License (GPL)
官方网站: http://www.drupalecommerce.org/
中文支援网站: http://drupaltaiwan.org/module/e_commerce
模块下载:http://drupal.org/project/ecommerce

Drupal.org列出了以下采用这套工具的几个网站:
Council of Writing Program Administrators
Snowboard Magzine
这个站比较花哨,功能很多
Poolitics
Drumbeat Insight
Stuart Davis

  • Ubercart

Ubercart ,drupal的电子商务模块 。严格来说,Ubercart算是一个功能满完整的线上商店系统,有产品、客户、订单等管理外,还有出货及库存管理的功能。 被设计为重点在于三个关键领域:存储配置,产品和目录创建,和以及订购管理。Drupal官网上的Ubercart模块下载:
http://drupal.org/project/ubercart

Ubercart擅长销售数字商品(音乐, PDF格式的图片,等等)具有强大的属性系统(提供了在小型,中型,大型网站的模式,并且有不同的颜色) ,和一个功能强大的税/货运/折扣系统。

下面是一个用户提交运行Ubercart的网站链接 。 http://www.ubercart.org/site Ubercart有几个引人注目的地点,包括艺术家网站,时代华纳音乐和(在开发中)新的Drupal商店。

Ubercart是一个伟大的解决方案,商店,出售实物商品,数码产品下载。 预览示范网 Ubercart在线体验 .

特点:

  • 可配置的产品目录包括目录页和区块显示产品类别。
  • 灵活的产品创新体系与产品类别。
  • 多个产品的形象支持开箱。
  • 灵活的产品属性系统。
  • 基本产品存货水平跟踪和通知。
  • 包括产品特点,添加文件下载,促销功能,以及更多的产品。
  • 单页结帐。
  • 自动帐户代(无名氏结帐) 。
  • 客户和管理员结帐通知。
  • 简单的订单处理(包括工作流程,集成自动化订单处理) 。
  • 简单的命令创建和编辑。
  • I综合支付系统,行为之间的桥梁可接受的付款方式(支票,信用卡,采购订单等)和支付网关(资讯来源, Authorize.net ,贝宝等) 。
  • USPS.航运报价和实现,包括与美国UPS公司,联邦快递,美国邮政管理局。
  • 销售,产品和客户的报告。
  • 活动记录。

下面的网站是用Drupal + Ubercart 开发的. 他们是生活场所,所以请不要给不打算购买的任何项目结帐。 可以看到强大的Drupal主题的能力和创造力。

Alton Caskets, Ametrine AS, Artez'n, Avenged Sevenfold, Blank Style, Blend Apparel, Brooklynski, Classic Vinyl, Cornerstone Cookie, Cotton Bean, Ecopaper, FortressMaximus.com, Holiday LEDs, Hug a Monkey, Kalys Gastronomie, Ker-Ching!!, MagmaMags Magazine Subscription Services, Mercedes Source, Organic Grace, Ozore Age Records, Panda Pouch, Riff Trax, Samuel Owen Gallery, Sassy Sweet Treats, Sinus, Texas Exes Diploma Frames, Transformetrics, Vingo Wine and Spirits

在 Ubercart自己的官网下载网页上有提供All In One的套件,分为二种版本,一种是标准版( Standard Package),就是只有包含基本必需的相关模组,另一个版本就是所谓的豪华奢侈版( Deluxe Package ),这个版加了更多支援在电子商务上需要的模组。 這二个版都是包含Drupla 5 的,也就是說,把這二个包下载安装后,就会有Drupal 和Ubercart 的功能了。这二个版都是包含Drupla 5的,也就是说,把这二个包下载安装后,就会有Drupal和Ubercart的功能.


-------------------------------------------
i3server
i3server
www.86-00.com

评: drupal的一些常用模块整理

Drupal 的 核心就像一个毛坯房,墙窗户门都有了,也简单的粉刷过了,搬进来也能住;外观主题 (Theme)就像室内装修,可以按照自己的喜好来铺地板或是地毯,选择各种各样喜欢的墙纸(现在装修还需要墙纸么?hoho,俺对装修的概念还停留在 10年前^_^)等等;模块呢,就好比家具,电器之类的,有了模块可以方便实现各种方便的功能,大部分模块都像冰箱电视一样,启动,摆在那里就行了,但是 有些模块可以说是大工程,譬如 CCK,可以让你建设新屋子,有些是中等工程,譬如 views,它可以打掉你屋子之间的墙,改变屋子的格局,Drupal 的是建立在 node 上的,而views 的核心功能就是帮助你改变 node 的组织与显示模式。"



A.内容标签,显示及排版类
1,CCK 2,Views 3,panels此三个号称Drupal模块的老大,尤其是CCK和VIEWS,实在是DRupal的必备啊.

B,标签云类
1,tagadelic 若你想将你的drupal打造成blog样式,这个应该很适合....

C,阻止垃圾信息类
1,captcha 2,akismet 每个站长都特讨厌垃圾信息,若你用的是drupal搭建的站点,这两个应该能帮你省去一些痛苦.

D, 图片类
1,Image module 2,Gallery module 3,imagefield (为CCK提供上传图片功能) 若想为你使你的站点变得五彩斑斓,图片模块应是必备的....

E,视频,音频类
1,Video module 2,Flash Video module 3,Audio module 4,Embedded Media Field

F,网店类
1,e-Commerce module 没有想到drupal也能够用来搭建一个电子商务站点,此模快就能说明
-------------------------------------------
i3server
i3server
www.86-00.com

CCK图片上传扩展模块 imagefield、imceimage简介

现在我们来创建存储本本外观的字段,如前设定,是采用图片类型的。在CCK扩展模块中,6.x版本下有两个可选途径:imagefield、 imceimage。这两个模块各具特点,imagefield具备丰富直观的设置界面,而imceimage结合imce模块,具备更强大的文件管理功 能,这个根据需要来选用。
供选择参考的更细节一些的差别是:
imagefield特点是:
  • imagefield可以指定上传图片最小分辨率、最大分辨率,可以指定单个上传图片文件最大文件大小、每个文章中总计最大的上传文件大小,还可以预先设置ALT文本和Title文本;
  • 结合token模块在设置字段时可以使用通配标记(token)为路径、ALT文本和Title文本指定预置设置。这些设置对于操作员编辑时是不可更改的,因而可以更好的保证上传的图像文件按照预定的方式存储、标记;
  • 但随之的问题是,每个上传的imagefield都是独立的记录,假如在多个文章中需要用到同一个图片,就需要多次上传,这是一个缺点。
    imceimage特点:
  • imceimage特性不多,大部分功能如上传、调整大小、生成缩略图等主要由IMCE来完成,唯一的,对应imagefield的缺点,imceimage可以在配置的文件库中重复使用已有的图片,而不同重新上传。
    对于这两个模块的选择,我的个人建议是,需要固定出现的图片、无需重复利用的图片采用imagefield,比如本本的尺寸标记图;而可能需要重复利用的图片,使用imceimage

  • -------------------------------------------
    i3server
    i3server
    www.86-00.com

    2009年4月11日星期六

    i3原创: Drupal 安装 FCKeditor 可见即可得编辑器

    FCKeditor 是功能较强的编辑器,但有些评论说大太,但我觉的FCKeditor 有 5种模式让你选择,可以简单也可以复杂,自己选择就好。

    以下是安装操作手册:
    1. 下载Drupal 模块: 在 http://drupal.org/project/fckeditor 下载相应版本的 Drupal接口模块解决后将 fckeditor复制到 Drupal 安装目录下的 sites\all\modules\fckeditor 中。

    2. 下载 FCKeditor本身: 由于 Drupal 下载的模块只是一个按口,要下载 fckeditor 程序才可以用。 所以要到 http://www.fckeditor.net/download 下载最新版。解压复制到 Drupal 安装目录下的 sites\all\modules\fckeditor\fckeditor 中。

    3. 配置 FCKeditor 的 config.php 文件 : 程序下载复制完后,如果需要在 fckeditor 上传文件则需要配置,否则可以跳过不设置。 打开 sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php , 设置如下信息:

    $Config['Enabled'] = true ;
    $Config['UserFilesPath'] = '/sites/default/files/' ; #相对于网站这个DocumentRoot变量的路径
    $Config['UserFilesAbsolutePath'] = '/var/www/drupalweb//sites/default/files/' ; #这里是绝对路径,注意linux和windows的区别。

    4. 启用模块:

    在 主页 >> 管理 >> 站点创建 >> 模块

    other 里面启用 FCKeditor, 保存配置。

    5.

    4,设置用户权限

    主页 >> 管理 >> 用户管理 >> 访问控制

    "fckeditor 模块",设置“认证用户”允许“access fckeditor”,如果允许上传文件则选上“allow fckeditor file uploads”.

    FCKeditor 还可以为每个用户角色定义不同的功能,这样就可以定义那种用户角色可以上传文件那种不可以上传文件等。


    5. 修改 FCKeditor profile,

    主页 >> 管理 >> 站点配置 >> FCKeditor 这里可以按各自的需求进行配置。


    总结:

    FCKeditor是功能强,方便设置的编辑器。但常见安装问题是没有上传文件功能。

    解决方法是:

    1. 有没有设置好 sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php 中的文件目录。

    2. 在 FCKeditor模块管理中的权限。



    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    评: 为 Drupal 安装所见即所得的编辑器 FCKeditor

    Drupal自带的编辑器功能很简单,通常需要安装一个 WYSIWYG 的编辑器,其中 FCKeditor 是一款比较优秀的编辑器,下面说明 FCKeditor 的安装方法。

    1,下载安装包,需要两个,一个是FCKeditor本身,另一个是 drupal 的fckeditor 接口模块:

    http://www.fckeditor.net/download 下载FCKeditor, 目前最新的版本是FCKeditor_2.6.2.zip。

    http://drupal.org/project/fckeditor 下载接口模块,我的 drupal 是 5.8,所以下载一个 for 5.x 的:

    fckeditor-5.x-2.2-beta2.tar.gz

    2,解压上传到站点

    先 解压接口模块,得到一个 fckeditor 文件夹,把它上传到sites/all/modules/ 目录下,如果没有 moudules 子目录,就自己建一个。不要直接上传到根目录下的modules中,那里是drupal的核心模块,不要动里面的东西。 fckeditor/README.txt里有详细的安装指令,必要时可以参考。

    sites/all/modules/fckeditor/fckeditor/ 目录下有个文件 COPY_HERE.txt, FCKeditor_2.6.2.zip 解压后,把里面的东西通通放在这个目录下。

    3,启用模块

    主页 >> 管理 >> 站点创建 >> 模块

    other 里面启用 FCKeditor, 保存配置。

    4,设置用户权限

    主页 >> 管理 >> 用户管理 >> 访问控制

    "fckeditor 模块",设置“认证用户”允许“access fckeditor”,如果允许上传文件则选上“allow fckeditor file uploads”.

    5,启用 teaser break 和 page break 按钮

    打开 sites/all/modules/fckeditor/fckeditor.config.js 把下面三行的注释去掉:

    FCKConfig.PluginsPath = '../../plugins/' ;
    FCKConfig.Plugins.Add( 'drupalbreak' ) ;
    FCKConfig.Plugins.Add( 'drupalpagebreak' ) ;

    下面添加工具条按钮,还是在这个文件里,找到这行:

    ['Image','Flash','Table','Rule','SpecialChar']

    改成:

    ['Image','Flash','Table','Rule','SpecialChar', 'DrupalBreak', 'DrupalPageBreak']

    6,修改 FCKeditor profile,

    主页 >> 管理 >> 站点配置 >> FCKeditor

    编辑各种角色的权限,在 File browser settings 中设置允许上传文件为 true;Editor Appearance 中的 Toolbar 改成"DrupalFull", 这样两个break按钮才能显示出来。

    7,另外,sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php 中,找到第30行的:

    $Config['Enabled'] = false ;

    改为 ture,否则上传文件时会出现连接器错误。

    8, 主页 >> 管理 >> 站点配置 >> 输入格式,把 Full HTML 设为默认格式,否则插入的图片会显示不出来

    通过编辑sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php文件,
    设置如下信息

    $Config['Enabled'] = true ;
    $Config['UserFilesPath'] = '/drupal/userfiles/' ; #相对于/var/www/这个DocumentRoot变量的路径
    $Config['UserFilesAbsolutePath'] = '/var/www/drupal/userfiles/' ; #这里是绝对路径,注意linux和windows的区别。

    这三项都是必须的,否则通过FCKeditor上传都无法工作,出现相应错误。

    更多功能:

    修改上传方式

    Fckeditor编辑器上传方法有两种:QuickUpload 和 FileUpload。
    QuickUpload是所有的上传文件都是一个文件夹中,也就是图片img,flash动画swf等都存放在userfiles文件夹中。
    FileUpload是把不同类型的文件区别,自动在userfiles文件夹下生成image,flash等目录用以存放相应的文件。
    默认为QuickUpload上传方式。

    修 改上传方式:打开sites/all/modules/fckeditor/fckeditor/editor/filemanager /connectors/php/upload.php文件,找到 $sCommand = 'QuickUpload' ; 修改为 $sCommand = 'FileUpload' ; 就可以了。

    自动生成随机文件名

    Fckeditor上传文件都不会改变原来的文件名字,即a.jpg上传到服务器上还是a.jpg,当有上传同名的文件时就会出现问题,上传中文名字的文件时也会出现访问乱码。所以,要改为自动生成随机文件名。

    找到 fckeditor\editor\filemanager\upload\php 下面的commands.php文件,打开。
    在183行 $sExtension = strtolower( $sExtension ) ; 下面增加如下语句:
    // GetID
    $sFileName = GetID( ".".$sExtension );
    $sOriginalFileName = $sFileName ;

    在文件末尾添加GetID函数

    //生成随机文件名
    function GetID($prefix) {
    //第一步:初始化种子
    //microtime(); 是个数组
    $seedstr =split(" ",microtime(),5);
    $seed =$seedstr[0]*10000;
    //第二步:使用种子初始化随机数发生器
    srand($seed);
    //第三步:生成指定范围内的随机数
    $random =rand(1000,10000);

    $filename = date("YmdHis", time()).$random.$prefix;

    return $filename;
    }

    自动按日期创建目录

    默认文件保存方式都在文件目录中,当文件量大的时候管理就很不方便。所以需要根据日期自动创建目录。

    在这里修改config.php即可,在文件最后增加以下内容:

    //===============================================================================
    //Auto creat upload document folder
    //===============================================================================

    // Auto creat upload document folder.
    $Config['AutoDocumentFolder'] = date("Ymd", time()) . '/' ;

    $Config['FileTypesPath']['File'] .= $Config['AutoDocumentFolder'];
    $Config['FileTypesAbsolutePath']['File'] .= $Config['AutoDocumentFolder'];
    $Config['QuickUploadPath']['File'] .= $Config['AutoDocumentFolder'];
    $Config['QuickUploadAbsolutePath']['File'] .= $Config['AutoDocumentFolder'];

    $Config['FileTypesPath']['Image'] .= $Config['AutoDocumentFolder'];
    $Config['FileTypesAbsolutePath']['Image'] .= $Config['AutoDocumentFolder'];
    $Config['QuickUploadPath']['Image'] .= $Config['AutoDocumentFolder'];
    $Config['QuickUploadAbsolutePath']['Image'] .= $Config['AutoDocumentFolder'];

    $Config['FileTypesPath']['Flash'] .= $Config['AutoDocumentFolder'];
    $Config['FileTypesAbsolutePath']['Flash'] .= $Config['AutoDocumentFolder'];
    $Config['QuickUploadPath']['Flash'] .= $Config['AutoDocumentFolder'];
    $Config['QuickUploadAbsolutePath']['Flash'] .= $Config['AutoDocumentFolder'];

    $Config['FileTypesPath']['Media'] .= $Config['AutoDocumentFolder'];
    $Config['FileTypesAbsolutePath']['Media'] .= $Config['AutoDocumentFolder'];
    $Config['QuickUploadPath']['Media'] .= $Config['AutoDocumentFolder'];
    $Config['QuickUploadAbsolutePath']['Media'] .= $Config['AutoDocumentFolder'];
    //===============================================================================
    //end
    //===============================================================================

    NOTE: 如果要卸载某个模块,先要把该模块的Enabled的“对勾”给去掉,然后通过Administer->Site building->Menus->Modules最上面右侧的Uninstall按钮把它卸载掉。


    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    评: Drupal的在线编辑器模块

    Drupal的在线编辑器模块:

    http://drupal.org/project/bueditor
    http://drupal.org/project/fckeditor
    http://drupal.org/project/htmlarea
    http://drupal.org/project/nicedit
    http://drupal.org/project/tinymce
    http://drupal.org/project/wysiwygpro
    http://drupal.org/project/whizzywig
    http://drupal.org/project/widgeditor
    http://drupal.org/project/wymeditor
    http://drupal.org/project/wysiwyg
    http://drupal.org/project/xstandard
    http://drupal.org/project/yui_editor

    还有一些,我就不列举了

    如果你追求功能的话用fckeditor吧,但速度很相对较慢。

    如果你追求简单就用bueditor,bueditor在我看来是有史以来最好用的编辑器,他满足了我最基本的需求,没有任何花哨的功能,和IMCE是同一个作者,所以你可以和IMCE搭配使用。

    TinyMCE是wordpress内置的编辑器,所以知名度随着wordpress高了起来,用的人现在应该是最多的,但体积也是越来越大,不是很喜欢。



    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    2009年4月10日星期五

    评: 怎样对drupal站点进行性能优化

    这篇讲 怎样对drupal站点进行性能优化 ,性能优化讲得比较全面,而且是比较有效的。

    定时清理不必要的数据库数据,给数据库瘦身
    可以設定watchdog只保存几个個小時或几天,用cron固定清空,点开管理 » 报告>> 访问日志设置 ,设定一下几天后删除日志。cron的设置请看这关于drupal的cron(计划任务)

    sun的网站用的是drupal6.8,用phpmyadmin观察了一下,accesslog(估计是访问日志了)blocks(看了一下,发现记录了 好多以前设置的主题的信息,看来要少实验一些乱七八糟的主题),locales_source ,locales_target,search_index ,search_total ,watchdog ,这几个表数据很多。所以搜索能不要就不要了吧,一般小网站游客也不会在你的网站上搜索。一定要的话就设置一下关键字的大小。

    专门针对Drupal本身优化

    缓存操作代码
    点管理 » 站点设置 >>性能 ,启用缓存(cache)会显著提高站点性能。

    在Drupal中,由于PHP代码执行在处理一个请求中占了一大块,所以我们需要知道采取哪些措施才能加快这一进程,这一点非常重要。对编译后的PHP操作代码(opcodes)进行缓存,和剖析应用层来找出低效算法,能够带来重要的性能提升。

    有两种方式可以减少执行PHP 代码所耗费的资源。很明显,一种是减少代码总量,可以通过禁用不必要的Drupal模块和编写高效的代码来达到这一点。另一种方式就是使用一个 opcode缓存。PHP对于每个请求,都会将所有代码解析并编译成一种中间形态,这种形态里包含了一系列的操作代码。添加一个opcode缓存可以让 PHP能够重用前面编译过的代码,这样就会跳过解析和编译。常见的opcode缓存有Alternative PHP Cache (http://pecl.php.net/package/APC), eAccelerator (http://eaccelerator.net), XCache (http://trac.lighttpd.net/xcache/), 和 Zend Platform (http://zend.com)。Zend是一个商业产品,而其它几个则是免费的

    web服务器最优化
    让Drupal发出过期的HTTP头部,在用户的浏览器中对静态文件缓 存两周,或者直到存在一个文件的新版本为止。这是用于所有的图片,CSS和JavaScript文件,和其它静态文件。最终的结果是减少带宽,而服务器需 要发送的信息将会更少一些。Drupal对于和mod_expires一同工作预先进行了配置,一旦mod_expires可用,Drupal就会使用 它。mod_expires的设置可以在Drupal的.htaccess文件中找到。 # Requires mod_expires to be enabled. # Enable expirations. ExpiresActive On # Cache all files for 2 weeks after access (A). ExpiresDefault A1209600 # Do not cache dynamically generated pages. ExpiresByType text/html A1 我们不能让mod_expires缓存HTML内容,这是由于Drupal输出的HTML内容不总是静态的。这也是Drupal拥有自己的内部缓存系统的 原因,内置缓存系统可对它的HTML输出进行缓存(比如,页面缓存)。

    启用MySQL的查询语句缓存
    MySQL 是Drupal最常用的数据库。它具有在内存中缓存常用查询语句的能力,这样一个给定的查询语句再次被调用时,MySQL将立即从缓存中将其返回。然而, 在大多数MySQL中,这一特性默认是被禁用的。为了启用它,向你的MySQL配置选项文件添加下列代码;该文件的名称为my.cnf,它用来声明变量和 你的MySQL服务器的行为(参看http://dev.mysql.com/doc/refman/5.1/en/option-files.html)。在这里,我们将查询语句缓存设为64MB:

    # The MySQL server
    [mysqld]
    query_cache_size=64M

    页面缓存
    有时,一些简单的事情会被忽略掉,这也是为什么需要再提一次它们的原因。Drupal 拥有各种内置的方式,它能够通过为匿名用户存储和发送压缩了的缓存页面,来减少数据库的负重。通过启用这一缓存,你可以使用一个单独的数据库查询来高效的 读取页面,而不是使用许多查询来获取页面(在没有缓存可用时就使用这种方式)。Drupal的缓存默认是禁用的,它可以在Administer ➤ Site configuration ➤ Performance中配置。更多信息参看第15章。

    带宽最优化
    这是Administer ➤ Site configuration ➤ Performance 页面中的另一个性能优化措施,它能够减少发送给服务器的请求次数。通过启用“Aggregate and compress CSS files”(“聚合和压缩CSS文件”)特性,Drupal将处理由modules创建的CSS文件,压缩它们,并将它们合并成一个文件。这将减少每个 页面的HTTP请求数量,以及下载页面的整体大小。

    调优Sessions表
    Drupal将用户会话保存到它的数据库中而不是文件中(参看第16章)。这意味着Drupal能够很容易的应用到多个服务器上,但是为了管理每个用户的会话信息它也增加了数据库的负担。如果一个站点每天有成千上万个用户,那么很容得就会看到这个表将会极速膨胀。

    PHP允许你控制多长时间清除一次旧的会话记录。Drupal将这一配置放到了它的settings.php文件中:
    ini_set('session.gc_maxlifetime', 200000); // 55 hours (in seconds)

    垃圾收集系统运行周期的默认设置为大约两天多一点。这意味着如果用户两天内没有登录,那么它的会话将被删除。如果你的sessions表正在疯长,那么你将想要增加PHP的会话垃圾收集系统的运行频率。

    ini_set('session.gc_maxlifetime', 86400); // 24 hours (in seconds)
    ini_set('session.cache_expire', 1440); // 24 hours (in minutes)

    当调整session.gc_maxlifetime时,最好也将session.cache_expire设为相同的值,session.cache_expire用来控制缓存的会话页面的存活周期。注意session.cache_expire的值的单位为分钟。

    管理已验证用户的访问
    由于Drupal可以为匿名用户提供缓存了的页面,而匿名用户一般也不需要与Drupal进行交互,你可能想要较少用户登录停留的时间,或者更疯狂一点, 一旦用户关闭他们的浏览器就将他们退出。通过调整settings.php文件中的cookie生存周期来做到这一点。在下面这行代码中,我们将它的值改 为24小时:
    ini_set('session.cookie_lifetime', 86400); // 24 hours (in seconds)

    而在这里一旦用户关闭浏览我们就将他们登出。
    ini_set('session.cookie_lifetime', 0); // When they close the browser.

    settings.php中的默认值(2,000,000秒)允许用户保持登录大约3周时间(在此期间会话垃圾收集系统不会将他们的会话记录从sessions表中删除)。

    清除错误报告日志
    Drupal有一个内部的日志系统,位于t Administer ➤ Logs ➤ Recent log entries,如果他没有被定期地清除,那么它将会快速的膨胀。这一日志存放在watchdog表中。如果你发现watchdog表的大小引起你的站点 运行缓慢,你可以通过在Administer ➤ Site configuration ➤ Error reporting里调整相关配置来减小它的大小。注意,对该设置的修改将在cron下次运行时生效。不能定期的运行cron会使得watchdog表越 来越大,从而为系统增加加大的负担。

    运行cron
    尽管它是Drupal安装指令的第5步,设定cron 常被忽略,而这一疏忽能够给站点带来不小的麻烦。如果在一Drupal站点上没有运行cron,那么数据库就会充满日志信息、过期的缓存数据、以及其它的 统计数据,这些都是应该从系统中定期清除的。我们应该把它作为正常安装流程中的一部份,及早的配置cron,这是一个很好的实践经验。关于设定cron的 更多信息,参看Drupal的INSTALL.txt文件中的步骤5。

    提示 如果你处于一个非常特殊的环境下,在一个访问量很大的站点上cron却永远没有运行过或者它没有被充分的运行,你可以手工的进行一些属于cron管理的操 作。你可以随时清空缓存表(TRUNCATE TABLE 'cache', TRUNCATE TABLE 'cache_filter', and TRUNCATE TABLE 'cache_page'),而它将会重新构造自己。还有,在情急之时,你可以清空watchdog和sessions表来重新控制一个失控的 Drupal站点。删除watchdog记录意味着你将丢失所有的错误消息,它们可能指示站点的问题所在。清空sessions表会使当前已登录的用户退 出系统。如果你想保存这些数据,那么在清空watchdog表以前先对它进行备份。

    自动节流
    Drupal在内核中包含了一个名为throttle.module 的模块。这一模块通过对当前在线用户数量进行采样来测量站点的负载,如果采样显示超过了管理员设置的最小值,那么它将关闭一些功能。在你配置一个站点时,最好启用这一模块,这样当一个页面成为热门话题并带来极大的访问量时,它使你能够应付这种局面。

    启用节流阀模块
    当你启用了节流阀模块,你将会注意到在模块管理页面多一个额外的一列复选框。也就是,除了选择是否启用一个模块以外,你还可以选择它能否被节流。被节流意 味着当module_list()返回了一列启用的模块时,由于访问量过大,启用了节流阀的模块将不被包含在内;被节流的模块此时将被禁用。

    很明显,你将需要小心的选择你想对哪些模块进行节流。一般选择功能不重要但是耗费CPU时间或者许多数据库查询的模块。核心模块不能被节流(因为它们是 Drupal正常运行所必需的),但是它们能在站点处于节流时,够理解节流并使用它们自己的措施用来减少处理时间。例如,区块模块不能被节流,但是独立的 区块可以被节流,如图22-2所示。

    图22-2 当站点感受到一个大的负载时,它将不展示头部的搜索表单或者左栏中e “Who’s new” 和 “Who’s online”区块,但是头部的以及链接和左栏里的Navigation和“User login”区块总被展示。

    配置节流阀模块
    为了使节流机制能够起作用,你必须为它提供一个阀值和一个采样频率。当启用了节流阀模块时,阀值可以在Administer ➤ Site configuration ➤ Throttle中设置。

    设置阀值
    可以输入两个阀值:匿名用户数和验证用户数。由于匿名用户占用的资源比验证用户小,所以匿名用户的阀值应该更高一些。实际值依赖于你的个人站点。用户数必 须是在一个给定的时间内测量的。这个时间周期在“Who’s online”区块中设置,并作为Drupal变量user_block_seconds_online存储起来。如果它没有被设置,那它默认为900秒 (15分钟)。

    设置采样频率
    为了决定站点的负载量,从而决定是打开还是关闭节流机制,节流阀模块必须查询数据库。这位数据库服务器增加了额外的负担。使用“Auto- throttle probability limiter”来设置检查的频率(实际中有可能检查发生在一个给定请求上)。例如,选择20%,那么对于每5个请求就会采样一次。

    使得模块和主题能够懂得节流(Throttle-Aware)
    节流机制可能开着,也可能关闭。当编写你自己的模块和主题时,你可以响应节流阀的状态,例如:

    // Get throttle status.
    // We use module_invoke() instead of calling throttle_status() directly
    // so this will still work when throttle.module is disabled.
    $throttle = module_invoke('throttle', 'status');
    if (!$throttle) {
    // Throttle is off.
    // Do nonessential CPU-intensive task here.
    }

    提示 如果你拥有大量的多媒体文件,这些文件不重要但又必须作为主题的一部份被提供,当你的网站不堪重负时,你可以对这些文件进行节流来减少带宽的总量。
    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    2009年4月9日星期四

    评: Linux下Iptables防火墙实例教程

    为Linux 服务器设防火墙,虽然对 iptables 已有认识,但具体的高设置还是发实操。这篇实例教程正好可以让我们按步骤操作。

    1、iptables介绍
    iptables是复杂的,它集成到linux内核中。用户通过iptables,可以对进出你的计算机的数据包进行过滤。通过iptables命令设置 你的规则,来把守你的计算机网络──哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录(log)。接下来,我将告诉你如何设置自己的规则,从现在 就开始吧。
    2、初始化工作
    在shell提示符 # 下打入
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    以上每一个命令都有它确切的含义。一般设置你的iptables之前,首先要清除所有以前设置的规则,我们就把它叫做初始化好了。虽然很多情况下它什么也 不做,但是保险起见,不妨小心一点吧! 如果你用的是redhat 或fedora,那么你有更简单的办法
    service iptables stop
    3、开始设置规则:
    接下下开始设置你的规则了
    iptables -P INPUT DROP
    这一条命令将会为你构建一个非常“安全”的防火墙,我很难想象有哪个hacker能攻破这样的机器,因为它将所有从网络进入你机器的数据丢弃(drop) 了。这当然是安全过头了,此时你的机器将相当于没有网络。如果你ping localhost,你就会发现屏幕一直停在那里,因为ping收不到任何回应。
    4 、添加规则
    接着上文继续输入命令:
    iptables -A INPUT -i ! ppp0 -j ACCEPT
    这条规则的意思是:接受所有的,来源不是网络接口ppp0的数据。
    我们假设你有两个网络接口,eth0连接局域网,loop是回环网(localhost)。ppp0是一般的adsl上网的internet网络接口,如 果你不是这种上网方式,那则有可能是eth1。在此我假设你是adsl上网,你的internet接口是ppp0
    此时你即允许了局域网的访问,你也可以访问localhost
    此时再输入命令 ping localhost,结果还会和刚才一样吗?
    到此我们还不能访问www,也不能mail,接着看吧。
    5、我想访问www
    iptables -A INPUT -i ppp0 -p tcp -sport 80 -j ACCEPT
    允许来自网络接口ppp0(internet接口),并且来源端口是80的数据进入你的计算机。
    80端口正是www服务所使用的端口。
    好了,现在可以看网页了。但是,你能看到吗?
    如果你在浏览器的地址中输入www.baidu.com,能看到网页吗?
    你得到的结果一定是:找不到主机www.baidu.com
    但是,如果你再输入220.181.27.5,你仍然能够访问baidu的网页。
    为什么?如果你了解dns的话就一定知道原因了。
    因为如果你打入www.baidu.com,你的电脑无法取得www.baidu.com这个名称所能应的ip地址220.181.27.5。如果你确实 记得这个ip,那么你仍然能够访问www,你当然可以只用ip来访问www,如果你想挑战你的记忆的话^ _ ^,当然,我们要打开DNS。
    6、打开dns端口
    打开你的dns端口,输入如下命令:
    iptables -A INPUT -i ppp0 -p udp -sport 53 -j ACCEPT
    这条命令的含义是,接受所有来自网络接口ppp0,upd协议的53端口的数据。53也就是著名的dns端口。
    此时测试一下,你能通过主机名称访问www吗?你能通过ip访问www吗?
    当然,都可以!
    7、查看防火墙
     此时可以查看你的防火墙了
    iptables -L
     如果你只想访问www,那么就可以到此为止,你将只能访问www了。 不过先别急,将上面讲的内容总结一下,写成一个脚本。
    #!/bin/bash
    # This is a script
    # Edit by liwei
    # establish static firewall
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -P INPUT DROP
    iptables -A INPUT -i ! ppp0 -j ACCEPT
    iptables -A INPUT -i ppp0 -p tcp --sport 80 -j ACCEPT
    iptables -A INPUT -i ppp0 -p udp --sport 53 -j ACCEPT
    8、复杂吗?到此iptables可以按你的要求进行包过滤了。你可以再设定一些端口,允许你的机器访问这些端口。这样有可能,你不能访问QQ,也可能不 能打网络游戏,是好是坏,还是要看你自己而定了。顺便说一下,QQ这个东西还真是不好控制,用户与服务器连接使用的好像是8888端口,而QQ上好友互发 消息使用的又是udp的4444端口(具体是不是4444还不太清楚)。而且QQ还可以使用www的80端口进行登录并发消息,看来学无止境,你真的想把 这个家伙控制住还不容易呢?还是进入我们的正题吧。
    如果你的机器是服务器,怎么办?
    9、如果不巧你的机器是服务器,并且要提供www服务。显然,以上的脚本就不能符合我们的要求了。但只要你撑握了规则,稍作修改同样也能很好的工作。在最后面加上一句
    iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT
    这一句也就是将自己机器上的80端口对外开放了,这样internet上的其他人就能访问你的www了。当然,你的www服务器得工作才行。如果你的机器 同时是smtp和pop3服务器,同样的再加上两条语句,将--dport后面的80改成25和110就行了。如果你还有一个ftp服务器,呵呵,如果你 要打开100个端口呢……
    我们的工作好像是重复性的打入类似的语句,你可能自己也想到了,我可以用一个循环语句来完成,对,此处可以有效的利用shell脚本的功能,也让你体验到了shell脚本语言的威力。看下文:
    10、用脚本简化你的工作,阅读下面的脚本
    #!/bin/bash
    # This is a script
    # Edit by liwei
    # establish a static firewall
    # define const here
    Open_ports="80 25 110 10" # 自己机器对外开放的端口
    Allow_ports="53 80 20 21" # internet的数据可以进入自己机器的端口
    #init
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -P INPUT DROP #we can use another method to instead it
    iptables -A INPUT -i ! ppp0 -j ACCEPT
    # define ruler so that some data can come in.
    for Port in "Allow_ports" ; do
    iptables -A INPUT -i ppp0 -p tcp -sport  $Port -j ACCEPT
    iptables -A INPUT -i ppp0 -p udp -sport  $Port -j ACCEPT
    done
    for Port in "Open_ports" ; do
    iptables -A INPUT -i ppp0 -p tcp -dport  $Port -j ACCEPT
    iptables -A INPUT -i ppp0 -p udp -dport  $Port -j ACCEPT
    done
    这个脚本有三个部分(最前面的一段是注释,不算在这三部分中)
    第一部分是定义一些端口:访问你的机器"Open_ports"端口的数据,允许进入;来源是"Allow_ports"端口的数据,也能够进入。
    第二部分是iptables的初始化,第三部分是对定义的端口具体的操作。
    如果以后我们的要求发生了一些变化,比如,你给自己的机器加上了一个ftp服务器,那么只要在第一部分"Open_ports"的定义中,将ftp对应的 20与21端口加上去就行了。呵呵,到此你也一定体会到了脚本功能的强大的伸缩性,但脚本的能力还远不止这些呢!
    11、使你的防火墙更加完善
    看上面的脚本init部分的倒数第二句
    iptables -P INPUT DROP
    这是给防火墙设置默认规则。当进入我们计算机的数据,不匹配我们的任何一个条件时,那么就由默认规则来处理这个数据----drop掉,不给发送方任何应答。
    也就是说,如果你从internet另外的一台计算机上ping你的主机的话,ping会一直停在那里,没有回应。
    如果黑客用namp工具对你的电脑进行端口扫描,那么它会提示黑客,你的计算机处于防火墙的保护之中。我可不想让黑客对我的计算机了解太多,怎么办,如果我们把drop改成其他的动作,或许能够骗过这位刚出道的黑客呢。
    怎么改呢?将刚才的那一句( iptables -P INPUT DROP )去掉,在脚本的最后面加上:
    iptables -A INPUT -i ppp0 -p tcp -j REJECT --reject-with tcp-reset
    iptables -A INPUT -i ppp0 -p udp -j REJECT --reject-with icmp-port-unreachable
    这样就好多了,黑客虽然能扫描出我们所开放的端口,但是他却很难知道,我们的机器处在防火墙的保护之中。如果你只运行了ftp并且仅仅对局域网内部访问, 他很难知道你是否运行了ftp。在此我们给不应该进入我们机器的数据,一个欺骗性的回答,而不是丢弃(drop)后就不再理会。这一个功能,在我们设计有 状态的防火墙中(我这里讲的是静态的防火墙)特别有用。
    你可以亲自操作一下,看一看修改前后用namp扫描得到的结果会有什么不同?
    12、这个教程我想到此就结束了,其中有很多东西在这里没有提到,如ip伪装,端口转发,对数据包的记录功能。还有一个很重要的东西就 是:iptables处理数据包的流程.在这里我想告诉你,你设置的过滤规则的顺序很重要,在此不宜详细介绍,因为这样一来,这个教程就会拘泥于细节。
    iptables是复杂的,我在linuxsir上看过很多教程,它们往往多而全,反而让人望而生畏,希望我的这个教程,能够指导你入门。加油!
    最后,我把完整的脚本写出来如下,你只要修改常量定义部分,就能表现出较大的伸缩性^_^
    #!/bin/bash
    # This is a script
    # Edit by liwei
    # establish a static firewall
    # define const here
    Open_ports="80 25 110 10" # 自己机器对外开放的端口
    Allow_ports="53 80 20 21" # internet的数据可以进入自己机器的端口
    #init
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    # The follow is comment , for make it better
    # iptables -P INPUT DROP
    iptables -A INPUT -i ! ppp0 -j ACCEPT
    # define ruler so that some data can come in.
    for Port in "Allow_ports" ; do
    ptables -A INPUT -i ppp0 -p tcp -sport  $Port -j ACCEPT
    iptables -A INPUT -i ppp0 -p udp -sport  $Port -j ACCEPT
    done
    for Port in "Open_ports" ; do
    iptables -A INPUT -i ppp0 -p tcp -dport  $Port -j ACCEPT
    iptables -A INPUT -i ppp0 -p udp -dport  $Port -j ACCEPT
    done
    # This is the last ruler , it can make you firewall better
    iptables -A INPUT -i ppp0 -p tcp -j REJECT --reject-with tcp-reset
    iptables -A INPUT -i ppp0 -p udp -j REJECT --reject-with icmp-port-unreachable


    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    评: linux下IPTABLES配置详解

    最近在为服务器配置防火墙, 要设置 IPTABLES , 搜了一些资料:


    如果你的IPTABLES基础知识还不了解,建议先去看看.
    开始配置
    我们来配置一个filter表的防火墙.
    (1)查看本机关于IPTABLES的设置情况
    [root@tp ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    Chain RH-Firewall-1-INPUT (0 references)
    target prot opt source destination
    ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
    ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
    ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
    ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
    ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
    ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
    ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
    REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
    可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.
    如果你在安装linux时没有选择启动防火墙,是这样的
    [root@tp ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    什么规则都没有.
    (2)清除原有规则.
    不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.
    [root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则
    [root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则
    我们在来看一下
    [root@tp ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.
    [root@tp ~]# /etc/rc.d/init.d/iptables save
    这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
    [root@tp ~]# service iptables restart
    现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧
    (3)设定预设规则
    [root@tp ~]# iptables -p INPUT DROP
    [root@tp ~]# iptables -p OUTPUT ACCEPT
    [root@tp ~]# iptables -p FORWARD DROP
    上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包
    而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.
    可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.
    这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.
    注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.
    怎么办,去本机操作呗!
    (4)添加规则.
    首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链
    为了能采用远程SSH登陆,我们要开启22端口.
    [root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.
    其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,其他同理.)
    如果做了WEB服务器,开启80端口.
    [root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    如果做了邮件服务器,开启25,110端口.
    [root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
    [root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

    如果做了FTP服务器,开启21端口
    [root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    [root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
    如果做了DNS服务器,开启53端口
    [root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
    如果你还做了其他的服务器,需要开启哪个端口,照写就行了.
    上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP
    允许icmp包通过,也就是允许ping,
    [root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
    [root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
    允许loopback!(不然会导致DNS无法正常关闭等问题)
    IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
    IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
    下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.
    减少不安全的端口连接
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
    [root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
    有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会
    还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.
    当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加
    允许SSH登陆一样.照着写就行了.
    下面写一下更加细致的规则,就是限制到某台机器
    如:我们只允许192.168.0.3的机器进行SSH连接
    [root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
    如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
    24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.
    或采用命令方式:
    [root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT
    然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.
    [root@tp ~]# /etc/rc.d/init.d/iptables save
    这样写 !192.168.0.3 表示除了192.168.0.3的ip地址
    其他的规则连接也一样这么设置.
    在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.
    开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
    [root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    [root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
    丢弃坏的TCP包
    [root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
    处理IP碎片数量,防止攻击,允许每秒100个
    [root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
    设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
    [root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
    我在前面只所以允许ICMP包通过,就是因为我在这里有限制.
    二,配置一个NAT表放火墙
    1,查看本机关于NAT的设置情况
    [root@tp rc.d]# iptables -t nat -L
    Chain PREROUTING (policy ACCEPT)
    target prot opt source destination
    Chain POSTROUTING (policy ACCEPT)
    target prot opt source destination
    SNAT all -- 192.168.0.0/24 anywhere to:211.101.46.235
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考我的另一篇文章
    当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的
    如果你想清除,命令是
    [root@tp ~]# iptables -F -t nat
    [root@tp ~]# iptables -X -t nat
    [root@tp ~]# iptables -Z -t nat
    2,添加规则
    添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),
    添加规则,我们只添加DROP链.因为默认链全是ACCEPT.
    防止外网用内网IP欺骗
    [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
    [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
    [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

    如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)
    例:
    禁止与211.101.46.253的所有连接
    [root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP
    禁用FTP(21)端口
    [root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
    这样写范围太大了,我们可以更精确的定义.
    [root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -d 211.101.46.253 -j DROP
    这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.
    按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.
    最后:
    drop非法连接
    [root@tp ~]# iptables -A INPUT -m state --state INVALID -j DROP
    [root@tp ~]# iptables -A OUTPUT -m state --state INVALID -j DROP
    [root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP

    允许所有已经建立的和相关的连接
    [root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    [root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    [root@tp ~]# /etc/rc.d/init.d/iptables save

    这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

    [root@tp ~]# service iptables restart


    别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,
    上面的所有规则我都试过,没有问题.
    写这篇文章,用了我将近1个月的时间.查找资料,自己做实验,希望对大家有所帮助.如有不全及不完善的地方还请提出.
    因为本篇文章以配置为主.关于IPTABLES的基础知识及指令命令说明等我会尽快传上,当然你可以去网上搜索一下,还是很多的.

    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    Linux 防火墙 iptables 简介

    iptables功能十分强大,它可以检测到源地址和目的地址、源端口和目的端口及流入数据包的顺序,即iptables记住了在现有连接中,哪些 数据包已经被允许接收。这使得暂时性的端口只有在需要时才会被打开,并且会拒绝所有永久性占用端口的请求,大大地加强了安全性。下面是关于 iptables防火墙的一些应用实例。

      实际应用中,如果要阻止来自某一特定IP范围内的数据包,因为该IP地址范围被管理员怀疑有大量恶意攻击者在活动:

    # iptables -t filter -A INPUT -s xxx.xxx.xxx.0/24 -j DROP

      也可以很轻易地阻止所有流向攻击者IP地址的数据包,该命令稍有不同:

    # iptables -t filter -A OUTPUT -d xxx.xxx.xxx.0/24 -j DROP

      注意这里的A选项,使用它说明是给现有的链添加规则。网络上的恶意攻击者总是在变化的,因此需要不断改变IP。假设一个网上攻击者转移到新的 IP地址,而原来的IP地址被分配给一些清白的用户,那么这时这些用户的数据包将无法通过网络。这种情况下,可以使用带-D选项的命令来删除现有的规则:

    # iptables -t filter -D OUTPUT -d 192.168.10.0/24 -j DROP

      一旦测试结果令人满意,就可以将上述测试结果保存为脚本。可以使用“iptables-save > iptables-script”命令来实现,现在,信息包过滤表中的所有规则都被保存在文件iptables-script中。无论何时再次引导系统, 都可以使用 iptables-restore 命令将规则集从该脚本文件恢复到信息包过滤表,命令为“iptables-restore iptables-script”。

      创建一个具有很好灵活性、可以抵御各种意外事件的规则需要大量的时间。对于那些没有时间这样做的人,最基本的原则是“先拒绝所有的数据包,然后再允许需要的”。下面来为每一个链设置缺省的规则:

    # iptables -P INPUT DROP

    # iptables -P FORWARD DROP

    # iptables -P OUTPUT ACCEPT

      这里选项-P用于设置链的策略,只有三个内建的链才有策略。这些策略可以让信息毫无限制地流出,但不允许信息流入。

      最后需要提示的是:功能强大的iptables防火墙是完全免费的,这对于那些想要功能卓越而又想节省费用的用户来说,是一种比较理想的选择。



    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    2009年4月8日星期三

    i3原创: Fedora 系统启动服务功能简介

    由于想精简服务器,所但对于 fedora 的自动启服务搜索了解一下,以免去掉后不能正常运行:

    1 . NetworkManager 自动在多种网络连接中进行转换,如果你的电脑有Wireless WiFi 和 Ethernet,开着它吧,Fedora能自动为你选择最好的可用连接。如果只用一个网络连接设置的,还是关掉吧。

    2.  acpid:提供高级电源管理。

    3. anacron 一个自动化运行任务, 可以帮你执行在"crontab"设定的时间内没有执行的工作.

    4. atd : 只执行一次的预约执行服务,务必启动.

    5. auditd 用于存放内核生成的系统审查记录,这些记录会被一些程序使用。特别是对于SELinux用户来说,还是开着吧。

    6. avahi-daemon 主要用于Zero Configuration Networking

    7. bluetooth, hcid, hidd, sdpd, dund, pand 蓝牙相关, 无蓝牙设备,可以关闭

    8. btseed : bt相关, 无使用用BT的,可以关了

    9. bttrack: bt相关, 无使用用BT的,可以关了

    10. cpuspeed: 监测系统空闲百分比,降低或加快CPU时钟速度和电压从而在系统空闲时将能源消耗降为最小,而在系统繁忙时最大化加快系统执行速度。 建议开着.

    11.crond: 用来执行例行性命令的守护程序。务必启动.

    12. cups : 公共UNIX打印支持,为Linux提供打印功能。如果不安装打印机,就不需要启动。

    13. gpm : gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标 的拷贝,粘贴操作以及弹出式菜单, 没必要的话,建议不要启动。

    14. haldaemon : HAL(Hardware Abstraction Layer)服务,建议要启动

    15. ip6tables : 如果你不用 IPv6,关了

    16. iptables : 防火墙,建议要启动

    17. irqbalance : 多核CPU支持, 对多个系统处理器环境下的系统中断请求进行负载平衡的守护程序。需要者开启

    18. isdn: ISDN modem支持, 无者关

    19. kerneloops : 能够自动将Linux内核崩溃信息传递到一个存储库, Linux系统核心维护人员就可以调用这个存储库的信息来进行有针对性的系统诊断并且修复系统的BUG。建义还是开着.

    20.
    mdmonitor : 与RAID设备相关的守护程序。 有着开

    21. messagebus: Linux ICP 服务,D-BUS是一个库,为两个或两个以上的应用程序提供一对一的通讯。 强列建议开着。

    22. microcode_ctl : 可以编码以及发送新的微代码到kernel以更新Intel IA32系列处理器(Pentium Pro,PII,PIII,Pentium 4,Celeron, Xeon 等等 - 全部 P6 以及更高,不包括 pentium classics)。还是开着

    23. netfs :安装和卸载NFS、SAMBA和NCP网络文件系统。 如果你需要网络共享文件,那就开着

    24. network : 在系统启动时激活所有的网络接口。 务必启动.

    25. nfslock : NFS是一个流行的通过TCP/IP网络共享文件的协议,此服务提供了NFS文件锁定功能。 文件共享支持,不需要的可以关了

    26. pcscd : 智能卡支持,无者关.

    27. portreserve : 这项服务可以防止其他服务(如portmap )由占领真正港口占领他们本身,直到真正的服务告诉它释放的端口.

    28. rpcbind : RPC服务,一般可以关闭

    29. rpcgssd :NFS支持,不用NFS的可以关闭

    30 .rpcidmapd: NFS支持,不用NFS的可以关闭

    31. rsyslog : 系统日志,开着

    32. sendmail 邮件服务器,需要者开

    33. setroubleshoot : SELinux Troubleshooting, 不用SELinux的可以关了

    34. sshd : Secure Shell Protocol,实现安全地远程登陆管理主机。开启

    35. udev-post : "udev"的用途是Fedora的设备管理系统,默认情况下"udev"支持很多个规则,用于设备的权限和行为管理,开启



    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    2009年4月7日星期二

    评: php-fpm 与 spawn-cgi 对比测试

    www.86-00.com 网站测试用 lighttpd 与 Nginx 都是用 spawn-cgi 都在Nginx上却是不太稳定.现在看转 php-fpm 再测试一下.

    php-fpm 与 spawn-cgi 对比测试
    1. 软件版本
    Nginx 0.7.17
    php 5.2.6
    php-fpm 0.5.9
    编译参数
    ./configure –prefix=/usr/local/webserver/php \
    –with-config-file-path=/usr/local/webserver/conf \
    –enable-fastcgi \
    –enable-fpm \
    –with-fpm-conf=/usr/local/webserver/conf/php-fpm.conf \
    –enable-force-cgi-redirect \
    –with-gd \
    –with-jpeg-dir \
    –with-png-dir \
    –enable-gd-native-ttf \
    –with-freetype-dir \
    –with-mysql=/usr/local/webserver/mysql \
    –with-libxml-dir \
    –with-mcrypt \
    –with-mhash \
    –with-curl \
    –with-curlwrappers \
    –with-zlib-dir \
    –with-zlib \
    –with-pear \
    –with-openssl \
    –without-pdo-sqlite \
    –without-sqlite \
    –disable-debug \
    –disable-rpath \
    –without-iconv \
    –enable-bcmath \
    –enable-pcntl \
    –enable-mbstring \
    –enable-exif \
    –enable-zip \
    –enable-ftp

    3. 补丁安装方法
    下载fpm补丁
    将fpm加入php
    patch -p1 < php-5.2.6-fpm-0.5.9.diff
    在./configure后加入–enable-fastcgi –enable-fpm 以启用fpm

    4.测试方法
    取服务端的一个页面
    var_dump($_SERVER);
    phpinfo();
    ?>
    另一台服务器发起请求
    ./http_load -parallel 25 -seconds 10 urls

    5.CPU以及内存使用情况
    对使用fpm启动的php-cgi以及spawn-fcgi启动的php-cgi进行比对
    使用http_load对两者进行访问
    然后获取服务器内的内存使用以及响应速度
    fpm的使用后CPU下降的比较缓慢.而spawn-cgi的进程cpu下降很快.
    很多情况下是使用完后进程CPU便回到0.0

    php-fpm
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
    root 27724 0 1.2 103468 3400 ? Ss 02:45 00:00
    nobody 27725 0.6 2.1 103988 5672 ? S 02:45 00:00
    nobody 27726 0.5 2.1 103988 5672 ? S 02:45 00:00
    nobody 27727 0.6 2 103988 5352 ? S 02:45 00:00
    nobody 27728 0.7 2 103988 5348 ? S 02:45 00:00
    nobody 27729 0.5 2 103988 5348 ? S 02:45 00:00
    nobody 27730 0.6 2 103988 5348 ? S 02:45 00:00
    nobody 27731 0.5 2 103988 5348 ? S 02:45 00:00
    nobody 27732 0.7 2 103988 5344 ? S 02:45 00:00
    nobody 27733 0.5 2 103988 5344 ? S 02:45 00:00
    nobody 27734 0.2 2 103988 5340 ? S 02:45 00:00
    nobody 27735 0.7 2 103988 5348 ? S 02:45 00:00
    nobody 27736 0.3 2 103988 5344 ? S 02:45 00:00
    nobody 27737 0.7 2 103988 5348 ? S 02:45 00:00
    nobody 27738 0.5 2 103988 5348 ? S 02:45 00:00
    nobody 27739 0.7 2 103988 5348 ? S 02:45 00:00
    nobody 27740 0.8 2 103988 5352 ? S 02:45 00:00
    nobody 27741 0.4 2 103988 5348 ? S 02:45 00:00
    nobody 27742 0.5 2 103988 5344 ? S 02:45 00:00
    nobody 27743 0.6 2 103988 5344 ? S 02:45 00:00
    nobody 27744 0.5 2 103988 5348 ? S 02:45 00:00
    nobody 27745 0.7 2 103988 5352 ? S 02:45 00:00
    nobody 27746 0.4 2 103988 5348 ? S 02:45 00:00
    nobody 27747 0.5 2 103988 5344 ? S 02:45 00:00
    nobody 27748 0.6 2 103988 5348 ? S 02:45 00:00
    nobody 27749 0.7 2 103988 5352 ? S 02:45 00:00

    spwan-cgi
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
    www 27760 0 2.4 103452 6320 ? Ss 02:47 00:00
    www 27761 0.2 2.1 103976 5548 ? S 02:47 00:00
    www 27762 0.2 1.9 103980 5212 ? S 02:47 00:00
    www 27763 0.2 1.9 103980 5212 ? S 02:47 00:00
    www 27764 0.2 1.9 103980 5212 ? S 02:47 00:00
    www 27765 1.4 1.9 103980 5224 ? S 02:47 00:00
    www 27766 0.2 1.9 103980 5212 ? S 02:47 00:00
    www 27767 0.4 1.9 103980 5220 ? S 02:47 00:00
    www 27768 0.5 1.9 103980 5212 ? S 02:47 00:00
    www 27769 0.5 1.9 103980 5216 ? S 02:47 00:00
    www 27770 2.4 1.9 103980 5236 ? S 02:47 00:01
    www 27771 3.1 2 103980 5248 ? S 02:47 00:01
    www 27772 2.4 1.9 103980 5236 ? S 02:47 00:01
    www 27773 1.3 1.9 103980 5224 ? S 02:47 00:00
    www 27774 0.4 1.9 103980 5212 ? S 02:47 00:00
    www 27775 0.4 1.9 103980 5212 ? S 02:47 00:00
    www 27776 0.3 1.9 103980 5216 ? S 02:47 00:00
    www 27777 0.1 1.9 103980 5212 ? S 02:47 00:00
    www 27778 0.2 1.9 103980 5212 ? S 02:47 00:00
    www 27779 0.2 1.9 103980 5212 ? S 02:47 00:00
    www 27780 0.1 1.9 103980 5212 ? S 02:47 00:00
    www 27781 0.1 1.9 103980 5212 ? S 02:47 00:00
    www 27782 0.1 1.9 103980 5212 ? S 02:47 00:00
    www 27783 0 1.9 103980 5212 ? S 02:47 00:00
    www 27784 0 1.9 103980 5212 ? S 02:47 00:00
    www 27785 0 1.9 103980 5212 ? S 02:47 00:00

    6.反应时间
    fetches/sec
    php-fpm
    264.468
    269.657
    266.5
    267.7
    267.334
    spawn-cgi
    246.153
    258.742
    256.1
    256.9
    251.6

    7.测试结果
    php-fpm的使用非常方便,配置都是在php-fpm.ini的文件内
    而启动,重启都可以从php/sbin/php-fpm中进行
    更方便的是修改php.ini后可以直接使用php-fpm reload进行加载
    无需杀掉进程就可以完成php.ini的修改加载
    结果显示使用php-fpm可以使php有不小的性能提升
    php-fpm控制的进程.cpu回收的速度比较慢.内存分配的很均匀
    而spawn-cgi控制的进程CPU下降的很快.而内存分配的比较不均匀.
    有很多进程似乎未分配到,而另外一些却占用很高.
    可能是由于进程任务分配的不均匀导致的.而这也导致了总体响应速度的下降
    而php-fpm合理的分配.导致总体响应的提到以及任务的平均
    -------------------------------------------
    i3server
    i3server
    www.86-00.com

    评: php-fpm文档中文翻译

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://syre.blogbus.com/logs/20092011.html

    原文链接:http://php-fpm.anight.org/
    wiki:http://www.php-fpm.com/

    什么是 FastCGI

    FastCGI 是一个可伸缩、高速的在web server和脚本语言间通迅的接口。关于FastCGI技术的更多信息可以在官方网站Wikipedia看到。

    FastCGI 被许多脚本语言所支持,包括 php,如果用 --enable-fastcgi 选项编译的话。

    多数流行的web server都支持 FastCGI。包括Apache(mod_fastcgi和mod_fcgid),Zeusnginxlighttpd

    FastCGI 的主要优点是把动态语言和 web server 分离开来。这种技术允许 web server 和动态语言运行在不同的主机上。这可以改进可扩展性和安全性而没有大的效率损失。

    php-fpm 可以和任何支持外部 FastCGI 技术的 web server 一起使用。

    php-fpm是做啥用的

    很不幸,官方网站 php.net 上的 php 在将 FastCGI SAPI 用于生产环境方面有许多已知的问题。

    下面是关于启用 FastCGI SAPI 时的问题和 php-fpm 是如何解决他们的对比列表。

    描述 php自带的 spawn-fcgi + spawn-php.sh + daemontools php-fpm
    php守护进程化: pid file, log file, setsid(), setuid(), setgid(), chroot() (-) (+) (+)
    进程管理。可以用 "graceful" 来停止并启动 php worker 进程而不会丢失请求。能够平滑地升级配置和二进制程序而不丢失任何请求。 php4 (-), php5 (只有 graceful) (-) (+)
    严格限制来源请求的 web server 的 ip 地址 php4 (-) php5 (+) (从 5.2.2 开始) (-) (+)
    根据负载动态调整进程数 (-) (-) Todo
    用不同的 uid/gid/chroot/environment 和不同的 php.ini 选项启动 worder 进程。你不需要 safe mode 了! (-) (-) (+)
    记录 worker 进程 stdout 和 stderr 日志 (-) (-) (+)
    如果使用优化器,在共享内存意外破坏的情况下紧急重启所有的进程 (-) (-) (+)
    如果 set_time_limit() 失败,确保进程会结束 (-) (-) (+)
    特色功能 Error header、优化的上传支持、fastcgi_finish_request()

    特色功能

    所有这些特性都是“不打断”的方式实现的。也就是说,如果你不使用它们,它们的存在不会影响php的功能性——他们都是“透明”的。

    Error header

    范围:php.ini 选项
    分类:便利性

    默认情况下,如果被访问的php脚本包含语法错误,用户会收到一个空的“200 ok”页。这是不方便的。Error header 这个 php.ini 选项允许在这种情况下产生一个 HTTP 错误码,比如“HTTP/1.0 550 Server Made Big Boo”,从而中断web server请求并显示一个正确的错误页。

    如果要实现这样的功能,需要在 php.ini 中添加一条 fastcgi.error_header = "HTTP/1.0 550 Server Made Big Boo"

    在 php-5.2.4 中添加了类似,但不相同的功能:如果被访问的php脚本包含语法错误,并且 display_errors = off,会立刻返回“HTTP/1.0 500 Internal Server Error”。

    如果你需要设定一个 503 错误,或者想要使这个行为独立于 display_errors 的设置,那么可以使用fastcgi.error_header。如果你在 php-5.2.5 或以上版本上启用 php-fpm,那么 fastcgi.error_header的优先级更高。

    优化的上传支持

    实质:web server 支持
    类型:优化

    这个特性正如名字那样,可以加速对大 POST 请求的处理速度,包括文件上传。优化是通过将请求体已写入一个临时文件,然后 fastcgi 协议传递文件名而不是请求体到来实现的。目前就我所知,只有 nginx0.5.9 以上才支持这个功能。显然,这种模式只在 php 和 web server 在一台机器上的时候才能用。

    nginx 样例配置:

    location ~ \.php$ {
    fastcgi_pass_request_body off;
    client_body_in_file_only clean;
    fastcgi_param REQUEST_BODY_FILE $request_body_file;
    ...
    fastcgi_pass ...;
    }

    在php中不需要配置任何东西。如果php收到了参数REQUEST_BODY_FILE,就读取其中的请求体,如果没有,就自行从fastcgi协议中读取请求体。

    结合这个特性,可以考虑对临时文件使用内存文件系统,例如tmpfs(linux):

    client_body_temp_path /dev/shm/client_body_temp;

    fastcgi_finish_request()

    范围:php 函数
    类型:优化

    这个特性可以提高一些 php 请求的处理速度。如果有些处理可以在页面生成完后进行,就可以使用这种优化。比如,在 memcached 中保存 session 就可以在页面交给 web server 后进行。fastcgi_finisth_request() ,这一特性可以结束响应输出,web server 可以立即开始交给等不及的客户端,而此刻,php 可以在请求的上下文环境中处理许多事情。比如保存session,转换上传的视频,处理统计等等。

    fastcgi_finisth_request() 会触发 shutdown 函数运行。

    request_slowlog_timeout

    范围: php-fpm.conf 选项
    分类: 方便

    这个选项能让你跟踪执行缓慢的脚本并把他们连同调用栈一起记录再日志文件中。例如如下设置:

    5s
    logs/slow.log

    记录的 slow.log 可能是这个样子:

    Sep 21 16:22:19.399162 pid 29715 (pool default)
    script_filename = /local/www/stable/www/catalogue.php
    [0x00007fff23618120] mysql_query() /srv/stable/common/Database/class.MySQLRequest.php:20
    [0x00007fff23618560] getResult() /srv/stable/common/Database/class.Facade.php:106
    [0x00007fff23618aa0] query() /srv/stable/common/mysite.com/ORM/class.UsersMapper.php:99
    [0x00007fff23618d60] resolveByID() /srv/stable/common/mysite.com/ORM/class.User.php:629
    [0x00007fff236193b0] getData() /srv/stable/common/class.DataEntity.php:90
    [0x00007fff236195d0] load() /srv/stable/common/mysite.com/ORM/class.User.php:587
    [0x00007fff23619a00] getIsHidden() /srv/stable/common/mysite.com/class.User.php:42
    [0x00007fff2361a470] getName() /local/www/stable/www/catalogue.php:41

    同时,在 error.log 中保存了如下记录:

    Sep 21 16:22:19.399031 [WARNING] fpm_request_check_timed_out(), line 135: child 29715, script '/local/www/stable/www/catalogue.php' (pool default) executing too slow (5.018002 sec), logging

    正如你再例子中看到的,脚本运行了 5 秒以上,并很可能是由于 mysql 响应慢造成的(top backtrace)。

    FAQ

    Q:php-fpm 可以和 ZendOptimize 一起用吗?
    A:完全可以。

    Q:php-fpm 可以和 ZendPlatform、xcache、eAccelerator、APC 等的优化器一起用吗?
    A:是的。php-fpm 的架构和任何一种用于高速 opcode 缓存的共享内存都适用。唯一的限制是:所有的 worker 进程只能适用一个缓存,即使它们用不同的 uid/gid 运行

    Q:为什么我要给 php 打补丁呢?spawn-fcgi 不需要这样!
    A:php-fpm 的创建是为了增强方便管理。没有打过补丁的 php 不能做到:

    平滑重启 php 而不丢失请求,包括升级 php 二进制文件 以及/或者 扩展。
    用不同的 uid / gid / chroot 环境运行 worker 进程
    所有的设置只有一个配置文件
    根据负载动态请求 (TODO)
    对 php 请求实时统计性能 (TODO)

    Q:为什么要用 root 运行 php-fpm 呢?这安全吗?
    A:用 root 启动 php-fpm 只有在你打算用不同 uid/gid 的 php 来处理请求时才有意义。比如,在共享主机上的不同站点。因为只有在 master 进程用 root 运行的时候,才可以建立不同 uid/gid 的子进程。这是相当安全的。master 进程自己从来不会去处理请求。
    在任何情况下,php-fpm 都不会用 root 身份来处理请求。

    Q:php-fpm 可以加速 php 脚本处理速度吗?
    A:不,它不会影响处理速度。不过,如果你使用一些特殊特性,对于一些特定的请求还是可以有性能提升的。

    Q:如果我把我的网站从 mod_php 迁移到 php-fpm ,我会得到性能提升吗?
    A: 通常,当有服务器上有大量空闲内存可用时,能从迁移到 php-fpm 中得到的性能提升可能不大。但是如果内存并不充裕,性能提升还是很可观的,在某些情况下可以达到 300-500%。这可能是由于 nginx + php-fpm 一般会比 Apache + mod_php 使用更少的内存。而且 VFS 缓存会由于更多的空余内存而更有效地工作。

    Q:php-fpm 将来会被官方的 php 包含吗?
    A: 我希望如此。目前,php-fpm 代码的协议是 GPL 。所以现在 php-fpm 的代码与 php 协议(类似 bsd)并不匹配。这是临时性措施。这样的选择是为了简化开发过程。一旦代码的功能完备,比如自适应生成子进程和其他一些东西,协议会改为一个相匹配的。 之后,php-fpm 会正式发布给 php 开发团队,并被建议包含。

    邮件列表

    如果你有问题的话,请不要犹豫在邮件组里写邮件。

    English: highload-php-en Russian: highload-php-ru

    文档

    php-fpm 已经在 Linux、MacOSX、Solaris 和 FreeBSD 上测试通过。

    确信 libxml2(在某些系统上叫做libxml2-devel)已经安装。

    下载最小的 phpphp-fpm

    $ bzip2 -cd php-5.2.5.tar.bz2 | tar xf -
    $ gzip -cd php-5.2.5-fpm-0.5.7.diff.gz | patch -d php-5.2.5 -p1
    $ cd php-5.2.5 && ./configure --enable-fastcgi --enable-fpm
    $ make all install

    编辑 $prefix/etc/php-fpm.conf

    运行 $prefix/bin/php-cgi --fpm

    仔细检查 $prefix/logs/php-fpm.log

    运行 phpinfo() 检查你的网站是否还正常运行

    master 进程的 pid 被存放在 $prefix/logs/php-fpm.pid

    master进程可以理解以下信号:

    SIGINT, SIGTERM 立刻终止
    SIGQUIT 平滑终止
    SIGUSR1 重新打开日志文件
    SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模

    关于

    嗨,我的名字叫 Andrei Nigmatulin, 我是 php-fpm 的作者。

    从 2004 年开始,我就在等有什么人让 PHP FastCGI 能满足产品环境,但我等不下去了。

    php-fpm 是在数个项目种使用 PHP 的 FastCGI SAPI 中的知识、经验和想法的产物。

    php-fpm 可以在 GPL 协议下用在公共用途。和 php-fpm 绑定的修改版的 libevent 是在 BSD 协议下发布的。

    我需要得到您的反馈——新的想法和建议——来改进和优化 php FastCGI SAPI。 如果您有什么想法、意见、补充和建议,我会很高兴,很原意听取,也许还会实现他们。给给我发邮件吧。(地址在本页的末尾)。

    如果你想支持 php-fpm 的开发,可以作一些捐赠: Paypal Yandex.Money

    15/05/2007 - 第一次提交到 php-fpm.

    andrei dot nigmatulin at gmail dot com

    译注:
    php-fpm还带有一个更方便的脚本,在$prefix/sbin/php-fpm。可以用php-fpm start|graceful|restart|stop来维护。稍编辑一下就可以让它使用配置文件。

    后记:

    最开始,php-fpm 只有俄文文档,弄的我很郁闷,于是我先用 google 翻译先弄成英文,然后再人工翻成中文。这当中会难免会在我自己的英文水平引起的错误之外,再多些错误出来。后来终于有了一个英文的 wiki,并邀请我提供中文翻译。同时,距上一次翻译(2008年5月)以后,原来的文档也已经有了更新。于是我就根据英文 wiki ,重新翻译了一遍。



    -------------------------------------------
    i3server
    i3server
    www.86-00.com