Slashdot is powered by your submissions, so send in your scoop


Forgot your password?
Programming Apache IT Linux

Ask Slashdot: Is There a Web Development Linux Distro? 136

Qbertino writes I've been a linux user for more than 15 years now and in the last ten I've done basically all my non-trivial web development on Linux. SuSE in the early days, after that either Debian or, more recently, Ubuntu, if I want something to click on. What really bugs me is, that every time I make a new setup, either as a virtual machine, on concrete hardware or a remote host, I go through 1-2 hours of getting the basics of a web-centric system up and running. That includes setting PHP config options to usable things, setting up vhosts on Apache (always an adventure), configging mod_rewrite, installing extra CLI stuff like Emacs (yeah, I'm from that camp) walking through the basic 10-15 steps of setting up MySQL or some other DB, etc. ... You get the picture.

What has me wondering is this: Since Linux is deeply entrenched in the field of server-side web, with LAMP being it's powerhouse, I was wondering if there aren't any distros that cover exactly this sort of thing. You know, automatic allocation of memory in the runtime settings, ready-made Apache http/https/sftp/ftp setup, PHP all ready to go, etc. What are your experiences and is there something that covers this? Would you think there's a need for this sort of thing and would you base it of Debian or something else? If you do web-dev, how do you do it? Prepareted scripts for setup? Anything else? ... Ideas, unkown LAMP distros and opinions please."
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Is There a Web Development Linux Distro?

Comments Filter:
  • Probably not... (Score:5, Insightful)

    by Improv ( 2467 ) <> on Sunday February 08, 2015 @11:57AM (#49011001) Homepage Journal

    Not everyone configures this stuff the same way, and new versions of software would mean you'd need to change this tuning all the time. Plus, you'd likely need to know all the tuning anyhow in case you need to debug or adjust it. Your best solution probably is not going to hope for a distro so much as baking yourself an image (or install script, or chef/puppet/ansible recipeset, or similar) and using it to build these systems for you. A custom distro wouldn't make sense.

    • Re:Probably not... (Score:4, Insightful)

      by Idimmu Xul ( 204345 ) on Sunday February 08, 2015 @12:02PM (#49011019) Homepage Journal

      Exactly this, thread over.

      You should be developing for the platform you're deploying to, whether that's a series of company maintained servers or some random CPanel hosting you've bought for $1 a month.

      The best way is to bake yourself an image you can run from scratch each time that gets installed and configured to a known outcome, hello Puppet/Chef/Ansible/Vagrant/etc/etc

      That gives you the benefit on developing on what ever platform with whatever toolset you like the most and an extremely reliable test platform that accurately mirrors your deployment platform.

      Otherwise you open yourself and your code to all kinds of unnecessary bugs later on.

      • Many distributions have package groups now, which should fill the role of a "LAMP distribution". In Fedora you can for instance install (yum groupinstall) "Web Server", "MySQL Database", "Authoring and Publishing", "Development Tools". That should give you a basic PHP/MySQL setup.
        Gentoo has added something similar too recently, probably Debian has also somthing like that, at least in the GUI.

    • Re: (Score:2, Insightful)

      by Anonymous Coward

      could always just create a VM in the config he wants, then just clone it off every time he wants a new dev server then all he'd have to do is reconfigure the vhost each time.

    • Exactly. Since the main issue seems to be the customizing of the web environment, I would recommend making a chef recipe and keep it on their cloud service. Then, when you need a new instance, load on the chef client and config and have it do all of the work. Later on, you can start worrying about custom images or hosting your own chef server.
    • by Anonymous Coward

      I am a webdev role. We use Vagrant on hosts to provision local vms.

      So its a simple of typing

      vagrant init (box name)
      vagrant up
      vagrant ssh -c 'my config script'

      • by Anonymous Coward
        Try developing a Drupal install with 50+ modules activated on a Vagrant box - you'll be crying after 2 minutes. It's cluster fuck. Drupal is cluster fuck. Vagrant is cluster fuck in a VM. Every page reload will give you a 30 minute break - some webdevs like that though.
    • Yes there is

      Install it and an app in cli appears. Apache, mysql, phpmyadmin, I net settings, everything.

      I am a huge fan! They have about a dozen other appliances and it pulls from the Debian wheeze distribution

    • by thieh ( 3654731 )
      I would have thought there is turnkey linux for lamp stack, and just write a shell script to configure it the way you want afterwards...
  • by Drewdad ( 1738014 ) on Sunday February 08, 2015 @12:01PM (#49011017)
    • by Anonymous Coward

      Yep. Learn puppet or similar

    • One thing this chart doesn't take into account is how many other people would find the automation useful. That changes the calculation significantly, especially if it is something that could be sold to others.

      However, for this particular question, the number of other people who would use the automated solution is likely zero.

  • Yes (Score:2, Informative)

    by Anonymous Coward

    Any fucking distro you want. Pretty much every distro does this.

    • by Anonymous Coward

      So there is one distro for browsing the web, another to listen to music, another for web development, another for multimedia content creation, another for creating command line apps and another for developing GUI apps?

      • One distro to run them all and in the darkness bind them?

        Of course it's systemd.

        Before anyone replies, my reply^2 is "Well, not yet..."

    • Re:Yes (Score:5, Insightful)

      by jc42 ( 318812 ) on Sunday February 08, 2015 @01:16PM (#49011373) Homepage Journal

      Any fucking distro you want. Pretty much every distro does this.

      Well, yeah, they mostly come with most of the pieces you want. But this doesn't help. I've found that trying to find where all the pieces are hidden/renamed in any given distro and then trying to figure out how they've tweaked the config stuff is far too time consuming. While someone else is beating their head against their keyboard over all the frustrations, I can beat them out by downloading the latest stable version of apache and each other package I want, and installing them from scratch. The packages in the repositories tend to not change their UI much, only when they have a good reason to do so. Also, they know that their users will be installing from scratch, so they concentrate in making this easy (which includes being mostly consistent with earlier releases, and providing forums that tend to have useful answers to questions).

      So my advice is to just scrap the servers and associated packages that come with the distro. Uninstall them if you can discover how to do that in a reasonable time, or just disable them. Copy the config files from another machine that's close to what you want. You'll get it up in much less time than you'd waste trying to figure out how the distro has tweaked everything.

      • by markjl ( 151828 )

        You want infrastructure as code: when you shell into a machine, you've already lost the battle because you are going to be doing things by hand which is slow and fraught with human error.

        Your general approach is correct: scrap the servers + packages, instead code them into a provisioning system such as Chef, Puppet, Ansible, Salt, etc. and handle all of the variables and corner cases for a fleet of servers with different OSs using these systems.

        Model them for local development using Vagrant and eventually D

        • My current setup is as follows:

          Stage 1: OS and core package installation: PXE boot to Kickstart (for CentOS).

          Stage 2: Local customizations for basic operation: Ansible. This includes installing the repo and packages for:

          Stage 3: Fine-grained provisioning and ongoing maintenance via Puppet (or, if you prefer, Chef, Salt, whatever).

          Alternatives/refinements include using Vagrant, Packer, and Docker, depending on needs. You can skip Ansible and use a "push" mode for puppet for stage 2, but I prefer to let Ansib

  • by markswims2 ( 1187967 ) on Sunday February 08, 2015 @12:04PM (#49011025)
    It's as close to out-of-the-box as I've found. []

  • by CodeReign ( 2426810 ) on Sunday February 08, 2015 @12:05PM (#49011037)

    Roll your own?

    Seriously. You don't sound like you want a cents with the web server packages (very good option in my opinion). You sound like you want your setup to be concrete and to meet your own specifications.

    The only way to get a distribution with your own specifications is to commission or roll your own.

    Another good option (what I do for my glassfish domain) is to setup cantos on a virtual machine with the generic install and then export the VM so I can create arbitrary copies of my perfect centos distribution.

  • by Anonymous Coward

    It's all there and ready to go right after install. Why do you have to make it so complicated?

  • ...setting up vhosts on Apache (always an adventure)...

    When I was faced with the task of configuring my many Apache virtual hosts with individual IPv6 addresses while keeping them all with the same IPv4 address (throw in a couple of SSL certs as well), I jumped into the Apache config files. After a few hours of Apache frustration, I took a peek at nginx. I have not looked back since.

    Within an hour of installing nginx, I had all the sites running as I wanted, using the one IPv4 address, the individual IPv6 addresses, and the appropriate SSL certs.

    I could

  • by Anonymous Coward
    Note: I have never used any of this software. My company has used some of the listed software extensively to deploy stacks much like your needs

    Have you tried looking at Configuration Management Software, like CFEngine or Puppet? You can find a quick list here: [].

    Configuration Management Software allows one to manage deployments of services across multiple machines, and looks to be exactly what you are searching for.
  • Have you tried tasksel in Ubuntu? It won't setup your vituralhosts or Emacs CLI, but it does nearly everything else you mentioned.
  • by bagel2ooo ( 106312 ) on Sunday February 08, 2015 @12:11PM (#49011083)

    This isn't necessarily what you were asking for but I maintain a small group of configuration management modules that extend a base class just for this. This allows me to maintain a common configuration standard that I can push across a wide variety of hardware and software configurations. I can spin up an ArchLinux development instance in my VM stack and have it configured the same as production which makes things convenient, doubly so when I decide it's time to pick up a *BSD again or what have you.

  • by Anonymous Coward

    If you've done this over and over, why is setting up vhosts an "adventure"?

    Surely a) you know how to do this in your sleep by now and b) you have scripts/templates to do all the heavy lifting for you?

    If not, fail.

  • If you have to do more or less the same in all, set up a shell script, ansible/puppet/salt/chef cookbook, docker image or even a .tar.gz with your custom configuration and deploy it wherever you need. Most current distributions will work well enough in that conditions.
  • Crunchbang had a good post-install script that would set up apache and mysql for you. It's probably safe to use until Debian Jessie is released. It's a shame that the distro is dead. In the long run, configuration management might serve you better than a distribution per se.

  • Have you looked into disk cloning?

    • by markjl ( 151828 )

      Disk cloning is one easy way to solve this problem, but then you must customize the new clone, and that represents a different set of problems.
      Eventually you learn that you don't want to copy the docroots or other data between each clone. In fact, your application or data or configuration up to date at the time of the snapshot, but may not represent the current application data or configuration.

      This leads many to synthesize infrastructure via provisioning tools like Salt/Puppet/Chef/etc. following infrastru

  • It's really the wrong question. The industry is going in the direction where the OS is simple and secure while the App deployment package is responsible for having all the required bits and pieces required to make the app work.

    For instance for a Java application we might use something like Spring-Boot to assist in creating the deployment artifact. That artifact will include the Apache Tomcat server. So all we need is a simple Linux server that has a JVM installed. Comes in handy for automation for runni

  • Though these scripts are not distribs, they allow to easily create mysql databases/ configure vhosts, users/ftp etc.. This allows to host multiple sites on one host zand from what I understand, this is what you are trying to do.

  • If you're doing PHP development and want a off the shelf solution then I would point you to the Laravel Homestead. []
  • Would you think there's a need for this sort of thing and would you base it of Debian or something else? If you do web-dev, how do you do it? Prepareted scripts for setup? Anything else? ... Ideas, unkown LAMP distros and opinions please."

    Why preparet when parrots work so well on demand?

  • That seems pretty quick to me. Whenever I setup a new machine it takes me at least a full day to get configured the way I like (admittedly I don't use LAMP, but still). What exactly is the problem with this?
    • It's highly inefficient. It would be trivial to automate this process.

    • by markjl ( 151828 )

      The problem is that doing anything by hand is slow and introduces human error.

      We all start to solve this by documenting your work procedures (i.e. a run book) to make our knowledge reproducible the next time we set up a server. The next solution is to code those procedures in a shell script to speed up things. However, you quickly find out that you'll need variables and you want to address corner cases because you need the script to work on more than one server. So your shell script needs to be tested in mu

  • This is not a base OS configuration problem. It's a personal taste of working environment problem, especially for your environment's web server needs.

    So look to service configuration tools, like cfengine, puppet, chef, or any of the dozens of other tools that already have setups for this.

  • I have used zpanel in the past, and it works fairly well. That project is somewhat abandoned, but the main devs have forked and called the new project Sentora. [] They just made the first stable release, might be worth looking into.
  • We don't do things by hand anymore today: it does not scale and it is not repeatable.

    Vagrant changed my life! Learn about Vagrant, use shell and evolve towards Chef/Puppet provisioning, then optimize toward application containers to go even faster. You'll gain the benefit of keeping your customer development environment on your Windows/Mac/Linux desktop or laptop while being able to test multiple different projects for different business clients reflecting their production environment.

    I had a lengthier exam

  • Try Virtualmin. It has a web gui interface to configure things like vhosts, along with mod_fcgid, php, etc. It installs and sets up a bunch of extra crap as well that you probably won't need, but it's so quick that might be worth looking at anyway and just remove what you don't need.

    • by Pikoro ( 844299 )

      I was going to post nearly the same thing. The other side of Virtualmin is once you have your packages and configs set up the way you want, simply click the backup server button and get a .tgz you can apply to any other virtualmin server and you'll have the exact same config every time. Tweak the options you want and a simple 3 click vhost is set up and cloned.

  • This may not what you are looking for, but the Bitnami [] stack is pretty good. You basically install a core module and then you can install other things as "apps" that may depend on each other. You can also just start with a VM image, which will save you even more configuration time.
  • Isn't that was Vagrant is for? Just spin up a preconfigured vm for every task and don't worry about the particulars. If you configure your vagrant box with puppet you can even use that puppet script to deploy to production machines.
  • As others have pointed out there's various installer programs that will get you a consistent environment to work in.

    You really want to keep your development environment and local system separate and VMs are a great way to do it. Just as a quick starting point try using Vagrant with Virtualbox and scotchbox which is a simple LAMP setup ready to go.

    Run a headless VM, treat it like a remote server. This is better than using your own system for many reasons. It allows you to configure your test environment as c

  • by fhage ( 596871 ) on Sunday February 08, 2015 @01:44PM (#49011503)
    I've had great success using remastersys [] Set up the distribution exactly how you want, then create an image which can run live or be installed on virtual or real machines.
  • Of course, the distro should include a copy of all versions of IE, to test your website on.

    • Which is why VirtualBox and vmware workstation exist. It is outrageous to use this just for, quirks in a browser, but webkit and safari have bugs too compared to old IE in this day and age.

      Vmware workstation is worth every penny for any IT professional

  • A bit tongue-in-cheek, but...

    Package.json + npm install is a lot easier than dealing with zypper, yum, rpm, and then 30 other package managers I'm forced to juggle with on all the different distros I encounter. Obviously I'm brainwashed, but I've been 100%* node for over a year.

    Granted, setting up ___sql will pretty much always be a 1-hour job, i'm glad to be free of the A and P in LAMP.

    * except when a new contract requires me to dive into LAMP again

    • by Anonymous Coward

      So your solution to all the package environments out there is another package environment.


      Just the fact that you put yum and zypper at the same level as rpm says it all, really.

      Personally-- I like puppet. "Install package X" and let puppet figure it out. Create some configs, apply to your VM with "puppet apply .pp".

  • by Sebastopol ( 189276 ) on Sunday February 08, 2015 @02:10PM (#49011643) Homepage

    Also, I forgot to mention, Puppet Labs' IT automated config is pretty effing amazing. I've been trying to dedicate time to ramping on it, and have been to a few classes at their office in Portland, but it is definitely on my list of tools to learn. []

  • where the more you know, the harder it is to answer.

  • by Lord Bitman ( 95493 ) on Sunday February 08, 2015 @02:38PM (#49011813) Homepage

    I use puppet for this sort of thing. I have a set of manifests which describe the basics of a VM I use for development, and I make changes based on whatever project I'm working on. These manifests usually get added to a repository either for developers; or (when possible) production

  • Why aren't you just configuring your own VM image and starting with that?

  • But have a look at xampp
    : []

    It, and it "spiritual" peers, wampp (Windows) []

    mampp (Mac) []

    Are commonly used in my local wordpress community for doing web dev work, as is the also mentioned bitnami

  • Disclosure - I am part of the Flockport team. This is the exact problem Flockport [] tries to solve with LXC containers. You can download containers of popular apps and web stacks [] and launch them in seconds.

    And you get all the advantages of LXC containers; portability, flexibility and near bare-metal performance. You can deploy multiple versions of apps and stacks all in their own containers, you are not wedded to any host, your apps and workloads in containers are portable and can be moved easily across any

  • Webmin [] will load all the right packages and set up Apache, mail, DNS etc. for you on a variety of Linux distributions.You can use it like a control panel afterwards or just ignore it and use the usual text config files and the command line from then on if you want. It's free and quick to run. I find it saves a lot of time (and mistakes). I made a tutorial [] if that's any use.
  • You know, with only one additional keystroke you could have written the actual word instead of a dumb-looking of word.
  • by jernst ( 617005 )
    It's focused on running web apps, rather than developing then, but if you can get Apache and PHP and MySQL etc for a webapp like ownCloud fully installed and configured with a single command, as UBOS [] does, it may help you anyway. UBOS is a very small distro but you can always point your repositories back to Arch, from which it is derived, and that should give you whatever packages you want.
  • I use Bitnami.
  • then you probably shouldn't have root to begin with. Try a CPanel/Plesk/Webmin interface that configures this for you, and a virtual hosting provider that spits out pre-packaged images you can connect up, and simply accept that you're using *that*, but "powered by LAMP" of some type.

    Alternative: Virtual hosting configuration is *not* that hard any more, even if you're just editing text files.

    Pithy Alternative: Don't ask a sysadmin to hold the hands of a brogrammer unless we're getting paid (well) for it.

  • That's like asking "is there a car for those days when I have to take my daughter to school but I"m menstruating."
  • CentOS & Webmin/Virtualmin do everything you're asking for and more.
  • Why not setup a base LAMP VM, clone it and adjust to your needs for a project?

  • I often develop for VPSes running CentOS and DirectAdmin.

    So i got a VPS like that for ~€14 /month. I upgrade pretty much the LAMP stack using DireactAdmin custombuild, and have VPS snapshots to easily roll back to in case i broke something. I need to maintain the VPS though, but my hoster informs me about (and how to fix) the latest critical bugs. Its simple and enlightening.

    Developing this way is quite versatile too; i make a user per solution. I can backup that user and import it on other servers (pr

    • by Barryke ( 772876 )

      To add on this..
      You could get a VPS without DirectAdmin/CPanel/Webminsomething, but the GUI to easily create and backup users adds tremendous value for developers.

      I can develop on any machine at hand.. just need SSH or FTP/SCP. Sourcecode files either are on the VPS, or in an GIT repository.

  • Thanks for the feedback. My conclusion is, that I'm going to look into a few variants of solutions, one main track being ready-made VMs of my favourite installation, the other being Debian FAI []. ... I'm pretty sure I'm sticking with Debian for this task, so FAI is probably the way to go. I will look into Puppet aswell, although I'm not sure yet if it's usefull for speeding initial installation and setup of individual systems.

    I wasn't aware of the Turnkey Linux stuff, so thanks for that tip aswell.

    I also unde

  • I got as far as "... setting PHP config options.." and your issue became clear.

    I'm a fairly well-qualified PHP hater having spent/wasted several years on it. Anyway, Vagrant is excellent. If you were to see the light one day and say use Python, you'd be using virtualenv, which would also greatly reduce your pain.

  • automate!
    seriously, who still does this stuff manually these days?

  • Why would anyone want a whole OS tuned for such a purpose?

    Use whatever distro you like and configure just your text editor / IDE / whatever. Use something like Vagrant ( to set up your dev environments.

  • Why not just use docker containers? You can then save the docker image and replicate as many instances as you want, across machines. You can also fire up different versions of the same container on your local machine for different projects (so you don't have to worry about config file stomping across different software stacks).

    Yes you have to do the initial setup, but every place I've worked always had the 'magic script' or whatnot that everyone used to pull down needed libs, link files, set environment var

  • If every time you build a VM or host to do this development on you have to spend 1-2 hours doing a config, you're doing it wrong!

    Make a checklist of stuff that needs to be updated and keep around copies of working config files. Chances are you typically like all the same settings and for the most part you can just drop a php.ini that you have that worked and be done with it.

    Same goes for VHost config files.

    Same goes for installing necessary things. copy/paste the yum or apt command lines to install them.


  • On Windows Azure, OpenStack, Citrix and even the ever-lame VMware,there are extensive orchestration tools. Write your script once and next time you need a server, click deploy.

"The four building blocks of the universe are fire, water, gravel and vinyl." -- Dave Barry