Amazon Lightsail is a service that lets you spin up managed service quickly with a shell script.
First login to your Amazon Lightsail account and create an instance
These are the insance settings that are working. Your mileage may vary for something not indicated in this list.
Select OS Only
Add Launch Script (script below)
Select 1GB - $5 plan.
Assign a name to your instance under "Identify Your Instance"
That's basically it for settings!
Now before you click create, you'll need the following template to get your site working on Amazon Lightsail. You only get one shot at this when it initializes. You can't do this later.
Full script at the end but here is the play by play
1. Install Java
Commandbox needs Java to run
# They try to ship out Ubuntu as light as possible so you'll want to run this first to get all the latest repo informationsudo apt-get update# install java openJDK 8 for commandboxyes | sudo apt-get install openjdk-8-jre
2. Install Commandbox
This is taken directly from (https://commandbox.ortusbooks.com/setup/installation)
#taken straight from ortus docs commandbox installcurl -fsSl https://downloads.ortussolutions.com/debs/gpg | sudo apt-key add -echo "deb http://downloads.ortussolutions.com/debs/noarch /" | sudo tee -a /etc/apt/sources.list.d/commandbox.listsudo apt-get update && sudo apt-get install commandbox
3. Download your code/repo
In this template, we are using Ortus' awesome Github repo with Elixir and Vue.js. There are other ways like copying over from a local file with SSH or use a disk that you created in Amazon Lightsail that will persist even if the instance is delete. Notice here that we saved it to the
/app directory. Note that for later when you run your app, to navigate to it.
sudo git clone https://github.com/coldbox-templates/elixir-vuejs.git /app
4. Install any dependencies
For example you can run your box dependencies or if you are using webpack, this would be the time to get all that compiled.
cd /app && sudo box install
5. Run the server
In here we start the server in the
/app directory. We set the host to
0.0.0.0 so that it listens on any interface/hostname assigned to it. Also, we define the port
80 so that it's not some random port generated by commandbox. Long story short, when this thing runs, we know all we need to do is hit the IP address that Amazon Lightsail assigned to it.
cd /app && sudo box start --debug host=0.0.0.0 port=80
sudo apt-get update#install java openJDK 8 for commandbox. For openJDK 11,you can use apt-get install default-jreyes | sudo apt-get install openjdk-8-jre#taken straight from ortus docs commandbox installcurl -fsSl https://downloads.ortussolutions.com/debs/gpg | sudo apt-key add -echo "deb http://downloads.ortussolutions.com/debs/noarch /" | sudo tee -a /etc/apt/sources.list.d/commandbox.listsudo apt-get update && sudo apt-get install commandbox#might need this later for webpackyes | sudo apt install npm#clone your repo to the /app directory, just like Ortus doessudo git clone https://github.com/coldbox-templates/elixir-vuejs.git /app#start server and expose it to the worldcd /app && sudo box installsudo box start --debug host=0.0.0.0 port=80#Note: For openJDK 11 to work, you will need to add a JVM arg to prevent this issue https://luceeserver.atlassian.net/browse/LDEV-1138#sudo box start --debug host=0.0.0.0 port=80 JVMArgs="-Djdk.attach.allowAttachSelf=true"
All you have to do is create your instance. It will boot up and when it is finally running, you should have a Public IP address assigned to it...But don't be in to big of a hurry. With these settings, it takes about 4 minutes and 30 seconds before Commandbox is serving something. Wait for it and enjoy!