Apache 配置 SSL(HTTPS) 并整合 Tomcat

我们在 Tomcat 中可以开启 SSL,用 HTTPS 来访问,见前一篇 快速启用 Tomcat 的 HTTPS 协议访问,不过更接近实际的应用是 Tomcat 只担当 Servlet 容器,HTTPS 协议部份,甚至是静态页面是交给 Apache 的处理,Apache 与 Tomcat 之间有一个通道。当然前端用 F5 那类负载均衡设备就另当别论了。

这里实践一下怎么开启 Apache 的 HTTPS,并与 Tomcat 进行整合的操作。平台是 Mac OS X, Apache2, Tomat8,其他平台或不同版本的应用软件配置类似。

第一步: 生成自签署证书

安全加密的东西都得证书,我们需要用到 openssl,没有就先安装它,命令是:

openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key

上面命令可以指定生成 server.crt 和 server.key 文件的目录,默认产生在当前目录下,假设这两个文件生成在 /etc/apache2 目录下。 阅读全文 >>

Apache .htaccess 重定向在别名应用中的问题

在 Apache 应用的目录中有 .htaccess 文件来进行重定向,目的是实现省略扩展名 .php 来访问相应的 php 文件,例如用 url

http://localhost/unmi/forgotPassword  来访问  http://localhost/unmi/forgotPassword.php

.htaccess 文件的内容是:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

结果访问 http://localhost/unmi/forgotPassword 时出现错误:

Not Found

The requested URL /data/unmi/forgotPassword.php was not found on this server.

实际上文件 /data/unmi/forgotPassword.php 是存在的。这就奇怪了,怀疑过是文件权限的问题(Mac 平台),改成 755 也不行。也经为是 AllowOverride 的问题,可它的值我设置成了 All 啊,又不是 None,应该不是症结所在。

费了一番功夫也明白了我是配置了别名来访问应用的,在 Apache httpd.conf 中是这样定义的别名: 阅读全文 >>

Apache Commons Logging 是如何决定使用哪个日志实现类的

Apache Commons Logging 像 SLF4J 一样,是个通用日志框架,广泛应用在各个开源组件中。说其通用,是因为它本身只提供了简单的日志输出的实现(org.apache.commons.logging.impl.SimpleLog和org.apache.commons.logging.impl.NoOpLog),主要是为你统一使用其他专业日志实现(Log4j、jdk1.4 Logger、aavalon-Logkit)的方式,让你在程序中看不到具体日志实现的代码,以配置方式解藕。

那么 commons-logging 是怎么决定程序执行时该使用哪个具体的日志实现呢?这里 commons-logging 有两个步骤要做:

1. 定位 org.apache.commons.logging.LogFactory 的实现类(这一步是关键)
2. 定位到的 LogFactory 实现类决定使用哪个 org.apache.commons.logging.Log 实现

那现在我们把注意力主要集中在 commons-logging 如何定位 LogFactory 实现类上来。org.apche.commons.logging.LogFactory 是一个抽象类,所以需要一个 LogFactory 具体类。 阅读全文 >>

访问日志文件过大而导致启动 Apache 时出现 httpd could not be started 错误

正式应用又好久没有重启过了,所以先停了 IBM Http Server (IHS,Apache 1.3.28),再把所有应用启动妥当后,最后把 Apache 启起来。终端下进到 IBMHttpServer 目录,然后敲入命令:bin/apachectl start,得到的错误是:bin/apachectl start: httpd could not be started。

这下有点慌了神,以前从未碰到过,怀疑是配置文件 httpd.conf 有问题,但一般 httpd.conf 有问题有提示错误的,不管,还是用 bin/apachectl configtest 看下,返回 Syntax OK,没问题。

可能别的程序占用了 80 端口?netstat -na|grep 80 没发现什么。

翻看日志,打开 IBMHttpServer 下的 log.txt,好久以前的信息,打开 logs/error_log 也是很久以前的信息。 阅读全文 >>

结合Apache和Tomcat实现集群和负载均衡


本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵。

因原文中有较多的贴图,如若各位读者一时不想亲自动手而直想看到配置效果,可查看原文。

 

一:软件环境
   1. Apache: apache 2.0.55 (由http://httpd.apache.org/进入下载)(点击下载apache 2.0.55)
   2. Tomcat: Tomcat 5.5.25 (由http://tomcat.apache.org/进入下载)(点击下载Tomcat 5.5.25 zip版)
   3. mod_jk: 在页面 http://tomcat.apache.org/   Download 标题下找到 Tomcat Connectors 链接进入( 点击下载mod_jk-apache-2.0.55.so),看起来像是个Unix/Linux下的动态库,实际应是个Win32 的 DLL 动态库,大概是为保持不同平台配置的一致性,才用了这个扩展名。 阅读全文 >>

用 apache commons-email 轻松发送无乱码邮件

原来项目中都是自己拿到 mail.jar 和 activation.jar 两个包编写发送Email的代码,虽然不难,但也有些麻烦。

现在好了,在 apache 站点有一个 jarkata/commons/email 子项目,也为我们实现了发送 Email 的功能,在 http://jakarta.apache.org/commons/email/ 把包 commons-email-1.0.jar 下来,自己要写的代码就十分少了,并且非常明了。

这个包的大小只有23K,也就是9个类而已,却能让您省不少事。 阅读全文 >>