设为首页 收藏本站
查看: 1165|回复: 0

[经验分享] 使用aws和tomcat搭建服务器过程中的一些坑.

[复制链接]

尚未签到

发表于 2017-12-26 14:03:59 | 显示全部楼层 |阅读模式
  在国外没啥事做, 考前也不愿意复习, 看到aws能免费试用一年, 于是就试着搞了搞, 就准备搭建个个人网站玩玩.
aws的注册与创建实例
  首先个人感觉这个东西使用起来还是很方便的, 一开始注册完验证完银行卡手机等等一系列的东西之后, 会有一个等待时间. 之后要搭建网站, 我实际上只是使用了了其中的ES2(elastic computing cloud), 这东西实际上就是一个远程的服务器. 这里要特别注意如下几点 :

  • 服务器地址的选择, 右上角可以选择地址, 我开始选的是美国西部, 结果卡的一比, 换了伦敦网速暴涨, 简直无敌.
  • 安全组的设置, 创建实例过程中, 不同的地址的实例是分离的而不是共享的. 这里感觉配置参数没什么需要注意的, 除了这个安全组. 安全组中, 如果你用tomcat, 默认开启的监听端口是8080, 但是一般来说安全组中只设置了80(http), 22(ssh)这两个端口, 那么此时如果你就这样, 那么到时候你tomcat服务器开起来之后, 你会发现你尝试访问8080端口, 会出现一个巨长的等待时间然后告诉你connection time out. 这里比较烦就在于, 我当时压根不知道是tomcat没有设置好还是云服务器这边没有设置好, 所以这里特别要注意.
  • 申请一个elastic ip, 在左下方能看到, 申请之后和你的实例绑定就行了, 实际上就是一个公用的ip地址而已.
  弄完这些之后, 之后开启服务器, 即使没有绑定域名, 你也可以用这个ip地址, 或者是它提供的public DNS进行访问.
tomcat的安装

  • 先用curl从tomcat的官网把那个安装包下来, 解压到任意目录就行了, 理论上安装就这么简单.  2.此时进入tomcat的bin目录, ./startup即可, 然后你可以用我上面说的, 你申请的ip地址或者是public DNS尝试访问, 如果能看到tomcat说明成功了. 如果你上面安全组中没有加入8080, 那么这时候你发现页面一直在加载但就是加载不出来. 这里和那种输错端口号, 比如你这时候直接不加端口号8080, 也就是使用默认短号号进行访问又有所不同, 默认端口号进行访问的话, 会直接返回给你connection refused. (注意是直接返回, 速度很快)
  • 但是一般来说默认的http端口是80, 所以你也可以到tomcat的conf目录下把server.xml中把协议为http的connector的端口号从8080改为80.
  • 本来讲道理这时候./startup即可, 但是其实不然, 必须要用sudo ./startup, 这又是一个坑, 因为默认状态下低于1024的端口号必须要管理员权限才能开启, 这里的坑在于, 即使你直接./startup, 也不会有任何提示, 搞得还以为自己设置成功了. 这时候你只需要使用sudo lsof -i (list of file)这里也必须加sudo, 否则低于1024的是隐藏的, 来查看网络端口的占用情况, 如果你发现80(一般会直接写成http)已经在监听状态, 这时候说明是成功了. 如果你不加sudo启动tomcat, 是不会有这个端口在监听的. 另外,没有开启成功还有一个特征, 就是你用./shutdown关闭的时候会出现exception, 但不保证一定是这样, 反正我这种情况下失败了就是这样.
tomcat的配置

  • 主要是 conf/server.xml中 :
    DSC0000.png

  这里讲几个重要的参数 :

  • appBase : 不写的话默认是webapps, 值得注意的是这个并不是你项目的目录, 而是你项目目录的目录, 里面的每一个文件夹算是一个javaWeb应用. 如果你用绝对路径的话, 则为绝对路径, 如果用相对路径的话, 则是以tomcat的根目录为起点的相对路径. 所以默认情况下这个地方写的是webapps, 实际指定的是$CATALINA_HOME/webapps, 这也就能解释为什么我们一开始不设置这个文件直接开启服务器却也就能访问到页面.
  • path 和 docBase : 就是根据path来匹配对应的目录, 实际就是设置一个虚拟目录. 比如我图中的第二个path是/proj2, 那么我只需要输入localhost/proj2实际上就匹配了目录/home/ec2-user/FredNzhlWebProj/test. 如果path=""或者"/", 那么直接匹配的是localhost, 这时候如果你上面的appBase会被直接无视. 我做了大量实验发现, docBase似乎并不能是一个相对路径而必须是一个绝对路径(尽管网上很多人说它可以是相对路径, 而且是相对appBase的相对路径). 而且docBase和appBase的路径可以没有任何关系.
  • 另外感觉appBase更像是一个更高级的docBase, 在这个目录下的每个文件夹都是一个context, 也就是说都会被自动部署, 而docBase只是一个单独的应用, 会在appBase之后再进行部署, 所以如果两者path有重合, appBase下同名path直接被忽略.
  所以总结来讲, 最简单的应该是这样(其中appBase也可以不要, 反正不要就默认webapps, 所以这种情况下那个目录无论如何都会部署) :
DSC0001.png

  或者是这种(index.html必须放在根目录的ROOT文件夹中) :
DSC0002.png


  • 很多网站提到了可以在conf/Catalina/domain_name 中添加xml文件里面放context, 比如对于我 :
    DSC0003.png

  文件名是xixi, 那么可以直接使用localhost/xixi进行访问的是, 与在server中不同之处在于, 在这里设置, context中的path无效, 这个path的效果由文件名代替了. 所以其实path 那一项到这里不写也可以. 这样部署也获得了一个好处, 就是如果要添加一个context, 只需要在这里多添加一个文件即可, 无需重启tomcat, 所以很方便. 据说tomcat是先扫描这个路径如果没找到合适的context才去server.xml中寻找context的. 另外如果要使用这种方式部署根目录项目, 文件名是ROOT.xml即可.
  关于部署就这么多...

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-428241-1-1.html 上篇帖子: 如何关闭tomcat的localhost 下篇帖子: 【转】Tomcat和Weblogic的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表