记录 linux 下 部署 tomcat

记录 linux 下 部署 tomcat

       此文章记录了我在VM虚拟机上安装tomcat,并部署webApp,因为我这个项目的是在windows server2003下运行的,所以自己没事研究一下如何部署到linux上面,我用的是 CentOS 6.8 ,附上下载地址

http://mirrors.sohu.com/centos/6.8/isos/i386/


1、安装VM虚拟机,下载Centos6.8,再在虚拟机安装,具体安装过程请百度,因为我对linux还不熟,没有手动分区,以后熟了再说。

2、本机安装XShell4 跟 Xftp,用于远程连接linux,此处注意linux开启ssh服务,以及开放端口   

  1. service sshd start    开启ssh服务
    service sshd stop    停止ssh服务
    service sshd restart   重启ssh服务
  2. 此处使用默认22端口,顺便把tomcat端口我这是80也开启了,如果需要修改默认22端口,可自行百度

开启: service iptables start

关闭: service iptables stop

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

在开启了防火墙时,做如下设置,开启相关端口,

修改/etc/sysconfig/iptables 文件,添加以下内容:

-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

重起iptalbes服务:service iptables restart

3、安装jdk,配置环境变量,此处我们先卸载linux自带的jdk

  1.   先在 /usr 目录下新建 java 文件夹,作为安装目录(可用命令,然后再 Xftp下查看,或直接用 Xftp 新建也可)
  2.   到官网下载 jdk ,我下载的是这个版本 jdk-6u39-linux-i586-rpm.bin,现在官网下载需要登录
  3.   卸载自带jdk 

                  rpm -qa | grep jdk 或者  rpm -qa | grep gcj 查看安装的jdk

                 使用 rpm -e –nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 卸载具体版本的

         4.安装jdk

# cd /usr/java

①jdk-1_5_0_14-linux-i586-rpm.bin文件安装

# chmod 777 jdk-1_5_0_14-linux-i586-rpm.bin ← 修改为可执行

# ./jdk-1_5_0_14-linux-i586-rpm.bin ← 选择yes同意上面的协议

# rpm -ivh jdk-1_5_0_14-linux-i586.rpm ← 选择yes直到安装完毕

②jdk-1_5_0_14-linux-i586.bin文件安装 (可以不安装,如果没下载就不用安装了)


# chmod a+x jdk-1_5_0_14-linux-i586.bin ← 使当前用户拥有执行权限

# ./jdk-1_5_0_14-linux-i586.bin ← 选择yes直到安装完毕

        5.设置环境变量

   #vi /etc/profile

   打开后,在文档最下方加上以下环境变量配置代码:

   export JAVA_HOME=/usr/java/javajdk1.7.0_01
   export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
   export PATH=$JAVA_HOME/bin:$PATH

   注意:export PATH=$JAVA_HOME/bin:$PATH,注意将$PATH放到最后。以免造成新旧版本问题。

 source /etc/profile    #使配置文件立即生效 
      # java -version       # 测试是否成功 

