package MJB::Backend::Nginx; use Moo; use MJB::Backend::Nginx::DomainConfig; use Mojo::File qw( tempfile ); with 'MJB::Backend::Role::SystemCommand'; has servers => ( is => 'ro', default => sub { [ ] }, ); sub provision_website { my ( $self, $domain, $ssl_domain ) = @_; $ssl_domain ||= $domain; my $config = MJB::Backend::Nginx::DomainConfig->new( domain => $domain, ssl_domain => $ssl_domain, )->config; my $config_file = tempfile; $config_file->spurt( $config ); my $welcome_file = tempfile; $welcome_file->spurt( "Your new blog is being setup... please reload soon." ); foreach my $server ( @{$self->servers} ) { $self->system_command( [ 'scp', $config_file->to_string, $server . ":/etc/nginx/sites-enabled/" . $domain ] ); $self->system_command( [ 'ssh', $server, 'mkdir -p /var/www/' . $domain . '/html' ] ); $self->system_command( [ 'scp', $welcome_file->to_string, $server . "/var/www/" . $domain . "/html/index.html" ] ); $self->system_command( [ 'ssh', $server, 'chown -R www-data:www-data /var/www/' . $domain ] ); } } sub deprovision_website { } 1;