Whats a good way to approach a development environment when working with Magento?

Hey guys, I am working on a multi-site Magento implementation and I need suggestions.

I am working on a dual core 1.8ghz machine at work with 3GB ram and have found it to be very slow when using MAMP for my personal development environment, so I have set up a virtual machine using CentOS that mimics the actual staging and production server.

The problem is I have to do my changes, commit them to SVN and then update the repository on my virtual server which is using a crap load of production time. This Magento implementation is a multi site/store so it uses a lot of RAM and I need a stable file system with speed.

I am on a Windows XP Pro machine using WAMP normally but like I said I have found that to be slow. Is there any way I could develop it on my machine without it slowing down every other process?

I have my IDE (Aptana) open and most the time Thunderbird open as well as MySQL Workbench so I have a lot of programs running and the Virtual Machine dedicates those resources, but like I said it it tedious to continuously update the repository.

Can any Magento or expert developers weigh in? I really want to plan ahead for when I get more projects like this, and I would love to hear what some of you other developers do.


2 thoughts on “Whats a good way to approach a development environment when working with Magento?”

  1. You don’t specify that the virtual box is remote, but I’m going to make that assumption here (since a virtual box on your local host would by definition be slower than the machine it is hosted on).

    I would suggest connecting to your higher-spec machine remotely to work with the files and testing on that environment. Basically, use it as a development instance and make changes remotely. Then, check in those changes as necessary.

    I am very much a Linux developer so your toolchain is a bit outside of my expertise, but you should be able to mount the remote drive as a local network drive, or your IDE may even support mounting it over SSH (which would probably be a bit faster).

    Hope that helps!


    EDIT: I should say that, if your virtual instance is not remote, that changes my answer a little bit. Go rent a virtual dedicated machine with some reasonable stats, set it up for Magento, and then do go the above. The monthly cost of a virtual dedicated machine is quite low compared to any hardware technology upgrades you might buy, and it gives you a safe place to break things. The downside to this workflow is that you must be online to accomplish anything.

  2. I develop locally on a Mac using MAMP (and in the past Zend Server). The IDE of my choice is Netbeans. I highly suggest you checkout (no pun intended) Git for doing development work.

    I have a server that I use for production and staging. The production and staging have two different databases. A Git central repo also resides on this server.

    Essentially, I do my modules and dev work locally on my Mac. I try upgrades and such, then use Git to commit them and push them to the central repo on the server. Once there, I merge the changes into the staging server and test, test, test. If everything is cool, I then pull (merge) the changes into production.

    This has served my purposes quite well and I have not had a botched upgrade or anything… if something goes wrong you just rollback the changes in Git. You did make a dump of the DB before upgrading correct 🙂

    As you get more sophisticated you can start using phing to do some automated roll out of your code, but that is another story all together.

    Best of luck!

Leave a Reply

Your email address will not be published. Required fields are marked *