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, например, "производство" или "разработка"