4、安装tomcat,易出现问题,乱码,内存溢出(关于乱码问题总结在另一篇

  1.   先在 /usr 目录下新建 tomcat6 文件夹,作为安装目录(可用命令,然后再 Xftp下查看,或直接用 Xftp 新建也可)
  2.   到官网下载 需要的tomcat 版本 ,我下载的是这个版本 apache-tomcat-6.0.47.tar.gz
  3.   上传到linux,tar 解压到 tomcat6 文件夹下

                tar -zxvf apache-tomcat-6.0.47.tar.gz

                vi  /usr/tomcat6/apache-tomcat-6.0.47/conf/server.xml   修改端口,以及默认编码格式

                /usr/tomcat6/apache-tomcat-6.0.47/bin/startup.sh   启动tomcat,访问一下,如果没问题就把项目部署到tomcat

                我没有用war包,直接把编译后的项目复制到了 webAPP 下,然后启动

         4.  此时报错 无法加载 class 一看名字是 中文乱码,解决乱码问题

出现乱码的原因:

        win默认编码是GBK,linux默认编码是utf-8,在用ftp 复制上传文件时,如果有中文文件名,就会出现乱码问题

解决方法:

        安装转码工具  yum install convmv

        递归转换tomcat目录下的目前文件名编码gbk为utf-8:

        convmv -f gbk -t utf-8 –notest -r  /usr/tomcat6/apache-tomcat-6.0.47/

        5.  再次启动 tomcat ,乱码问题解决了,但又报内存溢出  OutOfMemoryError: PermGen space

    解释说明: PermGen space是指内存的永久保存区域。这个区域主要存放Class和Meta信息,Class在被Load时就会被放入PermGen space。
    出错场景: 如果APP载入很多CLASS,就可能会出现PermGen space溢出。(因为sun的GC不会在程序运行时对PermGen space进行清理)。

         常见在web服务器对JSP进行pre compile的时候
    解决方法:修改MaxPermSize大小  

在catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下

# vi TOMCAT_HOME/bin/catalina.sh


JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m”


其他说明:


1.“m”说明单位是MB,否则默认是KB


2.一般使用物理内存的80%作为堆大小


3.一般把-Xms和-Xmx设为一样大


4.一般把-Xmn设置为-Xmx值的1/4


5.一般将堆的总大小的50%到60%分配给新生成的池





jvm参数说明:


-server 一定要作为第一个参数,启用JDK的server版本,在多个CPU时性能佳(可以不写)


-Xms java Heap初始大小。 默认是物理内存的1/64。


-Xmx java heap最大值。建议均设为物理内存的80%。不可超过物理内存。


-Xmn java heap最小值,一般设置为Xmx的3、4分之一。


-XX:PermSize 设定内存的永久保存区初始大小,缺省值为64M。


-XX:MaxPermSize 设定内存的永久保存区最大大小,缺省值为64M。


-XX:SurvivorRatio=2 生还者池的大小,默认是2。如


-XX:NewSize 新生成的池的初始大小。 缺省值为2M。


-XX:MaxNewSize 新生成的池的最大大小。 缺省值为32M。


+XX:AggressiveHeap 让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。

-Xss 每个线程的Stack大小


-verbose:gc 现实垃圾收集信息


-Xloggc:gc.log 指定垃圾收集日志文件


-XX:+UseParNewGC 缩短minor收集的时间


-XX:+UseConcMarkSweepGC 缩短major收集的时间


-XX:userParNewGC 可用来设置并行收集(多CPU)


-XX:ParallelGCThreads 可用来增加并行度(多CPU)

-XX:UseParallelGC 设置后可以使用并行清除收集器(多CPU)

5、总结

   这是我的第一篇博客,记录了我在虚拟机上安装 linux 系统,然后安装 jdk 以及 tomcat ,再部署项目的整个过程,其中出现很多问题,自己在网上一步步找答案,希望对大家有帮助,也方便我自己以后查看,今后我会把工作中遇到的问题,以及解决方法记录在博客!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111329.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 嵌入式系统 ttylinux 9.1 发布「建议收藏」

    嵌入式系统 ttylinux 9.1 发布「建议收藏」ttylinux是一个只需要8M磁盘空间的小型GNU/Linux发行版。可适合在以太网、调制解调器、ISDN等设备上运行,最低要求是486SX以及12M内存该版本主要是修正了一些bug。下载地址:http://www.minimalinux.org/ttylinux/download.html转载于:https://www.cnblogs.com/top5/…

    2022年8月12日
    3
  • 图形推理1000题pdf_2019和平区一模24题解析

    图形推理1000题pdf_2019和平区一模24题解析2019和平区数学一模24题解析推理与论证是在探索图形性质、与他人合作交流等活动过程中,发展合情推理,进一步学习有条理的思考与表达;数学推理的内涵是从数和形的角度进行合情推理和演绎推理,是对归纳类比的发展,判断和证明的过程。和平区数学一模试卷24题第(1)问在正方形中利用全等证明线段相等,考察几何问题的推理论证,推理探究。思考的角度不同,方法各异,但殊途同归,考察学生的逻辑推理论证,书写…

    2022年9月10日
    0
  • emgucv 抠图[通俗易懂]

    我的环境的KinectSDK2.0+EmguCV3.0.0依旧还是WinFrom和ImageBox因为需要用到BodyIndex的数据,但BodyIndex的分辨率和RGB图像的分辨率不同,所以需要用的CoordinateMap类中的坐标转换函数。然后直接对colorimage的像素点进行操作。同样,需要用的指针,要把项目调整为允许不安全的代码。代码和注释如

    2022年4月12日
    81
  • 物联网服务器_物联网接口

    物联网服务器_物联网接口一、第一次上线本主机于2018年12月23日正式上线,初装了4个设备,管理474只表,由于是手抄改网络抄表不是新安装,考虑到人工再去布线的成本远高于设备成本,因此多用了几个设备,每个设备通道都没有用完。1、设备号为663183的设备在安装后有一个通道在抄读水表的时候有短路发生,那是因为…

    2022年8月31日
    1
  • 如何将pdf转换成word的3种免费方法「建议收藏」

    如何将pdf转换成word的3种免费方法「建议收藏」怎样将PDF转成Word?这是很多网友经常问到的问题,PDF转换成Word利用一些小技巧和工具,你会发现是很容易的,以下的PDF转Word的3种免费方法你一定要看一看。1、“复制/粘贴”大法在寻找如何将PDF转换成Word的“高级”办法之前,不妨先试一下最傻瓜的方法:首先用极速PDF阅读器打开PDF文档,选择文本内容后右击选择“复制选择内容”或直接使用“全选”;接着新建一个Word文档后,直接将内容在Word中粘贴即可。如果文档格式不复杂,这样得到的Word就够用了,当然有些可能排版会比较乱。2、G

    2022年6月1日
    58
  • 高级I/O函数之sendfile函数[通俗易懂]

    高级I/O函数之sendfile函数[通俗易懂]sendfile函数在两个文件描述符之间传递数据(完全在内核中操作),从而避免了内核缓冲区和用户缓冲区之间的数据拷贝,效率很高,被称为零拷贝。函数定义为:#include<sys/sendfile.h>ssize_tsenfile(intout_fd,intin_fd,off_t*offset,size_tcount);in_fd参数是待读出内容的文件描述符,out…

    2022年5月10日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号