Primeiro, se você ainda não tem, precisa de uma definição de vhost por domínio (pode estar no mesmo arquivo, mas arquivos separados são melhores para clareza).
Então, a partir daí, você não pode realmente escapar da necessidade do symlink, mas uma maneira mais limpa de fazer isso seria apontar todo o seu vhost para um symlink chamado current que aponta para o seu /path/to/release/x.x.x.
Então, quando você implantar uma nova versão, basta alterar o symlink atual, isso mantém sua URL limpa e é mais fácil saber que você está apontando para a versão atual, em vez de uma pasta chamada foo.
O exemplo de Vhost seria:
<VirtualHost *:443>
ServerName foo.example.com
DocumentRoot /var/www/html/foo/current
....
</VirtualHost>
<VirtualHost *:443>
ServerName bar.example.com
DocumentRoot /var/www/html/bar/current
....
</VirtualHost>
Onde pontos atuais:
/ var / www / html / foo / atual - > /var/www/html/foo/release/x.x.x
/ var / www / html / bar / atual - > /var/www/html/bar/release/x.x.x
Espero que ajude.