集成整合Apache和Tomcat

  1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。
  2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet)。
  3. Apache和Tomcat是独立的,在同一台服务器上可以集成搜索。

一、安装Apache

Apache版本:httpd-2.4.33.tar.gz 

安装前准备:下载 httpd-2.4.33.tar.gz 
           apr-1.6.3.tar.gz
            apr-util-1.6.1.tar.gz
           expat-2.0.1.tar.gz
           pcre-8.10.zip

步骤:

# tar xzvf httpd-2.4.33.tar.gz
# cd httpd-2.4.33
# ./configure --prefix=/usr/local/apache2 --enable-so   (apache2看实际目录名字)
# sudo make
# sudo make install

./configure --prefix=/usr/local/apahce  --enable-so ,若提示以下错误:

error: APR not found. Please read the documentation


则安装apr

# tar xzvf apr-1.6.3.tar.gz
# cd apr-1.6.3
# ./configure --prefix=/usr/local/apr
# sudo make 
# sudo make install

再次返回到httpd-2.4.33 目录进行安装,检查编译环境
若报错:configure: error: APR-util not found. Please read the documentation

则安装apr-util

# tar xzvf apr-util-1.6.1.tar.gz
# cd apr-util-1.6.1
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# sudo make 
# sudo make install

安装apr-util包make时报错:make: *** [all-recursive] Error 1

解决办法:安装Expat解析XML

# tar xzvf expat-2.0.1.tar.gz
# cd expat-2.0.1
# ./configure
# sudo make
# sudo make install

安装完成后重新返回apr-util-1.6.1目录执行

# sudo make 
# sudo make install

再次返回到httpd-2.4.33 目录进行安装,检查编译环境,执行
./configure --prefix=/usr/local/apache --enable-so 仍提示APR-util not found增加--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

./configure --prefix=/usr/local/apache --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

执行后出现
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

#./configure –help | grep pcre
--with-pcre=PATH        Use external PCRE library

则安装pcre-8.10.zip

#unzip -o pcre-8.10.zip
#cd pcre-8.10
#./configure --prefix=/usr/local/pcre
#sudo make
#sudo make install

最后安装apahce:(安装httpd服务需要指定apr apr-util pcre这三个目录才能正常安装)

./configure --prefix=/usr/local/apache --enable-rewrite --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre

#sudo make

#sudo make install

httpd服务安装完成

二、启动Apache并访问验证

1.默认的web根目录为:htddocs

  默认端口为:80

  为避免冲突可将端口号修改为8088

# vi /usr/local/apache/conf/httpd.conf

找到 listen 80  修改为  8088保存退出

2.启动Apache服务器

# /usr/local/apache/bin/apachectl -k start

进入安装目录

# cd /usr/local/apache/bin/
# ./apachectl –k start|stop|restart   分别为启动 停止 重启

netstat -ltnp  检查网络端口 验证刚才我们的端口号是否打开了

# netstat –ltnp

这时查看我们的端口号是否打开了  结果:8088打开了

打开浏览器 输入 http://IP地址:8088
出现 it works 表示连接已经正常
到此安装完毕

3.配置rc.local文件将Apache的服务加入到开机自动启动(这步未使用网上看到的写出来预防万一)
# echo  '/usr/local/apache2/bin/apachectl -k start'  >>  /etc/rc.d/rc.local

如果安装完成之后,发现还报错,可以将apr,apr-util的解压包拷贝至http解压包的srclib/目录下,然后重新安装

三、tomcat已安装

四、编译生成mod_jk

1、下载 tomcat-connectors-1.2.43-src.tar.gz

2、下载后,首先把tomcat-connectors-1.2.43-src.tar.gz复制到/usr/local

# cp tomcat-connectors-1.2.43-src.tar.gz /usr/local

解压

# tar xzvf tomcat-connectors-1.2.43-src.tar.gz

解压后,进入native文件夹

# cd tomcat-connectors-1.2.43-src/native
# ./configure --with-apxs=/usr/local/apache/bin/apxs  (此处可根据apxs实际地址修改)
# make

