I’m planning to build a CMS in PHP and MySQL, mainly for my own amusement and education. (Though who knows, I may come up with something useful and cool. Anything’s possible.) I’ll be asking questions about code architecture etc. later. For now, I’m more interested in development tools.
So far, all my playing with code has been done on a web server, and I’ve edited over FTP. I was thinking it might be quicker to use a localhost. Also, that way, I could use version control (which I’ve never done before).
So,
A. How do I set up a localhost server with many subdomains on an Ubuntu 9.10 computer. Is XAMPP for Linux the way to go, or should I use a standard Apache distro? (Or another webserver altogether?) For that matter, is it possible to set up more than one webserver on the same computer, and to use them for different localhost subdomains?
B. How do I set up a version control thingy covering all the code (which will be on several subdomains of localhost, and in a few shared folders)? I’ve read Joel Spolsky’s HgInt tutorial, and it makes Mercurial look good. And simple, especially if you’re working on your own.
C. Should I continue to use gEdit to write HTML/CSS/JS/PHP, or is there a better free editor out there for these languages?
I’d recommend against using XAMPP, particularly if you’re inexperienced as this would bypass all the package management functionality integrated in Ubuntu (so you need to manually track and apply security changes, if you need extensions not in the XAMPP distro you’ll need to compile from scratch, similar for most of the external admin tools which might interact with the Apache install).
Yes – you can have lots of virtual hosts on the same webserver (rcently worked somewhere with 1200 named virtual hosts on each Apache webserver – start up took about 2 seconds rather than 0.5 – but after that you’d never have known the config files were HUGE).
If you’re working on your own, then this is about the only scenario where using a distributed version control system offers no benefits over concurrent version control system, and a concurrent version control system offers no benefit over a conventional version control system. But even though it offers no advantage in the technology, it may be of benefit to you to acquire specific product skills.
What editor you use is matter of personal choice. Though personally I would list gEdit in my recommendations (I’d suggest NetBeans or Zend Studio for people who like standalone IDEs, otherwise vim, Eclipse, emacs).
A php documentor is (IMHO) a must (I like phpxref) along with some sort of testing toolkit.
HTH
C.