我想在Ubuntu 16.04服务器上安装Apache和Glassfish。 我已经安装了
以下是我遵循的步骤
配置MPM模块
在/etc/apache2/mods-available/mpm_event.conf中将MaxRequestWorkers设置为400
配置JK模块
<IfModule mod_jk.c>
JkWorkersFile /usr/share/glassfish4/glassfish/domains/<domain-doamin1>/config/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel error
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMountCopy all
</IfModule>
JkMount /myapp/* ajp13
<Location "/myapp/WEB-INF/">
require all denied
</Location>
在GlassFish域的配置目录中创建workers.properties文件
worker.list=ajp13
worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
# load balancing only: worker.ajp13.lbfactor=50
connection_pool_size=10
connection_pool_timeout=600
worker.ajp13.socket_keepalive=False
worker.ajp13.socket_timeout=30
使用这些命令在GlassFish中创建JK侦听器
asadmin create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server jk-listener
asadmin set server-config.network-config.network-listeners.network-listener.jk-listener.jk-enabled=true
然后我成功重启了glassfish域,但是当我尝试用sudo /etc/init.d/apache2 restart重启apache2时,我得到以下错误
[....]重新启动apache2(通过systemctl):apache2.serviceJob for apache2.service失败,因为控制进程退出并显示错误代码。请参阅&#34; systemctl status apache2.service&#34;和&#34; journalctl -xe&#34;详情。 失败!
当我编辑位于/etc/apache2/mods-available/jk.conf下的文件jk.conf时会发生此错误
我哪里错了。是否有完整的指南来完成这个?最后,较新的apache2没有文件httpd.conf,因此Internet上的所有教程都依赖于此文件。提前谢谢。
答案 0 :(得分:1)
由于您的目标只是将请求从Apache转发到GlassFish,而不是将请求从Apache加载到多个GlassFish服务器,我建议避免使用mod_jk
。你当然可以用它实现你的目标,但如果你对所涉及的概念不熟悉,你会发现它很难理解和维护。
相反,您可以使用mod_proxy
,也可以使用mod_proxy_ajp
。
首先,定义:
AJP是一种类似HTTP的协议,但是二进制而不是基于文本。它没有安全/不安全的选项,如HTTPS / HTTP,因为它通常在防火墙后使用,并且在这些情况下比HTTP执行得更好。将任何GlassFish网络侦听器标记为jk-enabled
时,您将启用AJP通信,而不是HTTP。
您已经通过ubuntu apache2
软件包安装了Apache,该软件包具有自己的配置示例结构,这与您下载和解压缩时所获得的布局不同。这有优点,但在开始之前我们需要了解Apache配置文件。
通常,您会看到互联网指南引用httpd.conf
作为要编辑的配置文件。这只是默认的&#34;父母&#34;配置文件。在Debian / Ubuntu系统(及其派生,如Linux Mint)中,要查找的文件是apache2.conf
。
从上到下读取此文件及其指令,因此如果您将相同属性设置为两个不同的值,则第二个将应用。 (更准确地说,它们都适用,但第一个只适用于读取第二个设置)。
此文件还可以特别包含&#34;包含&#34;文件和文件夹(包含所包含文件夹中的任何*.conf
文件)。这些将被读入并与主要配置合并在&#34; include&#34;语句是写的。所以主配置文件中的最后一行(如果它没有指定另一个文件)将是要设置的最后一行配置,无论如何。
我 高度 建议您阅读apache2.conf
文件中的开头评论,因为它会告诉您有关布局的所有信息。可以这么说,将所有配置保存在一个文件中是非常痛苦的维护。 Debian软件包将配置分为三类:
站点强> 站点是网站或Web项目的单个配置文件。这可以是任何东西:PHP,静态HTML或部署到像GlassFish这样的应用服务器的Java EE应用程序。
<强> MODS的强>
模块细分为*.load
文件,用于加载运行它们所需的实际库,以及*.conf
文件,这些文件具有模块的全局配置。请注意,此配置适用于使用该模块的每个站点,因此最好将任何特定于站点/应用程序的模块配置放在相应的site.conf
文件中
<强> CONF 强> 这些文件仅适用于适合组合的任何其他常规配置。这可以是SSL配置,如密钥库和信任库位置。
当您查看目录结构时,您会看到每个文件夹都有2个文件夹:*-available
和*-enabled
。这是因为Debian Apache软件包附带了6个辅助工具a2ensite
和a2dissite
; a2enmod
和a2dismod
; a2enconf
和a2disconf
。我们的想法是遵循以下规则:
apache2.conf
文件*-available
文件夹中添加或更改文件所以(最后)回答你的问题,我会做以下步骤:
启用mod_proxy_ajp
a2enmod mod_proxy_ajp
在sites-available
中创建一个新的myApp.conf。您可以复制默认值,这是一个很好的例子。假设您只想将所有请求转发给GlassFish,您可以使用默认的VirtualHost设置`,它将在端口80上处理任何主机名的请求。如果要添加HTTPS,请使用端口443。
将ProxyPass
和ProxyPassReverse
指令添加到服务器的位置。如果Apache和GlassFish位于同一台服务器上,则可能需要使用ajp://localhost:8080
ProxyPass / ajp://host_name:0000
ProxyPassReverse / ajp://host_name:0000
注意:这假设您使用的是AJP。如果这会导致您出现问题,请通过将ajp
更改为 上方的http
和 来禁用GlassFish中的jk-listener来切换到HTTP。
完成myApp.conf
配置后,请记得禁用默认网站:
a2dissite 000-default-site.conf
启用新网站:
a2ensite myApp.conf
这些命令将适当修改主apache2.conf
并在sites-enabled
文件夹中创建相应的链接。
这应该就是你所需要的。现在,在URL的根/
之后指向您的主机名的所有内容都将转发到GlassFish的根上下文/
。