I am working on a rather small web application, and we are just working on improving our deployment (improving it from โspend a day, setting up all the modules we need on Windows, and then throwing files on it until everything worksโ, so some improvements).
We have three things we need to do to set up our site:
- A Perl module created using
Module::Starter containing a Config module that contains configuration parameters for the entire site. When installing this module (using MakeMaker PREREQ_PM to verify that all the modules we need are already installed). Any modules that should not be installed before this module can be installed. - Several SQL files that must be run to tune the database.
- CGI Perl files that make up the website. As long as Apache points to them, the website "just works." This includes the general code modules used by all Perl files.
Deployment is what I pull from all branches of Git and pack the version. Then we can pass this for testing either locally or to an Amazon EC2 instance. As soon as we are happy to publish, we either install it on top of the latest version, or transfer the database to a testing instance, and make it a new instance.
Comparing this with your criteria:
- Library Control: Multiple. We use CPAN modules quite widely. To try the new version, we update our own version of the module before performing this update on a production server. We manually maintain the list, but since our code base is rather small, it is easy to determine which modules are used (for example, through
grep for lines starting with use ). - Makefile / Build Integration: Yes. Any files related to the Makefile are executed by our EU :: MM installation. We do not have global tests, but since our entire test package recently appeared in the same folder, we hope that you will soon have the opportunity to run
prove directly. - Version Compatibility: Yes. All our source code is contained in one folder without unnecessary duplication.
- Cross platform: Yes. We have a lot of weird things going on in MakeMaker to let us do this, but as a startup, having cross-platform code gives us valuable flexibility. We try to make the most of the core Perl modules and tools, as well as the Pure Perl modules from CPAN.
- Install Single Perl: Yes. We can process Perl from anywhere and install in any settings if all the tools of our own Perl module can work - it took a lot of effort to get
CPAN , EU::MM , while others work well on all systems. it seems embarrassing to spend it. - Easy start: not really. This system evolved (that is, it was not developed intelligently) from one folder of all source files and a text file with a list of modules that need to be installed. While formalizing testing for installed modules is a huge improvement, we still need something like a day to install. We basically installed our preliminary modules (not all of them are easy to install on Windows). I hope to use the Perl Win32 community to try and troubleshoot problematic CPAN modules.
Keep in mind this is a really simple website, no XS, no complicated web framework, or any such. We also supported this setting in only two versions, so we lack experience in how this will work, as the code becomes more complex and our deployment platforms become more diverse. I would really appreciate any suggestions or comments in our system.
Gaurav Mar 18 '09 at 6:20 2009-03-18 06:20
source share