Building and Deploying Moose Applications
Viewing typescript
switch to python
This guide will walk you through the process of building a Moose application and deploying it to a server that does not have internet access. We’ll cover both the build environment setup and the deployment environment requirements.
Build Environment Setup
Prerequisites
Before you can build a Moose application, you need to set up your build environment with the following dependencies:
OS:
- Debian 10+
- Ubuntu 18.10+
- Fedora 29+
- CentOS/RHEL 8+
- Amazon Linux 2023+
- Mac OS 13+
Common CLI utilities:
- zip
- curl (optional, for installing the Moose CLI)
Typescript build environment requirements:
- Node.js 20 or later
- npm, yarn or pnpm package manager
- Moose CLI
Python build environment requirements:
- Python 3.12 or later (we recommend using pyenv for Python version management)
- pip
Setting up the Build Environment
First, ensure you have Node.js installed. We recommend using nvm (Node Version Manager):
# Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# Reload shell configuration
source ~/.bashrc # or ~/.zshrc
# Install and use Node.js 20
nvm install 20
nvm use 20
Verify the installation:
node --version
npm --version # or yarn --version
First, install the required system dependencies:
sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev curl git libncursesw5-dev xz-utils \
tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Install pyenv and configure your shell:
curl -fsSL https://pyenv.run | bash
Add the following to your ~/.bashrc
or ~/.zshrc
:
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
Install and set Python 3.12:
pyenv install 3.12
pyenv global 3.12
Verify the installation:
python --version
Installing Moose CLI (Optional)
You can install the Moose CLI using the official installer:
curl -SfsL https://fiveonefour.com/install.sh | bash -s -- moose
source ~/.bashrc # Or restart your terminal
or
pip install moose-cli
npm install -g @514labs/moose-cli
Building Your Application
1. Initialize a New Project (Optional)
This step is optional if you already have a Moose project. Create a new Moose project:
moose init your-project-name ts
cd your-project-name
Install dependencies:
npm install # or yarn install
moose init your-project-name py
cd your-project-name
2. Build the Application
Make sure you have the zip
utility installed (sudo apt install zip
) before building your application.
if you installed the moose cli to be available globally, you can build the application with the following command:
moose build
Or if you installed the moose cli to be available locally, you can build the application with the following command:
Create the deployable package:
npm run moose-cli build
The build process will create a deployable package:
moose build
This will create a zip file in your project directory with a timestamp, for example: your-project-name-YYYY-MM-DD.zip
Deployment Environment Setup
Prerequisites
The deployment server requires:
- Node.js 20 or later
- Unzip utility
- Python 3.12 or later
- Unzip utility
Setting up the Deployment Environment
- Install the runtime environment:
Follow the Node.js installation steps from the build environment setup section.
Follow the Python installation steps from the build environment setup section.
- Install the unzip utility:
sudo apt install unzip
Deploying Your Application
-
Copy your built application package to the deployment server
-
Extract the application:
unzip your-project-name-YYYY-MM-DD.zip -d ./app
cd ./app/packager
- Start your application:
# If using npm scripts
npm run moose-cli prod
# Or directly with moose
moose prod
moose prod
Ensure all required environment variables and configurations are properly set before starting your application.
Troubleshooting
- Verify that Node.js is properly installed using
node --version
- Check that your application’s dependencies are properly listed in
package.json
- If you encounter TypeScript compilation errors, ensure your
tsconfig.json
is properly configured
- Verify that Python is properly installed using
python --version
- Check that your application’s dependencies are properly listed in
requirements.txt
- If you encounter Python import errors, ensure your
PYTHONPATH
is properly set