Linux for Web Developers

If you are a web developer, you’ll no doubt need access to the myriad of command line tools that now power modern web design.  It seems that, for better or worse, the Node Package Manager (NPM) is standard equipment in a web developer’s tool chest. If you’re not a native Linux user, this can present a challenge, both on Windows and Mac.

This article will focus on providing a high-level overview of setting up a Linux development environment for Windows users.  It’s a bit easier to get a command line web development tool set going on Mac but I’ve always preferred to pick my own hardware and not pay a fortune for it.  I also can’t stand the Mac file system layout, UI navigation, and proprietary smugness of the operating system.  That will be the end of my Mac bashing for the remainder of this article.

I’m currently using Windows 10 on both my desktop and laptop, and while its far from perfect (you should turn off as much of the privacy-violating stuff as you can), it does a great job of providing the underpinning to my setup.  I would  use Linux full time if I could, but my gaming and Adobe addictions make that a difficult challenge.  Instead, I use Windows and run Linux in a virtual machine.

I’ve always been a fan of VirtualBox.  It’s open-source, free, and runs very well.  Out of the many Linux distributions I’ve tried in a virtualized environment I’ve found Linux Mint or Ubuntu to run the best.  I’d prefer Debian or Arch, but I’ve found that both Mint and Ubuntu have the best long term support (as long as you pick the LTS releases) and virtualization support right out of the box.  CentOS makes a great choice on the server but with little out of the box support for many of the web development tools you’ll need it just doesn’t make sense on a workstation.

Installing the various web development command line tools in Linux is extremely straightforward and requires little instruction.  If you go to each of the respective web pages for each software package you’ll find easy instructions tailored for your distribution.  Within just a few minutes after install you’ll be ready to go.  Since I do most of my work in Vim I skip fancy IDEs, but if they are your preference its easy to install Eclipse and others via the software package manager in Mint or Ubuntu.

The tricky part comes with sharing data with your host machine. VirtualBox includes shared folder support – allowing you to mount a Windows folder in Linux.  While that does work, I prefer simply sharing the folder natively in Windows then mounting it in Linux.  This avoids using custom kernel plugins that can change over time and allows you to access these folders on other machines as well.

You can also keep all of your work in Dropbox and install the Dropbox client inside your virtualized Linux environment.  This solution works well enough and provides an extra layer of backup for your work, but if you have a lot of data in your Dropbox account its strongly advisable to select only your work folders to be accessible inside your Linux system else you’ll end up duplicating your entire Dropbox folder structure which could be a problem if you’re on a smaller solid-state drive.

If you use Windows Backup or Acronis to do a bare-metal back up your Windows installation, you’ll also be backing up your Linux work environment as well – something that will greatly simply your backup strategy.  If you choose to throw Dropbox in the mix then you dramatically increase your protection against data loss and hardware failure.

I hope this post has given you a good overview of web development with Linux on Windows.  For now I wanted to share my overall thoughts and methodologies, but in future articles I’ll be digging into the specifics of installing a virtualized Linux environment, setting up specific tools, and optimizing the web development workflow.

This may be my last post before Christmas so best wishes for you and your family.  I hope you have a wonderful holiday!