From 3cbef3cdfa121e5f9be8bc738bc10311a5c1dca8 Mon Sep 17 00:00:00 2001 From: dzdidi Date: Fri, 6 Dec 2024 16:48:16 +0100 Subject: [PATCH] installation guide for ubuntu Signed-off-by: dzdidi --- java/INSTALL.md | 131 ++++++++++++++++++++++++++++++++++++++++++++++++ java/README.md | 7 ++- 2 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 java/INSTALL.md diff --git a/java/INSTALL.md b/java/INSTALL.md new file mode 100644 index 0000000..6321fd2 --- /dev/null +++ b/java/INSTALL.md @@ -0,0 +1,131 @@ +# Installation guide without docker + +## Ubuntu + +### Install Java + +```sh +sudo apt update +sudo apt install openjdk-17-jdk +java -version +``` + +### Install and configure PostgreSQL + +```sh +sudo apt install postgresql + +sudo -u postgres psql +ALTER USER postgres with encrypted password ''; +quit +sudo systemctl restart postgresql.service +``` + +#### Verify +```sh +psql postgresql://postgres:@localhost:5432/postgres` +quit +``` + +### Install Gradle + +``` +sudo apt intall unzip +wget https://services.gradle.org/distributions/gradle-8.11.1-bin.zip -P /tmp +sudo mkdir /opt/gradle +sudo unzip -d /opt/gradle /tmp/gradle-8.11.1-bin.zip +export PATH=$PATH:/opt/gradle/gradle-8.11.1/bin +``` + +### Install Tomcat + +``` +sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat +VERSION=10.1.4 +wget https://www-eu.apache.org/dist/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp +sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/ +sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest +sudo chown -R tomcat: /opt/tomcat +sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh' +``` + +#### Systemd for tomcat +location: +``` +/etc/systemd/system/tomcat.service +``` +content: + +``` +[Unit] +Description=Tomcat 10 servlet container +After=network.target + +[Service] +Type=forking + +User=tomcat +Group=tomcat + +Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" +Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true" + +Environment="CATALINA_BASE=/opt/tomcat/latest" +Environment="CATALINA_HOME=/opt/tomcat/latest" +Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid" +Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" + +ExecStart=/opt/tomcat/latest/bin/startup.sh +ExecStop=/opt/tomcat/latest/bin/shutdown.sh + +[Install] +WantedBy=multi-user.target +``` + +#### Enable and start tomcat + +``` +sudo systemctl daemon-reload +sudo systemctl enable --now tomcat +sudo systemctl status tomcat +``` + +### Clone repo +``` +git clone https://github.com/lightningdevkit/vss-server.git +cd vss-server/java +``` + +### Configure by editing password for postgres in this file for the same one used in step 2 +``` +./app/src/main/resources/application.properties +``` + +### Build +Note: build command also does tests which are hardcoded to run against containerized posgress, so there will be some errors printed out, if errors are only about tests, then it is fine. +``` +gradle wrapper --gradle-version 8.1.1 +./gradlew build +``` + +### Deploy +``` +sudo cp app/build/libs/vss-1.0.war /opt/tomcat/latest/webapps/vss.war +``` + +### Verify deployment + +``` +curl --data-binary "$(echo "0A0773746F726549641A150A026B3110FFFFFFFFFFFFFFFFFF011A046B317631" | xxd -r -p)" http://localhost:8080/vss/putObjects + +curl --data-binary "$(echo "0A0773746F7265496412026B31" | xxd -r -p)" http://localhost:8080/vss/getObject +``` + +### Enable vss in nginx by adding: +``` +location /vss/ { + proxy_pass http://localhost:8080/vss/; +} +``` + +Restart nginx and try previous step from the external host machine diff --git a/java/README.md b/java/README.md index 0e5a545..4834293 100644 --- a/java/README.md +++ b/java/README.md @@ -9,6 +9,11 @@ This directory hosts the Java-based implementation of the Versioned Storage Serv - Install Docker (https://docs.docker.com/desktop/). - Install PostgreSQL 15 (https://www.postgresql.org/download/). + +### Installation without docker + +see [here](./INSTALL.md) + ### Building ``` @@ -46,7 +51,7 @@ gradle wrapper --gradle-version 8.1.1 #### To run just the VSS-server: -1. **Edit Configuration**: Modify the Dockerfile or application.properties to set application configurations and +1. **Edit Configuration**: Modify the Dockerfile or `./app/src/main/resources/application.properties` to set application configurations and environment variables as needed. Add PostgreSQL endpoint configuration. 2. Create table in PostgreSQL using `./app/src/main/java/org/vss/impl/postgres/sql/` 3. **Build the Docker Image**: