blogjava-凯发k8网页登录http://www.blogjava.net/zhyiwww/category/9157.html用平实的笔,记录编程路上的点点滴滴………zh-cnwed, 19 feb 2014 05:47:30 gmtwed, 19 feb 2014 05:47:30 gmt60windows下的sc命令参考http://www.blogjava.net/zhyiwww/archive/2014/02/18/410001.htmlzhyiwwwzhyiwwwtue, 18 feb 2014 12:46:00 gmthttp://www.blogjava.net/zhyiwww/archive/2014/02/18/410001.htmlhttp://www.blogjava.net/zhyiwww/comments/410001.htmlhttp://www.blogjava.net/zhyiwww/archive/2014/02/18/410001.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/410001.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/410001.html
c:\tmp>sc /?
错误:  未知命令
描述:
        sc 是用于与服务控制管理器和服务进行通信的命令行程序。
用法:
        sc [command] [service name] ...
        选项 的格式为 "\\servername"
        键入 "sc [command]" 可以获得有关命令的进一步帮助
        命令:
          query-----------查询服务的状态,
                          或枚举服务类型的状态。
          queryex---------查询服务的扩展状态,
                          或枚举服务类型的状态。
          start-----------启动服务。
          pause-----------向服务发送 pause 控制请求。
          interrogate-----向服务发送 interrogate 控制请求。
          continue--------向服务发送 continue 控制请求。
          stop------------向服务发送 stop 请求。
          config----------更改服务的配置(永久)。
          description-----更改服务的描述。
          failure---------更改服务失败时执行的操作。
          failureflag-----更改服务的失败操作标志。
          sidtype---------更改服务的服务 sid 类型。
          privs-----------更改服务的所需权限。
          qc--------------查询服务的配置信息。
          qdescription----查询服务的描述。
          qfailure--------查询失败时服务执行的操作。
          qfailureflag----查询服务的失败操作标志。
          qsidtype--------查询服务的服务 sid 类型。
          qprivs----------查询服务的所需权限。
          qtriggerinfo----查询服务的触发器参数。
          qpreferrednode--查询首选的服务 numa 节点。
          delete----------(从注册表)删除服务。
          create----------创建服务(将其添加到注册表)。
          control---------向服务发送控制。
          sdshow----------显示服务的安全描述符。
          sdset-----------设置服务的安全描述符。
          showsid---------显示相应于假定名称的 sid 字符串。
          triggerinfo-----配置服务的触发器参数。
          preferrednode---设置首选的服务 numa 节点。
          getdisplayname--获取服务的 displayname
          getkeyname------获取服务的 servicekeyname。
          enumdepend------枚举服务的依存关系。
        下列命令不要求服务名称:
        sc
          boot------------(ok | bad) 指示是否将上一次启动保存为
                          最近一次已知的正确启动配置
          lock------------锁定服务数据库
          querylock-------查询 scmanager 数据库的 lockstatus
示例:
        sc start myservice
是否想参阅 query 和 queryex 命令的帮助? [ y | n ]:
y
query 和 queryex 选项:
        如果查询命令带服务名称,将返回
        该服务的状态。其他选项不适合这种
        情况。如果查询命令不带参数或
        带下列选项之一,将枚举此服务。
    type=    要枚举的服务的类型(driver, service, all)
             默认 = service)
    state=   要枚举的服务的状态 (inactive, all)
             (默认 = active)
    bufsize= 枚举缓冲区的大小(以字节计)
             (默认 = 4096)
    ri=      开始枚举的恢复索引号
             (默认 = 0)
    group=   要枚举的服务组
             (默认 = all groups)
语法示例
sc query                - 枚举活动服务和驱动程序的状态
sc query eventlog       - 显示 eventlog 服务的状态
sc queryex eventlog     - 显示 eventlog 服务的扩展状态
sc query type= driver   - 仅枚举活动驱动程序
sc query type= service  - 仅枚举 win32 服务
sc query state= all     - 枚举所有服务和驱动程序
sc query bufsize= 50    - 枚举缓冲区为 50 字节
sc query ri= 14         - 枚举时恢复索引 = 14
sc queryex group= ""    - 枚举不在组内的活动服务
sc query type= interact - 枚举所有不活动服务
sc query type= driver group= ndis     - 枚举所有 ndis 驱动程序
c:\tmp>

如果需要查看全部的服务:
可以使用  sc query state= all 

如果我想完成一个自动启动和关闭的oracle 脚本,可以通过如下步骤实现:
1)sc query state= all > sl.txt
2)findstr "display_name" sl.txt > asl.txt
如下:
c:\tmp>findstr "display_name"  sl.txt
display_name: adobe acrobat update service
display_name: application experience
display_name: application layer gateway service
display_name: amd external events utility
display_name: avira scheduler
display_name: avira real-time protection
display_name: application identity
display_name: application information
display_name: application management
display_name: windows audio endpoint builder
display_name: windows audio
。。。
3)findstr /i "oracle"  asl.txt > osl.txt
内容:
c:\tmp>findstr /i "oracle" asl.txt
display_name: oracledbconsoleorcl
display_name: oraclejobschedulerorcl
display_name: oraclemtsrecoveryservice
display_name: oracleoradb11g_home1clragent
display_name: oracleoradb11g_home1tnslistener
display_name: oracleserviceorcl
display_name: oracle orcl vss writer service
4)在vim中,把display_name:替换成 net stop 或者net start就可以了:

c:\tmp>gvim osl.txt
c:\tmp>type  osl.txt
net stop  oracledbconsoleorcl
net stop  oraclejobschedulerorcl
net stop  oraclemtsrecoveryservice
net stop  oracleoradb11g_home1clragent
net stop  oracleoradb11g_home1tnslistener
net stop  oracleserviceorcl
net stop  oracle orcl vss writer service
net start  oracledbconsoleorcl
net start  oraclejobschedulerorcl
net start  oraclemtsrecoveryservice
net start  oracleoradb11g_home1clragent
net start  oracleoradb11g_home1tnslistener
net start  oracleserviceorcl
net start  oracle orcl vss writer service


zhyiwww 2014-02-18 20:46 发表评论
]]>
myeclipse10svn插件的安装http://www.blogjava.net/zhyiwww/archive/2013/07/18/401696.htmlzhyiwwwzhyiwwwthu, 18 jul 2013 05:04:00 gmthttp://www.blogjava.net/zhyiwww/archive/2013/07/18/401696.htmlhttp://www.blogjava.net/zhyiwww/comments/401696.htmlhttp://www.blogjava.net/zhyiwww/archive/2013/07/18/401696.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/401696.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/401696.html
下载后,把site-1.8.22.zip复制到myeclipse的dropins目录,如我的目录为:
d:\myeclipse\myeclipse 10\dropins

解压site-1.8.22.zip到site-1.8.22目录,然后把site-1.8.22目录重命名为svn,即目录:
d:\myeclipse\myeclipse 10\dropins\svn

重启myeclipse就可以用svn了。

注:
    在myeclipse 8.5 的时候,我曾经这么用过,似乎svn不能用,很郁闷。没有想到这次就可以用了。大家也可以试一下。



zhyiwww 2013-07-18 13:04 发表评论
]]>
在word中表格分页显示表头http://www.blogjava.net/zhyiwww/archive/2012/12/12/392877.htmlzhyiwwwzhyiwwwwed, 12 dec 2012 07:52:00 gmthttp://www.blogjava.net/zhyiwww/archive/2012/12/12/392877.htmlhttp://www.blogjava.net/zhyiwww/comments/392877.htmlhttp://www.blogjava.net/zhyiwww/archive/2012/12/12/392877.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/392877.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/392877.html

word中表格一页显示不完在下一页显示的表格自动添加表头

操作步骤:
只需一下3个步骤
  1. 选中表头
  2. 右键属性
  3. 选择行标签,勾选 “在各页顶端已标题行出现”


zhyiwww 2012-12-12 15:52 发表评论
]]>
在64位ubutu上安装32位adobe flash playerhttp://www.blogjava.net/zhyiwww/archive/2011/05/10/349920.htmlzhyiwwwzhyiwwwtue, 10 may 2011 07:06:00 gmthttp://www.blogjava.net/zhyiwww/archive/2011/05/10/349920.htmlhttp://www.blogjava.net/zhyiwww/comments/349920.htmlhttp://www.blogjava.net/zhyiwww/archive/2011/05/10/349920.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/349920.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/349920.html

[2]复制文件到插件目录
sudo  cp /tmp/libflashplayer.so /usr/lib/firefox-addons/plugins/
 
[3]重启firefox




zhyiwww 2011-05-10 15:06
]]>
outlook2007导出邮件为eml文件的方法http://www.blogjava.net/zhyiwww/archive/2011/05/03/349423.htmlzhyiwwwzhyiwwwtue, 03 may 2011 06:10:00 gmthttp://www.blogjava.net/zhyiwww/archive/2011/05/03/349423.htmlhttp://www.blogjava.net/zhyiwww/comments/349423.htmlhttp://www.blogjava.net/zhyiwww/archive/2011/05/03/349423.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/349423.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/349423.html 【1】用windows outlook express导入outlook 2007邮件。
【2】在windows outlook express中,把选中的邮件拖拽到一个文件目录,就存成了.eml文件了。




zhyiwww 2011-05-03 14:10
]]>
在firefox和ie上使用del.icio.us插件http://www.blogjava.net/zhyiwww/archive/2010/08/19/329303.htmlzhyiwwwzhyiwwwthu, 19 aug 2010 01:31:00 gmthttp://www.blogjava.net/zhyiwww/archive/2010/08/19/329303.htmlhttp://www.blogjava.net/zhyiwww/comments/329303.htmlhttp://www.blogjava.net/zhyiwww/archive/2010/08/19/329303.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/329303.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/329303.html 一直很喜欢使用del.icio.us插件,最近不能用了。
也一样从www.mozilla.com上安装插件,就是不能用,在插件配置里面只有创建新用户的按钮,没有用户登录的按钮。
后来找官方资料,找到了有效的解决方法。
请访问
点击选择自己所用的浏览器,然后安装插件就可以。

可喜的是,现在del.icio.us插件支持ie和chrome了。
以后就可以在常用主流浏览器下实现书签的共享了。



zhyiwww 2010-08-19 09:31
]]>
修复mbrhttp://www.blogjava.net/zhyiwww/archive/2009/08/17/291448.htmlzhyiwwwzhyiwwwmon, 17 aug 2009 03:40:00 gmthttp://www.blogjava.net/zhyiwww/archive/2009/08/17/291448.htmlhttp://www.blogjava.net/zhyiwww/comments/291448.htmlhttp://www.blogjava.net/zhyiwww/archive/2009/08/17/291448.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/291448.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/291448.html解决办法就只能想办法恢复mbr。
可以用mbrifc这个工具来实现。
可以到http://www.sysint.no/nedlasting/mbrfix.htm下载,然后解压。

usage:

    mbrfix /drive  {/partition }  { /yes } { /byte }


执行 mbrfix /drive 0 fixmbr /yes
然后重启,你就能进入xp系统了。
















zhyiwww 2009-08-17 11:40
]]>
unix2dos dos2unixhttp://www.blogjava.net/zhyiwww/archive/2009/06/18/283056.htmlzhyiwwwzhyiwwwthu, 18 jun 2009 07:11:00 gmthttp://www.blogjava.net/zhyiwww/archive/2009/06/18/283056.htmlhttp://www.blogjava.net/zhyiwww/comments/283056.htmlhttp://www.blogjava.net/zhyiwww/archive/2009/06/18/283056.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/283056.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/283056.html可以先安装
aptitude install tofrodos -y
然后就可以使用了

这两个工具,可是实现在dos格式和unix文件格式之间的互相转换。

比如:
北京市东城区东交民巷2号北京新侨诺富特饭店^m
北京市东城区东内大街201号^m
北京市东城区东华门柏树胡同23号^m
北京市东城区东单三条9号^m
北京市东城区东单北大街^m
北京市东城区东单北大街1号国旅大厦3楼王府井饭店旁边^m
北京市东城区东单北大街45号^m
北京市东城区东单北大街53号^m
北京市东城区东单北大街63号^m

上面的是windows下文件格式

$ dos2unix aa.txt
转换后,格式如下:

北京市东城区东交民巷2号北京新侨诺富特饭店
北京市东城区东内大街201号
北京市东城区东华门柏树胡同23号
北京市东城区东单三条9号
北京市东城区东单北大街
北京市东城区东单北大街1号国旅大厦3楼王府井饭店旁边
北京市东城区东单北大街45号
北京市东城区东单北大街53号




zhyiwww 2009-06-18 15:11
]]>
jvm terminated. exit code=127http://www.blogjava.net/zhyiwww/archive/2009/06/18/282993.htmlzhyiwwwzhyiwwwthu, 18 jun 2009 02:43:00 gmthttp://www.blogjava.net/zhyiwww/archive/2009/06/18/282993.htmlhttp://www.blogjava.net/zhyiwww/comments/282993.htmlhttp://www.blogjava.net/zhyiwww/archive/2009/06/18/282993.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/282993.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/282993.html
jvm terminated. exit code=127
/zy/green/jbuilder2007/./jre/bin/java
-xms80m
-xmx512m
-xx:maxpermsize=128m
-jar /zy/green/jbuilder2007/./startup.jar
-os linux
-ws gtk
-arch x86
-launcher /zy/green/jbuilder2007/jbuilder.bin
-name jbuilder.bin
-showsplash 600
-exitdata 9000c
-configuration /zy/green/jbuilder2007/configuration_jbuilder
-vm /zy/green/jbuilder2007/jre/bin/java
-vmargs
-xms80m
-xmx1024m
-xx:maxpermsize=128m
-jar /zy/green/jbuilder2007/startup.jar
~                                                                                                                                                                                   

错误输出如下:

zhangyi@debian:/zy/green/jbuilder2007$ ./jbuilder.bin
[info] hibernateplugin - hibernateplugin started
/zy/green/jbuilder2007/./jre/bin/java: symbol lookup error: /zy/green/jbuilder2007/configuration_jbuilder/org.eclipse.osgi/bundles/766/1/.cp/libswt-mozilla-gtk-3236.so: undefined symbol: _zn4nsid5parseepkc

