Broadly speaking, there are only two things you need to purchase in order to do this:
- Register a domain name from any reputable registrar (should be around $10 per year)
- Rent some kind of hosting. Be careful, there are lots of different hosting options and not all of them are good enough. Make sure you do not get a hosting account which only offers FTP (file transfer) access! Coming out of CS50, you'll want to make certain that you have
ssh (secure shell) access to a Linux shell account with PHP and MySQL.
You'll find that many domain registrars also offer hosting services.
Some, like NearlyFreeSpeech, offer rock-bottom prices (less than $50 per year) based on usage -- so you pay only for what you use.
Others, like Dreamhost, offer unlimited hosting plans for a flat rate, which can be more expensive ($100+ per year), but you can find coupon codes for introductory deals.
If you pay a bit more, you can get a dedicated virtual server, which would be more similar to administering an actual physical server.
Or you could go another route and buy or build your own server. The hard part is building one more reliable than a hosted service for cheaper than you'd pay for hosting.
If continuous uptime and reliability under load are not crucial, building a server can be surprisingly inexpensive. I gave some advice on this topic recently.
One catch is that you'll also need to get your server a dedicated IP address to host a domain there. Since most residential broadband connections are assigned dynamic IP addresses via DHCP, you need to subscribe to a Dynamic DNS service to forward requests for your domain from a static IP.