Vagrant: Ubuntu, Oracle JDK, Payara and MySQL
Here is how to setup a JEE dev box with VirtualBox and Vagrant.
Overview
- Ubuntu 14.04
- Oracle JDK 8
- Payara 4.1
- MySQL 5.6
Access from host environment:
- Payara: https://localhost:14848 (admin / admin)
- MySQL: jdbc:mysql://localhost:13306 (root / root)
Scripts
Vagrant file: Provisioned ubuntu/trusty64 with forwarded ports to access Payara and MySQL from the host environment.
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "ubuntu/trusty64" config.vm.box_version = "20170505.0.0" config.vm.provision :shell, path: "bootstrap/run.sh" config.vm.network :forwarded_port, guest:4848, host:14848 config.vm.network :forwarded_port, guest:3306, host:13306 end
Oracle JDK 8: a fully automated installation script.
echo "Installing Java 8" sudo apt-get -y install software-properties-common python-software-properties echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections sudo add-apt-repository -y ppa:webupd8team/java sudo apt-get update sudo apt-get -y install oracle-java8-installer sudo apt-get -y install oracle-java8-set-default
Payara 4.1.1: installation script including config for remote access.
PAYARA_DIR="payara41" INSTALL_DIR="/opt/$PAYARA_DIR" if [ ! -d "$INSTALL_DIR" ]; then echo "Installing Payara 4.1.1" VERSION=4.1.1.171.1 ZIP_ARCHIVE="$PAYARA_DIR.zip" sudo apt-get -y install unzip wget -O "$ZIP_ARCHIVE" http://search.maven.org/remotecontent?filepath=fish/payara/distributions/payara/"$VERSION"/payara-"$VERSION".zip unzip ./$ZIP_ARCHIVE mv ./$PAYARA_DIR /opt/ rm ./$ZIP_ARCHIVE fi echo "Enabling Secure Admin to access the DAS remotely" ADMIN_USER=admin ADMIN_PASSWORD=admin function create_password_file { sudo touch $1 sudo chown vagrant:vagrant $1 chmod 777 $1 echo -e $2 >> $1 } echo ".. creating tmp file" TMP_FILE=/opt/tmpfile create_password_file $TMP_FILE "AS_ADMIN_PASSWORD=\nAS_ADMIN_NEWPASSWORD=$ADMIN_PASSWORD" echo ".. creating pwd file" PWD_FILE=/opt/pwdfile create_password_file $PWD_FILE "AS_ADMIN_PASSWORD=$ADMIN_PASSWORD" echo ".. restarting domain" ASADMIN_CMD=$INSTALL_DIR/bin/asadmin $ASADMIN_CMD start-domain && \ $ASADMIN_CMD --user $ADMIN_USER --passwordfile="$TMP_FILE" change-admin-password && \ $ASADMIN_CMD --user $ADMIN_USER --passwordfile="$PWD_FILE" enable-secure-admin && \ $ASADMIN_CMD restart-domain echo ".. cleaning up" rm $TMP_FILE
MySQL 5.6: installation script allowing a remote root access (don’t use in production!).
VERSION=5.6 ADMIN_PWD=root echo "Installing MySQL 5.6" sudo debconf-set-selections <<< 'mysql-server-'"$VERSION"' mysql-server/root_password password '"$ADMIN_PWD"'' sudo debconf-set-selections <<< 'mysql-server-'"$VERSION"' mysql-server/root_password_again password '"$ADMIN_PWD"'' sudo apt-get -y install mysql-server-"$VERSION" echo "Enabling remote access" for flag in {skip-external-locking,bind-address} do sudo sed -i.bak "s/$flag/#$flag/g" /etc/mysql/my.cnf done echo "Restarting mysql service" sudo service mysql restart echo "Granting privileges" mysql -u root -proot -Bse "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';"
Thanks for reading and happy coding.