0

我有一个基于 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>

在 apache2 后面浏览 $mydom.com 时,kemal 响应良好 - 除了静态文件。

我的目录结构如下:

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

但是对http://mydom.com/assets/stylesheets/styles.css的请求会导致 404。有什么想法吗?

4

1 回答 1

0

kemal app 设置 app-root 从哪里开始:

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

/home/deployment_user

Kemal 默认使用 public_folder './public' 的相对路径

这导致公用文件夹被解析为

/home/deployment_user/public 

这 - 当然 - 不存在。

我可以通过配置定义 kemal-public_folder:

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

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

于 2018-08-14T15:21:16.013 回答