apache2后面的Kemal与mod_proy不提供静态文件

时间:2018-08-13 17:41:28

标签: apache static-files kemal

我有一个基于kemalcr的应用程序服务器正在监听 http://127.0.0.1:3000-在apache2之后。

在本地运行kemalcr-app时,一切正常且包含静态文件-例如/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时,apache2后面的kemal响应良好-除了静态文件。

我的目录结构如下:

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

但是请求http://mydom.com/assets/stylesheets/styles.css的结果为404。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

kemal应用程序将从以下位置启动应用程序根目录:

因此,capistrano部署使用部署用户的主目录-导致

/home/deployment_user

凯末尔默认情况下使用public_folder'./public'的相对路径

这导致公用文件夹中的蜂鸣解析为

/home/deployment_user/public 

-当然-不存在。

我可以通过config定义kemal-public_folder:

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

或根据Kemal.env定义它,例如“生产”或“发展”