完成编译后,在/usr/local/tomcat-connectors-1.2.43-src/native/apache-2.0文件夹下可以找到mod_jk.so文件

# cp ./apache-2.0/mod_jk.so /usr/local/apache/modules/

编译完成
 

3、问题:在编译mod_jk.so文件的时候,我遇到了找不到apxs文件,所以编译不了,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。

正常按顺序安装后apxs就已存在,若没有有可能是查找路径有问题

我的是在/usr/local/apache/bin/apxs路径下
 

五、整合Apache和Tomcat

1、创建配置文件

在/usr/local/apache/conf/下面建立两个配置文件mod_jk.conf和workers.properties

mod_jk.conf 内容如下:

#LoadModule jk_module modules/mod_jk.so  


JkWorkersFile /etc/httpd/conf/workers.properties  
# Where to put jk logs  
JkLogFile /var/log/httpd/mod_jk.log  


# Set the jk log level [debug/error/info]  
JkLogLevel info  


# Select the log format  
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"  


# JkOptions indicate to send SSL KEY SIZE,   
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories  
# JkRequestLogFormat set the request format   
JkRequestLogFormat "%w %V %T"  


JkMount /*/servlet/*  worker1  
JkMount /*.jsp worker1  
JkMount /application/* worker1  
JkMount /*.do worker1  
JkMount /*.class worker1  
JkMount /*.jar worker1  
  • 其中,前两个参数(JkWorkersFile和JkLogFile)具体的值会因为apache安装路径的不同而不同,此处需写入自己的apache服务器的路径。 
  • 文件末尾的几行JkMount意思是将符合条件的文件交给Tomcat处理。
  • 中间则是一些常规参数的设置。

workers.properties内容如下

# Defining a worker named worker1 and of type ajp13  
worker.list=worker1  


# Set properties for worker1  
worker.worker1.type=ajp13    
worker.worker1.host=localhost   (因安装在远程服务器上故我设置为ip)
worker.worker1.port=8009  	 (此处是tomcat的端口)
worker.worker1.lbfactor=50    
worker.worker1.cachesize=10    
worker.worker1.cache_timeout=600    
worker.worker1.socket_keepalive=1    
worker.worker1.socket_timeout=300

接着是对/conf文件夹下自带的httpd.conf文件加入如下内容:

LoadModule jk_module modules/mod_jk.so
Include /etc/httpd/conf/mod_jk.conf

     DocumentRoot "/usr/local/apache-tomcat-7.0.81/webapps/test"	(此处为tomcat新建测试test项目目录,根据实际情况修改)
     JkMount /* worker1

保存之后重启Apache和Tomcat。
 

新建index.jsp页面放于tomcat目录webapps/test/index.jsp

    
Hello   

<%
java.util.Date currentTime = new java.util.Date();
%>
<%=currentTime%>
    

访问http://ip:8088/test/index.jsp

若页面正常加载显示当前系统时间,则说明集成成功

但我目前访问时报502错误,原因未知,不知道是不是配置文件存在问题,若后续解决会更新文章
 

----------------------------------------------------------------------------------------------------------------

过程中遇到的问题:


一、xxx is not in the sudoers file.This incident will be reported.的解决方法

1.切换到root用户下

su - root 

2.添加sudo文件的写权限,命令是:

chmod u+w /etc/sudoers

3.编辑sudoers文件
vi /etc/sudoers
找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)

ps:这里说下你可以sudoers添加下面四行中任意一条
youuser            ALL=(ALL)                ALL
%youuser           ALL=(ALL)                ALL
youuser            ALL=(ALL)                NOPASSWD: ALL
%youuser           ALL=(ALL)                NOPASSWD: ALL

第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.

4.撤销sudoers文件写权限,命令:
chmod u-w /etc/sudoers

这样普通用户就可以使用sudo了.

二、Linux查看tomcat版本
先进到tomcat的bin目录下(cd /tomcat目录/bin),在执行./version.sh

三、vim 命令
https://blog.csdn.net/feosun/article/details/73196299

 

你可能感兴趣的:(Tomcat)