Deploying a Node.js application on an AWS EC2 instance is a crucial skill for backend developers. This guide walks you through deploying your Node.js application using the Tabby SSH Client. Let’s get started!
Prerequisites
1. AWS EC2 Instance
-
Ensure your EC2 instance is launched with the following:
- Security Group allowing:
- SSH (port 22)
- HTTP (port 80)
- HTTPS (port 443)
- Security Group allowing:
2. Tabby SSH Client
Installed and configured on your local machine.
Your private key for EC2 access added to Tabby.
3. Dependencies
- Node.js application code hosted on a Git repository.
- Optional: A domain name for production HTTPS setup.
Step-by-Step Deployment
Step 1: Connect to the EC2 Instance
Launch the Tabby SSH Client.
-
Connect to the EC2 instance using:
- Public IP address
- Private key associated with the instance.
Step 2: Install Required Dependencies on EC2
Once connected, update the system and install necessary packages.
Update System Packages
sudo apt update && sudo apt upgrade -y
Install Node.js and npm
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Install Git
sudo apt install git -y
Install PM2 (Optional, for Production Management)
sudo npm install -g pm2
Step 3: Clone Your Node.js Repository
- Navigate to your desired directory (e.g., /var/www):
cd /var/www
- Clone the repository:
git clone <your-repo-url> app-name
cd app-name
Step 4: Set Up the Application
Install Node.js Dependencies
npm install
Configure Environment Variables
- Create an .env file:
touch .env
- Open the file in a text editor to add your environment variables:
nano .env
- Save and exit the editor.
Step 5: Start the Application
Run the Application
npm run start
Or Use PM2 for Process Management
pm2 start app.js # Replace 'app.js' with your main application file
Step 6: Access the Application
- Open a browser and navigate to:
http://<your-ec2-public-ip>:<port>
Example:
http://13.60.229.203:5001/
- You should see your application running.
Next Steps
Optional Enhancements
- Domain Setup: Point your domain to the EC2 public IP using DNS records.
- SSL with Let’s Encrypt: Use Certbot to enable HTTPS.
- Load Balancing: Add AWS Elastic Load Balancer for scaling.
Conclusion
Congratulations! You’ve successfully deployed a Node.js application on an AWS EC2 instance using Tabby SSH Client. This setup ensures a reliable and scalable environment for your application.
Share your experiences or ask questions in the comments below. Happy coding!
Top comments (0)