美文网首页程序员
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配置心得以及踩坑

    前言 不知不觉来到大三,今年的J2EE课程要求开发基于手机和平板的Web端应用,最后展示需要多台手机平板同时进行。...

  • linux配置NodeJS踩坑

    Jumbo安装nodejs失败: node服务安装 服务端一开始没有node环境和npm command,可以先下...

  • eureka报错 Connection refused: con

    真的是每个坑都是通宵熬夜几个小时踩出来的,,,,,yml配置文件加上最后两项 server:port: 10086...

  • Linux 路由以及DHCP Server配置

    1 背景 Linux系统的双网卡设备,其中一个网卡用于连接外网,另一个网卡用于连接局域网。这样就需要用于局域网的网...

  • Spark配置

    配置方法 配置注意事项 配置踩过的坑

  • live-server配置踩坑直播

    live-server网址:https://github.com/tapio/live-server通过一行命令就...

  • Cordova踩坑日记

    Cordova踩坑日记 1.配置环境 ​ 配置SDK踩了很多坑,其实只需要下载一个 android studi...

  • 配置你的专属Deepin

    实体机安装Linux差不多已经一年了,中间尝试过许多Linux发行版,按照喜好尝试了各种配置,在踩了无数的坑之后形...

  • RStuido Linux Server配置

    RStudio Linux Server 版本 安装配置 说明Rstudio-server的安装与使用

  • Sublime Text 3 配置心得

    [TOC] 这是长期使用 sublime text 后的踩了很多坑后的配置心得,如果有语言环境和类似的依赖,请自行...

网友评论

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

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