# Setup OneBusAway ## Setup * get the latest version of installed packages and refresh the repo cache ``` sudo apt update ``` * setup JDK version 8 (requirement of OneBusAway)\ NOTE: Refer to [Java setup](java.md) ``` sudo mkdir -p /usr/lib/jvm/open-jdk-8 -- sudo tar -xvzf ./OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz -C /usr/lib/jvm/open-jdk-8/ --strip-components=1 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/open-jdk-8/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/open-jdk-8/bin/javac 1 sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/open-jdk-8/bin/jar 1 sudo update-alternatives --install /usr/bin/jshell jshell /usr/lib/jvm/open-jdk-8/bin/jshell 1 ``` * validate Java version ``` update-alternatives --list java java -version sudo update-alternatives --config java * add user and group ``` sudo groupadd tomcat sudo mkdir -p /opt/tomcat sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat ``` * download and extract Tomcat 8 ``` wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz sudo tar -xvf apache-tomcat-8.5.78.tar.gz -C /opt/tomcat --strip-components=1 sudo chown -R tomcat: /opt/tomcat sudo sh -c 'chmod +x /opt/tomcat/bin/*.sh' ``` * create Systemd service file ``` sudo vi /etc/systemd/system/tomcat.service systemctl daemon-reload sudo systemctl start tomcat sudo systemctl enable tomcat systemctl status tomcat * configure Tomcat 8 ``` sudo cp /opt/tomcat/conf/tomcat-users.xml /opt/tomcat/conf/tomcat-users.xml.backup sudo vi /opt/tomcat/conf/tomcat-users.xml sudo cp /opt/tomcat/webapps/manager/META-INF/context.xml /opt/tomcat/webapps/manager/META-INF/context.xml.backup sudo vi /opt/tomcat/webapps/manager/META-INF/context.xml sudo cp /opt/tomcat/webapps/host-manager/META-INF/context.xml /opt/tomcat/webapps/host-manager/META-INF/context.xml.backup sudo vi /opt/tomcat/webapps/host-manager/META-INF/context.xml sudo systemctl restart tomcat systemctl status tomcat ``` * adjust firewall ``` sudo ufw status sudo ufw allow 8080 sudo ufw status sudo ufw reload sudo ufw enable ``` * validate ``` ss -tpln ``` * open Tomcat in Browser using the address ```http://localhost:8080``` * install MySQL ``` wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb sudo apt update sudo apt install mysql-server sudo systemctl status mysql mysql_secure_installation mysql -u root -p ``` * define Tomcat memory using OBA Config and Deploy guide and [this](https://mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/) guide ``` sudo find / -name "catalina.sh" sudo vi /opt/tomcat/bin/catalina.sh sudo -u tomcat vi /opt/tomcat/bin/setenv.sh sudo sh -c 'chmod +x /opt/tomcat/bin/*.sh' export JAVA_OPTS="-Dfile.encoding=UTF-8 -Xms128m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m" sudo systemctl restart tomcat sudo systemctl status tomcat ``` * download the binaries ``` mkdir ~/oba mkdir oba cd oba wget https://repo.camsys-apps.com/releases/org/onebusaway/onebusaway-transit-data-federation-builder/2.0.0/onebusaway-transit-data-federation-builder-2.0.0-withAllDependencies.jar wget https://repo.camsys-apps.com/releases/org/onebusaway/onebusaway-transit-data-federation-webapp/2.0.0/onebusaway-transit-data-federation-webapp-2.0.0.war wget https://repo.camsys-apps.com/releases/org/onebusaway/onebusaway-api-webapp/2.0.0/onebusaway-api-webapp-2.0.0.war wget https://repo.camsys-apps.com/releases/org/onebusaway/onebusaway-enterprise-acta-webapp/2.0.0/onebusaway-enterprise-acta-webapp-2.0.0.war ``` * Download the Transit GTFS Data From the Transit Agency ``` mkdir -p oba/gtfs cd oba/gtfs/ wget http://data.ndovloket.nl/flixbus/flixbus-eu.zip ``` * Build the Transit Data Bundle ``` cd oba/gtfs java -version java -jar -Xss4m -Xmx1g ~/oba/onebusaway-transit-data-federation-builder-.jar ~/oba/gtfs/.zip ~/oba/gtfs ``` * Download the MySQL Connector Java Library ``` cd ~/oba wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.28.tar.gz tar -zxvf mysql-connector-java-8.0.28.tar.gz mv mysql-connector-java-8.0.28/mysql-connector-java-8.0.28.jar . rm -rf mysql-connector-java-8.0.28.tar.gz rm -rf mysql-connector-java_8.0.28-1debian11_all.deb rm -rf mysql-connector-java-8.0.28 ``` * Create the MySQL Database ``` sudo -u root mysql -p -e "CREATE DATABASE oba; GRANT ALL PRIVILEGES ON oba.* TO 'oba'@'localhost' IDENTIFIED BY '``` * change ```agencyId``` value to ```Flix``` * change ```refreshInterval``` value to ```60``` * change ```tripUpdatesUrl``` value to ```https://wimb-api-ops-gis.ew1p3.k8s.mfb.io/v1/gtfs-rt/flavour/rmv/region/de/agency/bus_train/trip-update``` * change ```vehiclePositionsUrl``` value ```to https://wimb-api-ops-gis.ew1p3.k8s.mfb.io/v1/gtfs-rt/flavour/rmv/region/de/agency/bus_train/vehicle-position``` * change ```alertsUrl``` value to ```https://wimb-api-ops-gis.ew1p3.k8s.mfb.io/v1/gtfs-rt/flavour/rmv/region/de/agency/bus_train/alerts``` ``` sudo cp /var/lib/tomcat8/webapps/onebusaway-transit-data-federation-webapp/WEB-INF/classes/data-sources.xml /var/lib/tomcat8/webapps/onebusaway-transit-data-federation-webapp/WEB-INF/classes/data-sources.xml.backup sudo vi /var/lib/tomcat8/webapps/onebusaway-transit-data-federation-webapp/WEB-INF/classes/data-sources.xml ``` * Deploy and Configure the OneBusAway API Webapp * copy files ``` sudo mkdir /var/lib/tomcat8/webapps/onebusaway-api-webapp ls -ltha /var/lib/tomcat8/webapps cd /var/lib/tomcat8/webapps/onebusaway-api-webapp sudo mv ~/oba/onebusaway-api-webapp-2.0.0.war /var/lib/tomcat8/webapps/onebusaway-api-webapp/ ls /var/lib/tomcat8/webapps/onebusaway-api-webapp/ sudo jar xvf /var/lib/tomcat8/webapps/onebusaway-api-webapp/onebusaway-api-webapp-2.0.0.war ls sudo rm -rf /var/lib/tomcat8/webapps/onebusaway-api-webapp/onebusaway-api-webapp-2.0.0.war ls ``` * copy the MySQL Driver ``` cd /var/lib/tomcat8/webapps/onebusaway-api-webapp/WEB-INF/lib sudo cp ~/oba/mysql-connector-java-8.0.28.jar . ``` * configure the OneBusAway API Webapp * insert last bean * change value of ```username``` to ```oba``` twice * change value of ```password``` to `````` twice ``` cd /var/lib/tomcat8/webapps/onebusaway-api-webapp/WEB-INF/classes/ ls sudo cp data-sources.xml data-sources.xml-backup sudo vi data-sources.xml ``` * Deploy and Configure the OneBusAway Enterprise ACTA Webapp * copy files ``` rm -rf /var/lib/tomcat8/webapps/ROOT/* sudo mkdir ROOT cd /var/lib/tomcat8/webapps/ROOT sudo mv ~/oba/onebusaway-enterprise-acta-webapp-2.0.0.war /var/lib/tomcat8/webapps/ROOT/ ls sudo jar xvf /var/lib/tomcat8/webapps/ROOT/onebusaway-enterprise-acta-webapp-2.0.0.war sudo rm -rf /var/lib/tomcat8/webapps/ROOT/onebusaway-enterprise-acta-webapp-2.0.0.war ls * copy MySQL Driver ``` cd /var/lib/tomcat8/webapps/ROOT/WEB-INF/lib sudo cp ~/oba/mysql-connector-java-8.0.28.jar . ls ``` * configure the OneBusAway API Webapp * change value of ```username``` to ```oba``` * change value of ```password``` to `````` ``` cd /var/lib/tomcat8/webapps/ROOT/WEB-INF/classes ls sudo cp data-sources.xml data-sources.xml-backup ``` * Start the Tomcat8 Service * In a SSH terminal you may want to run the following command so that you can watch the console output of the Tomcat8 service as OneBusAway starts up for the first time: ``` tail -f /var/log/tomcat8/catalina.out ``` * start the Tomcat8 Service ``` sudo service tomcat8 start ``` * or ``` systemctl status tomcat.service sudo systemctl restart tomcat.service systemctl status tomcat.service ``` ## Links * [OneBusAway/onebusaway:Configuration and Deployment Guide for v2.x](https://github.com/OneBusAway/onebusaway/wiki/Configuration-and-Deployment-Guide-for-v2.x) * [How to Install Apache Tomcat on Debian 11](https://www.linuxtechi.com/how-to-install-apache-tomcat-on-debian/) * [How to Install Apache Tomcat on Debian 11](https://www.itzgeek.com/how-tos/linux/debian/how-to-install-apache-tomcat-on-debian-11.html) * [How to install MySQL on Debian 11](https://codepre.com/en/como-instalar-mysql-en-debian-11.html)