Human variations will prevent any distributed system with more than a dozen parts from ever being launched manually the same way twice.
Therefore: Write and run one single script to launch all components of the system. Test configurations by varying this one top-level description. Construct a shut-down script during launch.
I watched this pattern work extremely well for a group working on the their second attempt to build a highly distributed system. Implementation is non-trivial but straightforward using various remote bootstrapping techniques. It compared favorably (at least in a laboratory setting) to the OrganicDefense strategy employed by a competing team. -- WardCunningham
We use launch scripts too, and Apache has "apachectl start | stop | ...". I recently wrote a related "build environment" script that bootstraps a personal working directory for a rather complex piece of software relying on many 3rd party sources, which of course have to be compiled in a certain order.
Basically, it's the old rule ThreeStrikesAndYouAutomate.