ASP4
view release on metacpan or search on metacpan
sbin/asp4-deploy view on Meta::CPAN
unless( eval { runtests( <t/*/*.t> ) } ) #/
{
push @test_errors, $@;
}# end unless()
}# end foreach()
chdir($start_cwd);
if( @test_errors )
{
die "Tests failed:\n", join "\n", @test_errors;
}# end if()
`rm -rf latest`;
`rm -rf deploying`;
`ln -s "$id" latest`;
}
else
{
`tar -zxvf "$src" && ln -s "$id" latest`;
my @to_update = ( );
my @files = qw( asp4-config.json httpd.conf );
foreach( grep { $_ !~ m{latest/common$} } <latest/*> )
{
my ($folder) = $_ =~ m{latest/([^/]+)};
foreach my $file ( @files )
{
if( (stat("latest/$folder/conf/$file.template"))[7] )
{
`cp latest/$folder/conf/$file.template latest/$folder/conf/$file`;
push @to_update, "latest/$folder/conf/$file";
}# end if()
}# end foreach()
}# end foreach()
warn "\n\n***You must update the following configuration files:***\n";
warn join( "\n", map {"\t* $_"} @to_update), "\n\n";
}# end if()
=pod
=head1 NAME
asp4-deploy - Deploy your prepared ASP4 application.
=head1 USAGE
asp4-deploy --src=/path/to/MyWeb_2011-11-15_23.59.39.tar.gz [--target=/var/www/myweb.com]
=head1 ARGUMENTS
=head2 --src=/path/to/MyWeb_2011-11-15_23.59.39.tar.gz
Required.
=head2 --target=/var/www/myweb.com
Optional. Defaults to the current directory.
=head1 DESCRIPTION
C<asp4-deploy> behaves differently the B<first time> you deploy an app than it does
the second, third or tenth times.
=head2 The First Deployment
=over 4
=item Step 1
Unzips the tar.gz archive into the target folder.
=item Step 2
Copies all the C<conf/*.template> files to be non-template files.
eg:
cp conf/asp4-config.json.template conf/asp4-config.json
cp conf/httpd.conf.template conf/httpd.conf
=item Step 3
Makes a symbolic link from C</the/target/path/latest/> to C</the/target/path/MyWeb_2011-11-15_23.59.39>.
=item Step 4
You update your C<conf/asp4-config.json> and C<conf/httpd.conf> to work for the new environment.
You run your tests:
prove -r t/
If everything checks out, then you update your server's other configuration (eg: /etc/apache2/sites-enabled/*) to include:
/the/target/path/latest/www/conf/httpd.conf
B<Restart apache and you're done.>
=back
=head2 Subsequent Deployments
Subsequent deployments are easier for us humans, but more work for the computers.
=over 4
=item Step 1
Unzips the tar.gz into the target folder.
=item Step 2
Creates a symbolic link 'C<deploying>' in your project folder.
eg:
/var/www/myweb/deploying -> /var/www/myweb/MyWeb_2011-11-15_23.59.39
=item Step 3
Copies all your configuration files from 'C<latest/*/conf/*>' into 'C<deploying/*/conf/*>'
( run in 0.614 second using v1.01-cache-2.11-cpan-39bf76dae61 )