Что localhost: 1337 становится в производстве? - PullRequest
1 голос
/ 16 апреля 2019

Я уверен, что этот вопрос очень простой, но он сбивает меня с толку. В настоящее время в режиме разработки мой сервер работает на localhost: 1337 (точнее, используя Strapi cms). Но во что это превратится, когда веб-сайт будет развернут на веб-сервере?

В частности, веб-сайт будет находиться в подкаталоге, а не в корневом каталоге, это повлияет на это?

В настоящее время это URL, который я использую внутри своего проекта в качестве изображения src: локальный: 1337 / добавления / изображения example.jpg

Я пытаюсь понять, каким будет новый URL после развертывания проекта, и более того, он развернут в подкаталоге, а не в корневом каталоге

Заранее спасибо

1 Ответ

1 голос
/ 17 апреля 2019

Вам не нужно ничего делать.

Большинство, если не все, веб-хосты используют переменную среды PORT для настройки сервера приложений. Я только что сделал быстрый поиск кода через Strapi и нашел this :

"port": "${process.env.PORT || 1337}",

для чтения переменной среды или использования значения по умолчанию (вместо запроса случайного порта с 0 для предсказуемости при разработке). Если бы вы использовали их стартовый скрипт, я бы предположил, что ваше приложение имеет то же самое.

Во многих случаях этого достаточно, за двумя исключениями.

  1. Если ваш сервер приложений не знает свой URL, он может генерировать только относительные URL. Например, он не сможет составить письмо, содержащее ссылку на себя.

    HTTP перенаправления требовали абсолютный URL когда-то, , но с тех пор в него были внесены изменения .

  2. Установка только порта предполагает, что приложение будет смонтировано на /. Например, если вы настраивали свой собственный веб-сервер (вместо Heroku) и хотели смонтировать приложение на /blog, вам понадобится какой-то способ сообщить приложению, чтобы оно могло поставить правильный префикс в путях.

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

    Например, Grafana имеет в своем конфигурационном файле переменную root_url , в которую вы помещаете полный префикс URL, Prometheus принимает аргумент -web.external-url и т. Д.

    Однако Я не думаю, что Heroku может смонтировать ваше приложение где-либо, кроме /, поэтому порта должно быть достаточно.

Вот полный сервер, который работает на Heroku и показывает вам его среду:

const app = require("express")();

app.set("json spaces", 2);

app.get("/", (req, res) => {
  res.send(process.env);
});

const server = app.listen(process.env.PORT, () => {
  console.log('server is up on', server.address());
});

Переменная PORT - это вся необходимая конфигурация; среда не включает имя приложения.

Жесткое программирование рабочего URL-адреса вашего приложения может стать бременем для обслуживания, поэтому убедитесь, что оно остается настраиваемым с аргументом командной строки или переменной среды, если вы в конечном итоге обучаете свое приложение тому, что такое URL-адрес.

Итак, чтобы конкретно ответить на ваш вопрос, ваше изображение src должно начинаться с /uploads.

...