In search of the perfect development environment

“So what tools and setup do you use for testing/development?”

If I had a quarter for every time I’ve been asked that question…

Here is my recipe for a decent, portable, single-system does-it-almost-all development environment. It uses virtual machine technology to provide for a local hosting server – a server which is logically isolated from the development host.

1) The host computer – you can use whichever OS flavor you want for the host, but it needs to support virtual machines and have at least a couple of gigabytes of RAM and enough processor horsepower to pretend to be two different machines – so a dual-core or hyper-threaded CPU is going to be necessary. You’ll need about 30 GB of storage space for all the parts and scratch areas.

2) Virtualization software is dependent to some extent on your host platform, and how much you’d like to spend on things. Most readers I expect will want the low-cost spread, so I would recommend VMWare Player. It is free after registration (VMWare will send you infrequent advertising and promotions). Note if you use Windows XP you should download Player version 3.x; the current 4.x releases require Windows 7. In either case, the default install works fine.

3) The VM image file is next on the list – I have found the Bitnami LAMP-stack to be especially easy to use. Download the virtual machine image, unpack to a directory and you’re almost ready to go.

4) Before you launch the VM for the first time, check your network settings in VMWare Player. I prefer the NAT choice (allows the VM to get to the Internet but will not expose your system to the outside world). For better security, select host-only and the VM is completely invisible.

5) Start the VM. When it boots, switch over to the window and login “bitnami” password “bitnami” and then change the password to something you’ll remember.

6) Fix a couple of things to make life easier – turn sshd on as default, and enable phpmyadmin for administration. To enable sshd,

$sudo cp /etc/init.d/ssh.conf.back /etc/init.d/ssh.conf
$sudo start sshd

(sudo will ask for your password; this is normal behavior)

To enable phpmyadmin, edit the file

/opt/bitnami/apps/phpmyadmin/conf/phpmyadmin.conf

and and replace the line

Allow from 127.0.0.1

with

Allow from all

and you’re done.

7) You can access your new server via the web at whatever address it is configured to use. You can find the IP address in windows by opening a command prompt window and issuing the command ipconfig /all, and then taking note of the IP address assigned to the VMNet8 adapter (one of two virtual network adapters installed by VMWare Player). On my installs this address is 192.168.154.128 but yours may be different.

8) To move files in and out of the virtual machine use a secure-shell copy (or just configure your FTP client to use SSH-SFTP); and when you’re finished with the VM either suspend it or shut it down.

————————————-

A few other notes:

I use VMWare. I’ve played with the others – VirtualBox, Parallels (Mac-only), Virtual-PC (Windows-only) but VMWare is the leader for a very good reason: It works. You don’t have to spend hours twiddling settings trying to coax features or improved performance. I mostly use VMWare ESXi, or VMWare Server (obsolete but nifty), or VMWare Workstation (pricey but really sweet).

I don’t bother with installing VMWare Tools on a server instance… I rarely log in on the server, except for configuration changes or updating software or doing a polite shutdown.

It’s better to do a shutdown than a raw power-off on a VM. You run the risk of corrupting files on when doing a power-off.

Advertisements

4 thoughts on “In search of the perfect development environment”

  1. Ubuntu has a new release 12.04 that came out at the end of April. The instructions to enable SSH have changed slightly.

    $ sudo mv /etc/init/ssh.conf.back /etc/init/ssh.conf
    $ sudo start ssh

    Regards,
    ~Chris (Renee’s hubby)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s