Установка витрины на сервер
Установите витрину на Nuxt, React или SvelteKit из её npm-пакета одной командой или создайте проект сами и запустите команду install пакета orionplace-nuxt, orionplace-react или orionplace-svelte. В обоих случаях витрина собирается на сервере, работает как системная служба, которая стартует вместе с сервером и перезапускается после сбоя, и её домены подключаются по HTTPS. Выберите свой пакет ниже.
Как это работает
Каждая витрина получает свою службу с именем orionplace- и имя витрины на свободном локальном порту от 3000. Служба работает от пользователя orionplace и читает файлы привязки доменов при каждом запросе, поэтому новый домен не требует перезапуска. nginx передаёт запросы каждого домена витрине, которая его обслуживает.
1 Установка из npm одной командой
Сначала подготовьте сервер. Затем выполните:
sudo orionplace app install svelteКоманда спрашивает имя витрины (по умолчанию shop), ваш персональный бэкенд и домен витрины и показывает, что будет установлено. Сначала она добавляет домен с сертификатом, чтобы проблема с DNS обнаружилась до сборки. Затем она создаёт проект из последнего выпуска пакета в /srv/orionplace/shop, устанавливает зависимости, подключает бэкенд и домен и запускает команду install, описанную ниже. Если шаг не удался, устраните проблему и запустите ту же команду снова: она продолжит в той же папке.
Передайте ответы параметрами, чтобы команда работала без вопросов:
sudo orionplace app install svelte shop \
--domain shop.example.com \
--backend my-shop.orionplace.app| Параметр | Что делает |
|---|---|
--version <version> | Версия пакета, диапазон версий или тег. По умолчанию latest — последний выпуск. |
--domain <domain> | Домен витрины. Без параметра команда спрашивает. |
--backend <name.orionplace.app> | Персональный бэкенд из вашего профиля на orionmarket.place. Без параметра команда спрашивает. |
--port <port> | Локальный порт службы. По умолчанию первый свободный порт начиная с 3000. |
--www / --no-www | Обслуживать также имя www и перенаправлять его на домен (--www) или нет (--no-www). По умолчанию да для example.com и нет для shop.example.com. |
--skip-dns-check | Пропустить проверку DNS, например если домен обслуживает прокси перед сервером. |
--yes | Брать значения по умолчанию вместо вопросов. |
Посмотрите опубликованные версии пакета или установите одну из них (0.3.0 или новее). Тогда проект сохраняет именно эту версию:
sudo orionplace app versions svelte
sudo orionplace app install svelte --version 0.3.02 Или создайте витрину сами
Чтобы пройти шаги самостоятельно, создайте проект в /srv/orionplace — папке, которую setup подготовил для витрин:
cd /srv/orionplace
sudo npx --yes orionplace-svelte init shop
cd shop
sudo npm installЧтобы установить уже готовый проект, скопируйте его в папку вроде /srv/orionplace/shop (например, через git clone) и выполните в ней sudo npm install. Проект в /root или другой закрытой папке служебный пользователь прочитать не сможет.
3 Подключите бэкенд и домен
Укажите домен персонального бэкенда из профиля orionmarket.place и домен витрины. Этот шаг можно пропустить: install спросит оба значения, если их нет.
sudo npx orionplace-svelte set backend my-shop.orionplace.app
sudo npx orionplace-svelte add frontend shop.example.com4 Установите как службу
В папке проекта выполните:
sudo npx orionplace-svelte installInstall собирает проект через npm run build, создаёт службу, которая запускает build/index.js с вашим .env, доверяет заголовкам хоста, протокола и адреса от nginx и принимает загрузки до 64 МБ, запускает её и ждёт ответа витрины. Затем для каждого домена витрины он выполняет orionplace domain add, который настраивает nginx, сертификат и привязку домена.
В конце он выводит адрес каждого домена, например https://shop.example.com. Если домен не подключился — обычно потому, что его DNS-запись ещё не указывает на сервер, — исправьте это и выполните sudo orionplace domain add shop.example.com. Неудачная сборка не меняет работающую службу.
5 Обновление и повторное развёртывание
После изменения кода или обновления пакета снова запустите install. Он пересоберёт витрину и перезапустит службу на том же порту:
sudo npx orionplace-svelte update
sudo npx orionplace-svelte installЧтобы обслуживать ещё один домен, добавьте его в проект и снова запустите install:
sudo npx orionplace-svelte add frontend shop2.example.com
sudo npx orionplace-svelte install6 Управление службой
Управляйте службой из папки проекта командой пакета. restart ждёт, пока витрина снова ответит, а если она не отвечает — показывает последние строки журнала:
cd /srv/orionplace/shop
npx orionplace-svelte status
sudo npx orionplace-svelte logs 200
sudo npx orionplace-svelte restart| Команда | Что делает |
|---|---|
npx orionplace-svelte status | Работает ли служба и запускается ли вместе с сервером, её локальный порт, отвечает ли главная страница и домены витрины. Завершается с кодом 3, если витрина остановлена или не отвечает. |
sudo npx orionplace-svelte start | Запустить службу и дождаться ответа главной страницы. |
sudo npx orionplace-svelte stop | Остановить службу. Её домены не отвечают, пока вы снова её не запустите. |
sudo npx orionplace-svelte restart | Перезапустить службу, например после изменения .env, и дождаться ответа главной страницы. |
sudo npx orionplace-svelte logs [lines] [--follow] | Последние строки журнала, по умолчанию 100. С --follow новые строки выводятся, пока вы не нажмёте Ctrl+C. |
npx orionplace-svelte list | Все службы витрин на этом сервере с типом, портом и состоянием. |
sudo npx orionplace-svelte uninstall [--dry-run] [--yes] | Остановить службу, убрать её из автозапуска и удалить её unit-файл и регистрацию; cleanup делает то же самое. Папка проекта и сборка остаются. С серверной утилитой выполняется orionplace app remove, которая также ставит на домены страницу-заглушку. --dry-run показывает, что будет удалено, --yes пропускает вопрос. |
Команды находят службу по папке проекта. Из другой папки укажите её имя. start, stop, restart, logs и uninstall выполняются через sudo, status и list — без него:
sudo npx orionplace-svelte restart --name shopСерверная утилита делает то же по имени витрины из любой папки:
sudo orionplace app list
sudo orionplace app logs shop
sudo orionplace app restart shop7 Параметры install
| Параметр | Что делает |
|---|---|
--name <service> | Имя службы. По умолчанию — имя папки проекта, например shop. |
--port <port> | Локальный порт. По умолчанию — первый свободный от 3000; при следующих запусках сохраняется. |
--user <user> | Системный пользователь службы. По умолчанию — владелец папки или orionplace, если папка принадлежит root. |
--no-build | Установить сборку, которая уже есть в папке, не собирая заново, например собранную на другом компьютере. Если сборки нет, проект всё равно собирается. |
--no-domains | Собрать и перезапустить без подключения доменов. |
--yes | Брать значения по умолчанию вместо вопросов. |
--dry-run | Показать планируемую службу; ничего не меняется. |
С --dry-run install показывает службу, которую создал бы, и ничего не меняет:
sudo npx orionplace-svelte install --dry-run
sudo npx orionplace-svelte install --name shop --port 3000
sudo npx orionplace-svelte install --no-domains