Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何将某些文件放在Grails服务器的根目录中?_Apache Flex_Grails_Configuration - Fatal编程技术网

Apache flex 如何将某些文件放在Grails服务器的根目录中?

Apache flex 如何将某些文件放在Grails服务器的根目录中?,apache-flex,grails,configuration,Apache Flex,Grails,Configuration,我使用grails应用程序作为Flex前端的后端。为了能够轻松地开发和调试我的应用程序,我需要将一个crossdomain.xml文件放入服务器的根目录中,也就是说,它必须可以通过。类似的用例可能是favicon.ico或robots.txt的部署,但是这可以通过带有默认根web应用程序的tomcat服务器在生产环境中完成 然而,在我的例子中,我需要在运行grails run应用程序之后提供crossdomain.xml。我知道我可以将整个应用程序移动到根()上,但这也不是我想要的,因为grai

我使用grails应用程序作为Flex前端的后端。为了能够轻松地开发和调试我的应用程序,我需要将一个crossdomain.xml文件放入服务器的根目录中,也就是说,它必须可以通过。类似的用例可能是favicon.ico或robots.txt的部署,但是这可以通过带有默认根web应用程序的tomcat服务器在生产环境中完成

然而,在我的例子中,我需要在运行grails run应用程序之后提供crossdomain.xml。我知道我可以将整个应用程序移动到根()上,但这也不是我想要的,因为grails应用程序应该仍然位于其默认应用程序上下文之下


有人知道我怎么做吗?我是否必须以某种方式重新配置grails安装的jetty servlet容器?

我想我找到了答案。我还没试过这个,所以

在本文中,Colin Harrington讨论了通过部署额外的Jetty上下文,使crossdomain.xml文件在服务器的根目录下可用


他的技术是在本博客中首次提出的,作者还讨论了使用作为另一种选择的方法

我找到了一种使用Apache和mod_代理解决这个问题的方法。这使得Grails安装和Grails项目都保持原始状态。没有对Grails内部的黑客攻击,没有添加生产中可能不需要的插件

1。安装Apache httpd 2.2

但是,这样做对您的操作系统最有意义。安装Apache2.2非常重要。我是在Ubuntu系统上做的,所以任何特定的命令和文件位置都是针对Ubuntu的。根据需要对系统进行修改

安装Apache后,启动httpd

sudo /sbin/service httpd start
使用web浏览器测试它是否正确安装

2。创建根目录

在磁盘上选择一个保存静态文件的位置。这将是httpd的文档根。我将使用/var/grails\u root

mkdir /var/grails_root
touch /var/grails_root/crossdomain.xml
3。在httpd.conf中创建虚拟主机

在您喜爱的文本编辑器中打开httpd.conf

vim /etc/httpd/conf/httpd.conf
选择您喜欢的端口,并在该端口上创建虚拟主机。我将使用9090,但任何端口都可以

将这些行添加到httpd.conf

Listen 9090
<VirtualHost *:9090>
    DocumentRoot "/var/grails_root"
    <Directory "/var/grails_root">
        Allow from all
    </Directory>
</VirtualHost>
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
测试您现在是否能够访问文档根目录中的静态文件。如果没有,则需要在继续下一步之前解决此问题

4。启用mod_proxy和mod_proxy_http

您需要加载这两个模块。mod_proxy具有代理的基本功能,mod_proxy_xxx模块具有特定于协议的信息。他们随HTTPD2.2提供标准配置,所以您不需要安装任何额外的东西

将这些行添加到httpd.conf

Listen 9090
<VirtualHost *:9090>
    DocumentRoot "/var/grails_root"
    <Directory "/var/grails_root">
        Allow from all
    </Directory>
</VirtualHost>
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
现在修改您在上一步中设置的虚拟主机。(您可以省略注释)

现在,您应该能够通过端口9090访问静态文件和Grails应用程序

这一切都基于以下信息:


在同一网站上可以找到有关使用其他版本Apache执行此操作的信息。

Long不是问题。除非你的博客将永垂不朽(极不可能),否则请在此转述(或者,见鬼,只是复制)内容。答案应该不仅仅是“到这里来看看答案”,好的。将链接替换为博客文章中的相关文本。
sudo /sbin/service httpd restart