Es muy simple, dependiendo el vps o dedicado que tengas, debes crear un archivo en la carpeta de apache sites-available partiendo del arhivo default ... es decir copias el contenido y con uno str_replace editas el contenido poniendo el nombre del subdominio junto con el dominio y seleccionas la carpeta donde ira el subdominio y posteriormente puedes hacer con un .htacces que al accesar a esa carpeta rediriga a algun index.php?tuaccion=nombrecarpeta y almacenar el subdominio en la bd para darle opciones de procedimiento ... luego ejecutas un a2ensite nombredelarchivocreado y posteriormente un apache reload y listo.
Vaya que nunca lo he hecho pero estoy seguro que asi funcionara. Otra opcion tambien es instalar un servidor DNS pero sería basicamente hacer un procedimiento muy similar
Un saludo :encouragement: