My laravel sites are hosted at Versio.nl. Recently they did maintenance on the servers and since then my subdomains are down.
I found a strange set of document roots.
In the DirectAdmin panel under custom httpd configurations I added:
|*if !SUB|
|?DOCROOT=/home/admin/domains/netwerkspel.nl/public_html/public|
|*endif|
|*if SUB="demo"|
|?DOCROOT=/home/admin/domains/netwerkspel.nl/public_html/demo/public|
|*endif|
|*if SUB="avn"|
|?DOCROOT=/home/admin/domains/netwerkspel.nl/public_html/avn/public|
|*endif|
The laravel applications are in these directories.
Now I see that in the contents of the httpd.conf the paths changed to:
<VirtualHost 185.xxx:80 >
ServerName www.ai.netwerkspel.nl
ServerAlias www.ai.netwerkspel.nl ai.netwerkspel.nl
ServerAdmin [email protected]
DocumentRoot /home/admin/domains/netwerkspel.nl/public_html/ai/public/ai <<--------
ScriptAlias /cgi-bin/ /home/admin/domains/netwerkspel.nl/public_html/ai/public/ai/cgi-bin/
UseCanonicalName OFF
<IfModule !mod_ruid2.c>
SuexecUserGroup admin admin
</IfModule>
CustomLog /var/log/httpd/domains/netwerkspel.nl.ai.bytes bytes
CustomLog /var/log/httpd/domains/netwerkspel.nl.ai.log combined
ErrorLog /var/log/httpd/domains/netwerkspel.nl.ai.error.log
<Directory /home/admin/domains/netwerkspel.nl/public_html/ai/public/ai>
<FilesMatch "\.(inc|php|phtml|phps|php74)$">
<If "-f %{REQUEST_FILENAME}">
#ProxyErrorOverride on
AddHandler "proxy:unix:/usr/local/php74/sockets/admin.sock|fcgi://localhost" .inc .php .phtml .php74
</If>
</FilesMatch>
</Directory>
</VirtualHost>
<VirtualHost 185.xxx:443 >
SSLEngine on
SSLCertificateFile /usr/local/directadmin/data/users/admin/domains/netwerkspel.nl.cert.combined
SSLCertificateKeyFile /usr/local/directadmin/data/users/admin/domains/netwerkspel.nl.key
ServerName www.ai.netwerkspel.nl
ServerAlias www.ai.netwerkspel.nl ai.netwerkspel.nl
ServerAdmin [email protected]
DocumentRoot /home/admin/domains/netwerkspel.nl/public_html/ai/public/ai <<--------
ScriptAlias /cgi-bin/ /home/admin/domains/netwerkspel.nl/public_html/ai/public/ai/cgi-bin/
UseCanonicalName OFF
<IfModule !mod_ruid2.c>
SuexecUserGroup admin admin
</IfModule>
CustomLog /var/log/httpd/domains/netwerkspel.nl.ai.bytes bytes
CustomLog /var/log/httpd/domains/netwerkspel.nl.ai.log combined
ErrorLog /var/log/httpd/domains/netwerkspel.nl.ai.error.log
<Directory /home/admin/domains/netwerkspel.nl/public_html/ai/public/ai>
<FilesMatch "\.(inc|php|phtml|phps|php74)$">
<If "-f %{REQUEST_FILENAME}">
#ProxyErrorOverride on
AddHandler "proxy:unix:/usr/local/php74/sockets/admin.sock|fcgi://localhost" .inc .php .phtml .php74
</If>
</FilesMatch>
</Directory>
</VirtualHost>
<VirtualHost 185.xxxx:80 >
ServerName www.avn.netwerkspel.nl
ServerAlias www.avn.netwerkspel.nl avn.netwerkspel.nl
ServerAdmin [email protected]
DocumentRoot /home/admin/domains/netwerkspel.nl/public_html/avn/public/avn <<--------
ScriptAlias /cgi-bin/ /home/admin/domains/netwerkspel.nl/public_html/avn/public/avn/cgi-bin/
UseCanonicalName OFF
<IfModule !mod_ruid2.c>
SuexecUserGroup admin admin
</IfModule>
CustomLog /var/log/httpd/domains/netwerkspel.nl.avn.bytes bytes
CustomLog /var/log/httpd/domains/netwerkspel.nl.avn.log combined
ErrorLog /var/log/httpd/domains/netwerkspel.nl.avn.error.log
<Directory /home/admin/domains/netwerkspel.nl/public_html/avn/public/avn>
<FilesMatch "\.(inc|php|phtml|phps|php74)$">
<If "-f %{REQUEST_FILENAME}">
#ProxyErrorOverride on
AddHandler "proxy:unix:/usr/local/php74/sockets/admin.sock|fcgi://localhost" .inc .php .phtml .php74
</If>
</FilesMatch>
</Directory>
</VirtualHost>
<VirtualHost 185.xxx:443 >
SSLEngine on
SSLCertificateFile /usr/local/directadmin/data/users/admin/domains/netwerkspel.nl.cert.combined
SSLCertificateKeyFile /usr/local/directadmin/data/users/admin/domains/netwerkspel.nl.key
ServerName www.avn.netwerkspel.nl
ServerAlias www.avn.netwerkspel.nl avn.netwerkspel.nl
ServerAdmin [email protected]
DocumentRoot /home/admin/domains/netwerkspel.nl/public_html/avn/public/avn <<--------
ScriptAlias /cgi-bin/ /home/admin/domains/netwerkspel.nl/public_html/avn/public/avn/cgi-bin/
UseCanonicalName OFF
<IfModule !mod_ruid2.c>
SuexecUserGroup admin admin
</IfModule>
CustomLog /var/log/httpd/domains/netwerkspel.nl.avn.bytes bytes
CustomLog /var/log/httpd/domains/netwerkspel.nl.avn.log combined
ErrorLog /var/log/httpd/domains/netwerkspel.nl.avn.error.log
<Directory /home/admin/domains/netwerkspel.nl/public_html/avn/public/avn>
<FilesMatch "\.(inc|php|phtml|phps|php74)$">
<If "-f %{REQUEST_FILENAME}">
#ProxyErrorOverride on
AddHandler "proxy:unix:/usr/local/php74/sockets/admin.sock|fcgi://localhost" .inc .php .phtml .php74
</If>
</FilesMatch>
</Directory>
</VirtualHost>
and configuration check issues warnings :
AH00112: Warning: DocumentRoot [/home/admin/domains/netwerkspel.nl/public_html/ai/public/ai] does not exist
AH00112: Warning: DocumentRoot [/home/admin/domains/netwerkspel.nl/public_html/ai/public/ai] does not exist
AH00112: Warning: DocumentRoot [/home/admin/domains/netwerkspel.nl/public_html/avn/public/avn] does not exist
AH00112: Warning: DocumentRoot [/home/admin/domains/netwerkspel.nl/public_html/avn/public/avn] does not exist
Can anyone see why all of a sudden the SUB itself is added at then of the paths? I indicated with arrows in the code above..
How I turn this back so they point to the right rootdirectories?
Solved problem. Problem was with the Templates.
In DirectAdmin -> Custom HTTPD Configurations you click the domainname and then, right under the list of available Tokens you can watch the "Templates". These appear to be the templates that DirectAdmin uses when constructing the httpd.conf with the virtualhosts as defined by you.
In my case I defined
|*if SUB="demo"|
|?DOCROOT=/home/admin/domains/netwerkspel.nl/public_html/demo/public|
|*endif|
And direct Admin translated it into directories like <Directory /home/admin/domains/netwerkspel.nl/public_html/demo/public/demo>
I found that the templates responsible for the translation are:
/usr/local/directadmin/data/templates/custom/virtual_host2_sub.conf
/usr/local/directadmin/data/templates/custom/virtual_host2_secure_sub.conf
These can be edited and placed in a custom directory, to point out to DirectAdmin that these are templates to use.
First I created the custom folder ( use sudo, access denied otherwise)
mkdir -p /usr/local/directadmin/data/templates/custom/
chmod 711 /usr/local/directadmin/data/templates/custom/
chown diradmin:diradmin /usr/local/directadmin/data/templates/custom/ -R
and the copy the relevant templates into it:
sudo cp -p virtual_host2_secure_sub.conf custom
sudo cp -p virtual_host2_sub.conf custom
The next step is to edit both the templates in the custom folder. Find the line that states:
|?SDOCROOT=`DOCROOT`/'SUB'|
and change it into
|?SDOCROOT=`DOCROOT`|
Now the templates in DirectAdmin look like:
/usr/local/directadmin/data/templates/custom/virtual_host2_sub.conf *** Custom Template ***
/usr/local/directadmin/data/templates/custom/virtual_host2_secure_sub.conf *** Custom Template ***
DirectAdmin will use the Custom templates. After saving the configurations again the subdomains work again!