从 Eclipse 的一个缺陷谈隔离的重要性

关于隔离的重要性

在使用 Eclipse 中你经常会遇到的一个尴尬是,你打开一个 Maven 项目,因为要加载依赖,再加上特殊国情造成的网络访问缓慢,那好吧,那就等吧,然后在等待的过程中,你很可能会暂时转到其它已经打开好的项目。这很正常,不是吗?何必干等呢?

然而,当你编辑了另外一个项目的某个文件,正准备保存时,Eclipse 却给你弹一个框,阻止了你的保存!

image

请看上面的第三条“Waiting User Operation”,那就是我的保存动作,然而它却被前面的 Maven 项目的构建动作给阻拦了!

碰到这这种情况你是否会觉得特别沮丧呢?毕竟这两项目间毫无关系呀!

如果我编辑的是同一个项目的文件,被阻拦还能说得过去,可为啥不同的项目也被阻拦了呢?

所以我认为这是一个缺陷,项目之间应该做到隔离,彼此不应该影响,这在我们的开发活动中同样是极为重要的一个原则!

在这里,一个项目的保存动作对另一个项目的构建动作形成了错误的依赖,不管开发者有什么理由,从用户角度看,这种依赖是不应该的,是他所不能预期的。

开发者应该尽力减少这种违反直觉的依赖,如果不能做到这一点,将会带来非常糟糕的用户体验!

就好比你再浏览器里打开了多个标签页,然后有一个标签页失去了响应,然后你发现所有的标签页都卡住了!

又或者你打开了很多的程序,然后一个程序失去了响应,然后整个电脑都死机了!

云服务器上添加子域名并转发至 8080 端口上的 tomcat server

在云服务器上添加子域名,并配置 apache 将其转发至 8080 端口上的 tomcat server,原域名的访问不变。

情况是这样的,我有一个腾讯云主机,系统为 linux centos,并申请了域名 xiaogd.net,在其上面搭建了一个 wordpress 的站点,使用 apache server,这些目前都 OK。

新的需求

现在的问题是 wordpress 是用 PHP 语言,之前使用它的经验并不多,相对而言我更熟悉的是 Java 的技术栈,有时想在云上折腾点什么,觉得还是用回 Java 顺手一些。

于是乎,先是在云系统上装上 JRE,再装上 tomcat server,默认在 8080 端口上监听,启动后自然也能通过 8080 端口访问,像这样://www.xiaogd.net:8080

image

注意:如果安全组里限制了 8080 端口的访问,则需要放通,这个视具体安全组配置而定。(为安全起见,通常不建议放开太多的端口)

使用子域名访问的设想

当然,使用 8080 端口看上去总是不那么正规,于是萌生了使用子域名方式来转发的设想,具体规划如下:

示意图如下:

image

那么这里的 “exp.xiaogd.net” 就是一个二级子域名了。

配置子域名

首先需要配置这个二级域名,登录腾讯云管理中心,在“云产品--云解析”相应域名条目下,增加一条 A 记录,主机记录为 exp,还是指向原来的 ip 地址:

image

这样之后,二级域名就配置好了,大概 10 分钟后就能生效。

当然,此刻去访问 exp.xiaogd.net,则还是去到原来的 wordpress 页面,跟直接访问 xiaogd.net 是一样的。

image

接下来就要配置转发了。

配置转发

那么现在需要在 apache server 上做些文章了,简单讲就是将视作为一个前置的反向代理。具体做法是去到 apache 的安装目录下,进入 conf 文件夹,找到 httpd.conf 文件,在该配置文件的最后,改动之前它是这样的:

image

然后我们在最后再增加一个如下的虚拟主机的记录:


    ServerName exp.xiaogd.net    
    ProxyPassMatch ^/(.*)$ http://127.0.0.1:8080/$1

主机名填我们的二级域名,然后转到 127.0.0.1:8080 上。最终效果如下:

image

重启 apache server 后,再次访问 ,这一次则进入了 tomcat 的欢迎页。Done!

image

后记

以上就是整个配置的过程,我将其记录下来,有类似需求的同学可以做个参考,希望能有所帮助。我本身对运维这一块的了解也并不多,以上配置参考了网上的一些做法,如果你有更好的想法,或觉得上述过程有任何不妥当之处,欢迎留言讨论,谢谢!