自动子域名创建亚马逊ec2

Pad*_* Vn 0 apache subdomain amazon-ec2

我正在使用amazon ec2 ....我想要一个脚本,当用户注册或用户可以选择根据需要创建子域时创建子域..?

任何人都可以为此建议一个脚本..最好是php ..

谢谢

Man*_*anu 5

如果您使用的是apache Web服务器和fedora linux,则必须执行以下操作

在你的dns中添加一个通配符条目.假设您的域名是demo.com,dns条目就像

*.demo.com IN A 192.168.1.100
Run Code Online (Sandbox Code Playgroud)

用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();
    ?>
Run Code Online (Sandbox Code Playgroud)

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

希望有所帮助.