问题
我有一个运行 Debian 和 DirectAdmin 的虚拟专用服务器。
我已经编辑了 DirectAdmin 使用的 vhost 模板文件,以便子域名不会放置在主域名中public_html
。根据指示,我已要求 DirectAdmin 重写虚拟主机,它确实重写了。调整目录结构后,所有网站都运行正常。
但是,添加新域会建立默认目录结构,而添加子域则会出现错误。
详细说明
让我详细解释一下。这是我的自定义模板创建的文档根目录。
虚拟主机2.conf:
|?DOCROOT=`HOME`/domains/`DOMAIN`/www/public_html|
虚拟主机2_sub.conf:
|?DOCROOT=`HOME`/domains/`DOMAIN`/`SUB`/public_html|
创建域 test.pl 后,我得到以下(不正确的)目录:
/home/myuser/domains/test.pl/.htpasswd
/home/myuser/domains/test.pl/public_ftp
/home/myuser/domains/test.pl/public_html
并且 vhost 条目列出了以下(正确的)文档根目录:
DocumentRoot /home/myuser/domains/test.pl/www/public_html
添加子域名的方法相同 - 创建了旧的错误目录结构,但虚拟主机使用新的正确模板。在我更正域的目录结构后:
/home/myuser/domains/test.pl/www/.htpasswd
/home/myuser/domains/test.pl/www/public_ftp
/home/myuser/domains/test.pl/www/public_html
我尝试再次添加子域名。结果出现 3 个错误,并且无法创建子域名:
Error creating /home/myuser/domains/test.pl/public_html/mysub
A directory component in /home/myuser/domains/test.pl/public_html/mysub does not exist or is a dangling symbolic link
Error creating /home/myuser/domains/test.pl/public_html/mysub/cgi-bin
A directory component in /home/myuser/domains/test.pl/public_html/mysub/cgi-bin does not exist or is a dangling symbolic link
Error creating /home/myuser/domains/test.pl/private_html/mysub
A directory component in /home/myuser/domains/test.pl/private_html/mysub does not exist or is a dangling symbolic link
问题
创建域和子域时如何通知 DirectAdmin 新的目录结构?
答案1
更改您的 VHost 模板不会使 DirectAdmin 创建您想要的目录结构,它只会使 Apache 为该域或子域设置不同的文档根目录。
正如您所看到的,您可以编写一个自定义脚本,在创建域或子域后执行,以便它创建您想要的目录结构。
例如,如果它用于子域,您可以/usr/local/directadmin/scripts/custom/subdomain_create_post.sh
使用如下内容创建脚本:
#!/bin/sh
rm -rf /home/$username/domains/$domain/public_html/$subdomain
mkdir -p /home/$username/domains/$domain/$subdomain/public_html
chown $username:$username /home/$username/domains/$domain/$subdomain/public_html
exit 0;