Как разместить несколько доменных имен и проектов на одном сервере

kak razmestit neskolko domennyh imen i proektov na odnom servere?v=1656549492

от Бин Хонг Ли

NGINX – это один магический инструмент

0*FT9uL7NRg2iep6-e
Фото от imgix на Unsplash

Я владею несколькими доменными именами, и каждое из них размещает другой побочный проект. Дольше всего, что требовало «хостинга», размещалось на Heroku. Но их бесплатный уровень может быть достаточно ограничен, он также может быстро стать дорогим, если вы платите за каждый отдельный проект. Я решил объединить их вместе с помощью NGINX (рекомендовала мне Джейн Манчун Вонг).

Необходимые ресурсы

Виртуальный частный сервер (VPS)

Вам понадобится виртуальный сервер, например, DigitalOcean или EC2 от AWS. Лично я использую Vultr (вот нереферальную ссылку), которая стоит мне около 2,50 долларов США в месяц.

Доменные имена

Вам нужно зарегистрировать несколько доменных имен. Предполагая, что они, вероятно, уже есть, убедитесь, что ваши доменные имена указывают на серверы имен вашего VPS. На информационной панели службы доменных имен должен быть раздел DNS, где можно выбрать «пользовательский DNS» или что-то подобное. Если вы не уверены, что такое серверы имен вашего VPS, вы сможете легко найти эту информацию с помощью простого поиска сервер имен + название службы VPS.

Настройка NGINX

Установка и базовая настройка

Как установить Nginx на Ubuntu 16.04

Выполните следующие команды через SSH-ing на VPS. Он установит NGINX, настроит разрешающие это брандмауэра и настроит NGINX на автозапуск во время загрузки.

Настройка конфигурации

Ссылки с хоста нескольких доменов на одном сервере/IP с помощью Apache или nginx

Расположение virtual.conf по умолчанию должно быть в /etc/nginx/conf.d/virtual.conf. Я рекомендую создать резервную копию файла по умолчанию перед внесением изменений. (Если он не существует, вы можете просто создать его.) Отредактируйте файл, чтобы он выглядел примерно так:

Вот несколько вещей, на которые следует обратить внимание:

  • сервер блок — каждый из них должен представлять каждый другой используемый домен или субдомен.
  • корень — Это место, откуда загружаются файлы (HTML).
  • имя_сервера — (суб)доменные имена, которые должны загружать эти файлы.
  • proxy_redirect — в случае перенаправления определенного субдомена на активный сервер вам захочется добавить это и указать IP-адрес после него. (для локальных серверов тоже или должно работать, как задумано.)
sudo systemctl restart nginx

После завершения перезапустите сервер, чтобы новые конфигурации были загружены и применены.

Клонирование и связывание

Теперь помните, поскольку ваш каталог указывает на /opt/htdocs/имя веб-сайта, ваше первоначальное мнение может заключаться в том, чтобы клонировать свои проекты в эти папки. Это может сработать, но это не идеально, поскольку многие операции в этих папках требуют доступа root, чтобы действительно что-то делать.

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

git clone git@github.com:binhonglee/binhonglee.github.io ~/websitesudo ln -s ~/website /opt/htdocs/binhong

Конечно, когда вы клонируете статическую папку сайта Node.js (ReactJS, Angular или Vue.js), вам захочется установить (npm install) и построить (npm run-script build) их. Затем свяжите ./build папку вместо базового уровня клонированного хранилища. (Аналогично для сайтов Jekyll, но используйте файл ./_выход вместо.) Что касается активных серверов, просто убедитесь, что ваш сервер работает на том же порту, который указан в файле конфигурации.

Настройте HTTPS с помощью certbot

Благодаря Let’s Encrypt теперь можно получить бесплатные и легкие сертификаты HTTPS. С появлением certbot все стало еще проще!

Как защитить Nginx с помощью Let’s Encrypt в Ubuntu 16.04

Просто запустите вышеперечисленное для всех ваших имен домена и субдоменов, и certbot позаботится обо всем. Если вы хотите обновить сертификаты, можно запустить следующее, чтобы certbot помог вам обновить сертификат SSL.

sudo certbot renew --dry-run

Обновление всего

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

Вот как это будет выглядеть:

Спасибо, что прочли! Дайте мне знать, если у вас есть вопросы в комментариях ниже.

Обо мне

В момент написания статьи я работал в Apple Inc. в качестве речевого инженера Siri как независимый подрядчик через AdvantisGlobal. Я провожу много свободного времени, экспериментируя и создавая новые вещи с помощью технологий, которые мне кажется веселыми и интересными. Следите за моим исследовательским путешествием здесь или на GitHub.

Другие ссылки

Добавить комментарий

Ваш адрес email не будет опубликован.