On the other hand, if you want to learn how properly design a web application to scale, I'd suggest to get a couple boxes on DO[1]. This[2] article describes the common design for 99% of applications on the web (The last 1% is reserved for companies that have achieved enough traffic to justify hiring their own ops team). Finally, I'd suggest you read through this[3] slide deck. It goes through the steps of scaling up your application from one server to a cluster of machines.
1 - https://www.digitalocean.com/
2 - https://www.digitalocean.com/community/tutorials/5-common-se...
3 - https://speakerdeck.com/modulus/planning-for-the-horizontal-...
Scaling steps with traction:
1.) dedicated server for DB
2.) loadbalancer (AWS ELB) & 2nd app-server
3.) scripting server mgmt (AWS OpsWorks, chef, puppet, ...)
4.) adding missing server roles (e.g. caching through memcache) to scripts
5.) deployment, up-/down-scaling with button clicks
6.) Slave-DB (more for ongoing backup and fail-over than for read-distribution)
7.) if you don't use AWS ELB don't forget to make sure the LB is not your single point of failure
Usually I have more than 1,000 registered users before I start with scaling step 1.
If it's a professional project in any sense (as in: something I'm being paid to do) I'll at least route the DNS to a load balancer, and I'll use some kind of hosted RDS or NoSQL service for the DB. That's kind of the bare minimum effort (just in case the client is right about the product getting a million hits on the first day...).
But for 99% of side-projects, you can build and refactor for scaling concerns after you've done practically everything else. Scaling is the ultimate "Champagne Problem".
Worry about server setup when you have those problems or otherwise you might be over optimizing the wrong things.