Как Программно Создавать Дополнительные Домены в Планах Общего Хостинга


На общем хостинге на базе Linux, администрируемом с помощью cpanel, существует ли программный способ надежного создания дополнительных доменов для моего сайта, если я знаю информацию для входа в cpanel и/или информацию FTP?

Примечание: в данном случае интересует PHP и cpanel.

Author: Volomike, 2010-07-10

4 answers

Спасибо @Alex C, который наставил меня на правильный путь. Следующее будет работать со многими планами общего хостинга, но сначала вы захотите ознакомиться с их политикой в этом отношении.

В приведенном ниже примере я бы уже купил root.com в качестве моего основного корневого домена в моем плане общего хостинга. Затем я бы хотел добавить домен под названием addon.com . Я установил имя пользователя в addon_user и пароль в addon_pass. Кроме того, я разместил файлы для нового домена в public_html/addon.com. Чтобы подключиться к Cpanel, чтобы это произошло, я ввел URL-адрес домашней страницы cpanel (который зависит от плана хостинга), чтобы его можно было проанализировать и использовать повторно. Кроме того, я предоставил свой root.com пользователь cpanel/передает информацию как root_user и root_pass.

Последний оператор echo - это просто выходной ответ, независимо от того, сработал он или нет. Однако, если вы хотите проанализировать его на предмет сбоя, вы, вероятно, можете проанализировать фразу "не добавлено".

Обратите внимание, что некоторые планы хостинга блокируют файл_гет_контенты, подключающиеся к URL, поэтому вам, возможно, придется переключаться с помощью fopen($SURL, 'r') или Curl API.

<?php

// @ input vars - change these as you see fit
$sPastedCpanelHomepageURL = 'https://root.com:2083/frontend/x3/index.html';
$sNewDomain = 'addon.com';
$sNewDomainUser = 'addon_user';
$sNewDomainPass = 'addon_pass';
$sNewDomainFolder = 'public_html/addon.com';
$sCPanelUser = 'root_user';
$sCPanelPass = 'root_pass';

// @ processing
$sCP = dirname($sPastedCpanelHomepageURL);
$sCP = str_replace('://','://' . $sCPanelUser . ':' . $sCPanelPass . '@',$sCP);

$sTask = '/addon/doadddomain.html?';

$sNewDomain = urlencode($sNewDomain);
$sNewDomainUser = urlencode($sNewDomainUser);
$sNewDomainPass = urlencode($sNewDomainPass);
$sNewDomainFolder = urlencode($sNewDomainFolder);
$sCPanelUser = urlencode($sCPanelUser);
$sCPanelPass = urlencode($sCPanelPass);

$asData = array(
  'domain' => $sNewDomain,
  'user' => $sNewDomainUser,
  'dir' => $sNewDomainFolder,
  'pass' => $sNewDomainPass,
  'pass2' => $sNewDomainPass
);
$sData = http_build_query($asData);

$s = file_get_contents($sCP . $sTask . $sData);

echo "$s\n";
 10
Author: Volomike, 2010-07-10 20:23:57

Вы можете использовать API cPanel, документ здесь. Это не так просто читать, если вы хотите поиграть с ними с помощью PHP, вы можете использовать бесплатные классы PHP (которые используют эти API за кулисами), некоторые из них здесь, на форуме cPanel, некоторые другие здесь.

 7
Author: Marco Demaio, 2010-07-31 12:51:41

Это зависит от того, размещен ли ваш DNS-сервер где-то под вашим контролем, и есть ли API для изменения записей DNS (или просто доступ к самим конфигурациям DNS-сервера). Я не пользователь cPanel, но я собираюсь склониться к "нет".

В среде, где вы управляете системой обслуживания DNS, довольно тривиально написать код для добавления дополнительных записей в ваши записи DNS (хотя, очевидно, распространение все еще требует времени) и добавления новых сайтов в sites-enabled. Оно может также будет очень сложно сделать надежно и безопасно, но вот так. Но я сомневаюсь, что у вас есть такая возможность через cPanel.

Что-то, что только что пришло на ум, - это возможность использовать общие домены (с записью сайта по умолчанию в файлах конфигурации Apache, на которую могут указывать все неуказанные поддомены) и программно определять, какой сайт должен запускаться оттуда, но у этого подхода так много недостатков, что я бы не рекомендовал даже смотреть на него.

 3
Author: Ed Ropple, 2010-07-10 15:47:08

Раньше я делал это с помощью fopen - я не могу вспомнить точные URL-адреса, и у меня больше нет доступа к cPanel, но если вы проверите используемые URL-адреса, вы сможете сделать что-то вроде

fopen("https://username:[email protected]:1084/cpanel/doaddparked.html?domain=domain.com", "r");

(вам придется проверить пути и порты, я их не помню) - и в последний раз я делал это в проекте два года назад, когда наша регистрация создавала электронные письма через cpanel - возможно, они изменили его с тех пор, но я нашел это самым простым способом. В то время они определенно работали над получением данных, а не чем ПУБЛИКОВАТЬ, если оно изменено на ПУБЛИКАЦИЮ, вам, возможно, придется заглянуть в CURL.

 2
Author: Alex C, 2010-07-10 16:01:17