自动子域创建亚马逊ec2

问题描述:

我使用的是亚马逊EC2 ....我想要一个脚本,当用户注册时创建子域或用户可以根据需要创建子域的选项..?自动子域创建亚马逊ec2

任何人都可以提出一个脚本这..最好的PHP ..

感谢

如果您使用的是Apache Web服务器和和Fedora Linux,您必须执行以下操作

在你的dns中添加一个通配符条目。假设你的域名是demo.com的dns条目如

*.demo.com IN A 192.168.1.100 

用你的ip替换ip。

然后anything.demo.com会来到您的服务器。

我们必须配置apache来处理子域。

对于我们必须

  • 创建文档根文件夹
  • 创建虚拟主机文件和
  • 重启Apache

以下PHP每个子域是符合上述理念。

<?php 
    define('DOMAIN','demo.com'); 
    define('DOCROOT','/home/username/www/'); 
    define('CONF_FOLDER','/etc/httpd/conf.d/'); 

    /* 
    * Function to create conf file in conf.d folder 
    */ 
    function createNewVhostFile($subdomain) { 
     $filename = CONF_FOLDER.$subdomain.'.conf'; 
     $fh   = fopen($filename, 'w') or die("can't open file"); 
     $servername = $subdomain.".".DOMAIN; 
     $docroot = DOCROOT.$subdomain; 

    $virtualhost = <<<HEREDOC 
    <VirtualHost $servername > 
    DocumentRoot $docroot 
    ServerName $servername 
    ServerAlias $servername 
    </VirtualHost> 
    HEREDOC; 

     fwrite($fh, $virtualhost); 
     fclose($fh); 
    } 

    /* 
    * Function to restart apache 
    */ 
    function restartApache() { 
     $configtest = `apachectl configtest 2>&1`; 
     echo $configtest; 
     if(strtolower(trim($configtest)) == 'syntax ok'){ 
      $restart = `/etc/init.d/httpd restart 2>&1`; 
      echo $restart; 
     } 
    } 

    /* 
    * Create document root folder. 
    */ 
    function createDocRoot($subdomain){ 
     $docroot = DOCROOT.$subdomain; 
     if(is_dir($subdomain)){ 
      echo "Document root allready exists."; 
     }else{ 
      mkdir($docroot,644); 
     } 
    } 

    $subdomain = "sub"; 
    createDocRoot($subdomain); 
    createNewVhostFile($subdomain); 
    restartApache(); 
    ?> 

您必须以root用户身份运行此脚本。在虚拟主机配置文件中,您可以添加更多选项。您也可以检查similar question问题的答案。

希望有所帮助。

你实际上可以利用RewriteMap。它可以让你映射域名(以及你想分支出来的情况)。

像这样的东西应该工作 -

RewriteMap lowercase int:tolower 
RewriteMap domainname txt:/var/conf/domain.map 
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$ 
RewriteCond ${domainname:%1} ^(/.*)$ 
RewriteRule ^/(.*)$ %1/$1 [L,NC,QSA] 

现在你可以使用PHP或任何创造条件,按照这个格式文件domain.map -

<domain name> <targeted path on the server> 

域/子域和目标服务器上的路径。

因此,例如。

example.com /myvirtualhostingserver/examplesite 
subdomain.demo.com /myvirtualhostingserver/subdomain 

现在你只需要将example.com指向你的服务器!

此方法允许您保持子域文件夹的名称与子域的名称无关(完全取决于您的用例)。