Kemal за apache2 с mod_proy не обслуживает статические файлы

У меня есть сервер приложений на основе kemalcr, прослушивающий http://127.0.0.1:3000/ - за apache2.

при локальном запуске kemalcr-приложения все в порядке, а статические файлы - например, /assets/stylesheets/styles.css поставляются отлично.

но при развертывании на рабочем хосте за apache2 - запросы на style.css приведут к 404

Моя конфигурация apache для виртуального хоста выглядит так:

<VirtualHost *:80>
    ServerName mydom.com
    ServerAdmin hostmaster@mydom.com

    ErrorLog ${APACHE_LOG_DIR}/mydom_error.log
    CustomLog ${APACHE_LOG_DIR}/mydom_access.log combined

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

При просмотре $mydom.com kemal позади apache2 работает нормально - за исключением статических файлов.

Моя структура каталогов выглядит так:

app/
 - src/
 - spec/
 - public/
  - assets/
   - stylesheets/
    - styles.css

Но запрос на http://mydom.com/assets/stylesheets/styles.css приводит к 404. Есть идеи?

1 ответ

Приложение kemal устанавливает app-root, откуда оно запускается:

Таким образом, развертывание Capistrano использует домашний каталог пользователя развертывания - что приводит к

/home/deployment_user

По умолчанию Kemal использует относительный путь к public_folder './public'

Это приводит к тому, что общедоступная папка разрешается в

/home/deployment_user/public 

который - конечно - не существует.

Я могу определить kemal-public_folder через config:

Kemal.config.public_folder = "/var/www/mydomain/current/public"

или определите его в соответствии с Kemal.env, например, "производство" или "разработка"

Другие вопросы по тегам