本文主要记录最近在开发的一个基于Maven的分布式应用的一些踩坑经过及解决方案,其中的技术点是经常会用到的,在这里统一记录一下作为以后的一个参考。
项目的发布中用到了Nginx,Nginx是一款高性能的反向代理服务器,正在逐步的取代Apache成为WEB服务器的事实标准。
windows环境下的Nginx使用很方便。只需要下载相关的压缩包并解压即可开箱即用。
目录位置不能有中文
80端口不能被占用
启动 start nginx.exe
关闭 nginx -s stop
重新加载 nginx -s reload
netstat -aon|findstr "80" 查看端口占用情况
项目的Nginx就是作为反向代理而存在的,当业务压力增大,后台需要部署多台Tomcat,在它们之前需要部署Nginx作为负载均衡服务器实现项目的横向部署。
这里需要区别一下正反向代理服务器。
一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。
关于正向代理的概念如下:
正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,
为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),
然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。
客户端必须要进行一些特别的设置才能使用正向代理。
从上面的概念中,我们看出,文中所谓的正向代理就是代理服务器替代访问方【用户A】去访问目标服务器【服务器B】
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,
并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求
,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
到这里,可以看出正向反向是相对而言的,它是取决于代理服务部署的位置而言的,可以这么说,部署在客户端的代理服务就是正向代理,部署在服务端的代理服务就是反向代理。
在项目后端的Tomcat是不能直接知道那个客户端访问了它,访问的直接来源就是反向代理服务器。
项目中应有一个parent工程,它负责总的依赖管理,子工程通过
<parent>
<groupId>com.taotao.parent</groupId>
<artifactId>taotao-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../taotao-parent/pom.xml</relativePath>
</parent>
打包类型的选择:
父工程一般打包为POM
common工程及工具类工程打包为Jar
web端项目打包为WAR
冲突就是在同一个版本基础之上,多个人对该文件修改了修改,其中一个人将文件提交到SVN,
这时,该文件已经是新的版本,但是,其他人的本地还是旧的版本,
这时,其他人并不知道该文件已经有了新的版本,执行提交操作,这时就产生了冲突。
解决冲突的核心思想:为了避免冲突,要在最新的版本之上修改(也就是说修改之前先更新),再提交。
如果我更新了之后,在编写代码的同时别人将该文件再次更新(我不可能时时刻刻都查看更新),
这时直接提交会造成冲突,正确的做法是:提交之前将该文件先执行与资源库同步操作,先将冲突解决掉再提交代码。