我正在使用Eclipse(光子)和Broadleaf社区演示项目(site,admin,api和core)。
我已经能够使用嵌入式Eclipse Web服务器在我的本地开发计算机上运行 site , admin 和 api ,并且现在我正在尝试在运行Tomcat 8.5(JVM 1.7)的AWS EC2实例上将site,admin和api项目部署为WAR。
我遵循了Broadleaf文档:
加上许多其他Google搜索网站的主题,但都没有成功。这和他们都是从2012年到2015年,并参考BL的旧版本(pre-Servlet 3.0)。
我甚至尝试过“web.xml”方法:
由Maven clean / install生成的WAR文件(我也尝试过“package”),看起来不像我习惯的典型WAR文件:
网站:(ROOT.war)
META-INF
org
WEB-INF
有人可以举例说明如何在Tomcat服务器上将BLC项目部署为WAR吗?
我得到的结果是端口8443上的404或空白页(使用web.xml方法时)。
对于这个相当开放/模糊的问题感到抱歉,但是对于BLC 5.2几乎没有这方面的文档,我转向Stack Overflow寻求帮助。
由于
SiteApplication
@SpringBootApplication
@EnableAutoConfiguration
public class SiteApplication extends SpringBootServletInitializer {
@Configuration
@EnableBroadleafSiteAutoConfiguration
public static class BroadleafFrameworkConfiguration {}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SiteApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(SiteApplication.class, args);
}
}
的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.mycompany-community</groupId>
<artifactId>boot-community-demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>boot-community-demo-site</artifactId>
<packaging>war</packaging>
<name>Community Demo Site</name>
<description>Web Module For Customized Broadleaf Commerce Site</description>
<properties>
<debug.port>8000</debug.port>
</properties>
<build>
<finalName>ROOT</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.mycompany-community</groupId>
<artifactId>boot-community-demo-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.broadleafcommerce</groupId>
<artifactId>broadleaf-framework-web</artifactId>
</dependency>
<dependency>
<groupId>com.broadleafcommerce</groupId>
<artifactId>broadleaf-boot-starter-solr</artifactId>
</dependency>
<!--
<dependency>
<groupId>com.broadleafcommerce</groupId>
<artifactId>broadleaf-boot-starter-hsql-database</artifactId>
</dependency>
-->
<dependency>
<groupId>com.broadleafcommerce</groupId>
<artifactId>broadleaf-boot-starter-database</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.broadleafcommerce</groupId>
<artifactId>broadleaf-thymeleaf3-presentation</artifactId>
</dependency>
<dependency>
<groupId>com.github.zhanhb</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
答案 0 :(得分:4)
好的,我们想通了。我想分享我们采取的步骤,因为它是来自不同来源(BLC和Spring Boot站点)的步骤/信息的组合。
第1步:BLC代码库
从以下网址下载资源:https://github.com/BroadleafCommerce/DemoSite
我使用的文件是&#34; DemoSite-develop-5.2.x&#34;。
在IDE可以查看/访问的位置解压缩。
第2步:IDE(本例中为Eclipse)
按照本网站的步骤(几乎是逐字逐句):
https://www.broadleafcommerce.com/docs/core/current/getting-started/ide-setup/eclipse-setup
您现在应该在本地运行站点, admin 和 api ,与内部HSQL数据库通信。
第3步:转到MySQL数据库。
我几乎一步一步地遵循这些说明(虽然我已经在我的机器上安装了MySQL):
第4步:BLC项目代码/ xml更改
一切都从这个链接开始:
你发现的地方:
按照以下87.1中的步骤进行操作:
基本上:
<packaging>war</packaging>
然后我创建了一个&#34; web.xml&#34;文件,(虽然我并不是100%确定我需要这个,因为我的servlet容器是Servlet 3.1,而BLC文档说所有这个web.xml配置现在都由注释处理)。
基本上:
第5步:Tomcat更改
另一个链接,其中包含大部分(如果不是全部)所需内容:
<强> / bin中强>
New&#34; setenv.sh&#34;包含以下内容的文件:
export CATALINA_OPTS="-Xmx1536M -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
<强> / CONF 强>
context.xml - 取消注释以下行
`<Manager pathname="" />`
somenamehere -keystore(需要生成,或者抓住BLC代码库中的那个)
server.xml - 添加了HTTPS连接器:
<Connector SSLEnabled="true"
clientAuth="false"
keystoreFile="/path/to/server/apache-tomcat-8.5.29/conf/*somenamehere*.keystore"
keystorePass="BLCPassword"
keyPass="BLCPassword"
keystoreType="PKCS12"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
maxThreads="150" port="8443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLSv1.2"/>
Note that I had to add the "keystoreType" attribute due to
my keystore being in the PKCS12 format, as opposed to JKS.
The "ciphers" attribute was added as I got an exception
complaining about the TLS I was using.
Tomcat的users.xml中
Added the following two lines:
<role rolename="manager-gui"/>
<user username="admin" password="ReallyHardToGuessPW" roles="manager-gui,admin-gui"/>
I'm not sure if this step was 100% needed, but it allows me
to see the BLC projects within the "manager" app of Tomcat.
/ webapps
主管经理和经理应用
In the "META-INF" of these apps I commented out both the "Valve" and "Manager"
tags in the "Context".
This was extracted from this link:
https://www.howtoforge.com/tutorial/how-to-install-apache-tomcat-8-5-on-ubuntu-16-04/
(Look at "Step 6")
This appears to be the only difference in my earlier attempts in
getting this running (pre-cry-for-SO-help), as yesterday and this
morning I had already performed all the steps in this post.
第6步:Maven清理并安装
在Eclipse中,在每个Site和Admin项目(&#34; boot-community-site&#34;&#34; boot-community-admin&#34;)上,右键单击并选择运行方式&gt;&gt; Maven clean 。完成运行 Run As&gt;&gt; Maven安装。
现在在每个项目&#34;目标&#34;在目录中,您应该看到一个WAR文件,(&#34; ROOT&#34;用于Site项目,&#34; admin&#34;用于Admin项目)。
第7步:启动Tomcat服务器
我启动了Tomcat服务器,其中包含常驻应用程序(文档,示例,主机管理器,管理器和ROOT)。然后我热点部署了BLC&#34; admin.war&#34;和&#34; ROOT.war&#34; (站点)到Tomcat / webapps目录。
如果这对您不起作用,您可以随时停止Tomcat服务器并将ROOT.war和admin.war文件放在/ webapps目录中。然后启动服务器。
如果一切顺利,请查看&#34; catalina.out&#34;启动时记录日志文件,您将看到ASCII&#34; Broadleaf Commerce&#34;消息滚动,每个BLC应用程序一次,然后是一堆MySQL Hibernate消息。对于#34; m5.large&#34;网站和管理员,整个启动时间似乎约为4分钟。 AWS EC2实例。
我想到了我错过的内容,但我现在已经在Tomcat 8.5容器上运行了BLC 5.2。
希望它与其他人一起使用,但我遇到同样的问题。
答案 1 :(得分:1)
极有帮助的指南。我想添加一些有关第5步的信息,尤其是有关负载均衡器环境中的弹簧安全性的信息。
由于SSL将在前端代理上发生,因此spring的安全性requireSecure()可能导致无限循环的重定向。
对此的一种解决方法是:
在前端代理上安装ssl证书后,请在.properties文件中包括以下两个请求标头:
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto
不需要从tomcat进行重定向,因此您不必按照步骤5所述在server.xml中包括https连接器。
只需添加这两行
secure =“ true”
和
scheme =“ https”
在tomcat的server.xml的默认连接器上
<Connector port="hereisyourdefaultportofyourtomcat" protocol="HTTP/1.1"
connectionTimeout="20000"
secure="true"
scheme="https"
/>
请注意:前端代理应发送以上请求标头。在大多数情况下,默认情况下会发生这种情况。选中here