Как сделать общие файлы на два домена

Или как настроить symlink

Эту техническую заметку я написал для себя, если мне снова такое понадобится. Но мне не жалко, поэтому публикую для всех.

Итак, у меня два блога — этот и англоязычный. Они живут на двух разных доменах, dsokolovskiy.ru и dsokolovskiy.com соответственно.

Так как контент в блогах практически одинаковый за исключением языка, я хочу, чтобы у них были общие файлы. Если я выкладываю одинаковую фотографию или аудио и там, и там, то физически на сервере это должен быть один файл, чтобы не плодить дубликаты. «Эгея» такую мультиязычность поддерживает.

«Эгея» — движок блога, который я использую и всем рекомендую

Раньше я делал такое через алиас, или синоним. По сути эта просто запись в DNS, которая зеркалит дополнительный домен на основной. У меня так было довольно длительное время и всё нормально работало до тех пор, пока я не решил перевести сайты на безопасный протокол https.

См. новое в блоге от 5 июня

Оказалось, что SSL-сертификат — главное условие для работы сайта по безопасному протоколу — нельзя подключить к домену-алиасу, потому что физически его как бы не существует. То есть один домен у меня открывался по SSL, а второй нет, и конечно же это было отстойно.

Погуглил, оказалось всё так:

’Parked domains (aliases) cannot have their own separate SSL certificate because they do not have their own Virtual Host. You would have to remove the domain name as a parked domain and add it as an addon domain to allow for the installation of it’s own SSL certificate, or to allow it to have no SSL certificate.’

На всякий случай спросил у своего хостера, они подтвердили. В качестве альтернативы предложили настроить редирект, но мне такое не подходило, ведь у блогов разные базы данных, которые выводятся в зависимости от домена.

Спросил совета у И., он сказал, что для Apache возможно настроить два виртуальных хоста на один document root, с разными сертификатами. Всё верно, вот только для такой настройки нужен VDS, а администрирование собственного сервера — та ещё работа, заниматься которой мне совсем не хочется. Этот вариант мне тоже не подходил.

Потом попросил помощи у А., и он посоветовал настроить симлинк. Внешне это работает так же, как и доменный алиас, но изнутри — совсем по-другому: в этом случае домен существует физически, имеет свою какую-то папку на сервере, а уже в ней создаётся специальный файл, который при обращении отсылает на другой путь. То, что нужно!

Symbolic link, Википедия

Итого мне предстояло:

  1. Отключить домен-алиас
  2. Разместить этот домен как самостоятельный
  3. Удалить у него на сервере папку /www/
  4. Подключить SSL-сертификат
  5. Настроить симлинк

С первыми пунктами всё просто, поэтому остановлюсь только на последнем.

Вот, что нужно, чтобы всё заработало:

Открыть терминал, подключиться к серверу по SSH по 22 порту:

SSH -P 22 user@servername

Вввести заклинание команду, которая создаёт ссылку на другой домен — собственно, нужный симлинк:

ln -s /serverpath/dsokolovskiy.ru/www /serverpath/dsokolovskiy.com/www

Всё, после этого у второго домена появился заветный «замочек»:

Дальше
© Даниил Соколовский, 2024
Движок — Эгея