Linux下部署Javaweb项目-------整合Apache和Tomcat

一、远程拷贝项目至服务器

      Linux服务器上部署Javaweb项目环境搭建接博主上篇博客:
https://blog.csdn.net/wilson_m/article/details/80341830

      通过scp命令将项目导出的war包远程拷贝至Linux服务器下tomcat的发布目录,Tomcat的默认发布目录是Tomcat安装目录下的webapps目录。

这里写图片描述

      通过上述代码将文件拷贝到服务器。
      注:我又通过mv命令将两个项目移动到/data/tomcat/webapps目录下

      注:博主的tomcat是安装在/usr/local目录下的,但是项目为什么不放在/usr/local/tomcat/webapps目录下而是放在/data/tomcat/webapps目录下呢?这样项目还能够进行发布访问吗?

      答案是可以的,因为通过修改Tomcat的配置文件使tomcat的默认发布目录改成了/data/tomcat/webapps目录,具体修改方法如下。

      进入/usr/local/tomcat/conf目录下,vim server.xml编辑配置文件,将appBase后的目录修改为自己想要发布的目录。修改后如下所示:

这里写图片描述

      将war包放置在发布目录下,会自动解压出生成对应的文件夹,如下所示:

这里写图片描述

二、Linux下 Tomcat 与 Apache 集成

1、下载链接插件包

      Tomcat 提供了专门的 JK 插件用于负责Tomcat 和 HTTP 服务器的通信,当 HTTP 服务器接收到客户的请求时,会通过 JK 插件来过滤URL,根据预先设定的 URL 映射信息,决定是否要把客户端的请求转发给Tomcat处理,本文主要实现将静态页面交给Apache处理,动态页面交给tomcat处理。

      JK 插件下载地址:http://tomcat.apache.org/download-connectors.cgi,其中包含以下不同系统的插件:

  • mod_jk.sol:Window下集成Apache
  • mod_jk_linux.so:Linux下集成Apache
  • isapi_redirect.dll:集成IIS

      打开上述链接,按照如下进行下载

这里写图片描述

      通过scp命令拷贝到服务器上,博主拷贝到的目录是/data/tomcat-apache,通过解压命令进行解压

[root@271d5811ce45 tomcat-apache]# tar -zxvf tomcat-connectors-1.2.43-src

      解压后产生一个文件夹如下所示:

这里写图片描述

      我又干了间麻烦的事情,我将解压后的目录进行复制并重命名放在了/usr/local/tomcat-apache目录下,其余人参考的时候解压路径直接放在/usr/local目录下就好,不用这么麻烦

2、编译安装mod_jk

      Apache目录下的native文件夹下通常是没有mod_jk.so文件的,所以需要进行编译安装,操作步骤如下:

  1. 进入native文件夹
[root@271d5811ce45 tomcat-apache]# cd native/

      2.寻找apxs路径

[root@271d5811ce45 native]# which apxs
/usr/bin/apxs

      3.编译安装

[root@271d5811ce45 native]# ./buildconf.sh
//注意:这里with-apxs后的路径和上面which apxs得到的路径要一样
[root@271d5811ce45 native]# ./configure --with-apxs=/usr/bin/apxs
[root@271d5811ce45 native]# make

      通过上模操作,编译完毕以后就有mod_jk.so文件了,地址是native文件夹下的apache-2.0文件夹下:

这里写图片描述

      上述截图中省略了./buildconfig.sh和configure –with-apxs=/usr/bin/apxs以及make命令,因为博主已经安装过了,就不在操作一次了。注:当初看网上的一种方法没有执行./buildconfig.sh直接进行make报错了,找半天的错误总是和网上的答案对不上号,最终发现加上./buildconfig.sh命令后,make命令可以顺利执行。

      通过cp命令将mod_js.so文件复制到自己安装到的apache modules目录里面去,通过yum安装的方式,Apache的目录为/etc/httpd,mudules文件内容如下:

这里写图片描述

3、创建文件

      1.在/conf 下创建 workers.properties 文件,填充以下文本:

这里写图片描述

      通过ls查看conf目录下的文件时,是没有httpd.conf.bk1文件的,这是当初做了一个配置文件的备份,怕配置出错

      2.在/conf 下创建 mod_jk.conf 文件,填充以下文本:

这里写图片描述

      3.在/conf 下的httpd.conf文件末尾添加以下内容,建立关联

这里写图片描述

      4.验证安装
      4.1在%TOMCAT_HOME%/webapps/ROOT下新建一个JSP文件hello.jsp,其内容为,截图如下:

<html>
<head><title>Hello</title></head>
<body>
<%
java.util.Date currentTime = new java.util.Date();
%>
<%=currentTime%>
</body>
</html>

这里写图片描述

      4.1在windows系统下浏览器中输入ip/hello.jsp,如下图所示:
这里写图片描述

      在windows系统下浏览器中输入ip,出现界面如下(前提是不修改Apache的页面)

这里写图片描述

三、项目测试

      注:在将项目导出jar包时,一定要注意对数据库连接时密码的修改因为你的项目在Windows下开发时,用的密码可能和linux服务器下MySQL的密码不一样。

1.Tomcat测试

在windows系统下输入项目网址,ip:8080/项目名/主页面,界面如下:

这里写图片描述

      由于上述界面是静态界面应该由Apache处理,所以输入以下网址,两个界面应该是一样的。ip/项目名/主页面,Apache默认监听80端口
这里写图片描述

      结果却出现上述页面,找了半天,终于找到问题的所在。

      问题1:改变项目发布目录的所有者,改为apache,因为在Apache的httpd.conf配置,忽略注释的两行nobody,这是当初听信的网上的,没成功。注意:更改文件的属组时,一定要递归的进行更改属组,即chown -R,这里的-R不能省略。

这里写图片描述

这里写图片描述

修改前

这里写图片描述

修改后

      问题2:在Apache的httpd.conf中,DocumentRoot后的目录以及Directory后的目录一定是项目的发布目录,一共修改3处目录,如下所示:
这里写图片描述

2.Apache功能测试

      通过上述的修改,修改目录以及文件的属组,通过Apache进行访问,可以看到Tomcat测试的同样界面(注:这次访问页面的时候,没有加端口号)界面如下:

这里写图片描述

      遇到问题分析:
      在部署的过程中,遇到过以下一个小问题,由于代码不是自己写的,开发者再用ssh写代码的时候,与数据库的交互sql操作数据库表名用的都是大写,但是数据库中的表都是小写的,感觉无所谓,大小写应该不区分的。

这里写图片描述

这里写图片描述

但是在实际开发中结果代码移植过来的时候,局部功能不能够进行显示,才发现LINUX下的MYSQL默认是要区分表名大小写的。

这里写图片描述

让MYSQL不区分表名大小写的方法其实很简单:
  1.用ROOT登录,修改/etc/my.cnf
  2.在[mysqld]下加入一行:lower_case_table_names=1
  3.重新启动数据库即可service mysqld restart
这里写图片描述



猜你喜欢

转载自blog.csdn.net/wilson_m/article/details/80343311