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 (1)
great buddy. you cover all the steps. appreciate your work