Linux Server JavaEE配置心得以及踩坑

前言

不知不觉来到大三,今年的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服务器

结语

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容