Welcome to the wonderful (sometimes head banging) world of doing cool server stuff!
There's unfortunately no easy answer to your question other than "it depends".
The old Unix philosophy is "do one thing and do it well". This certainly can be applied to servers and infrastructure (e.g. a server dedicated to your database).
You can totally get by with everything on a single server but depending on your requirements and expected usage/growth you might want to roll out a distributed solution.
One of the things that I suffered with when I was new to servers was over engineering and premature optimization. Embrace that "done is better than perfect" and go from there!