Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
2 files changed, 19 insertions, 4 deletions
diff --git a/acmeman b/acmeman
index 83519f7..ea9198a 100755
--- a/acmeman
+++ b/acmeman
@@ -222,7 +222,7 @@ The B<null> module is an empty source. Command line arguments are ignored.
Use this source if all domains are described in the configuration file.
The B<apache> source module is the default. It scans B<httpd> configuration
-files as described in section B<APACHE>. One argument is allowed. If supplied,
+files as described in section B<apache>. One argument is allowed. If supplied,
it defines the apache configuration layout. Allowed values are: B<debian>,
B<slackware>, B<suse> and B<rh> (for Red Hat). Without arguments, the layout
will be autodetected.
@@ -365,7 +365,7 @@ setting.
=head2 apache
- source = apache [LAYOUT]
+ source = apache [--server-root=DIR] [LAYOUT]
This is the default source. It assumes Apache httpd, version 2.4 or later
(although only minor changes are necessary to make it work with version 2.2).
@@ -373,6 +373,10 @@ The optional I<LAYOUT> argument defines the layout of the apache configuration
files. Allowed layout values are: B<debian>, B<slackware>, B<suse> and
B<rh> (for Red Hat). If not supplied, the layout is determined automatically.
+Use the B<--server-root> option to supply the name of the server root
+directory, if for some reason the module is unable to determine it
A special directory should be configured for receiving ACME challenges.
The package provides two Apache macros: for serving ACME challenges and
diff --git a/lib/App/Acmeman/Source/ b/lib/App/Acmeman/Source/
index 2041bb1..b429f89 100644
--- a/lib/App/Acmeman/Source/
+++ b/lib/App/Acmeman/Source/
@@ -9,10 +9,16 @@ use File::Spec;
use IPC::Open3;
use App::Acmeman::Apache::Layout;
use parent 'App::Acmeman::Source';
+use Getopt::Long qw(GetOptionsFromArray :config gnu_getopt no_ignore_case);
sub new {
my $class = shift;
- bless { _layout => new App::Acmeman::Apache::Layout(@_) }, $class;
+ my $server_root;
+ GetOptionsFromArray(\@_,
+ 'server-root=s' => \$server_root);
+ my $self = bless { _layout => new App::Acmeman::Apache::Layout(@_) }, $class;
+ $self->server_root($server_root) if $server_root;
+ return $self;
sub layout { shift->{_layout} }
@@ -238,7 +244,7 @@ sub setup {
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCertificateFile /etc/ssl/acme/\$domain/cert.pem
SSLCertificateKeyFile /etc/ssl/acme/\$domain/privkey.pem
SSLCACertificateFile /etc/ssl/acme/lets-encrypt-x3-cross-signed.pem
@@ -289,6 +295,11 @@ sub probe {
close $nullin;
close $nullout;
+ unless ($self->server_root) {
+ ::error("can't deduce server root directory");
+ ::error("use `source = apache --server-root=DIR' in [core] section of /etc/acmeman.conf to declare it");
+ exit(1);
+ }

Return to:

Send suggestions and report system problems to the System administrator.