我有一个基于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。 有什么想法吗?
答案 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定义它,例如“生产”或“发展”