Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pre-installed Linux for Web Developers? [closed]

Does anybody know an ISO image of a up-to-date Linux distribution aimed at web developers with one, some or all of the following features:

  • LAMP stack readily set up (Readily installed Apache 2, virtual sites directory structure (hosting), PHP installed, mySQL installed)

  • Ruby/RoR set up for a beginner to start with

  • Subversion set up for multiple repositories

  • Firewall configured for functioning as a web server (Port 80 open, not much else)

  • Python and Trac installed and integrated with Apache (Multi-environment capable)

Background:

I have a powerful new workstation and would like to set up a number of virtual machines for testing, development and version control, preferably on Linux. The machines will not be exposed to the public.

I would like to save as much installation and set up work as possible - setting up everything from the above list would cost me weeks if I'd do it alone.

Bounty

I have had to put this on the shelf for the time being due to other, more pressing projects. The suggestions made are already a brilliant list; I'm putting a bounty on the question to try and gather as much input as possible, so this can be the reference question on the issue for future generations.

I will be awarding the bounty either based on popular vote or on a whim, from what looks the best solution to me.

like image 664
Pekka Avatar asked Jan 28 '10 12:01

Pekka


People also ask

Which Linux is best for developers?

Ubuntu is one of the most popular Linux distros for all kinds of users, from Linux newbies to seasoned campaigners. For programmers, the Ubuntu Long Term Support (LTS) release provides a stable development environment that they don't need to upgrade every six months.

What Linux distro do programmers use?

Debian and CentOS are the most commonly used distros with a (truly) stable environment and release cycle. So if you're programming software that relies on stability and doesn't need all the latest versions of the software, it's a great fit.


1 Answers

Seriously, I think the best thing to do is create your own. Some people for example use Redmine instead of Trac. Finding a pre-configured VM with these specific installations is going to be difficult.

So, having the "create your own" as a precondition, I believe you have the following options:

Use a a "VM Aware" distro


Ubuntu Server comes to mind: it has an option to install a minimal installation specific to VMs.

Download the server ISO image, boot from it, press F4 on the first screen and select "Install a minimal virtual machine".

  • Less than 380MB installed footprint
  • Specialized server Kernel (-virtual)
  • Optimised for VMWare ESX, VMWare Server and KVM Intel or AMD x86 architecture
  • Minimum memory 128MB
  • No graphical environment preloaded as it is aimed at server virtual appliance

IMHO, you're going to spend at most a day configuring your VM to your tastes, not weeks. Using apt-get is going to save you some time in almost all packages in your feature list.

...and if you want even more customization, you can even try to use vmbuilder.

vmbuilder is a script that automates the process of creating a ready to use VM based on Ubuntu. There is no need for a JeOS CD image. The currently supported hypervisors are KVM, Xen and VMware.

Use a well known distro and "strip it down"


Install a minimal Debian system and strip down some features, or create a small live image and use it.

Use Linux From Scratch (LFS) and build a system only with essential software


This is the most difficult one and you're going to spend a lot of time.

But you'll be able to have a really small distribution and understand how a Linux system really works. Understanding how everything works you can install just what is needed in your setup, and use lighter binaries like Busybox.

There's an old project called Debian From Scratch (last update is from 2006, so I don't know if it's reliable) that aims to do the same LFS does but using Debian.

(...) is a unique distribution that allows you to install a Debian system with almost the same level of control as what you would get with a Linux From Scratch installation but with the Debian advantages (easy to update and maintain).

You just want a Damn Small Linux out-of-box solution


Well, you can try Damn Small Linux, it's only 50mb and Debian Based and I believe it's the most famous minimal distribution (you can check more distros in this list). I just don't know how it would perform in a Web Server Development scenario.

Final advice


To all situations above, after configuring, save your VM as a default one for future use. Or better, use snapshots, each one with minor differences you may have with your installation (beware though that controlling too many snapshots may be a little cumbersome).

"I don't want to configure my own"


If for some reason you didn't like my approaches or don't have too much time to follow my advice ("create your own VM") you can check this question on ServerFault. There's a list for a bunch of appliances from different distros.

...but if you're going to test a bunch of them, to see if they fit your needs, why not just use the time spent with them creating your own?

Icing on the cake: use Vagrant to manage your vms.


Vagrant is a tool for building and distributing virtualized development environments.

By providing automated creation and provisioning of virtual machines using Oracle’s VirtualBox, Vagrant provides the tools to create and configure lightweight, reproducible, and portable virtual environments.

This means Vagrant helps you automating a lot of things you usually do when creating a new VM (these features are from the official website):

  • Automated virtual machine creation using Oracle’s VirtualBox
  • Automated provisioning of virtual environments using Chef, Puppet, or just shell scripts!
  • Full SSH access to created environments
  • Assign a static IP to your VM, accessible from your machine
  • Forward ports to the host machine
  • Shared folders allows you to continue using your own editor
  • Package environments into distributable boxes
  • Completely tear down environment when you’re done
  • Easily rebuild a complete environment with a single command

I would create a vm with the same configuration (well, almost the same) as my production server, so some platform problems would not appear just when deploying.

like image 66
GmonC Avatar answered Sep 29 '22 09:09

GmonC