Oneinstack 是一个很棒的前后端分离集成环境
OneinStack包含以下组合
- lnmp(Linux + Nginx+ MySQL+ PHP)
- lamp(Linux + Apache+ MySQL+ PHP)
- lnmpa(Linux + Nginx+ MySQL+ PHP+ Apache):Nginx处理静态,Apache(mod_php)处理动态PHP
- lnmt(Linux + Nginx+ MySQL+ Tomcat):Nginx处理静态,Tomcat(JDK)处理JAVA
- lnmh(Linux + Nginx+ MySQL+ HHVM)
支持系统版本
- CentOS 6~7(包括redhat)
- Debian 6~9
- Ubuntu 12~16
- Aliyun Linux 15.1
通过Nginx
Tengine
OpenResty
能够很方便的将前端划分给 Nginx
处理, 后端转发给 Java
或者PHP
后端API处理.
能够做到完美的前后端分离, 避免前端更新版本需要提交后端发布的尴尬情况
通常前端更新都是比较频繁的, 所以不管是前端还是后端的同学, 在以前套模版开发和整体发布的时代应该都是苦不堪言的
但是现在强大的Nginx
等具有反向代理功能并且性能极佳的处理方案出现,前后端分离带给用户的体验也是以前所不能比的
所以以后的前后端分离势必会变得更加流行
说正事
在 oneinstack
的 1.3
版本之前 Java
的项目是部署在 tomcat
下的 webapps
目录之下的 而前端则另外放置
可以通过统一将后端转发至 127.0.0.1:8080
在 1.4
版本之后 官方就强制 将前端代码与 war
包放置在同一应用目录下, 因为这样不会混淆和跨应用权限, 一个前端对应一个后端
但是这种方案对于 多个端使用不同前端 但是使用同一套后端的方案是致命的 因为这样意味着要每一个端都上传发布N遍
这时候的接口转发方案 中 127.0.0.1:8080
相对的作用域就是在该应用中才能这样访问,并不是全局通用的
并且也无法通过 ip:8080
访问(除非放置在default目录下), 但是手动将接口转发至此并不能生效(会报请求头过大 应该是转发过程中请求头不停的叠加导致)
看了Tomcat
的应用配置文件
以Centos
最新版的为例
Tomcat站点配置目录在这
每一个站点都会对应一个配置文件 将不同的域名(xml中的name属性) 指向不同的应用目录
假设我有两个站点
其实只要把对应应用指向同一个目录不就搞定了吗?
你可以将API部署在一个 a.xxx.com
中
然后将 b.xxx.com
(需要指向统一后端的)对应的的 tomcat
站点配置xml文件中的两个目录 如下 修改 appBase
和 docBase
目录都指向那个已经部署了的 a.xxx.com
目录即可
Nginx
相应站点都不需要更改转发的 这时候相对的 127.0.0.1:8080
就是同一个应用目录(a.xxx.com
)啦~