如何为WHM-CPanel主机自定义vhost文件?

时间:2017-07-27 23:08:43

标签: apache cpanel virtualhost whm

我想更改特定主机的文档根目录。

目前主机的设置为:

<VirtualHost 123.164.132.142:80>
  ServerName abc.com
  ServerAlias mail.abc.com www.abc.com
  DocumentRoot /home/abc/public_html
  ServerAdmin webmaster@abc.com
  UseCanonicalName Off
  CustomLog /usr/local/apache/domlogs/abc.com combined
  <IfModule log_config_module>
    <IfModule logio_module>
      CustomLog /usr/local/apache/domlogs/abc.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
    </IfModule>
  </IfModule>
  ## User abc # Needed for Cpanel::ApacheConf
  <IfModule userdir_module>
    <IfModule !mpm_itk.c>
      <IfModule !ruid2_module>
        UserDir enabled
      </IfModule>
    </IfModule>
  </IfModule>
  # Enable backwards compatible Server Side Include expression parser for Apache versions >= 2.4.
 # To selectively use the newer Apache 2.4 expression parser, disable SSILegacyExprParser in
 # the user's .htaccess file.  For more information, please read:
 #    http://httpd.apache.org/docs/2.4/mod/mod_include.html#ssilegacyexprparser
 <IfModule include_module>
   <Directory "/home/abc/public_html">
     SSILegacyExprParser On
   </Directory>
 </IfModule>

 <IfModule suphp_module>
   suPHP_UserGroup abc abc
 </IfModule>
 <IfModule !mod_disable_suexec.c>
   <IfModule !mod_ruid2.c>
     SuexecUserGroup abc abc
   </IfModule>
 </IfModule>
 <IfModule ruid2_module>
   RMode config
   RUidGid abc abc
 </IfModule>
 <IfModule mpm_itk.c>
   # For more information on MPM ITK, please read:
   #   http://mpm-itk.sesse.net/
   AssignUserID abc abc
 </IfModule>

 <IfModule alias_module>
   ScriptAlias /cgi-bin/ /home/abc/public_html/cgi-bin/
 </IfModule>
 Include "/usr/local/apache/conf/userdata/std/2_4/abc/abc.com/*.conf"
</VirtualHost>

我尝试在/usr/local/apache/conf/userdata/std/2_4/abc/abc.com/中创建一个conf文件,将文档根目录更改为.../public_html/public,然后运行/scripts/ensure_vhost_includes --all-users以重建httpd.conf并重新启动Apache。但是,我不认为它会生效,因为public_html中的文件仍可由全世界访问。

自定义主机设置的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

创建一个影响cPanel&amp; WHM仅为单个虚拟主机构建条目,您必须执行以下步骤:

创建以下一个或多个文件的副本:

Apache 2.2 with SSL — /var/cpanel/templates/apache2_2/ssl_vhost.default
Apache 2.4 with SSL — /var/cpanel/templates/apache2_4/ssl_vhost.default
Apache 2.2 without SSL — /var/cpanel/templates/apache2_2/vhost.default
Apache 2.4 without SSL — /var/cpanel/templates/apache2_4/vhost.default

将文件的新副本重命名为以下文件名之一:

vhost.local (如果您复制了vhost.default文件,请使用此文件名)

ssl_vhost.local (如果您复制了ssl_vhost.default文件,请使用此文件名)

编辑新文件以更改虚拟主机配置。 将新文件移动到任何其他目录(对于此示例,请说 / opt )。因此,我们假设您将新模板设为/opt/new-vhost-template

使用以下脚本将必要的信息添加到数据结构中:

perl -MYAML::Syck -e \
'my $hr = YAML::Syck::LoadFile($ARGV[0]);$hr->{$ARGV[1]} = $ARGV[2];YAML::Syck::DumpFile($ARGV[0],$hr);' \
/var/cpanel/userdata/$username/$domainname custom_vhost_template_ap2 /opt/new-vhost-template

应该这样做!

请记住,上面的示例适用于cpanel用户/帐户的特定vhost,不适用于服务器上的所有虚拟主机。