Установка · Витрина

Установка витрины на сервер

Установите витрину на Nuxt, React или SvelteKit из её npm-пакета одной командой или создайте проект сами и запустите команду install пакета orionplace-nuxt, orionplace-react или orionplace-svelte. В обоих случаях витрина собирается на сервере, работает как системная служба, которая стартует вместе с сервером и перезапускается после сбоя, и её домены подключаются по HTTPS. Выберите свой пакет ниже.

Как это работает

Каждая витрина получает свою службу с именем orionplace- и имя витрины на свободном локальном порту от 3000. Служба работает от пользователя orionplace и читает файлы привязки доменов при каждом запросе, поэтому новый домен не требует перезапуска. nginx передаёт запросы каждого домена витрине, которая его обслуживает.

1 Установка из npm одной командой

Сначала подготовьте сервер. Затем выполните:

bash
sudo orionplace app install svelte

Команда спрашивает имя витрины (по умолчанию shop), ваш персональный бэкенд и домен витрины и показывает, что будет установлено. Сначала она добавляет домен с сертификатом, чтобы проблема с DNS обнаружилась до сборки. Затем она создаёт проект из последнего выпуска пакета в /srv/orionplace/shop, устанавливает зависимости, подключает бэкенд и домен и запускает команду install, описанную ниже. Если шаг не удался, устраните проблему и запустите ту же команду снова: она продолжит в той же папке.

Передайте ответы параметрами, чтобы команда работала без вопросов:

bash
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 или новее). Тогда проект сохраняет именно эту версию:

bash
sudo orionplace app versions svelte
sudo orionplace app install svelte --version 0.3.0

2 Или создайте витрину сами

Чтобы пройти шаги самостоятельно, создайте проект в /srv/orionplace — папке, которую setup подготовил для витрин:

bash
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 спросит оба значения, если их нет.

bash
sudo npx orionplace-svelte set backend my-shop.orionplace.app
sudo npx orionplace-svelte add frontend shop.example.com

4 Установите как службу

В папке проекта выполните:

bash
sudo npx orionplace-svelte install

Install собирает проект через 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. Он пересоберёт витрину и перезапустит службу на том же порту:

bash
sudo npx orionplace-svelte update
sudo npx orionplace-svelte install

Чтобы обслуживать ещё один домен, добавьте его в проект и снова запустите install:

bash
sudo npx orionplace-svelte add frontend shop2.example.com
sudo npx orionplace-svelte install

6 Управление службой

Управляйте службой из папки проекта командой пакета. restart ждёт, пока витрина снова ответит, а если она не отвечает — показывает последние строки журнала:

bash
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 — без него:

bash
sudo npx orionplace-svelte restart --name shop

Серверная утилита делает то же по имени витрины из любой папки:

bash
sudo orionplace app list
sudo orionplace app logs shop
sudo orionplace app restart shop

7 Параметры install

ПараметрЧто делает
--name <service>Имя службы. По умолчанию — имя папки проекта, например shop.
--port <port>Локальный порт. По умолчанию — первый свободный от 3000; при следующих запусках сохраняется.
--user <user>Системный пользователь службы. По умолчанию — владелец папки или orionplace, если папка принадлежит root.
--no-buildУстановить сборку, которая уже есть в папке, не собирая заново, например собранную на другом компьютере. Если сборки нет, проект всё равно собирается.
--no-domainsСобрать и перезапустить без подключения доменов.
--yesБрать значения по умолчанию вместо вопросов.
--dry-runПоказать планируемую службу; ничего не меняется.

С --dry-run install показывает службу, которую создал бы, и ничего не меняет:

bash
sudo npx orionplace-svelte install --dry-run
sudo npx orionplace-svelte install --name shop --port 3000
sudo npx orionplace-svelte install --no-domains