问题描述
我正在尝试按照 https://www.eclipse.org/hawkbit/gettingstarted/ 设置 hawkBit 更新服务器,但有很多我不知道如何解决的问题。 以下是简要设置步骤:
- 先决条件
sudo apt install -y default-jre default-jdk
java -version
*openjdk version "11.0.9.1" 2020-11-04*
*OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04)*
*OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04,mixed mode,sharing)*
sudo apt install maven
sudo apt-get -y install mariadb-server
- 下载构建源代码
git clone https://github.com/eclipse/hawkbit.git
cd hawkbit
mvn clean install
*Start hawkBit update server*
*Access http://localhost:8080/UI/login to check*
java -jar ./hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-0.3.0-SNAPSHOT.jar
sudo MysqL -u root
*Welcome to the MariaDB monitor. Commands end with ; or \g.*
*Your MariaDB connection id is 31*
*Server version: 10.1.47-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04*
*copyright (c) 2000,2018,Oracle,MariaDB Corporation Ab and others.*
*Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.*
MariaDB [(none)]> USE MysqL;
*Reading table information for completion of table and column names*
*You can turn off this feature to get a quicker startup with -A*
*Database changed*
MariaDB [MysqL]> CREATE USER 'test'@'localhost' IDENTIFIED BY '123456a@';
*Query OK,0 rows affected (0.00 sec)*
*MariaDB [MysqL]> UPDATE user SET authentication_string=password('123456a@') where user='test';*
*Query OK,0 rows affected (0.00 sec)*
*Rows matched: 1 Changed: 0 Warnings: 0*
MariaDB [MysqL]> GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost';
*Query OK,0 rows affected (0.00 sec)*
MariaDB [MysqL]> UPDATE user SET plugin='MysqL_native_password' WHERE User='test';
*Query OK,1 row affected (0.01 sec)*
*Rows matched: 1 Changed: 1 Warnings: 0*
MariaDB [MysqL]> FLUSH PRIVILEGES;
*Query OK,0 rows affected (0.00 sec)*
MariaDB [MysqL]> CREATE DATABASE hawkbit;
*Query OK,1 row affected (0.00 sec)*
MariaDB [MysqL]> ALTER DATABASE hawkbit COLLATE latin1_bin;
Query OK,1 row affected (0.00 sec)
MariaDB [MysqL]> grant all privileges on hawkbit.* TO 'test'@'localhost' identified by '123456a@';
*Query OK,0 rows affected (0.01 sec)*
MariaDB [(none)]> exit
*Bye*
sudo service MysqL restart
在hawkbit-runtime/hawkbit-update-server/pom.xml中添加以下代码
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>compile</scope>
</dependency>
将以下代码覆盖到hawkbit-runtime/hawkbit-update-server/src/main/resources/application-MysqL.properties:
spring.jpa.database=MysqL
spring.datasource.url=jdbc:MysqL://localhost:3306/hawkbit
spring.datasource.username=test
spring.datasource.password=123456a@
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
Application.properties 附加了新的 URL:
server.hostname=http://<my_ip_addr>
server.port=<my_port>
重建并运行:
cd hawkbit
mvn clean install
java -jar ./hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-0.3.0-SNAPSHOT.jar --spring.profiles.active=MysqL
打开http://
在没有--spring.profiles.active=MysqL的情况下运行hawkBit,我成功通过admin,admin登录。 即使 application.properties 保持不变,结果也是一样的。
我尝试注释掉所有用户安全性:
# spring.security.user.name=admin
# spring.security.user.password={noop}admin-pwd
# spring.main.allow-bean-deFinition-overriding=true
hawkbit.server.im.users[0].username=test
hawkbit.server.im.users[0].password={noop}123456a@
hawkbit.server.im.users[0].firstname=Huong
hawkbit.server.im.users[0].lastname=Ha
hawkbit.server.im.users[0].permissions=ALL
构建失败,日志如下:
[INFO] hawkBit :: Runtime :: Update Server ................ FAILURE [ 7.579 s]
[INFO] hawkBit :: Test Report ............................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14:59 min
[INFO] Finished at: 2020-12-26T16:47:05+07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project hawkbit-update-server: There are test failures.
[ERROR]
[ERROR] Please refer to /home/huong/software-update-server/hawkbit/hawkbit-runtime/hawkbit-update-server/target/surefire-reports for the individual test results.
所以我有一些问题,希望有人能提供帮助:
谢谢, 香河
解决方法
您所遵循的程序非常正确。但是,有一些关于您的方法的评论:
- 通过指定
skipTests
maven 参数:mvn clean install -DskipTests
,您可以在构建 Hawkbit 时省略运行所有测试。这将大大减少构建时间。 - 您无需修改
application.properties
即可使用 MySQL 数据库。只需指定用于激活“mysql”Spring 配置文件的--spring.profiles.active=mysql
程序参数并根据需要调整application-mysql.properties
(在您的情况下更改用户名和密码数据源配置)。 - 您需要使用
spring.security.user.name
和spring.security.user.password
或hawkbit.server.im.users
,而不是两者。 Spring 安全用户应该开箱即用。此外,您不应将spring.main.allow-bean-definition-overriding=true
注释掉,它负责 Spring 的 bean 覆盖机制,与 Spring Security 无关。 - Hawkbit 使用 Flyway DB 版本控制 (https://flywaydb.org),这意味着它将在应用程序启动期间执行所有必需的数据库迁移脚本。
- 是的,您可以使用 java11 运行 Hawkbit(请参阅 https://github.com/eclipse/hawkbit/commit/ed9a4b1bb31f4cd996e8af8867d67cdcda682d00)
希望能让你走得更远;)