I’ve been implementing Ghost blogs on various VPS hosting providers (DigitalOcean and Vultr in particular), and i’m currently playing around with various stacks to find out which provides the best performance. I realise that the most straightforward of implementing a ghost blog on a VPS is using the ghost-cli but the curious part of me is asking if this the best in terms of resource efficiency and scaling.
I’ve been reading about using Phusion Passenger as an application server and have been implementing it on some client projects. So far since these clients haven’t grown to require much scaling, so i haven’t seen much difference in performance between the ghost-cli stack vs phusion passenger stack.
My question is: what would be the advantages of using Phusion Passenger over the combinations out there. would be better when your scaling a single site? or would it be better to handle multiple domain on a single server?
This is a good question. Ghost-CLI is intended to be the “best” way to run Ghost from many perspectives (ease of use, performance, maintainability), but obviously, we can neither think of everything, nor account for every change in the landscape around us.
We use Phusion Passenger internally at Ghost for running our other Node.js apps and are very very happy with it. It’s stable and simplifies deployments. Therefore, Ghost-CLI was slightly modelled after Passenger, we have some aspects of the rolling updates, although it doesn’t work as smooooooothly yet that’s certainly the end goal.
The problem with using Passenger with Ghost itself, is that Ghost currently relies heavily on in-memory internal caching for both performance and functionality. If you run multiple instances, those caches won’t be in sync and you will get weird results, like URLs 404ing when served from one instance and not another. We will architect this out in future, but it has not yet become a priority.
Scaling Ghost is traditionally done by putting a cache and or CDN in front of a single instance, and heavily caching the content. Setup this way, Ghost can scale very well.
You mentioned having multiple domains on a single server. Ghost-CLI can also handle this.
Personally, I’d lean heavily towards using Ghost-CLI and if you have any performance concerns or discover any issues, let us know. We want it to be the best it can possibly be!
Will revisit ghost-cli, my original concern with ghost-cli is that it’s way of setting up domain. and it requires a superuser level user to run properly. I’ve been using serverpilot (free plan)to manage some of my servers and the setup is not really compatible on how ghost-cli works.
Ill look into it again.
But would it be safe to say that you guys are still leaning to using Phusion Passenger i the long run?
No, my point was that we’ve taken what we think are the useful aspects of phusion passenger and recreated them in a Ghost compatible way without requiring users to install extra software beyond the Ghost-CLI tool.