技术上可行,但是架构上不建议。
技术上可行
几种部署方式,第一个不太建议,后两种方案都还可以:
直接部署,不同的软件、中间件占用不同的端口:例如数据库Mysql占用3306端口,多套不同的程序使用Tomcat部署,占用不同的端口,或者使用SpringBoot的话,启动时候指定不同的端口;相同的应用前面挂一个负载均衡,或者直接安装注册中心到这台机器上。其余用到的软件,也一窝蜂的安装在同一台机器上。
虚拟化:使用虚拟化技术,将一台物理机,虚拟成多台虚拟机,然后分别在每个虚拟机中,安装不同的软件、中间件,最终完成部署,彼此相互隔离。
容器技术:比如Docker;和虚拟化类似(详情参考偶的另一个回答:《docker容器与虚拟机有什么区别?》),容器技术更轻量级、更容易部署和移植、并且可以弹性伸缩;相同配置的服务器,部署容器的数量会比虚拟机多很多。
架构上不建议
主要出于两方面的考虑:
首先是资源方面的考虑,如果所有项目都部署在一台机器上,那么单机的资源配置可能会是瓶颈。
第二,单机意味着单点,单点很危险,如果这台物理机器出现了故障,那么所有项目就都挂了;所以很多公司都会采用多机器、多机房、甚至多地多中心。