(高手绕道)
目的是在 ubuntu 9.10 下安装 apache 2.2 +tomcat 6.0.20+jk 1.2.28.,当然在期间也复习了 linux下的基本命令,基本的 shell编程语句,如 :expr if while test 等 ,研究了下 tomcat的启动脚本。
一开始,肯定对 apache2一点也不熟悉,为了一次整合成功,做了很多的准备,包括看了很多的文章,就是没有看 apache的官网文档的,这是一个失误阿!
使用了 apt-get install apache2 .安装是成功了,但是不知道安装到那个目录下, google
下,通过如下方式找到 ubuntu下默认安装 apache2软件的路经 .
论坛指点:
默认安装路径如下:
/usr/bin /usr/lib /usr/share /usr/share/man
方法 1:在命令行输入: dpkg -L 软件包名;这里注意了软件包名,如 apache2软件包名为 apache2.(推荐这个方法)
方法 2:在 /var/cache/apt/archives找的你安装程序的包 ,然后用“ gdebi-gtk+软件包名”可以查看具体安装在什么位置。
参考: http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=21990
默认安装后, apache2的路径非常乱,在本机电脑上安装路径如下:
/usr/
/usr/share/
/usr/share/doc
/usr/share/bug
/usr/share/apache2
…
太乱了,如是下手卸载,去 ubuntu software center 下载,结果 search一下,没有 apache。纳闷啊,我明明安装了,怎么在这里面没有了? Bug
另寻它法:(步骤如下)
1、 sudo apt-get remove apache2
2、 sudo apt-get remove apache2.2-common
3、 sudo apt-get autoremove (此命令会自动卸载 PHP)
卸载完成
成功卸载了吧?我这么想,去看看 /etc/目录下看看 ,apache2 在那里好好的,原来删除根本就不完全,
这样卸载软件,系统能用多久啊,
迟早一天硬盘会不够用的,系统运行速度会变慢的!于是 rm掉。
===========================================
至此, ubuntu默认安装默认卸载结束。重新到官网去下载 apache2.2 。根据 document安装
===========================================
另外记录一下启动 apache2 出现的错误以及解决办法:
1.Apache Address already in use: make_sock: could not bind to port 80 error and solution
First make sure port 80/443 is not used by any other service or application with netstat command:
# netstat -tulpn| grep :80
If port 80 is bind to httpd, kill all process:
# killall -r httpd
Now start the httpd:
# /etc/init.d/httpd start
Also make sure you are root while starting the httpd.
(后来这个很有用!)
另外参考:
===============================================
去官网下了这个: Unix Source: httpd-2.2.15.tar.gz
(虽然 apache 2.3.5-alpha 已经出来了)
安装步骤:
Download $ lynx http://httpd.apache.org/download.cgi
Extract $ gzip -d httpd- NN .tar.gz
$ tar xvf httpd- NN .tar
$ cd httpd- NN Configure
$./configure --prefix= PREFIX
Compile $ make
Install $ make install
Customize $ vi PREFIX /conf/httpd.conf
Test $ PREFIX /bin/apachectl -k start
------------------------------------------------------------------------------------
说下需要注意的地方,在
./configure这一步的时候,注意
PREFIX是你新建的目录下。比如
:apache2。
PS:这个过程是从原代码编译开始到安装。整个过程的时间很长,请耐心等待。
安装成功。
=======================================
2. 在 index.html中添加中文,出现中文乱码,
解决方法一:
<meta http-equiv="Content-Language" content="zh-cn">;
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">;
解决的方法之二
:
直接在httpd.conf配置文件中将
AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset GB2312 .ZH-CN .zh-cn
上网有上面这种方法,
但是我的apache 2.2.15里没有这个httpd.conf文件,应该是版本不同吧。至此,已经告一段落。
=============================================
配置mod_jk
mod_jk requires two entities:
mod_jk.xxx - The Apache module, depending on your operating system, it will be mod_jk.so, mod_jk.nlm or or MOD_JK.SRVPGM (see the build section).
workers.properties - A file that describes the host(s) and port(s) used by the workers (Tomcat processes). A sample workers.properties can be found under the conf directory in the source download.
配置mod_jk在官网文档里面关于“auto-configure”有如下说法:
Using Tomcat auto-configure
The auto-configure works only for a single Tomcat running on the same machine where Apache (httpd) is running. The simplest way to configure Apache to use mod_jk is to turn on the Apache auto-configure setting in Tomcat and put the following include directive at the end of your Apache httpd.conf file (make sure you replace $TOMCAT_HOME with the correct path for your Tomcat installation:
#To be added at the end of your httpd.conf
Include $TOMCAT_HOME/conf/jk/mod_jk.conf-auto
Note: this file may also be generated as $TOMCAT_HOME/conf/auto/mod_jk.conf
This will tell Apache to use directives in the mod_jk.conf-auto file in the Apache configuration. This file is created by enabling the Apache auto-configuration by creating your workers.properties file at $TOMCAT_HOME/conf/jk/workers.properties and adding the listener to the Engine element in the server.xml file as per the following example. Please note that this example is specific to Tomcat 5.x, unlike other sections of this document which also apply to previous Tomcat branches.
...
<Engine ...>
...
<Listener className="org.apache.jk.config.ApacheConfig" modJk="/path/to/mod_jk.so" />
...
</Engine>
...
Then restart Tomcat and mod_jk.conf should be generated. For more information on this topic, please refer to the API documentation at the Tomcat docs website .
大概的意思,就是说,
tomcat
提供了一个功能,只要你做好如下操作,就能自动生成mod_jk的配置文件,很方便的完成配置:
1,指定worker.properties为:“$TOMCAT_HOME/conf/jk/workers.properties”
2,在监听器Listener中配置属性“
modJk”,即指定
mod_jk.so的路径。
两步过后,重新启动tomcat,在$TOMCAT_HOME的目录下自动生成如下目录以及文件:conf/jk/mod_jk.conf-auto
mod_jk.conf-auto文件内容就是我们在
httpd.conf中配置
mod_jk的内容。但是自动生成的内容总存在缺点
:
如下是自动生成的配置文件(
mod_jk.conf-auto)
########## Auto generated on Thu Apr 01 23:42:51 CST 2010########## <IfModule !mod_jk.c> LoadModule jk_module "/opt/apache2/modules/mod_jk.so" </IfModule> JkWorkersFile "/opt/apache-tomcat-6.0.20/conf/jk/workers.properties" JkLogFile "/opt/apache-tomcat-6.0.20/logs/mod_jk.log" JkLogLevel emerg #Where to put jk shared memory JkShmFile /var/log/httpd/mod_jk.shm <VirtualHost localhost> ServerName localhost JkMount /manager ajp13 JkMount /manager/* ajp13 JkMount /bio ajp13 JkMount /bio/* ajp13 JkMount /docs ajp13 JkMount /docs/* ajp13 JkMount /examples ajp13 JkMount /examples/* ajp13 JkMount /host-manager ajp13 JkMount /host-manager/* ajp13 </VirtualHost>
这个没仔细研究了,但是我通过上次的操作,重新启动 tomcat 和 apache2 , 访问 http://localhost/examples/index.html 出现了 internal error. 系统日志报 505 错误。提示:没指定 JkShmFile 文件。
============================================================
经过上面的一番折腾,让我明白了
mod_jk 整个配置过程.
1,配置
httpd.conf,主要是为了加载
module.
LoadModule jk_module modules/mod_jk.so(事先将
mod_jk.so放置在
modules目录下)
如果加载了module,就会执行<IfModule jk_module >...</IfModule>中相关的worker,以及worker处理的url,并使其生效.
2.而在
<IfModule jk_module>...</IfModule>配置
workers.properties,等其他
文件,
或者配置额外的
urlworkmap文件,如下面的
uriworkermap.properties,
或者直接在
httpd.conf文件中配置相关的
urlworkmap.
#We need a workers file exactly once
#and in the global server
JkWorkersFile conf/workers.properties
#Our JK error log
#You can (and should) use rotatelogs here
JkLogFile logs/mod_jk.log
#Our JK log level (trace,debug,info,warn,error)
JkLogLevel info
#Our JK shared memory file
JkShmFile logs/mod_jk.shm
#If you want to put all mounts into an external file
#that gets reloaded automatically after changes
#(with a default latency of 1 minute),
#you can define the name of the file here.
JkMountFile conf/extra/uriworkermap.properties
或者不用外部文件,而如下配置:
#Example for Mounting a context to the worker "balancer"
#The URL syntax "a|b" instantiates two mounts at once,
#the first one is "a", the second one is "ab".
#JkMount /myapp|/* balancer
.....
。。。
3 ,如有需要: uriworkermap.properties 的配置,这个很简单,如下:
#This file provides sample mappings for example wlb
#worker defined in workermap.properties.minimal
#The general syntax for this file is:
#[URL]=[Worker name]
/admin/*=wlb
/manager/*=wlb
/jsp-examples/*=wlb
/servlets-examples/*=wlb
/examples/*=wlb
以上的配置文件信息来自于从官网下载的 source.tar.gz 包中的 cong 目录的几个相关的配置文件实例。
在下载 mod_jk.so 这个二进制文件时,需要注意了,注意自己系统支持的体系结构,就 jk-1.2.28
binary 版本下载而言,提供了适合在 i586 以及 x86_64. 我们普通的 PC 一般是 i386, 应该下载 i586, 至少不能下 64 位的版本哦。
i586,i386 的区别以及相似的地方参看:
http://blog.csdn.net/BSKnight/archive/2009/12/30/5108821.aspx
-------------------------------------------============
经过上面的 N 次折腾,总算把 apache + tomcat 等基本的安装,配置过程有了清楚的理解。写下此篇文章,以后参考。如果给新手一些帮助,那就十分高兴。