metasfresh安装配置
本文简要描述在Ubuntu 20.04中安装metasfresh的基本流程。
注意:metasfresh当前版本只支持Java 8,不支持更高版本,以下默认系统已经安装相应版本软件包(openjdk-8-jdk-headless)。
数据库配置
执行以下命令创建并配置PostgreSQL数据库:
% initdb -D data -U postgres -A password -W % pg_ctl -D data -l data/data.log start % psql postgres postgres # create role metasfresh with login password 'metasfresh' ; # create database metasfresh with owner metasfresh ;
从https://github.com/metasfresh/metasfresh/blob/master/Jenkinsfile中找到数据库初始数据的链接并下载,如:
wget https://metasfresh.com/wp-content/releases/db_seeds/metasfresh_latest.pgdump
再执行以下命令导入初始数据:
pg_restore -U metasfresh -d metasfresh metasfresh_latest.pgdump
RabbitMQ
RabbitMQ不需要额外配置,只要安装rabbitmq-server
包,然后启动服务即可:
service rabbitmq-server start
ElasticSearch(可选)
首先获取ElasticSearch软件包:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.10.2-no-jdk-linux-x86_64.tar.gz
解压后运行:
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 elasticsearch-7.10.2/bin/elasticsearch
ElasticSearch是可选服务,如果需要使用,可在后续启动app和webapi服务时指定Java参数:-Dmetasfresh.elasticsearch.host=localhost:9200
。
Web API服务
首先获取metasfresh-docker仓库代码,其中包含有最新发布的版本信息,以及配置和浏览器端包:
git clone https://github.com/metasfresh/metasfresh-docker.git
基于以下命令创建服务配置文件:
sed -e "s/FOO_APP/localhost/g" -e "s/FOO_DBMS/localhost/g" metasfresh-docker/app/sources/configs/metasfresh.properties >metasfresh.properties
从metasfresh-docker/docker-src/app/Dockerfile文件找到最新的发布版本,再据以下命令获取webapi服务包并运行:
export VERSION=5.170.2-349 curl -o webapi.jar https://repo.metasfresh.com/repository/mvn-release/de/metas/ui/web/metasfresh-webui-api/$VERSION+release/metasfresh-webui-api-$VERSION+release.jar /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -Xmx1G -DPropertyFile=metasfresh.properties -Dserver.port=8181 -Dwebui.frontend.url=http://localhost:8080 -jar webapi.jar
App服务(可选)
App服务主要是为Swing客户端使用,如果需要,执行以下命令启用:
export VERSION=5.170.2-349 curl -o app.jar https://repo.metasfresh.com/repository/mvn-release-releases/de/metas/dist/metasfresh-dist-serverRoot/$VERSION+release/metasfresh-dist-serverRoot-$VERSION+release.jar /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -Xmx1G -DPropertyFile=metasfresh.properties -Dserver.port=8282 -jar app.jar
在完成App服务部署后,除了访问http://localhost:8282/基础页面,另外还可以访问系统服务监控页面,路径为http://localhost:8282/serverMonitor,通过账号/密码metasfresh/metasfresh
登录。
Web UI服务
Web UI相关代码可以从metasfresh-docker仓库获取,如:
cp -r metasfresh-docker/docker-src/webui/sources/dist webui cp -r metasfresh-docker/docker-src/webui/sources/configs/config.js webui
调整config.js配置:
sed -i 's|http://MYDOCKERHOST:PORT||g' webui/config.js
虽然通过在启动Web API命令中追加-Dspring.resources.static-locations=file:webui
参数的方式,可以直接让metasfresh-webui-api.jar服务静态文件,但是由于sockjs模拟websocket的问题,需要借助Apache的代理功能。
Apache代码配置如下:
cp metasfresh-docker/webui/sources/configs/metasfresh_webui.conf webui.conf sed -i -e /ErrorLog /d -e /CustomLog /d -e /Order /d -e /Allow /d webui.conf sed -i -e 's|${APACHE_LOG_DIR}/||' webui.conf sed -i -e "s|/opt/metasfresh-webui-frontend/dist/|$PWD/webui/|" webui.conf sed -i -e 's|*:80|*:8080|' webui.conf sed -i -e s/webapi:8080/localhost:8181/ webui.conf apache2 -f $PWD/webui.conf
之后,在webui.conf文件开始部分添加:
LoadModule authn_core_module /usr/lib/apache2/modules/mod_authn_core.so LoadModule authz_core_module /usr/lib/apache2/modules/mod_authz_core.so LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so LoadModule mpm_event_module /usr/lib/apache2/modules/mod_mpm_event.so LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so LoadModule proxy_wstunnel_module /usr/lib/apache2/modules/mod_proxy_wstunnel.so LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so DirectoryIndex index.html ErrorLog /dev/shm/webui_error.log PidFile /dev/shm/webui.pid
完成上述配置文件调整后,通过以下命令启动Apache服务:
apache2 -f $PWD/webui.conf -k restart
更新
2021-07-25
- 更新版本到5.170;
- 调整app和webapi服务jar包获取方式;
- 调整metasfresh.properties文件获取方式;
- 调整文件路径组织;
- 调整app服务为可选;
- 调整app和webapi服务的端口号。