美文网首页程序员
Linux Server JavaEE配置心得以及踩坑

Linux Server JavaEE配置心得以及踩坑

作者: Cesarean | 来源:发表于2018-09-20 11:14 被阅读152次

    前言

    不知不觉来到大三,今年的J2EE课程要求开发基于手机和平板的Web端应用,最后展示需要多台手机平板同时进行。那么对我们而言,配置一台支持远程连接的服务器非常重要,我也希望将整个配置过程中遇到的重要地方记录下来,以供以后参考或分享给他人

    起始环境

    • 服务器来源:阿里云ECS
    • 系统环境:Ubuntu16.04 64位
    • JDK:1.8.0_181
    • 已完成Tomcat等组件安装
    • 内容:配置Tomcat,配置MySQL

    配置Tomcat

    基础参数

    • Tomcat版本:apache-tomcat-9.0.12
    • Tomcat路径:/home/server/apache-tomcat-9.0.12

    详细过程

    详细配置外链

    基础配置

    IDEA路径配置

    • !!!
    • !!!
    • !!!
      注意Mapped as路径的配置为war所在的路径,可为绝对路径,也可为相对路径!

    端口映射HTTP

    • 作用:修改访问端口为HTTP默认端口80,可省略访问端口号如:8080
    • 步骤
    1. 打开配置文件server.xml
    /home/server/apache-tomcat-9.0.12# vim conf/server.xml
    
    1. 修改server.xml
      在server.xml中寻找一个Connector,最初状态其属性port为8080,同时应含有一个属性为protocol其值包含HTTP,将8080改为80
    <Connector port="80" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    
    1. 保存退出

    基于IDEA远程部署

    • 作用:在使用IDEA完成编码后,运行Web项目使得IDEA自动将Web项目部署到远程服务器上
    • 前言:网络上关于远程部署的客户端也就是IDEA配置教程特别多,而且也基本一致,本文不做赘述
    • 原理分析
        IDEA的Remote Tomcat Server远程部署功能是基于Java的RMI功能,关于RMI不做赘述,我们只需要知道这个名字就行。但需要说明的是,RMI实际上有三个随机端口,对我们远程部署来说,需要使用其中的两个端口。对于IDEA而言,其Remote Tomcat Server配置需指定JMX端口(对应远程RMI端口),那么我们需要在远程服务器上指定安全组开放RMI端口,使得IDEA能访问远程服务器RMI服务。
        然而,包括官方教程在内几乎所有的的网络教程都到此为止,对有些人有用,对我们没用。这里我们需要回到上一段我提到的RMI在这个过程中需要开放两个端口,都是随机端口,那么仅对第一个RMI端口进行了指定安全组开放,则第二个RMI端口仍然随机开放,但我们却没有在安全组内对其开放使得外网能访问该端口,客户端IDEA便会出现Connection Refused异常。
        于是,我们现在知道了,需要对两个随机端口进行指定安全组开放
    • 步骤
    1. 安全组开放端口


      RMI端口开放
    2. 配置$Tomcat$/bin/catalina.sh,在脚本代码前加入以下代码,建议刚好在代码前。
    export CATALINA_OPTS="-Dcom.sun.management.jmxremote= 
    -Dcom.sun.management.jmxremote.port=1099
    -Dcom.sun.management.jmxremote.rmi.port=1099
    -Dcom.sun.management.jmxremote.ssl=false 
    -Dcom.sun.management.jmxremote.authenticate=false 
    -Djava.rmi.server.hostname=<你的服务器公网IP>"
    
    1. 重启Tomcat服务
      1. 这里与大多数教程不一样的地方在于第三行,我们同时指定了额外的端口Dcom.sun.management.jmxremote.rmi.port=1099
      2. 该额外端口与第二行端口均为1099,这里必须使两者相等,我试过很多组合并同时开放端口,都无法连接。这里以我目前的测试结果而言,唯有同时让两个端口被指定并且一致才能成功在IDEA上进行连接。因为RMI我暂时并用不到,故并不会去深究其机理,能用就够。

    问题解决

    无法关闭tomcat服务器

    • 描述:使用sudo ./bin/catalina.sh stop命令关闭,得到报错,且查看进程情况tomcat服务8005端口未开启
    SEVERE: Catalina.stop: 
    java.net.ConnectException: Connection refused (Connection refused)
    
    • 原因:tomcat服务8005端口未开启,导致catalina无法经由端口访问tomcat关闭服务,进而Connection refused。此外,在多次测试中,8005端口有时会开启成功有时开启失败,导致该报错并非一定出现。
    • 解决方案
      分析:网络上对于该问题的解决方案在我少量的阅读下,感觉上大多数方案均为更改非常重要的代码。其中有修改$JAVA_HOME$/jre/lib/security/Java.security/securerandom.source配置项等方案,本着尽量不修改原生配置项的原则,我从tomcat没有成功在8005端口开启着手,得到了一个亲测能够解决的方案。
      方案:首先通过startup.sh再次启动tomcat服务,再通过catalina.sh stop关闭(或者,等待tomcat启动完成亦可)
    sudo ./bin/startup.sh
    sudo ./bin/catalina.sh stop
    
      1. 如果通过sudo ./bin/startup.sh也无法开启tomcat服务,则请忽略该方法
      2. 还有其他的问题是在tomcat服务8005端口已开启的情况下,发生Connection refused异常,我暂时没遇到。但有个可能有用的方案:解决方案
      3. 查看tomcat服务是否开启的命令:netstat -an --ip
      4. ./bin/startup.sh./bin/catalina.sh start功能一致
        ./bin/shutdown.sh./bin/catalina.sh stop功能亦一致
        原因在于startup.shshutdown.sh相当于是封装了上述后者的功能

    配置MySQL

    基础参数

    • MySQL版本:MySQL 5.7.23-0
    • 路径:Ubuntu安装好后有全局变量配置,不需要了解安装路径

    基础配置

    数据库远程连接

    • 作用:能使位于其他主机上的相关软件如IDEA能通过网络访问服务器上的MySQL服务,简化开发期间操作(其实就是不愿在服务器上手写SQL代码,自动完成都没有)
    • 步骤
    1. 开放ECS端口
      在服务器对应的安全组加入如下内网入方向规则


      安全组配置
    2. 开放MySQL服务端口至公网
    /etc/mysql/my.cnf
    /etc/mysql/mysql.conf.d/mysqld.cnf
    

    上图有两个文件,按顺序查看并寻找bind-address项,从127.0.0.1改至0.0.0.0,保存并重启MySQL。通过netstat -an --ip | grep 3306查看当前网络活动,当出现下述项,:3306前IP为0.0.0.0时,表示设置成功

    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN 
    
    1. 开放MySQL远程连接用户
      本处建议新建供远程连接使用的用户而不是直接修改root用户信息
    grant all privileges on *.* to 'username'@'%' identified by 'password' with grant option;
    flush privileges;
    

    其中usernamepassword自填希望使用的远程用户名与密码,当成功执行后,进入MySQL查看用户信息,此时应可以看到host%的用户

    select user, host from mysql.user
    
    查看用户表结果
    1. 成功完成服务器配置,接下来以IDEA为例截图演示成功连接结果


      成功连接远程MySQL服务器

    结语

    配环境真的很难,还需要耐心与细心,尽量要保证不中途放弃,才能在最后配置出成功的运行环境。欢迎大家关注或在下评论,指出我的问题或与我讨论

    相关文章

      网友评论

        本文标题:Linux Server JavaEE配置心得以及踩坑

        本文链接:https://www.haomeiwen.com/subject/cuugnftx.html