(jbuilder.bin:5743): gdk-critical **: gdk_x11_atom_to_xatom_for_display: assertion `atom != gdk_none' failed
zhangyi@debian:/zy/green/jbuilder2007$


从网上找了不少的资料,凯发天生赢家一触即发官网的解决方案如下:

aptitude install xulrunner-dev -y

安装完毕,再重新启动,就可以了






zhyiwww 2009-06-18 10:43
]]>
如何在debian上使用qqhttp://www.blogjava.net/zhyiwww/archive/2009/03/24/261723.htmlzhyiwwwzhyiwwwtue, 24 mar 2009 08:25:00 gmthttp://www.blogjava.net/zhyiwww/archive/2009/03/24/261723.htmlhttp://www.blogjava.net/zhyiwww/comments/261723.htmlhttp://www.blogjava.net/zhyiwww/archive/2009/03/24/261723.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/261723.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/261723.html环境 debian
用pidge登录qq
[1]安装或者更新最新的pidge
    aptitude install pidge
[2]配置pidge中的qq登录服务器
pidge_qq_config.png

里面的服务器一定要配置对。
关于 qq服务器,请参看


zhyiwww 2009-03-24 16:25
]]>
vim目录树插件nerd tree的安装方法http://www.blogjava.net/zhyiwww/archive/2009/03/18/260408.htmlzhyiwwwzhyiwwwwed, 18 mar 2009 03:37:00 gmthttp://www.blogjava.net/zhyiwww/archive/2009/03/18/260408.htmlhttp://www.blogjava.net/zhyiwww/comments/260408.htmlhttp://www.blogjava.net/zhyiwww/archive/2009/03/18/260408.html#feedback1http://www.blogjava.net/zhyiwww/comments/commentrss/260408.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/260408.html[1]下载nerd tree
wget http://www.vim.org/scripts/download_script.php?src_id=9870 -o nerdtree.zip

[2]添加.vim配置
查看~/.vim目录,如果不存在,创建此目录

[3]copy nerdtree.zip to ~/.vim

[4]unzip nerdtree.zip

ok .

使用方法和效果如图:
nerd_tree.png


zhyiwww 2009-03-18 11:37
]]>
keyboard shortcuts for firefox(转载)http://www.blogjava.net/zhyiwww/archive/2008/12/25/248249.htmlzhyiwwwzhyiwwwthu, 25 dec 2008 05:38:00 gmthttp://www.blogjava.net/zhyiwww/archive/2008/12/25/248249.htmlhttp://www.blogjava.net/zhyiwww/comments/248249.htmlhttp://www.blogjava.net/zhyiwww/archive/2008/12/25/248249.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/248249.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/248249.html阅读全文

zhyiwww 2008-12-25 13:38
]]>
foxmail不能发送邮件http://www.blogjava.net/zhyiwww/archive/2008/12/02/243980.htmlzhyiwwwzhyiwwwtue, 02 dec 2008 09:44:00 gmthttp://www.blogjava.net/zhyiwww/archive/2008/12/02/243980.htmlhttp://www.blogjava.net/zhyiwww/comments/243980.htmlhttp://www.blogjava.net/zhyiwww/archive/2008/12/02/243980.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/243980.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/243980.html我的foxmail能收邮件但是不能发送邮件,问题解决:
network associates 就是这个软件的问题! 
打开控制台,选择访问保护,里面有个25端口,就是禁止发邮件的设置,把勾去掉就ok了!



zhyiwww 2008-12-02 17:44
]]>
用forfiles或者where实现文件查找http://www.blogjava.net/zhyiwww/archive/2008/12/02/243936.htmlzhyiwwwzhyiwwwtue, 02 dec 2008 07:11:00 gmthttp://www.blogjava.net/zhyiwww/archive/2008/12/02/243936.htmlhttp://www.blogjava.net/zhyiwww/comments/243936.htmlhttp://www.blogjava.net/zhyiwww/archive/2008/12/02/243936.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/243936.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/243936.html forfiles 也可以用来查找文件
forfiles /p . /s  /m  *.html /c  "cmd /c echo @path"

这样可以显示你找到的文件的全路径。
相当于
where /r .  *.html


如果用
dir /s . | grep *.html
就只能看到文件的名称,不能看到文件的全路径。

两个命令的不同:
用forfiles查找到文件后,可以用/c参数实现对文件的操作,比如重命名、移动、删除等操作
用where实现查找就不能实现此功能,仅能告诉我们要查找的文件存不存在。

两个命令的相同点:
都可以查找文件,并且可以看到文件的全路径。

用dir grep 就不能看到查到文件的全路径。

在linux下面,用find也可以实现文件查找,功能类似于forfiles


zhyiwww 2008-12-02 15:11
]]>
让你的vim在启动的时候默认显示行号http://www.blogjava.net/zhyiwww/archive/2008/11/20/241546.htmlzhyiwwwzhyiwwwthu, 20 nov 2008 01:30:00 gmthttp://www.blogjava.net/zhyiwww/archive/2008/11/20/241546.htmlhttp://www.blogjava.net/zhyiwww/comments/241546.htmlhttp://www.blogjava.net/zhyiwww/archive/2008/11/20/241546.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/241546.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/241546.htmlset nu
但是,每一次你都需要执行此命令才能显示行号。
所以,如果你想默认的在启动vim的时候就显示行号,你可以编辑vim安装目录下面的_vimrc文件
在开头添加
set nu
就可以了。以后每次在启动vim的时候,就会自动地显示行号。


zhyiwww 2008-11-20 09:30
]]>
利用eclipse和tomcat进行远程调试http://www.blogjava.net/zhyiwww/archive/2008/10/21/235744.htmlzhyiwwwzhyiwwwtue, 21 oct 2008 10:34:00 gmthttp://www.blogjava.net/zhyiwww/archive/2008/10/21/235744.htmlhttp://www.blogjava.net/zhyiwww/comments/235744.htmlhttp://www.blogjava.net/zhyiwww/archive/2008/10/21/235744.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/235744.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/235744.html
rem ===========================================================================
rem this is  added for remoting debug
set jpda_address=8000(注意,此端口一定不能和你的tomcat监听端口一样,比如,你的tomcat如果是8080,此端口,就不能是8080)
set jpda_transport=dt_socket
rem ===========================================================================

2 在eclipse中添加远程调试
打开调试配置窗口,添加一个remote java application
配置例子如下:eclipse_remote_debug.png

注意,配置port的时候一定和你刚才添加的端口一致。

3 启动tomcat,命令如下:catalina jpda start
4 启动remote debug,也就是你刚才配置好的要调试的远程程序。就可以看到远程调试的结果了。如下图:
eclipse_remote_debug_1.png


补充:
这种方法,在启动tomcat的时候,需要用catalina.bat jpda start 来实现。
如果不想每一次都这样,可以修改startup.bat文件,以后启动,就和你通常启动tomcat的方法一样。

:setargs
if ""%1""=="""" goto donesetargs
set cmd_line_args=%cmd_line_args% %1
shift
goto setargs
:donesetargs

call "%executable%" jpda start %cmd_line_args%

:en

看到那个红色字体的部分,是你需要添加的。之后,你就可以直接startup.bat,默认就已经启动了远程调试了。



zhyiwww 2008-10-21 18:34
]]>
the concrete architecture of the apache web server(zhuan zai)http://www.blogjava.net/zhyiwww/archive/2008/05/09/199548.htmlzhyiwwwzhyiwwwfri, 09 may 2008 08:39:00 gmthttp://www.blogjava.net/zhyiwww/archive/2008/05/09/199548.htmlhttp://www.blogjava.net/zhyiwww/comments/199548.htmlhttp://www.blogjava.net/zhyiwww/archive/2008/05/09/199548.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/199548.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/199548.html阅读全文

zhyiwww 2008-05-09 16:39
]]>
the conceptual architecture of the apache web server(zhuan zai)http://www.blogjava.net/zhyiwww/archive/2008/05/09/199541.htmlzhyiwwwzhyiwwwfri, 09 may 2008 08:30:00 gmthttp://www.blogjava.net/zhyiwww/archive/2008/05/09/199541.htmlhttp://www.blogjava.net/zhyiwww/comments/199541.htmlhttp://www.blogjava.net/zhyiwww/archive/2008/05/09/199541.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/199541.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/199541.html

the conceptual architecture of the apache web server

octavian andrei dragoi ,
department of computer science,
university of waterloo,

assignment 1
for cs746g
january 26, 1999
 

abstract:

this report presents the conceptual (abstract) architecture of the apache web server. it tries to emphasize the overall structure of the system, without going into implementation details, or requiring such details to be previously known by the reader. the main purpose is to make the architecture "intellectually tractable" ().
the conceptual architecture has been inferred from a number of apache related documents and from the way source files are grouped and named.
at a high level the apache server architecture is composed of a core that implements the most basic functionality of a web server and a set of standard modules that actually service the phases of handling an http request.
the server core accepts a http request and implicitly invokes the appropriate handlers, sequentially, in the appropriate order, to service the request.
the report shows that the most similar architectural style (in the sense of ) that can characterize the apache architecture is "implicit invocation" , although the notion of event does not exist in the architecture.
the architecture offers great opportunities for extending or changing the apache functionality, by the means of adding or replacing modules.
keywords:
apache, conceptual architecture, abstract architecture, web server
available online at:
  a good architectural description make the architecture "intellectually tractable". the paper might, sometimes, simplify the actual architecture order to achieved the previously stated desiderata.

the report assumes no previous familiarity with the architecture of the apache web server. so it can serve as an introductory reading on the architecture of the server.

it should be noted that the architecture described here might not be entirely accurate. it has been inferred based on several , including the overall structure of files and files name. it does not start from a previously existing complete design document.

1.1. about apache

the apache web server is currently the most popular web server, according to a . it has maintained (and improved) its status since mid 1996. originally, the project was based on ncsa httpd 1.3, were from the name ("a patchy server"). since then the code base was completely rewritten, and evolved into a completely independent project.
one of the major reasons for the apache success is the fact that is an "open source" project (any one can have access to apache code source, and any one can write its on modules to suits one needs). (source ).

may be here is the place to mention that apache is written to be drop-in compatible with the ncsa server. this has design consequences due related to some configuration commands promoted by ncsa server, which cannot be naturally implemented in apache. these commands are supported in a way that, somehow, is not in the general "philosophy" of the system.(). (more details in the configuration section).

1.2. overview

the report is organized as follows: offers a high level view on the conceptual architecture of the apache, outlining the main building bricks: the apache core and the apache modules. next gives details on the conceptual architecture of the apache core and shows what the high level anatomy of a module. it also outlines the phases of handling an http request as divided by the apache architecture. it ends with a short description of the most representative standard modules. gives the conceptual architecture of the apache server and analyze the concurrency in the system. present some additional issues related to the architecture of the system, mainly how configuration fit into the hole picture, how is data passed between core and modules and how resources are allocated and managed managed. next comments on the architectural styles (in the sense of , ) applicable to the apache architecture, while the elaborates on extensibility issues. and a end the report. the function of a web server is to service requests made through http protocol. typically the server receive a request asking for a specific resource and returns the resource as a response. a client might reference in its request a file, and then that file is returned or, for example, a directory and then the content of that directory (codified in some suitable form) is returned. a client might also request a program, and it is the web server task to launch that program (cgi script) and to return the output of that program to the client. various other resources might be referenced in client's request.
to summarize: the web server take a request, decode it, obtains the resource and hands it to the client.

additional concerns related to controlling access authorization and clients authorizations are also in the responsibility of the web server. as has been said the web server might execute programs as response to clients requests. it must ensure that this is not a threat for the host system (were the web server runs). in addition, the web server must be capable, not only to respond to a high rate of requests, but also to satisfy a request as quickly as possible.

2.1. description

as opposed to a monolithic server architecture in which all the activities are done by a single unit (in which different parts of handling a request are poorly delimited), apache takes a modular approach. illustrates the high level conceptual architecture. there is a core part of the server that is responsible for defining and following the steps in servicing a request and several modules that actually implement the different phases of handling the request.
as shall be seen later does not capture an important characteristic of the architecture, namely, the predefined order in which modules are called, based on their advertised characteristics.
figure 1.high level conceptual architecture
the idea is to keep the basic server code clean while allowing third-parties to override or extend even basic characteristics. this section presents in more detail the components of the apache server architecture. it presents the conceptual parts of the apache core and how a request is decomposed in a set of phases. it also describe the anatomy of an apache module (at a conceptual level).

3.1. the core

the core implements the basic functionality of the server. in addition it implements a number of utility functions. a worth mentioning utility, is the one that provides resources allocation on a per request pool. this facility is offered not only to the server core but also to modules.

the following are the components of the core:

  • http_protocol.c: contains routines that directly communicates with the client (through the socket connection), following the http protocol. all data transfers to the client are done using this component.
  • http_main.c: the component that startup the server and contains the main server loop that waits for and accepts connections. it is also in charge of managing timeouts.
  • http_request.c the component that handles the flow of the request processing, dispatching control to the modules in the appropriate order. it is also in charge with error handling.
  • http_core.c: the component implementing the most basic functionality, which is described in a comment from a source file as being "just 'barely' functional enough to serve documents, though not terribly well". another interesting quote from a source file comment illustrates very well the function of this component:"this file could almost be mod_core.c". meaning that the component behaves like a module but has to access some globals directly (which is not characteristic for a module).
  • the component that take care of allocating resource pools, and keeping track of them. (alloc.c)
  • other utilities, including reading configuration files and managing the information gathered from those files (http_config.c), as well as support for virtual hosts. an important function of http_config is that form the list of modules that will be called to service different phases of the requests.
in the above list the term component has been used in order to avoid the term module which will be used only to refers to apache modules
figure 2. architecture for apache core
depicts the interaction between different components of the core. as all components use the different utilities functions, connectors to utilities and alloc have not been pictured. interaction is used in a broader sense, meaning from calling a component service function to "conceptually" relinquish control to that component.

it is interesting to observed that although the components of the core have rather distinct functionality, there is not a simple way to depict the interactions between them. most of the architectural information being in the names of the modules rather than in the connectors between them.

this is due to the considerably effort done by the designers to move everything that can be expressed as a separate entity into the modules part of the apache server. what is left in the core are components too interconnected to be written as separate modules.

3.2. request phases

a module implements only portion of the functionality for servicing a client request. more than one module are necessary to completely respond to a request. however module does not know one about the other. the control is transfered back and forth between the core and different modules. this is handled by dividing the handling of the request into a set of distinct phases.

the following are the phases of handling a request for the apache server:

  • uri to filename translation;
  • check access based on host address, and other available information;
  • get an user id from the http request and validate it;
  • authorize the user;
  • determine the mime type of the requested object (the content type, the encoding and the language);
  • fix-ups (for example replace aliases by the actual path);
  • send the actual data back to the client;
  • log the request;
the phases are "controlled" by the http_request component of the core as has been already stated (see ).

3.3. modules

as has been said the role of the modules is to implement/override/extend the functionality of the apache web server. all modules has the same interface to the core of the server. module does not interact directly one with another. if they interact it is always through the apache core.(implicit invocation as shall be seen).
figure 3. architecture of an apache module
apache (1.3) permits loading of modules when they are needed (they are dynamically linked with the server) and therefore the initialization and configuration methods might be called when the module is loaded as opposed to when the server is initialized.

3.4. handlers

a handler is for apache the action that must be performed in some phase of servicing a request. for example when the requested object is a file, the handler that returns the the file must open the file, read the content of the file and hand the content of the file to the client (through apache core).

handlers are defined by modules, and a module might specify handlers for one, many or none of the phases of a request. handlers are the part of the module that is called when the processing of the request enters the phase for which the handler is defined.

the rationale behind having modules defining handlers for more than one phase is that a module might save internally data on the request being processed, and when its handlers for a subsequent phase of the request are called they might make use of those the data. in theory the module might even save data between different request (e.g. it might cash some file content for future use).

it should be noted that there are additional functions exported by modules, related with configuration, and initialization, they are called in the startup phase of the server.

3.5. standard modules

apache comes with a set of standard modules for providing the complete functionality of a web server. the most representative/relevant among the standard modules are listed below. they also illustrate what kind of manipulation can be done at each phase.
  • for uri to file name translation phase:
    • mod_userdir: translate the user home directories into actual paths mod_rewrite apache 1.2 and up
    • mod_rewrite: rewrites urls based on regular expressions, it has additional handlers for fix-ups and for determining the mime type
  • for authentication / authorization phases:
    • mod_auth, mod_auth_anon,mod_auth_db, mod_auth_dbm : user authentication using text files, anonymous in ftp-style, using berkeley db files, using dbm files.
    • mod_access: host based access control.
  • for determining the mime type of the requested object (the content type, the encoding and the language):
    • mod_mime: determines document types using file extensions.
    • mod_mime_magic: determines document types using "magic numbers" (e.g. all gif files start with a certain code)
  • for fix-ups phase:
    • mod_alias: replace aliases by the actual path
    • mod_env: fix-up the environment (based on information in configuration files)
    • mod_speling: automatically correct minor typos in urls
  • for sending actual data back to the client: to chose the appropriate module for this phase the mime type or the pseudo mime type (e.g. for a cgi-script) is used.
    • mod_actions: file type/method-based script execution
    • mod_asis: send the file as it is
    • mod_autoindex: send an automatic generated representation of a directory listing
    • mod_cgi: invokes cgi scripts and returns the result
    • mod_include: handles server side includes (documents parse by server which includes certain additional data before handing the document to the client)
    • mod_dir: basic directory handling.
    • mod_imap: handles image-map file
  • for logging the request phase:
    • mod_log_*: various types of logging modules
has shown which are the main components of the apache web server and how they interact. however it does not illustrate the fact that handlers in modules are called in a fixed, predefined order, which is the order of the phases of servicing a request. tries to add the flow information mention above.

for some phases only one module (handler in a module) can be called. such phases are the authorization, the authentication, the return of the actual object to the client, and sometimes the uri to filename translation.
other phases of servicing a request can have more that one handler called. for example there can be more than one module called to implement the logging part of the request.

in some phases of processing a request all the handlers (in the registered modules) might be called until one returns a special code meaning that subsequent registered handlers for the current phase should not be called. an example is the uri to filename, translation phase.
further more there might be the case that a handler returns an error code. in that case the processing of the request should stop and an error should be returned to the client (i.e. no other handlers are called, from this phase or subsequent phases).

figure 4. conceptual architecture of apache server

4.1. concurrency in apache

some web sites are heavily loaded (many requests per minute or even per second). traditionally tcp/ip servers fork a new child to handle new incoming request from clients. however in the situation of a busy web site the overhead of fork-ing a huge number of children will simply suffocate the machine.

as a consequence, apache uses a different technique, namely persistent server processes. it forks a fixed number of children, right from the beginning. the children service incoming requests independently (different address spaces). concurrency in apache server is pictured in
alternatively, when apache compiles on ms windows (as opposed to unix), a fixed number of threads is started from the beginning to service the incoming request (due probably to specific characteristic of this operating system).

figure 5. concurrency on apache(unix)
it is interesting that apache server can dynamically control the number of children it forks (i.e. increasing or decreasing it), based on current load.

from another point of view one might raise the question if a module is a separated process or can be implemented as a separated process. in apache module is not a separated process. however some modules might fork new children in order to do their job. a readily example is the mod_cgi module, which handles the cgi script. it must fork a new child to execute the actual cgi script (after proper redirection of the standard input and output for the child process), and wait for it to finish. but this is a characteristic of the mod_cgi, many other modules need not to fork children.

a different kind of module is the one that although it is not a separate process and does not for children it communicate through ipc mechanisms or sockets in with a different process (which might, for instance, be located on a different machine). an example of such module would be an authorization module which communicate with a server that manages users and passwords information. even the cgi module might be implemented in this way (i.e. the actual script running as a completely different process not a child) which will result in improved security, but will have the communication overhead as a penalty.

some additional issues has been left aside from the description of the conceptual architecture and are treated in the next sections.

5.1. configuration of apache components

one of the declared purposes of the apache server architecture is to make it highly customizable.
configuration files permit to customize not only the behavior of the server but the one of the modules too. each module can advertise the custom commands it recognize from configuration files and will be called when such commands are found. those commands might be completely new commands (not known in by the server core).
apache permits even per directory customization via a file call .htaccess. this file also might contain commands understand only by modules.

an interesting concept implemented by apache is the one of virtual hosts. the server can respond to more than one name (i.e. www.example and www2.example), each assigned to one of the multiple ip addresses of the machine. the multiple ip addresses can be addresses associated with physical network interfaces or can be addresses associated with virtual network interfaces (simulated via logical devices by the operating system). apache is able to "tell" under which name the host has been referenced and use different configuration options (e.g. allowing more access rights to users accessing the host through an interface networked in the local network, as opposed to users accessing the web server via an interface networked in the outside-the-company network). modules also have accessed to this information.

to summarize, the apache "philosophy" related to configuration is: each component takes care of its own configuration, and configuration commands. the server core parse the configuration files and dispatches configuration commands to the appropriate modules to be interpreted (executed), or interprets (executes) the command itself if in particular was meant for it (i.e. is a configuration command for the core not for a module).

5.2. compatibility with ncsa server - impact on architecture

starting from the code base of the ncsa server apache was always design to be a drop-in replacement for this server. that means that apache must understand and follow the configuration commands, and recognize the configuration files of the ncsa server. however this is not an easy task because some of the commands must affect behavior that appear in more than one module. therefore one of the main principle of the apache configuration machinery, namely each module takes care of its own configuration must be broken .

to "fix" this the problem commands of ncsa server (e.g. options) are interpreted by the apache core, even when they affect modules. the core make the configuration available to modules in the same way it make available the general configuration information.

5.3. data flow / data structures

data is exchanged with various handlers in modules via a special structure called request record which includes information about the resource requested (e.g. filename), information about the configuration data related to the server, the virtual host, and the directory context in which the request is processed.

another key structure is the one the apache core uses keep track of various modules. it is a linked list of module records, each holding all the information related to that module (e.g. handlers, configuration data per module). the module record is the mean by which the core calls the module.

5.4.resource allocation - resource pool

an interesting characteristic of the apache server it the concept of resource pool. all resources related to a request (memory, file handlers) are allocated and handled through a dedicated resource pool. further more, modules can define their own sub-resource pools if they want to manage private resources in a similar manner with general resources.

what is characteristic for the resource pool, is that all resources are freed at once, when the resource pool is freed, preventing resource leakage. this is particularly important due to use of persistent processes.

the conceptual architecture described above, roughly approximate the style of "implicit invocation". it should be noted however that the architecture is not exactly an event based architecture, as specified in . it is usually the case with software architecture that cannot be clearly classified in a predefined style ("real systems hybridize and amalgamate the pure style" - ).
to be more specific there is no such concept as many events that are announced (broadcast). instead the only event is a request from a http client, which starts a sequence of predictable implicit invocations.
the core has a fixed order in which will call the different handlers and will decide based on configuration information which is the order in which the handlers for the same phase are called.

there is, however, something that might be compared with announcing an event, namely is the issuing of a sub-request by a module in order to "force" the core to perform some of the steps for a request on the sub-request (i.e. calling sequentially handlers for each servicing phase). however this is not (conceptually) a proper event, because the issuing module does not announce something to other (unknown to it) modules. it just a mean of "forcing" an implicit invocation.

there are other characteristics of event systems (as summarized in ) that does not "fit" the description of the core-modules architecture of apache. for example there is no control asynchrony, in the sense that the module issuing a the sub-request waits for the sub-request to be completed.
also two phases of the request cannot be handled in parallel (one uses the outcome of the precedent one). more over the module is not a separate process, although it can fork children for some phases - like running a cgi script.

so although the connectors between modules are implicit invocations and data flow is a tree - with some restrictions (e.g some phases cannot have more than one module to handle them, one phase is after the other) the architecture does not have other characteristics of the event systems.

it can be argued however that as different instances of apache (sub-processes) can handle in the same time request from different http clients there is asynchrony. however the different instances are independent and do not shared information related to the requests processed.

the way a request is serviced, with phases handled one after the other and the outcome of a request is used (most of the time) by the next phase, has some similarities with the general style of "pipe line" (as in )). there is no upstream control (i.e. when the core invokes the handlers for one phase there is no data or control upstream). however, again, there is no asynchrony and more important the core regain control after each phase (i.e. after the handler has been invoked, and its job is done).

further more, some phases does not provide any change in the conceptual data-flow. and more significant, some handlers might be implemented by the same module and those handler might exchange information via private data of the module, bypassing the main data-flow. for example authorization and authentication does not change the request, they can only deny the execution of it. to conclude the pipeline is rather poorly reflected by the module structures, although conceptually the idea exists, therefore the implicit invocation seems more appropriate to characterize the general conceptual architectural style.

as it probably became obvious by now, apache server architecture easily permits changes of the existing functionality or adding new functionality.
the modular approach and the effort made by the designers to move as much as possible from the web server functionality into separate modules make the task easier. for example if the way uri are translated into file names have to be extended, it is not necessary to change the module that does this task. it is sufficient to write a different module which will be called before or after the standard module has been called.

further more the ability of dynamically loading modules present in apache 1.3 release (no static linking with the server code), make the task of customizing the server even easier as there is no need to recompile the entire server. it is necessarily only to change some configuration files.
another feature worth re-mentioning here is the capability of modules to define their own configuration commands, for which they are implicitly called to execute.

an important part of the apache web server that cannot be changed only by changing / adding a module is the one that implements the http protocol. on the good, side the protocol is implemented as a separate piece of code (http_protocol.c), and all communication with the client is done through it, so only that part must be changed in order to implement a future version of http. however there is no well defined api, as is the case for modules.

apache web server has a modular architecture with a core component that defines the most basic functionality of a web server (including the http protocol and the reading of configuration files) and a number of modules which implements the steps of processing a http request, offering handlers for one or more of the phases.

the core is the one that accepts and manages http connections and calls the handlers in modules in the appropriate order to service the current request.

the architectural style can be characterized implicit invocation made by the server core on handlers implemented by the modules. concurrency exists only between a number of persistent identical processes that service incoming http requests on the same port. modules are not implemented as separate process although it is possible to fork children or to cooperate with other independent process to handle a phase of processing a request.

the functionality of apache can be easily changed by writing new modules which complements or replace the existing one. the server is also highly configurable, at different levels (virtual host, directory, module) and modules can define their own configuration commands.

api
application programming interface
component
term used throughout this report in order to avoid the term module which has been used in connection to (referring) an apache module. this distinction is not a standard terminology, and has the only purpose to avoid confusion.
core (apache core)
part of the apache server that defines and manages the steps in answering the request and implements the http protocol.
cgi (cgi script)
common gateway interface, an interface describing how a web server passes parameters and receive results form another process on the same machine called cgi-script (executed by the web server when it receive a request referencing the script).
handler
a function of a module that will be implicitly invoked by the core to handle the phase of processing the http request for which the handler was designed.
http
hypertext transport protocol, the protocol that coordinate how the hypertext files are transfered over the internet. however any files can be transfered via http.
httpd
the usual name for the web server (stands for http daemon).
ipc (ipc mechanisms)
inter process communication mechanisms (e.g. queues, semaphores, shared memory)
mime type
mime stands for multipurpose internet mail extension. mime types are the types (e.g. gif, html) of the entities defined in mime request for comments
module (apache module)
part of apache server that provides some functionality in one or more phases of servicing an http request. its functions (handler) are implicitly invoked by the apache core. it is interfaced with the apache core by a special api.
ncsa web server (ncsa httpd)
the web server provided and maintained by the development group of the national center for super-computing applications, at the university of illinois at urbana - champaign
request (http client request)
a message from the client containing information about the resource requested and how it is wanted to be delivered.
resource (an http resource)
a network data object or service which can be identified by a uri
response (http server response)
the response from the web server to an http request, contains a header and usually the actual resource. the header contains status information and information on the resource (e.g. type, length of the binary representation).
resource pool
a large data structure allocated in one step by the apache core, which holds the resources (memory blocks, open files) associated with a given request. when the resource pool is no longer needed it is deallocated in one step (memory is freed and files ore closed).
uri
universal resource identifiers, are formated (fixed syntax) string which identify objects via location, and other characteristics.
url
uniform resource locators, a subclass of uri that locates resources based on their location and the protocol used to fetch them (e.g. http://www.uwaterloo.ca/index.html identifies the home page file of university of waterloo)
virtual host
a single physical host might have more than one network interface, each with a different ip address and a different host name. for clients it acts as being a number of virtual hosts, one for each name.

blogjava-凯发k8网页登录

, robert thau, fifth international world wide web conference, 1996, paris.
, robert s. thau.
, d. garlan, m.shaw, advances in software engineering and knowledge engineering, vol. i, world scientific publishing company, 1993.
, r. monroe, d. kompanek, r. melton, d. garlan, ieee software, january 1997, pp 43-52.
, m. shaw, p. clementes, 1996


zhyiwww 2008-05-09 16:30
]]>
eclipse插件http://www.blogjava.net/zhyiwww/archive/2008/02/15/180092.htmlzhyiwwwzhyiwwwfri, 15 feb 2008 07:58:00 gmthttp://www.blogjava.net/zhyiwww/archive/2008/02/15/180092.htmlhttp://www.blogjava.net/zhyiwww/comments/180092.htmlhttp://www.blogjava.net/zhyiwww/archive/2008/02/15/180092.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/180092.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/180092.html amaterasuml_1.3.1
凯发k8网页登录主页: (@sourceforge)
在线更新地址:
截图:

  1. open the eclipse workbench.
  2. to install new software with the update manager, in the main eclipse menu, go to help > software updates ->find and install.
  3. in the user interface that opens, select the search for new features to install.
  4. in the next step you choose what locations will be searched. if this is the first time installing jseclipse, you have to add a new remote site. if you already have it defined, skip to step 7.
  5. to define a new site to be searched for available plugins, in the user interface click the new remote site button.
  6. the new update site dialog box opens. it contains two fields that must be completed:
    • name: this will be the label displayed in the install or update software user interface. you can enter jseclipse.
    • url: this is the url to the remote site containing the plugins. enter:

  7. check the newly added entry's checkbox. this will set it as active for the software search. you can disable or enable sites on which the software search is performed by checking, respectively un-checking them in the user interface
  8. click finish to start searching for software. a new window will appear showing the search progress.
  9. once the search completes, a list of the features available on the remote site will be displayed, with their respective version, using an hierarchical display
  10. select the feature to install by checking its checkbox. click next to continue.
  11. the license agreement for each selected feature is displayed next. you must accept the licence agreement in order to continue with the install process. click the i accept the terms in the license agreement radio button, then next to move on.
  12. next select where to install the plugin. by default, it is the current folder. use the default and click finish to install.
  13. if your configuration is set to check plugins for a digital signature, a confirmation window is displayed, warning if the plugin is not digitally signed. simply click install to close the window and install the plugin
  14. after the installation is completed, and all features have been copied to the desired location, a dialog box will ask for a restart of the workbench. although some features can be enabled without restarting the workbench, a restart is recommended. select yes.
  15. jseclipse has been installed.

propertieseditor plugin install

   1. please choose from the screen of eclipse with "help" ->"software updates" -> "update manager". an 'update manager' opens.

   2. in the "feature updates" view at the lower left of an 'update manager', please carry out the right click of the "sites to visit", and create a site bookmark by "new" -> "site bookmark...".
      - the bookmark to create should input the following "url" and should push an "finish" button.
      name: arbitrary input
      url : http://propedit.sourceforge.jp/eclipse/updates/
      bookmark type: eclipse update site

   3. if a site bookmark is created, the bookmark created at the bottom of "feature updates" will appear.
      a click of "jp.gr.java_conf.ussiy.app.propedit.eclipse.feature.propertieseditorfeature x.x.x" displays a preview on a right window. since the button "install now" is in around the lower right, please click.

   4. since an installation wizard starts, please click a "next" button rapidly.

   5. "you will need to restart the workbench for the changes to take effect. would you like to restart now?" is displayed. please reboot eclipse according to a dialog.

implementors feature

alternatively, use the eclipse update site at: http://eclipse-tools.sourceforge.net/updates/

quantum

to install quantum, start eclipse, go to help->software updates->find and install...->search for new features to install. there create a new site clicking on the "new remote site" button. in "name" in "name" write "quantum db update site". in "url" type " http://quantum.sourceforge.net/update-site". then click on "finish". you'll have to get something like this screen, only without the error message (that's if you still haven't installed gef, and without the marks in the selection boxes. you have to select the features you want (select them all if in doubt) and click on "finish"


eclipse第一个struts2插件

官方地址:http://mvcwebproject.sourceforge.net

一:安装
            启动eclipse3.3 在help---->software updates----->find and install---->install new features---->new remote site----->输入 http://mvcwebproject.sourceforge.net

安装教程地址:

二:使用
              使用手把手教程地址:http://mvcwebproject.sourceforge.net/tutorial.html

三:使用教程手把手地址中的helloword例子源码:
              下载地址:http://mvcwebproject.sourceforge.net/tutorials/helloworld2.zip


subversion plugin
   



zhyiwww 2008-02-15 15:58
]]>
我常使用的软件收集http://www.blogjava.net/zhyiwww/archive/2007/08/13/136320.htmlzhyiwwwzhyiwwwmon, 13 aug 2007 03:00:00 gmthttp://www.blogjava.net/zhyiwww/archive/2007/08/13/136320.htmlhttp://www.blogjava.net/zhyiwww/comments/136320.htmlhttp://www.blogjava.net/zhyiwww/archive/2007/08/13/136320.html#feedback2http://www.blogjava.net/zhyiwww/comments/commentrss/136320.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/136320.html    java开发工具
jbuilder
    java开发工具
mindmanager
    思维导图软件
firefox
    浏览器
daemon
    一个好用的虚拟光驱
editplus
    文本编辑器,支持正则表达式
ultraeditor
    文本编辑器,支持正则表达式
regexrubby
    正则表达式的搜索和测试工具
editpad
    文本编辑器,支持正则表达式
powergrep
    正则表达式的搜索和测试工具

zhyiwww 2007-08-13 11:00
]]>
如何解决在linux上启动elcipse和myeclipse时出现的问题http://www.blogjava.net/zhyiwww/archive/2006/11/24/83249.htmlzhyiwwwzhyiwwwfri, 24 nov 2006 06:36:00 gmthttp://www.blogjava.net/zhyiwww/archive/2006/11/24/83249.htmlhttp://www.blogjava.net/zhyiwww/comments/83249.htmlhttp://www.blogjava.net/zhyiwww/archive/2006/11/24/83249.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/83249.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/83249.html如何解决这个问题呢?在网上有的朋友也说过这样的问题:自己写一个脚本,然后执行就可以了。
其实也可以使用下面的办法:
其实,出现异常的原因就是对文件的访问权限的问题。
所以我们只需要修改eclipse的文件权限就可以了。
方法如下,执行如下命令:
chmod 777 -r /program/eclipse (这个命令的意思是要修改eclipse下的每一个目录和文件的属性)
/program/eclipse是我的eclipse的安装目录.
现在,你在启动使用eclipse就不会有问题了.
等你装完了myeclipse,在使用就也没有问题了.
如果你没有执行上面的命令的话,那么你在使用myeclipse也会出现和eclipse一样的异常.

zhyiwww 2006-11-24 14:36
]]>
myeclipse的heap大小的设置http://www.blogjava.net/zhyiwww/archive/2006/11/23/83055.htmlzhyiwwwzhyiwwwthu, 23 nov 2006 07:36:00 gmthttp://www.blogjava.net/zhyiwww/archive/2006/11/23/83055.htmlhttp://www.blogjava.net/zhyiwww/comments/83055.htmlhttp://www.blogjava.net/zhyiwww/archive/2006/11/23/83055.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/83055.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/83055.html出现的问题提示常常是,如图:
heap.jpg

凯发天生赢家一触即发官网的解决方案:
在eclipse的安装目录下面,新建一个文件eclipse.ini,内容如下:
-vmargs
-xms128m
-xmx512m
-xx:permsize=256m
-xx:maxpermsize=512m

蓝色字体的部分是最主要的配置参数.
然后重启eclipse,一切ok.

zhyiwww 2006-11-23 15:36
]]>
eclipse的启动参数http://www.blogjava.net/zhyiwww/archive/2006/11/23/83039.htmlzhyiwwwzhyiwwwthu, 23 nov 2006 06:48:00 gmthttp://www.blogjava.net/zhyiwww/archive/2006/11/23/83039.htmlhttp://www.blogjava.net/zhyiwww/comments/83039.htmlhttp://www.blogjava.net/zhyiwww/archive/2006/11/23/83039.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/83039.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/83039.html 调整eclipse的启动(转载)


如果你觉得你的eclipse在启动的时候很慢(比如说超过20秒钟),也许你要调整一下你的eclipse启动参数了,以下是一些``小贴士'':

1. 检查启动eclipse的jvm设置。 在help\about eclipse sdk\configuration detail里面,你可以看到启动eclipse的jvm。 这个jvm和你在eclipse中设置的installed jdk是两回事情。 如果启动eclipse的jvm还是jdk 1.4的话,那最好改为jdk 5,因为jdk 5的性能比1.4更好。

c:\eclipse\eclipse.exe -vm "c:\program files\java\jdk1.5.0_08\ bin\javaw.exe"

2. 检查eclipse所使用的heap的大小。 在c:\eclipse目录下有一个配置文件eclipse.ini,其中配置了eclipse启动的默认heap大小

-vmargs
-xms40m
-xmx256m

所以你可以把默认值改为:

-vmargs
-xms256m
-xmx512m

当然,也可以这样做,把堆的大小改为256 - 512。

c:\eclipse\eclipse.exe -vm "c:\program files\java\jdk1.5.0_08\ bin\javaw.exe" -vmargs -xms256m -xmx512m

3. 其他的启动参数。 如果你有一个双核的cpu,也许可以尝试这个参数:

-xx: useparallelgc

让gc可以更快的执行。(只是jdk 5里对gc新增加的参数)


zhyiwww 2006-11-23 14:48
]]>
如何在eclipse中显示行号http://www.blogjava.net/zhyiwww/archive/2006/10/27/77622.htmlzhyiwwwzhyiwwwfri, 27 oct 2006 06:35:00 gmthttp://www.blogjava.net/zhyiwww/archive/2006/10/27/77622.htmlhttp://www.blogjava.net/zhyiwww/comments/77622.htmlhttp://www.blogjava.net/zhyiwww/archive/2006/10/27/77622.html#feedback53http://www.blogjava.net/zhyiwww/comments/commentrss/77622.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/77622.html 如何在 eclipse 中显示行号

这个问题,困扰了我好长时间,今天终于找到了。其实很简单,经过以下几步,就一切搞定了:

1)     先打开一个类,如下图:class.jpg

2)     然后打开视图,如何打开呢?最能解决问题的也就在此了:

ctrl f10,效果如下图:
view.jpg

3)     然后选择show line numbers
select.jpg

4)     最后的效果如图:
line result.jpg

5)       就这样简单,你就可以在编辑器中看到你的代码的行号了。其实最重要的是知道ctrl f10能打开视图菜单就一切搞定了。

 



zhyiwww 2006-10-27 14:35 发表评论
]]>
apache配置(转载)http://www.blogjava.net/zhyiwww/archive/2006/10/25/77234.htmlzhyiwwwzhyiwwwwed, 25 oct 2006 08:59:00 gmthttp://www.blogjava.net/zhyiwww/archive/2006/10/25/77234.htmlhttp://www.blogjava.net/zhyiwww/comments/77234.htmlhttp://www.blogjava.net/zhyiwww/archive/2006/10/25/77234.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/77234.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/77234.html  
     linux apache web 服务器终极教程作者:佚名 文章来源:internet 
  根据著名的www服务器调查公司所作的调查,世界上百分之五十以上的www服务
  器都在使用apache,是世界排名第一的web服务器。apache的诞生极富有戏剧性。
  当ncsa www服务器项目停顿后,那些使用ncsa www服务器的人们开始交换他们
  用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是
  必要的。就这样,诞生了apache group,后来这个团体在ncsa的基础上创建了
  apache。
    apache的主要特征是:
  .  可以运行上所有计算机平台;
  .  支持最新的http 1.1协议;
  .  简单而强有力的基于文件的配置;
  .  支持通用网关接口cgi;
  .  支持虚拟主机;
  .  支持http认证;
  .  集成perl脚本编程语言;
  .  集成的代理服务器;
  .  具有可定制的服务器日志;
  .  支持服务器端包含命令(ssi)
  .  支持安全socket层(ssl)
  .  用户会话过程的跟踪能力;
  .  支持fastcgi;
  .  支持java servlets。
  安装apache
    下面我们就开始漫漫征服apache之旅,通过循序渐进的需求实例,一步步
  地学习使用apache,从入门到精通。
  系统需求
    运行apache不需要太多的计算资源。它在有6-10mb硬盘空间和8mb ram的
  linux系统上运行得很好。然而,只运行apache可能不是你想做的事情。更可能
  的是,你想运行apache来提供www服务、启动cgi进程以及充分利用所有www能够
  提供的令人惊奇的功能。在这种情况下,你需要提供反映负载要求的额外的磁
  盘空间和内存空间。也就是说,如果仅仅是启动www服务并不需要太多的系统资
  源,但是想要能为大量的客户提供服务就需要更多的系统资源。
  获取软件
    你可以在http://www.apache.org中获得apache的最新版。而几乎所有的
  linux发行版中均包含有apache软件包,你也可以直接使用它。
  需要注意的是,apache软件包有两种:一种是源代码,下载后需要自己重新编
  译;另一种是可执行文件,下载后只需解压就可以使用。
  安装软件
    你可以通过以下三种方法安装apache服务器。
    1.如果你安装的linux版本中带用apache的话,就在选择所要安装的服务
  器的时候,将httpd这个服务选上,linux安装程序将自动完成apache的安装工
  作,并做好基本的配置。
    2.使用可执行文件软件包,这比较适合那些对编译工作不是太熟悉的初级
  用户,因为它相对比较简单。
    下载软件包apache_1.2.4.e.tar.gz
    tar xvzf apache_1.2.4.e.tar.gz
    这就完成了安装工作,简单吧!
    如果你使用的是redhat linux的话,你也可以下载apache_1.2.4.rpm软件
  安装包,然后使用rpm -ivh   apache_1.2.4.rpm命令安装。
    3.如果你想把apache服务器充分利用起来的话,就一定要自己编译
  apache定制其功能。
  下载包含apache源代码的软件包apache_1.2.4.tar.gz; 然后用tar命令将它解
  开; 将当前目录改变为apache源代码发行版的src目录; 将配置样本文件
  (configuration.tmpl)复制为configuration文件;
  编辑configuration文件中的配置选项:
  makefile配置选项:一些编译选项:
  . "cc="一行指定用什么编译软件编译,一般为"cc=gcc";
  . 如果需要将额外的标志(参数)指定给c编译软件,可以使用:
  extra_cflags=
  extra_lflags=
  . 如果系统需要特殊的库和包含文件,可以在这里指定它们:
  extra_libs=
  extra_includes=
  . 如果你要改变代码优化设置的话,你须将下面一句去掉注释,然
  后改成你所需要的值:
  #optim=-o2
  rule配置选项:用来决定需要什么功能,一般情况下无需改变。
  模块配置:模块是apache的组成部分,它为apache内核增加新功能。通过使用
  模块配置,可以自定义在apache服务器中需要什么功能,这个部分也是apache
  灵活性的表现。模块配置行如下所示:
  addmodule modules/standard/mod_env.o
  如果你需要apache服务器具备什么功能,就将那个模块用addmodule语句加到配
  置文件configuration中去。
  下表列出了apache的模块功能:
  模块名 功能 缺省
  mod_access 提供基于主机的访问控制命令 y
  mod_actions 能够运行基于mime类型的cgi脚本或http请求方法 y
  mod_alias 能执行url重定向服务 y
  mod_asis 使文档能在没有http头标的情况下被发送到客户端 y
  mod_auth 支持使用存储在文本文件中的用户名、口令实现认证 y
  mod_auth_dbm 支持使用dbm文件存储基本http认证 n
  mod_auth_mysql 支持使用mysql数据库实现基本http认证 n
  mod_auth_anon 允许以匿名方式访问需要认证的区域 y
  mod_auth_external支持使用第三方认证 n
  mod_autoindex 当缺少索引文件时,自动生成动态目录列表 y
  mod_cern_meta 提供对元信息的支持 n
  mod_cgi 支持cgi y
  mod_dir 能够重定向任何对不包括尾部斜杠字符命令的请求 y
  mod_env 使你能够将环境变量传递给cgi或ssi脚本 n
  mod_expires 让你确定apache在服务器响应请求时如何处理expires y
  mod_headers 能够操作http应答头标 y
  mod_imap 提供图形映射支持 n
  mod_include 使支持ssi n
  mod_info 对服务器配置提供了全面的描述 y
  mod_log_agent 允许在单独的日志文件中存储用户代理的信息 n
  mod_log_config 支持记录日志 y
  mod_log_referer 提供了将请求中的referer头标写入日志的功能 n
  mod_mime 用来向客户端提供有关文档的元信息 y
  mod_negotiation 提供了对内容协商的支持 y
  mod_setenvif 使你能够创建定制环境变量 y
  mod_speling 使你能够处理含有拼写错误或大小写错误的url请求 n
  mod_status 允许管理员通过web管理apache y
  mod_unique_id 为每个请求提供在非常特殊的条件下保证是唯一的标识 n
  在src目录下执行:". /configure";
  编译apache:执行命令"make";
  根据机器性能的不同,经历一段5-30分钟的编译,就大功告成了。
  将编译好的可执行文件httpd复制到/etc/httpd/bin目录下;
  将apache发行版的配置文件:access.conf、httpd.conf、mime.types、
  srm.conf文件复制到/etc/httpd/conf目录下。到此为止,安装完成。
  一些说明
  在red hat linux 6.0中,apache将自己的所有配置文件和日志文件放在了
  "/etc/httpd"目录下,其中"/etc/httpd/conf"下为配置文
  件,"/etc/httpd/log"下为日志文件。
  同时,它将建立"/home/httpd"目录,并在其下建立三个子目录:"html/":在
  这个目录下存放html(凯发k8网页登录主页)文件;"cgi-bin/":在这个目录下可以存放一些
  cgi程序;"icons/":在这个目录下是服务器自带的一些图标。
  配置apache基础篇,让www服务器跑起来
  apache 服务器软件的配置文件主要有:"access.conf":用于设置系统中的存
  取方式和环境;"httpd.conf":用于设置服务器启动的基本环境;
  "srm.conf":主要用于做文件资源上的设定;"mime.type":记录apache服务器
  所能识别的mime格式。
  在具体讲解之前,我们必须告诉大家,apache已经在安装时就采用了一系列的
  缺省值,已经让www服务器跑起来了。你只需要将装上linux apache的主机联入
  internet,然后将凯发k8网页登录主页存放到"/home/httpd"目录下即可。
  下面介绍一些最主要的配置选项的含义,以便大家用最小的精力、最小的配置
  准备好服务器。
  httpd.conf
  tpd.conf是主配置文件。它告诉服务器将如何运行。
  一、最重要的配置选项servertype standalone | inetd
    这个配置选项指定如何运行web服务器。apache可以使用两种方法来运行服
  务器:standalone(独立的)和inetd(由inetd运行的)。standalone参数表示
  web服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如
  果有就生成一个子进程来为其服务。 inetd参数表示web服务不是以一个单独的
  守候进程的形式支持。而是由inetd这个超级服务器守候进程进行代劳,当它收
  到一个客户端的web服务请求的时候,再启动一个web服务进程为其服务。从功
  能的角度看,这两种方法几乎是相同的。但它们之间实际有很大区别,区别在
  于服务器的性能。一个由 inted运行的服务器进程在它结束对请求服务的同时
  立刻退出。而在standalone模式下,子www服务器进程在退出之前要挂起一段时
  间,这就给它们提供了机会,可以重新用来服务新的请求。
  在standalone模式下,不存在对每个请求启动新进程的开销,所以它的效率更
  高;而inetd模式被认为比standalone模式更具安全性。
  standalone模式:
  此种模式下,www服务器侦听特定端口的连接请求。当客户机发出到特定端口地
  址的连接请求时,主服务器进程启动子www服务进程来服务该请求。另外还需要
  告诉主服务器进程侦听的特定端口地址,使用命令:
  port [number] (缺省值为80)
  inetd模式
  inetd 是侦听有小于1024的端口连接请求的internet守护进程(一个服务器进
  程)。与前面的方法不同,当客户系统发出到www服务器的连接请求时, inetd
  启动一个www服务器进程,由此进程服务此请求,完成服务后即退出。如果选择
  通过inetd服务器来运行apache,需要编辑 /etc/inetd.conf文件为apache添加
  一条新的记录:
  httpd stream tcp nowait httpd /etc/httpd/bin/httpd -f
  /etc/httpd/conf/httpd.conf
  修改了/etc/inetd.conf文件后,就需要修改/etc/services中添加一行
  httpd 80/tcp httpd
  做完以上修改后,需要重新启动inetd进程。首先,使用以下命令取得inetd的
  进程id:
  ps auxw |grep inetd
  然后执行命令:kill -hup 
  在redhat linux中,默认是采用inetd服务器来运行apache,所以只要你在安装
  时选择了httpd,以上工作在安装时就已经代你完成了。
  二、其它配置选项
    server admin命令,用来设置web管理员的e-mail地址。这个地址会出现在
  系统连接出错的时候,以便访问者能够将情况及时地告知web管理员。
  命令格式: server admin [you e-mail address]
  例:server admin admin@xxx.com
  errorlog命令,用来指定错误记录文件名称和路径。
  命令格式: errorlog [log filename]
  例:errorlog /var/httpd/error.log
  timeout命令,只要客户端超过这里设定的秒数还没有完成一个请求的话,服务
  端将终止这次请求服务。如果网络速度较慢的话,建议在此设置较大的数值。
  以给客户端更多机会。
  命令格式: timeout [second]
  例:timeout 120
  serverroot命令,它指定在何处保存服务器的配置、错误及日志文件。
  命令格式: serverroot [fully qualified path name]
  例:serverroot /etc/httpd
  servername命令,它配置服务器的internet主机名
  命令格式: servername [host name]
  例:servername www.xxx.com
  srm.conf
  srm.conf是资源配置文件,用它来告诉服务器你想在www站点上提供什么资源以
  及在哪里和如何提供们。
  documentroot命令,用来指定主文档的地址。
  命令格式: documentroot [path]
  例:documentroot /home/httpd/html
  userdir 命令,用来指定个人凯发k8网页登录主页的位置。如果你有一个用户test,那么它主
  目录是"/home/test",当客户端输入"http: //yourdomain/~test";;,系统就
  会到对应的目录"/home/test/userdir/"中去寻找。其中"userdir"就是在
  userdir命令中设置的指定目录。
  命令格式: userdir [path]
  例: userdir public_html
  directoryindex 命令,用来声明凯发k8网页登录首页文件名称。一般地,我们使用
  "index.html"或"index.htm"作为凯发k8网页登录首页的文件名。如果这样设置后,那么客户端
  发出 web服务请求时,将首先调入的凯发k8网页登录主页是在指定目录下文?quot;index.html"或
  "index.htm"。
  命令格式: direcotryindex [filename]
  例:direcotryindex index.html index.htm
  scriptalias命令,为脚本程序目录起个别名,具体可见4.7小节。
  命令格式: scriptalias [/alias/] [fullly qualified path for script
  directory]
  例: scriptalias /cgi-bin/ /home/httpd/cgi-bin
  access.conf的配置
  access.conf文件用来设置www站点上诸如文件、目录和脚本项目的访问权限。
  该文件的第一段非注释部分如下:
  
  option indexes includes execcgi followsymlink
  allowoverride none
  order allow , deny
  allow from all
  
  大家应该注意到,这一个部分是以开始,以
  结束的。这表示在其中间的部分都是针对指定目录
  ��"/home/httpd/html"而言的。
  1.option命令有很多的参数,各个参数的意义如下所示:
  all 准许以下所有功能(multiviews除外);
  multiviews 准许内容协商的multiviews;
  indexes 若该目录下无index文件,则准许显示该目录下的文件以供选择;
  includesnoexec 准许ssi(server-side includes),但不可使用#exec和
  #include功能;
  includes 准许ssi;
  followsymlinks 准许符号链接到其他目录;
  execcgi 准许该目录下可以使用cgi。
  2.而allowoverride命令则是用来决定是否准许在"access.conf"文件中设定的
  权限是否可以被在文件".htaccess"中设定的权限覆盖。它有两个参数:
  all 准许覆盖;
  none 不准许覆盖。
  3.order命令:用来设定谁能从这个服务器取得控制。它也有两个参数:
  allow 可以取得控制;
  deny 禁止取得控制。
  现在我们一起来看看关于目录"/home/httpd/html"的设置的含义:它使得这个
  目录,如果不存在index.htm文件时,列出目录信息以供选择,准许ssi,允许
  执行cgi程序,开启了动态连接。它不允许再使用在文件".htaccess"中设定来
  覆盖这里所设置的权限。使所有的人都可以取得控制。
  该文件的第二段非注释部分如下:
  
  option execcgi
  allowoverride none
  
  这个表示目录"/home/httpd/cgi"的设置为,当前目录下可以执行cgi程序。不
  允许再使用在文件".htaccess"中设定来覆盖这里所设置的权限。
  需要说明的是,不同的linux系统中,可以在这个文件中看到的信息不完全相
  同,但是根据这里给出的信息,大家可以参照命令的解释自行理解文件中的设
  置,以及根据自己的需要进行相应的修改。
  4.4 使新的配置生效
  在上面,我们可能已经根据新的需求更改了相应的配置选项,如果我们要使得
  这个新的配置立即生效。我们就必须重新启动web服务进程。在linux中,我们
  可以十分方便地使用命令行来使得web服务进程重启。
  /etc/rc.d/init.d/httpd restart
  五、为用户开辟个人凯发k8网页登录主页空间
  如果我们利用了linux系统架设了一台web服务器,我们不仅可以存放公司的主
  页,而且还可以为公司的每一个员工提供一块个人凯发k8网页登录主页的空间。
  首先,为需要个人凯发k8网页登录主页空间的员工在linux上开设一个帐号。这样,它就拥有了
  一个用户主目录"/home/用户帐号名"。
  addusr 用户帐号名
  passwd 用户帐号名
  在用户主目录下建立一个目录"public_html",然后为其设置相应的权限。
  cd ~用户帐号名
  mkdir public_html
  chmod 755 public_html
  确认在srm.conf文件中的userdir命令设置的是public_html目录。让员工将自
  己的个人凯发k8网页登录主页上传到自己用户主目录下的public_html目录中。
  现在就可以使用"http://www.company.com/~用户帐号名"来访问员工的个人主
  页了。
  用apache实现虚拟主机服务
    什么是虚拟主机服务
    所谓的虚拟主机服务就是指将一台机器虚拟成多台web服务器。举个例子来
  说,一家公司想从事提供主机代管服务,它为其它企业提供web服务。那么它肯
  定不是为每一家企业都各准备一台物理上的服务器,而是用一台功能较强大的
  大型服务器,然后用虚拟主机的形式,提供多个企业的web服务,虽然所有的
  web服务就是这台服务器提供的,但是让访问者看起来却是在不同的服务器上获
  得web服务一样。
    具体地说,就是,我们可以利用虚拟主机服务将两个不同
  www.company1.comwww.company2.com的凯发k8网页登录主页内容都存放在同一台主机上。而访
  问者只需输入公司的域名就可以访问到它想得到的凯发k8网页登录主页内容。 用apache设置虚
  拟主机服务通常可以采用两种方案:基于ip地址的虚拟主机和基于名字的虚拟
  主机,下面我们分别介绍一下它们的实现方法。以便大家在具体的应用中能够
  选择最合适的实现方法。
  设置实现基于ip地址的虚拟主机服务实现前提
    这种方式需要在机器上设置ip别名,也就是在一台机器的网卡上绑定多个
  ip地址去为多个虚拟主机服务。而且要使用这项功能还要确定在你的linux内核
  中必须支持ip别名的设置,否则你还必须重新编译内核。
    下面举一个拥有两个虚拟主机的服务设置,以供参考。
  2.配置步骤
  假设,我们用来实现虚拟主机服务的机器,首先已经为自己提供了web服务,现
  在将为新的一家www.company1.com提供虚拟主机服务。
  规划ip地址:为虚拟主机申请新的ip地址。(假设本机ip地址为202.101.2.1)
  www.company1.com 202.101.2.2
  2) 让isp作好相应的域名解析工作。
  3) 为网卡设置ip别名:
  /sbin/ifconfig eth0:0 202.101.2.2 netmask 255.255.255.0
  4) 重新设置"/etc/httpd/conf/httpd.conf",在文件中加入:
  
  serveradmin webmaster@yourdomain.com
  documentroot /home/httpd/www.company1.com
  servername www.company1.com
  errorlog /var/log/httpd/www.company1.com/error.log
  
  5)建立相应的目录。
  mkdir /home/httpd/www.company1.com
  mkdir /var/log/httpd/www.company1.com/error.log
  6)将相应的凯发k8网页登录主页内容存放在相应的目录中即可。
  3.不利因素
  这种虚拟主机的实现方法有一个严重的不足,那就是,每增加一个虚拟主机,
  就必须增加一个ip地址。而由于ip地址空间已经十分紧张,所以通常情况下是
  无法取得这么多的ip地址的。而且从某种意义上说,这也是一种ip地址浪费。
  设置实现基于名字的虚拟主机服务而基于名字的虚拟主机服务,是比较适合使
  用的一种方案。因为它不需要更多的ip地址,而且配置简单,无须什么特殊的
  软硬件支持。现代的浏览器大都支持这种虚拟主机的实现方法。当然,这也就
  是指一些早期的客户端浏览器也许不支持这种虚拟主机的实现方法。
    正是以上原因,我们没有理由不使用基于名字的虚拟主机服务而使用基于
  ip地址的虚拟主机服务。配置基于名字的虚拟主机服务需要修改配置文
  件?quot;/etc/httpd/conf/httpd.conf",在这个配置文件中增加以下内容。
  namevirtualhost 202.101.2.1
  
  serveradmin webmaster@yourdomain.com
  documentroot /home/httpd/www.company1.com
  servername www.company1.com
  errorlog /var/log/httpd/www.company1.com/error.log
  
  
  serveradmin webmaster@yourdomain.com
  documentroot /home/httpd/www.company2.com
  servername www.company2.com
  errorlog /var/log/httpd/www.company2.com/error.log
  
    也就是在基于ip地址的配置基础上增加一句:namevirtualhost
  202.101.2.1而已。在本例中,为了体现只需要增加一次,所以特别地设置了两
  个虚拟主机服务。
  最后也是建立相应的目录,将凯发k8网页登录主页内容放到相应的目录中去就可以了。
  配置cgi
  1. 什么是cgi
  cgi是独立于语言的网关接口规范,它实际上可以用任何广泛流行的应用程序开
  发语言来实现,包括c、c  、perl、shell脚本甚至java。
  web服务器从客户端得到某个url,它告诉web服务器,必须运行一个cgi外部应
  用程序。那么web服务器启动这一应用程序,等待它完成并返回输出结果。最
  后,它将此应用程序的输出结果传输给另一端的web客户。
  2. 为cgi配置apache
  那么如何使apache能处理cgi请求呢?我们必须通过相应的配置过程告知
  apache在哪里存储cgi程序,指明cgi程序的扩展等,以下我们逐一介绍一下设
  置的内容与步骤。
  创建存储cgi程序的目录
  创建集中的cgi程序目录只是建立cgi环境的开始。如果要考虑提高安全
  性的话,应将集中的cgi程序目录保存在documnetroot目录外,使得访问者不能
  直接访问cgi程序。 第一步:在documentroot目录外创建一个目录,然后将所
  有的cgi程序都集中存放在这个目录下。例如,你可创建一个
  /home/httpd/public/apps的目录作为cgi程序的大本营。
  第二步:为cgi程序目录创建别名,也就是编辑配置文件httpd.conf,加入:
  scriptalias /cgi-bin/ /home/httpd/public/apps
  这样做后,当客户www.xxx.com/cgi-bin/li.cgi时,web服务器就会自动执行
  web服务器上的/home/httpd/public/apps/li.cgi文件。
  第三步:为cgi目录设置合适的权限,一般是只允许apache有读取和执行的权限
  但没有写的权限。
  允许用户访问cgi-bin
  我们已经在4.5小节中介绍了如何给用户开辟个人凯发k8网页登录主页空间,但如果你的
  用户需要使他的凯发k8网页登录主页更具有活力,往往会向你申请cgi-bin访问服务。下面我们
  就介绍一个apache服务器为用户提供的两种cgi-bin访问方法。
  1)使用directory或directorymatch容器
  当在配置文件srm.conf中用userdir命令被赋值为目录名称时,apache就
  把它作为用户www站点的顶层目录。例如:
  userdir public_html
  当apachewww.xxx.com/~user的请求,就到/home/user/public_html取出凯发k8网页登录主页发
  送给客户。
  如果要为每个用户添加cgi支持就在apache的配置文件access.conf中添加下列
  配置:
  
  options execcgi
  addhandler cgi-script .cgi .pl
  
  注:将directorymatch换成directory亦可
  在这种方法中,apache服务www.xxx.com/~user/cgi-bin请求翻译成为了
  /home/user/public_html/cgi-bin/,并允许执行任何带有正确扩展名(.cgi
  或.pl)的cgi程序。
  使用scriptaliasmatch命令
  通过使用scriptaliasmatch命令,也可以为每个用户添加cgi支持。例如:
  scriptaliasmatch ~([a-z] )/cgi-bin/(.*)
  /home/$1/public_html/cgi-bin/$2
  这个命令将用户名与$1相匹配,其中$1与~([a-z] )相等。将/cgi-bin/后面的
  任何内容与$2相匹配,其中$2与(.*)相等。
  这个设置也就实现www.xxx.com/~user/cgi-bin/xxx.cgi请求解释为:
  /home/user/public_html/cgi-bin/xxx.cgi
  那么大家想一想,如果你想将这个请求解释为:
  /home/httpd/public/apps/xxx.cgi
  该如何设置呢?对,应该是:
  scriptaliasmatch ~([a-z] )/cgi-bin/(.*) /home/httpd/public /apps/$2
  3. apache为cgi提供的环境变量
  apache服务器提供了许多环境变量可以用于cgi程序的编写,了解它们也一定有
  助于写出充分利用apache的cgi程序,所以在此也对此作一简单介绍。
  服务器变量
  服务器变量由apache设置用来通知cgi程序有关apache的情况。通过使
  用这些变量,cgi程序能确定有关服务器的不同信息:apache的版本,管理员的
  e-mail地址等。
  server_software
  这个变量是www服务器apache的版本号,它的值形如:apache/version,如
  apache/1.3;
  gateway_interface
  这个变量的值是当前cgi规范的版本号,其值形如:cgi/1.1;
  server_admin
  如果在httpd.conf文件中有设置站点管理员的e-mail地址的话,这个变量就会
  存放着这个e-mail地址;
  document_root
  这个变量存放在是被访问的www站点的documentroot命令指定的值。
  客户请求变量
  apache提供的有关客户请求方的环境变量有许多,以下只是有选择性地介绍一
  些最常见的。
  server_name
  此变量可以告诉cgi程序它访问的是哪一个主机。这个值可以是ip地址也可以是
  完整的主机名;
  http_accept
  此变量被赋值为客户所能接受的mime类型的列表,如:http_accept=image/gif;
  http_accept_charset
  此变量被赋值为客户所能接受的字符集,如:
  http_accept_charaset=iso-8859-1.,*,utf-8;
  http_accept_language
  此变量被赋值为客户所能接受的语言,如:http_accept_language=en;
  http_accept_agent
  这个变量指定发出请求的系统正在运行的浏览器类型和操作系统;
   http_port:服务端口;
  remote_host:客户端的ip地址或ip名称信息;
  remote_port:客户端的端口号;
  4. 一点提示
  若干年来,通过网关接口(cgi)已成为服务器端应用程序开发的事实标准。但
  随着时间的推移,发现在沉重的cgi负担下许多www服务器系统的表现不尽人意。
  这是因为cgi规范存在瓶颈问题:每当客户系统请求cgi应用程序时,www服务器
  就必须启动新的cgi进程,直到完成任务后结束进程。这在负载不高时,会工作
  正常。但是,在高负载时,繁多的进程将成为性能的瓶颈问题。
  所以现在开始出现新的标准来弥补这一不足,其中fastcgi是很有前途的一种新
  的开放式标准。
  你可以在apache中通过添加mod_fastcgi.c模块来支持fastcgi。
  解读apache日志
    当你一步步地看到这里的时候,相信你的www站点已经建好,并且已经在
  internet上展现出来了。这时你可能就会关心谁造访过你的站点,或者想知道
  你的apache服务器现在的运行状态与性能如何。下面我们一起通过解读apache
  的日志来实现这个伟大的愿望。
  一、盯着apache服务器
  apache允许通过www监视服务器的配置信息与运行状态。
  1.观看配置信息
  如果你的apache象缺省配置一样加入了mod_info模块的话,你就可以通过访问
  http://localhost/server-info查看服务器信息。
  2.使用状态页
  如果你的apache象缺省配置一样加入了mod_status模块的话,你就可以
  通过访问http://localhost/apache-status查看服务器的运行状态信息,其中
  包括:
  ¨ 服务器系统的当前时间;
  ¨ 服务器最近一次重启时间;
  ¨ 服务器启动后的运行时间;
  ¨ 到目前为止服务的访问总数;
  ¨ 到目前为止传输的字节总数;
  ¨ 服务请求的子进程数;
  ¨ 空闲子进程数;
  ¨ 每个进程状态、子进程服务的请求数以及该子进程传输的字节总数;
  ¨ 每秒平均请求数、每秒传输的字节数、每次请求平均传输字节数;
  ¨ 目前每个子进程cpu占用及apache的总的cpu占用率;
  ¨ 当前主机及处理的请求。
  二、什么是日志文件
  日志文件是apache工作的记录,apache包括了mod_log_config模块,它用来记
  录日志。在缺省情况下,它用通用日志格式clf规范来写。clf日志文件内对每
  个请求均有一个单独行,形如:host ident anthuser date request status
  bytes
  其含义如下:
  ¨ host��客户端主机的全称域名或ip地址;
  ¨ ident��存放客户端报告的识别信息;
  ¨ authuser��如果是基于用户名认证的话,值为用户名;
  ¨ date��请求的日期与时间;
  ¨ request��客户端的请求行;
  ¨ status��返回到客户端的三们数字的http状态码;
  ¨ bytes��除去http头标外,返回给客户端的字节数。
  三、分析日志文件
  有了日志文件后,我们可以利用unix的一些工具和一此专门的日志分析工具对
  日志文件进行分析。
  实例一:列出访问过本网站的主机名或ip:
  对于这个需求,我们可以通过一个unix的一个脚本语句来完成:
  cat /var/log/httpd/access_log | awk '{print $1}'
  用上面的方法虽然可以得到访问过本网站的主机名或ip,但是由于有些是多次
  访问的,我们希望在上面得到的结果的基础上做一些优化,使得列出的表中,
  每个主机只出现一次。我们可以使用:
  cat /var/log/httpd/access_log | awk '{print $1}' | wc -l
  3. 当然,我们可以根据需要选择第三方提供日志分析工具甚至自己开发一些日
  3. 志分析工具来满足我们的需求。常见的第三方日志分析工具有:webtrends、
  3. wusage、wwwstat、http-analyze、pwebstats、webstat explorer、
  3. accesswatch。
  四、一些提示
  日志一方面是我们分析网站的第一手资料,一方面却是吞噬大量磁盘空间的罪
  魁祸首。所以别忘了定期转储或删除一些老的日志文件。
  apache与代理服务器
    代理服务器是位于客户和客户要访问的服务器之间的系统。当客户机使用
  url请求访问远程资源时,代理服务器接受该请求并取得该资源以满足客户机的
  请求。在通常情况下,代理服务器是客户机的服务器,同时也是远程服务器的
  客户。
    代理服务器可以在自己的缓冲区中存储被请求的内容,当这些信息再次被
  请求的时候,代理服务器就无需再从远程服务器上取了,这样代理服务器就减
  轻了网络的瓶颈问题。
  apache可以配置成为代理服务器。
  一、前向代理服务器和逆向代理服务器
  1.前向代理服务器
  前向代理服务器通常位于用户主机和要访问的远程网络之间。它从远程服务器
  取得所要求的资源,然后返回给用户,同时存在磁盘上,以供下次使用。
  在这种情况下,客户端的主机知道它们正在使用代理服务器,因为每个主机都
  必须配置为使用代理服务器。
  例如,必须告诉www浏览器使用代理服务器,它才能使用代理服务器。所有的远
  程请求都通过代理服务器传输。
  这类代理服务器也称为缓冲代理服务器。逆向服务器也可以缓冲数据,但它的
  作用愉好与前向服务器相反。
  2.逆向代理服务器
  逆向代理服务器位于互联网资源前面,逆向服务器从原始服务器找到被请求的
  资源,并反它返回给用户主机。
  与前向代理服务器不同的是,逆向代理服务器的用户并不知道它们连接的是代
  理服务器而不是资源服务器本身。其结构如下图所示:
  二、配置代理服务器
    为了允许apache作为代理服务器,需要将proxyrequests设为on,然后根据
  你希望代理服务器做什么而增加什么附加配置。无论你希望做什么,你所选的
  代理配置都应该放入一个特殊?lt;directory>容器中。
  
  实例一:将私有ip网连到互联网
  假设私有网上只有一台计算机被分配了互联网上合法的ip地址,这台计算
  机运行apache代理服务器,proxyrequest设置为on,并且不需要附加其他配
  置,所有请求均可由这台代理服务器代理服务。
  实例二:让apache允当远程www站点的缓冲
  第一步:将proxyrequest设置为on
  第二步:创建配置如下:
  
  cacheroot /www/cache
  cachesize 1024
  cachemaxexpire 24
  
  这里的意思是设置cache目录为/www/cache;大小为1024kb,即1mb;缓冲中的
  内容在24小时后失效。
  实例三:建立镜像站点(其实这也就是所谓的逆向代理服务器)
  第一步:将proxyrequest设置为on
  第二步:创建配置如下:
  
  proxypass / www.mot.com /
  cacheroot /www/cache
  cachedefaultexpire 24
  
  10.3 一些提示
  代理服务器,我们将会在后面的章节中详细介绍,这里只是针对apache的功能
  介绍的。用apache作代理服务器的性能并不高,效果并不好。不建议使用。
  安裝 apache php mysql imap gd ldap opens
  注意事项:
  1.如果妳是用 redhat based 的 linux 的话,请执行 ntsysv 将 httpd 和
  1.mysql 不要执行
  2.将 download 的档案放到相同的目录,再用 tar zxvf xxxxxxxx.tar.gz 来
  2.解压缩,请依照要安装的软件进入适当的目录。
  3.可以到 http://linuxnews.idv.tw/download/ 来下载所需的程序。
  mysql:
  ---------------------------------------------------------------
  ./configure --prefix=/usr/local/mysql --with-charset=big5
  make
  make install
  cd scripts
  ./mysql_install_db
  cd /usr/local/mysql/share/mysql/
  chmod 611 mysql.server
  ./mysql.server start
  #编辑 /etc/rc.d/rc.local 加入底下这行以便开机时自动执行 mysql
  /usr/local/mysql/share/mysql/mysql.server start
  imap:
  ---------------------------------------------------------------
  make slx
  cp ipopd/ipop*.* /usr/sbin
  cp imapd/imapd /usr/sbin
  cp c-client/c-client.a /usr/local/lib
  #请确定你有 /usr/local/include 这个目录
  cp c-client/rfc822.h /usr/local/include
  cp c-client/mail.h /usr/local/include
  cp c-client/linkage.h /usr/local/include
  gd:
  ---------------------------------------------------------------
  make
  make install
  ldap:
  ---------------------------------------------------------------
  ./configure --prefix=/usr/local/ldap
  make
  make depend
  cd tests
  make
  cd ..
  make install
  apache:
  ---------------------------------------------------------------
  ./configure --prefix=/usr/local/apache
  openssl:
  ---------------------------------------------------------------
  ./config
  make
  make test
  make install
  mod_ssl:
  ---------------------------------------------------------------
  ./configure --with-apache=../apache_1.3.19
  --with-ssl=../openssl-0.9.6 --prefix=../apache_1.3.19
  php:
  ---------------------------------------------------------------
  ./configure --with-mysql=/usr/local/mysql
  --with-apache=../apache_1.3.19 --enable-track-vars
  --with-gd=../gd-1.8.4 --with-imap=../imap-4.7c --enable-ftp
  --with-ldap=/usr/local/ldap
  make
  make install
  apache:
  ---------------------------------------------------------------
  ./configure --prefix=/usr/local/apache
  --activate-module=src/modules/php4/libphp4.a --enable-module=ssl
  make
  make certificate
  #这时会问你一些问题,就是有关于加密的问题,最后要要求输入启动的密码,
  如果输入密码的话以后启动 httpd 的时候会询问密码,若不输
  #入密码的话启动就不会问了
  #ps.启动http
  #要加密:apachectl startssl
  #不加密:apachectl start
  make install
  修改 /etc/rc.d/rc.local 加入 /usr/local/apache/bin/apachectl start 来
  开机时自动启动 apache
  再来就是修改 /usr/local/apache/conf/httpd.conf 的设定档,将 php 的支
  持加入
  建立apache站点的基本安全机制
  对于www服务来说,在www服务器和www浏览器之间并不始终维持对话过程。办要
  www服务器完成对一个url请求的服务,连接就断开了。
  在这种情况下,在www上保证可以使用的唯一认证机制是由http本身提供 的。
  在标准的apache服务器实现了这样的认证,它能控制哪些主机可能访问特定的
  站点或特点的站点的一部分。
  这种认证可以分为两种,一种是基于主机的的认证,另一种是基于用户名/口令
  的认证。由于互联网上的决大多数用户的ip地址是动态获得的,所以基于主机
  的认证方式并不总适用。所以在大多数情况下,传统的基于用户名/口令的认证
  方式更为现实。下面我们就对这两种认证的实现做一简要的介绍。
  1. 基于主机的认证方式
  在种认证模式顾名思义,访问是用主机名或主机ip地址来控制的。支持这种认
  证方式的是apache的mod_access模块,这个模块缺省状态下是被安装了的。该
  模块用以下几种apache命令来提供访问控制功能。
  allow命令
  语法:allow from host1 host2 host3 ...
  这个命令定义了允许访问站点或目录的主机清单。主机清单可以用以下几
  种形式表示:
  all:代表所有主机;
  主机的全域名,www.mot.com;
  主机的部分域名,如:.mot.com;
  完整的ip地址,如:202.98.2.32;
  部分ip地址,如:202.98
  网络地址/网络掩码对,如:202.98.0.0/255.255.0.0
  网络地址/nn(cidr定义),如:202.98.0.1/16
  deny命令
  语法:deny from host1 host2 host3 ...
  这个命令定义了禁止访问站点或目录的主机清单,其他与allow命令相似。
  order命令
  语法:order deny,allow | allow,deny
  这个命令定义评价allow和deny命令的先后顺序。
  例如:
  
  order deny,allow
  deny from www.mot.com
  allow all
  
  这组命令设置了www.mot.com访问/home/httpd/html目录下的文件。
  请大家注意,顺序是先deny后allow,如果是:order allow,deny 那么,先允
  许所有的主机访问,然后再禁止,这样是无效的,所有主机仍然能够访问。
  2. 基于用户名/口令的认证方式
  这种认证方式其实相当简单,当www浏览器请求经此认证模式保护的url
  时,将会出现一个对话框,要求用户键入用户名和口令。用户输入后,传给
  www服务器,www服务器验证它的正确性,如果正确,返回页面,否则返回401错
  误。要说明的一点是,这种认证模式是基本的,并不能用于安全性要求极高的
  场合。
  apache 中有许多模块可以支持这种认证方式,下面我们就介绍一下最基本、最
  标准的mod_auth模块。正如前面提到的一样,mod_auth模块使用存储在文本文
  件中的用户名、组名和口令来实现认证。这种方法非常适合处理少量用户,它
  能工作得很好。如果你需要对大量的用户,如数以千计的用户做认证时,这种
  方法的性能将急剧下降到不可忍受,所以当这种情况下,就需要考虑使用
  mod_dbm模块或mod_mysql模块来获得更好的性能。
  实例一:需要用户名和口令的访问控制
  下面我们就一起来看一下如何建立需要用户名/口令才能进行访问的目录。
  基本情况: www.xxx.com
  的站点有设置为:
  documentroot /home/httpd/html
  accessfilename .htaccess
  allowoverride all
  需求:限制/home/httpd/html/backup/目录的访问,只允许用户"super"以口令
  "fill-06"访问此目录。
  实现步骤:
  使用htpasswd建立用户文件
  htpasswd -c /home/httpd/secr/.htpasswd super
  此程序会询问用户"super"的口令,你输入"fill-06",两次生效。
  建立.htaccess文件
  用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入
  以下几行:
  authname my friend only (注:这个名字是任取的)
  authtype basic
  authuserfile /home/httpd/secr/.htpasswd
  require user super
  设置文件权限,确保apache用户有读的权限
  这样就完成了设置工作,你可以试一试效果了。
  实例二:允许一组用户访问一个目录
  假设,www.xxx.com想让myfriend组中的mf1与mf2两个用户分别能
  使用口令"mf001-1""mf002-2"访问/home/httpd/html/backup/目录。
  实现步骤:
  使用htpasswd建立用户文件
  htpasswd -c /home/httpd/secr/.htpasswd mf1
  htpasswd -c /home/httpd/secr/.htpasswd mf2
  建立组文件
  用vi/home/httpd/secr/目录下建立一个文件.htgroup,写入:
  myfriend:mf1 mf2
  建立.htaccess文件
  用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入
  以下几行:
  authname my friend only
  authtype basic
  authuserfile /home/httpd/secr/.htpasswd
  authgroupfile /home/httpd/secr/.htgroup
  require group myfriend
  配置工作到此结束,试一试吧!
  实例三:混合使用基于主机与基于用户名/口令的认证方式
  如果你除了只允许让mf1与mf2两个用户访问外,还想禁www.mot.com
  外的主机访问这个目录的话,就将/home/httpd/html/backup/.htaccess修改成
  为:
  authname my friend only
  authtype basic
  authuserfile /home/httpd/secr/.htpasswd
  authgroupfile /home/httpd/secr/.htgroup
  require group myfriend
  order deny,allow
  deny from all
  allow from www.mot.com
  不行,这不是我想要找的,我要再搜一搜声明:本站部分文章收集于网络,仅
  供个人学习之用,绝无任何商业目的;
本节将针对apache中有关安全方面的设置做出详细的叙述,涉及到apache的配置文件、apache的目录访问控制、在apache上运行cgi等安全方面的设置。
4.5.1  apache的配置文件
对于redhat linux系统,apache的配置文件放在/etc/httpd/conf/目录下。如果是自行编译安装的apache,则视编译时指定的目录路径而定,默认是/usr/local/apache/conf。
在conf目录下有3个apache的配置文件:
          httpd.conf
          access.conf
          srm.conf
apache启动时先调用httpd.conf,然后调用srm.conf,最后调用access.conf。但现代版本的apache为避免管理和维护的混乱,已经改为将所有apache的相关配置命令放在httpd.conf文件中,不再使用srm.conf和access.conf文件。虽然这两个文件仍然存在,但内容中没有任何配置命令,形同虚设。
httpd.conf文件分为以下3部分:
          global environment
          'main' server configuration
          virtual hosts 
下面将讲述这3部分的用法和与安全相关的注意点。
4.5.1.1  global environment
          servertype standalone
用来指定apache的启动方式:standalone和inetd。standalone模式是apache独立运行,也是默认的启动方式。inetd模式是守护进程监听http的连接请求才启动httpd进程,请求完毕后就结束httpd进程,这样服务器负担很重。
          serverroot "/etc/httpd"
apache的目录,此处是存放配置、出错记录、日志文件的根目录。目录后面不要加“/”字符。
          lockfile /var/lock/httpd.lock
保留默认值,不要更改。
          pidfile /var/run/httpd.pid
指定记录apache的父进程id的文件名及路径。
          scoreboard /var/run/httpd.scoreboard
指定用于储存服务器进程处理信息的文件名和路径。
          #resourceconfig conf/srm.conf
          #accessconfig conf/access.conf
在标准的配置中,服务器启动时会处理这两个文件。因为现在的apache只使用httpd.conf文件,摒弃了srm.conf和access.conf文件,所以这两行用“#”注释掉。
           timeout 300
设置超时时间。如果远程客户端超过300秒还没连上apache server,或者apache server超过300秒没有传送字节给客户端,就立即断开连接。
           keepalive on
keepalive允许客户端的每个连接有多个请求,设为off时此项无效。
           maxkeepaliverequests 100
设置每次连接期间所允许的最大请求数目。设为0时表示允许无限制数目。设置数字越大,则服务器性能越高。
           keepalivetimeout 15
设置等待同一个客户端的同一个连接发出下一个连接请求超过一定的时间就断线。
           minspareservers 5
          maxspareservers 20
设置最小的闲置服务处理程序的数目和最大的闲置服务处理程序的数目。如果实际数目少于minspareservers,则将增加处理程序;反之,如果实际数目超过maxspareservers,一些多余的处理程序将被杀掉。
           startservers 8
设置启动并初始化后启动服务进程的数目。
           maxclient 150
设置服务运行的总数量。一旦达到此数目,新来的客户端就被拒绝,所以该限制数目不能设得太小。
           maxrequestsperchild 100
设置每个子程序处理结果前的要求数目,设为0表示不限制。
           #listen 3000
#listen 12.34.56.78:80
listen 80
设置apache监听的连接端口或ip地址及端口,默认是80。
           #bindaddress *
该选项用来支持虚拟主机,并告知服务器监听哪个ip地址。可以使用“*”,或具体的ip地址和完整的域名。
           #loadmodule foo_module libexec/mod_foo.so
dso(dynamic shared object)支持。dso模块的概念和作用与windows的dll文件极其相似。
           #extendedstatus on
当“server-status”管理程序被执行时,检查apache的运行状态信息。默认是off。
4.5.1.2  'main' server configuration
如果在第一部分“global environment”中的servertype命令设为inetd的话,那么这部分就没有任何效果,直接跳到serveradmin命令。
           port 80
设置standalone服务器监听的连接端口,也可以设为其他端口,必须小于1 023。必须以root身份才能更改端口。
           user apache
           group apache
指定运行httpd的用户和用户组。必须首先以root身份指派。
           serveradmin root@localhost
设置管理员的电子邮件地址,当apache有问题时会自动发e-mail通知管理员。
           #servername localhost
设置主机名称,可以用域名和ip地址。
           documentroot "/var/www/html"
设置apache放置网页的目录路径。
           
options followsymlinks
allowoverride none

设置apache能够访问的每一个目录被访问时所执行的动作。本章后面将详细叙述apache的目录存取方法。
           
options indexes include followsymlinks
allowoverride none
order allow, deny
allow from all

此处设置apache的网页目录的执行动作。本章节后面将详细叙述目录的存取方法。
           
allowoverride none
options none
allow from all

此处可以防止用户创建自己的.htaccess文件。在这个文件中可以改变全局参数,以致会影响到整个系统的安全。可以在httpd.conf文件中加入的命令中都加上上面的代码。
           userdir public_html
设置用户在自己的目录下建立public_html放置网页,即/home/*/public_html/。这样在浏览器地址栏输入“http://apache服务器/用户名/”就能显示网页。设置的目录必须告知用户,否则他们不知道网页放在什么地方。
           directoryindex index.html index.htm index.shtml index.php index.php4 index.php3 index.cgi
设置apache的默认凯发k8网页登录首页文档。
           accessfilename .htacess
指定控制存取的文件名称。apache默认的是.htaccess。本章将在后面详细叙述该文件的用法。
           
order allow,deny
deny from all

防止用户端看到ht开头的文件内容。因为.htaccess记载了相关信息,.htpasswd记载了密码信息,不允许其他人访问这些文件。
           #cachenegotiateddocs
指定proxy服务器是否将交互产生的文件存在cache中。将该命令注释掉则是不指定。
           usecanonicalname on
设置是否使用标准的名称,默认是on。
           typeconfig /etc/mime.types
指定存放mime文件类型的文件。
           default type text/plain
如果apache不能识别此文件类型时,则按照预设的格式显示,一般以文本文件显示。
           
mimemagicfile conf/magic

mod_mime_magic模块可以让apache由文件内容决定其mime类型。如果存在该模块,才会处理mimemagicfile这一段。上面3行是当没有该模块时就处理这一段。
           hostnamelookups off
设置apache是否向名称服务器解析该ip地址,记录此链接的名称(如hacker.com.cn)。因为dns解析要花一定时间,所以默认设为off,仅记录ip。
           errorlog /var/log/httpd/error_log
指定apache发生错误时记录文件的位置。如果在中没有指定记录文件,则用/var/log/httpd/error_log,否则使用指定的文件。
           loglevel warn
指定记录的详细等级,有8个等级:debug、info、notice、warn、error、crit、alert和emerg。按从详细到简略排列。
           logformat "%h %l %u %t\"%r"\"%>s%b\"{referer}i"\"%{useragent}i\""combind
logformat"%h%l%u%t\"%r"\"%>s%b"common
logformat "%{referer}i->%u"referer
logformat"%{user-agent}i"agint
定义4种格式的别名:combind、commen、referer和agint。
           #customlog /var/log/httpd/access_log common
customlog /var/log.httpd/access_log combind
指定记录文件使用哪种自定义的格式。其他不使用的自定义格式将被注释掉。
以上是关于日志文件的,将在后面的apache日志文件中详细叙述。
           serversignature on
设为on,当apache产生错误时,就在网页上显示apache的版本信息、主机名称、端口等一行信息。设为off,就不显示相关的信息。设为e-mail时,就有“mailto:”给管理员的超链接。
           alias/icons /"var/www/icons/"
使用较短的别名,其格式为:alias 别名 原名。可以无限制地建立别名。注意别名的后面如果有“/”,那么在使用url时也得有“/”。
           scriptalias /cgi-bin/ "/var/www/cgi-bin/"
和alias类似,设置服务器脚本目录。
应该强制性地使用scriptalias命令来限定cgi程序位于某个或者某几个特定的位置。一般可以设置多个scriptalias。必须保证cgi-bin目录不在html目录下,这一点非常重要,这样可以防止黑客通过浏览它们而查看cgi程序。
           indexoptions fancyindexing
以特定的图形显示文件清单。
           addiconbyencoding (cmp, /icons/compressed.gif) x-compress x-gzip
……
defaulticon /icons/unknown.gif
指定显示文件清单时各种文件类型的对应图形。
4.5.1.3  virtual hosts
这部分是设置虚拟主机的。所谓虚拟主机,就是指一台服务器作为多域名的web服务器。isp经常通过一台服务器为其客户提供web服务。而客户通常希望凯发k8网页登录主页以自己的名字出现,而不是在该isp的名字后面,因为使用单独的域名和根网址可以看起来更正式一些。传统上,用户必须自己设立一台服务器才能达到拥有单独域名的目的,然而这需要维护一个单独的服务器。很多小单位缺乏足够的维护能力,更为合适的方式是租用别人维护的服务器。isp也没有必要为一个机构提供一个单独的服务器,完全可以使用虚拟主机的能力,使服务器为多个域名提供web服务,而且不同的服务互不干扰,对外就表现为多个不同的服务器。虚拟主机就是解决这种问题的方案,使客户的域名实际指向isp的同一台服务器。
1.apache支持虚拟主机的方式
apache有两种支持虚拟主机的方式。一是为每一个虚拟主机设置单独的httpd进程,二是为所有的主机设置一个单独的httpd进程。
           为每一个虚拟机设置单独的httpd进程
在httpd.conf文件的第一部分global environment中的bindaddress命令或listen命令就是用来指定虚拟主机的地址和端口的。
bindaddress命令用来指定单一的地址,可以使用域名或ip地址。该命令在httpd.conf文件中只能出现一次。
listen命令可以让httpd进程监听多个地址或端口。反复使用listen命令就能实现这个要求。
           为所有的主机设置一个单独的httpd进程
这是一个常用的方法。用户只要维护一个httpd.conf文件。在此文件的第三部分virtual host中,用命令来为所有的虚拟主机进行配置。有多个虚拟主机就有多个段。在不同的虚拟主机的段中可以指定不同的serveradmin、servername、documentroot、errorlog和transferlog。
2.虚拟主机的实现方式
虚拟主机有三种实现方式:以主机名称的方式虚拟、以ip的方式虚拟、以端口的方式虚拟。下面就举一个在httpd.conf的第三部分virtual host中实现上面提及的方式的例子。
           以主机名称的方式虚拟
如果用户的一台服务器有多个域名,virtual host文件举例如下:
namevirtualhost 210.12.195.6

serveradmin bright@hacker.com.cn
documentroot /var/www/html/hacker
servername hacker.com.cn


serveradmin admin@pcfrient.com.cn
documentroot /var/www/html/pcfrient
servername pcfrient.com.cn

           以ip的方式虚拟
注册域名是要花一笔费用的。凯发天生赢家一触即发官网的解决方案是可以用ip的方式来虚拟。在linux中可以为一个网卡捆绑两个ip地址。如服务器的地址是210.12.195.6,现在有一个ip地址210.12.195.9没有使用。将210.12.195.9捆绑到服务器的网卡中,执行下列命令:
#ifconfig eth0:0 210.12.195.9
这样,服务器就有两个ip地址了。以ip的方式虚拟和以主机名称的方式虚拟类似,请看下面的例子:
namevirtualhost 210.12.195.6

serveradmin bright@hacker.com.cn
documentroot /var/www/html/hacker


serveradmin bright@hacker.com.cn
documentroot /var/www/html/pcfrient

以ip的方式虚拟不用namevirtualhost命令。
           以主机名称和ip的方式虚拟
就是上面的两个方式的结合。看下面的例子:
namevirtualhost 210.12.195.6

serveradmin bright@hacker.com.cn
documentroot /var/www/html/hacker
servername hacker.com.cn


serveradmin bright@hacker.com.cn
documentroot /var/www/html/pcfrient

           以端口的方式虚拟
http默认的端口是80,如果用户要开设另一个端口443作为另一个虚拟主机,举例如下:
listen 80
listen 443

serveradmin bright@hacker.com.cn
documentroot /var/www/html/hacker


serveradmin suying@hacker.com.cn
documentroot /var/www/html/pcfrient

           以不同的ip和端口的方式虚拟
该方式是以ip的方式虚拟和以端口的方式虚拟的结合。假设服务器捆绑了两个ip地址,210.12.192.6和210.12.195.9,后面的ip地址用端口443。举例如下:
listen 210.12.192.6:80
listen 210.12.195.9:443

serveradmin bright@hacker.com.cn
documentroot /var/www/html/hacker


serveradmin suying@hacker.com.cn
documentroot /var/www/html/pcfrient



zhyiwww 2006-10-25 16:59
]]>
eclipse快捷键(转载)http://www.blogjava.net/zhyiwww/archive/2006/10/24/76959.htmlzhyiwwwzhyiwwwtue, 24 oct 2006 06:06:00 gmthttp://www.blogjava.net/zhyiwww/archive/2006/10/24/76959.htmlhttp://www.blogjava.net/zhyiwww/comments/76959.htmlhttp://www.blogjava.net/zhyiwww/archive/2006/10/24/76959.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/76959.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/76959.html 本文档从软件上整理,是列出了标准的快捷键,未列出emacs快捷键。转贴请注明作者和出处。


编辑

作用域 功能 快捷键

全局 查找并替换 ctrl f

文本编辑器 查找上一个 ctrl shift k

文本编辑器 查找下一个 ctrl k

全局 撤销 ctrl z

全局 复制 ctrl c

全局 恢复上一个选择 alt shift ↓

全局 剪切 ctrl x

全局 快速修正 ctrl1 1

全局 内容辅助 alt /

全局 全部选中 ctrl a

全局 删除 delete

全局 上下文信息 alt ?

alt shift ?

ctrl shift space

编辑器 显示工具提示描述 f2

java编辑器 选择封装元素 alt shift ↑

java编辑器 选择上一个元素 alt shift ←

java编辑器 选择下一个元素 alt shift →

文本编辑器 增量查找 ctrl j

文本编辑器 增量逆向查找 ctrl shift j

全局 粘贴 ctrl v

全局 重做 ctrl y


?

查看

作用域 功能 快捷键

全局 放大 ctrl =

全局 缩小 ctrl -


?

窗口

作用域 功能 快捷键

全局 激活编辑器 f12

全局 切换编辑器 ctrl shift w

全局 上一个编辑器 ctrl shift f6

全局 上一个视图 ctrl shift f7

全局 上一个透视图 ctrl shift f8

全局 下一个编辑器 ctrl f6

全局 下一个视图 ctrl f7

全局 下一个透视图 ctrl f8

文本编辑器 显示标尺上下文菜单 ctrl w

全局 显示视图菜单 ctrl f10

全局 显示系统菜单 alt -


?

导航

作用域 功能 快捷键

java编辑器 打开结构 ctrl f3

全局 打开类型 ctrl shift t

全局 打开类型层次结构 f4

全局 打开声明 f3

全局 打开外部javadoc shift f2

全局 打开资源 ctrl shift r

全局 后退历史记录 alt ←

全局 前进历史记录 alt →

全局 上一个 ctrl ,

全局 下一个 ctrl .

java编辑器 显示大纲 ctrl o

全局 在层次结构中打开类型 ctrl shift h

全局 转至匹配的括号 ctrl shift p

全局 转至上一个编辑位置 ctrl q

java编辑器 转至上一个成员 ctrl shift ↑

java编辑器 转至下一个成员 ctrl shift ↓

文本编辑器 转至行 ctrl l



搜索

作用域 功能 快捷键

全局 出现在文件中 ctrl shift u

全局 打开搜索对话框 ctrl h

全局 工作区中的声明 ctrl g

全局 工作区中的引用 ctrl shift g


?

文本编辑

作用域 功能 快捷键

文本编辑器 改写切换 insert

文本编辑器 上滚行 ctrl ↑

文本编辑器 下滚行 ctrl ↓


?

文件

作用域 功能 快捷键

全局 保存 ctrl x

ctrl s

全局 打印 ctrl p

全局 关闭 ctrl f4

全局 全部保存 ctrl shift s

全局 全部关闭 ctrl shift f4

全局 属性 alt enter

全局 新建 ctrl n



项目

作用域 功能 快捷键

全局 全部构建 ctrl b



源代码

作用域 功能 快捷键

java编辑器 格式化 ctrl shift f

java编辑器 取消注释 ctrl \

java编辑器 注释 ctrl /

java编辑器 添加导入 ctrl shift m

java编辑器 组织导入 ctrl shift o

java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。

也可以使用ctrl 1自动修正。


?

运行

作用域 功能 快捷键

全局 单步返回 f7

全局 单步跳过 f6

全局 单步跳入 f5

全局 单步跳入选择 ctrl f5

全局 调试上次启动 f11

全局 继续 f8

全局 使用过滤器单步执行 shift f5

全局 添加/去除断点 ctrl shift b

全局 显示 ctrl d

全局 运行上次启动 ctrl f11

全局 运行至行 ctrl r

全局 执行 ctrl u



重构

作用域 功能 快捷键

全局 撤销重构 alt shift z

全局 抽取方法 alt shift m

全局 抽取局部变量 alt shift l

全局 内联 alt shift i

全局 移动 alt shift v

全局 重命名 alt shift r

全局 重做 alt shift y



zhyiwww 2006-10-24 14:06
]]>
uml 主流工具(转载) http://www.blogjava.net/zhyiwww/archive/2006/06/01/49639.htmlzhyiwwwzhyiwwwthu, 01 jun 2006 07:45:00 gmthttp://www.blogjava.net/zhyiwww/archive/2006/06/01/49639.htmlhttp://www.blogjava.net/zhyiwww/comments/49639.htmlhttp://www.blogjava.net/zhyiwww/archive/2006/06/01/49639.html#feedback0http://www.blogjava.net/zhyiwww/comments/commentrss/49639.htmlhttp://www.blogjava.net/zhyiwww/services/trackbacks/49639.html

uml 主流工具

real-time studio

第 15 届 productivity winner

(mda)

embarcadero

i-logix

ibm

第 15 届 productivity winner

and modeler

interactive objects

(mda)

metamatrix

microsoft

no magic

第 15 届 productivity winner

jdeveloper

enterprise architect

powerdesigner

telelogic



smart development environment 2.0 第 15 届 jolt winner

参考资源

)

 



zhyiwww 2006-06-01 15:45
]]>
网站地图