---
type: video
yt_id: VVU2YVRMdUlfajQtMHdpRFN6bWFQY3RRLm9IQVEzVHpVVHJv
videoId: oHAQ3TzUTro
title: "Deploy Node app on AWS EC2 Amazon Linux 2"
date: "2021-09-18T18:29:42Z"
slug: "deploy-node-app-on-aws-ec2-amazon-linux-2"
image:
name: "deploy-node-app-on-aws-ec2-amazon-linux-2.jpg"
alt: "Deploy Node app on AWS EC2 Amazon Linux 2"
width: 1280
height: 720
status: 'published'
description: "Deploy Node app on AWS EC2 Amazon Linux 2 by installing node js and setting the app up as a systemd service"
tags: ["install node", "install node on amazon linux 2", 'aws', 'cloud computing']
previousPostSlug: 'nginx-reverse-proxy-on-aws-ec2-amazon-linux-2'
nextPostSlug: 'mysql-on-aws-ec2-amazon-linux-2'
---
Deploy Node app on AWS EC2 Amazon Linux 2 by installing node js and setting the app up as a systemd service
## Chapters:
* 0:00 Intro
* 0:14 Setting up an EC2 Instance
* 2:31 Installing Node
* 3:21 git clone code onto the instance
* 4:28 Running the node app
* 6:13 Environment Variables
* 9:38 Systemd service
* 14:13 Summary
---
## Code
https://github.com/sam-meech-ward-bcit/lotr
### Node
```sh
sudo yum install -y gcc-c++ make
curl -sL https://rpm.nodesource.com/setup_16.x | sudo -E bash -
sudo yum install -y nodejs
```
### Git
```
sudo yum install -y git
```
### systemd service
```sh
sudo vim /etc/systemd/system/YourAppName.service
```
```
[Unit]
Description=YourAppName
After=multi-user.target
[Service]
ExecStart=/usr/bin/node /home/ec2-user/your_app_dir/server.js
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=YourAppName
User=ec2-user
EnvironmentFile=/home/ec2-user/your_app_dir/app.env
[Install]
WantedBy=multi-user.target
```
Remember to put the environment variables in `/home/ec2-user/your_app_dir/app.env`
And make sure each env var is put on a new line.
```
sudo systemctl enable YourAppName.service
sudo systemctl start YourAppName.service
```
## nginx reverse proxy (optional)
```
sudo amazon-linux-extras install nginx1 -y
sudo systemctl enable nginx
sudo systemctl start nginx
```
```sh
sudo vim /etc/nginx/nginx.conf
```
```
location / {
proxy_pass http://localhost:8080;
}
```
```
sudo systemctl restart nginx
```