Когда я впервые познакомился с сервером, который создаёт поддомены третьего уровня, а также умеет "парковать" домены второго уровня, я прежде всего представил себе, что там автоматически создаются директории для пользовательских скриптов, конфиг для апача и какой-то рутовый демон делает
sudo service apache reload
Но на деле оказалось не так.
1. В DNS стоит правило (см
https://toster.ru/q/7456) - все поддомены ***.myservice.ru отправляются на один IP
* IN A 192.168.1.1
Замени 192.168.1.1 на IP твоего сервера
2. В апаче/nginx не стоит привязка виртуального хоста к имени домена (myservice.ru или иной), все запросы отправляются на обработку на один скрипт (PHP?)
nginx
{
listen 80;
# server_name не указывать
}
3. В коде приложения (PHP) вычисляется домен в запросе HTTP и исходя из этого строится ответ
У пользователя в таблице user прописано имя домена, то есть пользователь Вася - это домен vasya.myservice.ru
$domainName = $_SERVER['HTTP_HOST']; // vasya.myservice.ru
$userDomain = $db->findUserByDomain($domainName);
echo 'Владелец этой страницы: ', $userDomain->fullName; // Владелец этой страницы: Вася
// ...
Это если речь про веб-интерфейс. А если у тебя реально разные приложения (бинарники?) ставятся из архива, то тебе нужно запускать разные команды из PHP, например
1. Создать директорию, сгенерировать конфиги htaccess или host для Apache
2. Распаковать архив /или слинковать какую-то общую часть через symlink
3. Заставить Apache сделать reload конфигов
Для этих команд тебе пригодится
php.net/manual/en/function.system.php php.net/manual/en/function.exec.php или
php.net/manual/en/function.shell-exec.php
Последний пункт самый небезопасный, потому нужно пользователю апач дать права на выполнение команды от рута. Лучше делать это по крону или от имени специального сервиса-демона, а не из PHP.