Почему приложения Mojolicious выбрасывают 500

Будучи новичком в Mojolicious, у меня возникли проблемы с работой моих приложений. Я запускаю все с удаленного сервера, но все учебники, которые я смог найти, хотят показать только способ развертывания на локальном хосте. Как видно из названия, я получаю 500 внутренних ошибок сервера вместо загрузки/запуска приложений, и я действительно не знаю, почему. Может ли кто-нибудь объяснить, как это делается для тех, кто не использует локальный компьютер для запуска своих приложений?

Вот демонстрационное приложение, красивое и красивое в том виде, в котором оно было сгенерировано:

#!/usr/bin/env perl
use Mojolicious::Lite;

# Documentation browser under "/perldoc"
plugin 'PODRenderer';

get '/test' => sub {
  my $c = shift;
  $c->render(template => 'index');
};

app->start;
__DATA__

@@ index.html.ep
% layout 'default';
% title 'Welcome';
<h1>Welcome to the Mojolicious real-time web framework!</h1>
To learn more, you can browse through the documentation
<%= link_to 'here' => '/perldoc' %>.

@@ layouts/default.html.ep
<!DOCTYPE html>
<html>
  <head><title><%= title %></title></head>
  <body><%= content %></body>
</html>

Все загружается нормально, и команда hypnotoad возвращает:

Listening at "http://*:8080"
Server available at http://127.0.0.1:8080

Что нужно сделать, чтобы это приложение загружалось через URL-адрес веб-сайта вместо локального хоста?

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


person CoderLee    schedule 10.10.2017    source источник
comment
Учебники охватывают режим разработки. Вы должны запускать свое приложение с помощью morbo во время разработки на своем компьютере и удаленно с помощью hypnotoad или каким-либо другим способом при развертывании его для производства. Я считаю, что в вики github для Mojolicious есть довольно длинное руководство по развертыванию. Взгляните туда.   -  person simbabque    schedule 10.10.2017
comment
Я посмотрю, как можно просмотреть страницы в разработке с удаленного хоста, а затем перед развертыванием? Учебники, кажется, не работают за компьютером перед вами.   -  person CoderLee    schedule 10.10.2017
comment
А, значит, у тебя на компьютере нет Perl? Вы всегда работаете с удаленной коробкой. Я понимаю. Это тот же самый, который вы также развернете? Вы ведь не работаете над производственным кодом? Это было бы... дерзко ;)   -  person simbabque    schedule 10.10.2017
comment
все учебники, которые я смог найти, не показывают локальный хост Пожалуйста, объясните, что вы подразумеваете под этим предложением?   -  person Borodin    schedule 10.10.2017
comment
Рабочий код безопасен, если просто попытаться подобрать mojolicious и использовать его как другой удаленный код, но это оказывается сложнее, чем считалось ранее. Острые ощущения от изучения чего-то нового!   -  person CoderLee    schedule 10.10.2017
comment
Может быть, ваш производственный код работает как CGI? Это хорошо, что вы пытаетесь что-то сделать! Продолжай в том же духе. Mojo также может работать под CGI, и несколько дней назад у нас даже был вопрос об этом. Но если у вас есть доступ к веб-серверу и вы не находитесь в среде общего хостинга, я бы не рекомендовал это делать.   -  person simbabque    schedule 10.10.2017
comment
Да, я пытаюсь уйти от CGI, следовательно, от Mojolicious, просто с трудом заставляю работать прокси. Это не так просто для новичков.   -  person CoderLee    schedule 10.10.2017
comment
Вы заставили его работать?   -  person simbabque    schedule 15.10.2017
comment
Наконец-то это было решено. После изменения Apache для прокси-сервера мне также пришлось сменить владельца каталога, в котором у меня было приложение mojo. Теперь все в порядке, и большое спасибо всем, кто прокомментировал, это помогло!   -  person CoderLee    schedule 27.10.2017


Ответы (1)


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

Как правило, доступный по адресу http://127.0.0.1:8080 — это просто текст по умолчанию. Если ваш сервер разрешает доступ к порту 8080 извне, то вы уже можете получить доступ к нему через IP-адрес или имя хоста сервера и порт 8080.

$ curl 192.168.0.4:8080/
$ curl myserver.local:8080/

Очевидно, это надуманные примеры.

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

Существует достаточно много информации о развертывании в вики Mojo на github, и одна перечисленных там страниц подробно рассказывает о hypnotoad, перечисляя например прокси-решение вместе с Apache:

Доступ через прокси-сервер

В производственной среде обычно прокси-сервер используется для доступа к серверу hypnotoad. Ниже приведен пример файла конфигурации apache/mod_proxy с использованием виртуального хоста.

<VirtualHost *:80>
   ServerName app1.somehost.com
   ProxyPass / http://localhost:8080/
   ProxyPassReverse / http://localhost:8080/
</VirtualHost>

См. различные разделы веб-сервера в разделе "DEPLOYMENT" в Mojolicious::Guides::Cookbook для получения подробной информации об обратном проксировании вашего приложения, а также для указаний по установке и соблюдению Mojo заголовков X-Forwarded-For.

person simbabque    schedule 10.10.2017