Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103179648
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-25 16:56:32

 
  
 
iptables 解决方案
xinetd 是处理请求重新导向的一种好方法,但它执行了一个处理序以在连接端口之间实际转信数据,这确实增加了一些开销。最新的 Linux 内核版本透过使用 iptables 来支持一种更好的设定重新导向的方法。iptables 与 xinetd 的区别之处在于它是一个真正的内核组件。因此,它可以避免 xinetd 方法增加的开销。使用 iptables 的唯一缺点是它可能比 xinetd 更难以组态,而且它只可用于相当新的内核版本。
您需要执行支持 iptables 的 2.4.x 或更新的内核,以便使用我在这里描述的技术。组态和设定 iptables 是一个确信由几篇文章来单独描述的主题,所以我不打算在这里尝试讨论该主题。如果对 iptables 的入门需要帮助,请阅读 Linux 分发版的手册。要快速检查 iptables 是否在您的系统上执行,尝试以 root 使用者身份执行︰
/sbin/service iptables status
如果它正在执行,您将会在控制台上看到表和链的清单。
iptables 使用几个不同的表和封包链来处理规则的。为了将进入 HTTP 请求从连接端口 80 重新导向到系统中的另一个连接埠,您将要使用 nat 表(表示网络地址转换,Network Address Translation)和 PREROUTING 链。清单 2 提供了要执行的实际指令(以 root 使用者身份),以便于加入一条处理这一请求的规则。这条规则的作用是将进入包的目标连接端口 80 修改成目标连接端口 8080,因此祇有在您没有阻止从外部使用连接埠 8080 时,这条规则才会正确工作。一旦执行了该指令,您就应该能够立即处理进入请求。
清单 2. iptables 重新导向规则
 
/sbin/iptables -t nat \
-A PREROUTING -j REDIRECT -p tcp \
——destination-port 80:80 ——to-ports 8080
/sbin/service iptables save
以便于储存目前 iptables 组态。
自动启动 Tomcat
当执行诸如 Tomcat 之类别的 Java 服务时的另一个问题是当系统启动时,如何自动启动该应用程序,以及当系统关机时如何自动停止它(换句话说,将它当作守护程序执行)。经验丰富的 Linux 使用者已经知道怎样做,但如果您还是个 Linux 新手,以下就是一些基础知识。
如果您就在您的个人系统上执行它并且想要使用与直接执行 Tomcat 一样的对 Tomcat 的文件和目录的存取权,那么您可以用您自己的使用者名称来设定它。但是,通常,一个比较好的想法是︰为将要作为守护程序执行的任何程序设定一个单独的使用者。要针对 Tomcat 执行这一作业,以 root 使用者身份执行︰
/usr/sbin/useradd tomcat
这将建立一个名为 tomcat 的使用者账户并建立一个用于 Tomcat 安装的主目录 /home/tomcat.所建立的主目录的所有者是 tomcat 使用者,而且通常只容许这个使用者存取(当然还有 root 使用者)。如果想要从其它账户存取 Tomcat 安装,可以将许可权变更成包括组存取权,并将 tomcat 组新增到这些其它账户。
总之,要将 Tomcat 当作守护程序执行,需要将服务组态文件新增到 /etc/init.d 目录中,而您可能要将该文件命名为「tomcat」。清单 3 提供了该文件的样本。这假设了 Tomcat 安装在 /home/tomcat 下,并且该位置中有两个 shell 指令码文件,用于处理启动和停止服务器(tcstart.sh 和 tcstop.sh)。在执行实际的 Tomcat 启动或停止指令码之前,需要使用这些文件来设定 Tomcat 所需的环境变量(包括 JAVA_HOME 和 JDK_HOME)。
清单 3. Tomcat 服务定义
 
#!/bin/bash
#
# tomcat Starts Tomcat Java server.
#
#
# chkconfig: 345 88 12
# description: Tomcat is the server for Java servlet applications.
### BEGIN INIT INFO
# Provides: $tomcat
### END INIT INFO
# Source function library.
。 /etc/init.d/functions
[ -f /home/tomcat/tcstart.sh ] || exit 0
[ -f /home/tomcat/tcstop.sh ] || exit 0
RETVAL=0
umask 077
start() {
echo -n ___FCKpd___2quot;Starting Tomcat Java server: "
daemon su -c /home/tomcat/tcstart.sh tomcat
echo
return $RETVAL
}
stop() {
echo -n ___FCKpd___2quot;Shutting down Tomcat Java server: "
daemon su -c /home/tomcat/tcstop.sh tomcat
echo
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
*)
echo ___FCKpd___2quot;Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
 
 
来自: 新客网() 详文参考:
阅读(201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~