I moved to "one server per app" model, but in the past what I did to run multiple apps on one server:
- create a separate unix user for each app, to separate them
- each app runs on a different port
- configure nginx as a proxy with virtual host. Today I might use https://caddyserver.com/ instead of nginx
- I would write ansible scripts to automate deployment