Skip to content

Instantly share code, notes, and snippets.

@Harsh-js
Forked from piyushgarg-dev/nginx_aws.md
Created October 6, 2023 11:04
Show Gist options
  • Save Harsh-js/ad9da4b6a1b5abf9e5e7092c04f8fef3 to your computer and use it in GitHub Desktop.
Save Harsh-js/ad9da4b6a1b5abf9e5e7092c04f8fef3 to your computer and use it in GitHub Desktop.

Revisions

  1. Piyush Garg revised this gist Mar 11, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion nginx_aws.md
    Original file line number Diff line number Diff line change
    @@ -78,7 +78,7 @@ sudo nginx -s reload
    ```
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    sudo apt-get install python-certbot-nginx
    sudo apt-get install python3-certbot-nginx
    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
    # Only valid for 90 days, test the renewal process with
  2. Piyush Garg revised this gist Mar 11, 2023. 1 changed file with 66 additions and 0 deletions.
    66 changes: 66 additions & 0 deletions nginx_aws.md
    Original file line number Diff line number Diff line change
    @@ -3,8 +3,10 @@
    > Steps to deploy a Node.js app to DigitalOcean using PM2, NGINX as a reverse proxy and an SSL from LetsEncrypt
    ## 1. Create Free AWS Account
    Create free AWS Account at https://aws.amazon.com/

    ## 2. Create and Lauch an EC2 instance and SSH into machine
    I would be creating a t2.medium ubuntu machine for this demo.

    ## 3. Install Node and NPM
    ```
    @@ -17,4 +19,68 @@ node --version
    ## 4. Clone your project from Github
    ```
    git clone https://github.com/piyushgargdev-01/short-url-nodejs
    ```

    ## 5. Install dependencies and test app
    ```
    sudo npm i pm2 -g
    pm2 start index
    # Other pm2 commands
    pm2 show app
    pm2 status
    pm2 restart app
    pm2 stop app
    pm2 logs (Show log stream)
    pm2 flush (Clear logs)
    # To make sure app starts when reboot
    pm2 startup ubuntu
    ```

    ## 6. Setup Firewall
    ```
    sudo ufw enable
    sudo ufw status
    sudo ufw allow ssh (Port 22)
    sudo ufw allow http (Port 80)
    sudo ufw allow https (Port 443)
    ```

    ## 7. Install NGINX and configure
    ```
    sudo apt install nginx
    sudo nano /etc/nginx/sites-available/default
    ```
    Add the following to the location part of the server block
    ```
    server_name yourdomain.com www.yourdomain.com;
    location / {
    proxy_pass http://localhost:8001; #whatever port your app runs on
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    }
    ```
    ```
    # Check NGINX config
    sudo nginx -t
    # Restart NGINX
    sudo nginx -s reload
    ```

    ## 8. Add SSL with LetsEncrypt
    ```
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    sudo apt-get install python-certbot-nginx
    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
    # Only valid for 90 days, test the renewal process with
    certbot renew --dry-run
    ```
  3. Piyush Garg created this gist Mar 11, 2023.
    20 changes: 20 additions & 0 deletions nginx_aws.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    # Node.js Deployment

    > Steps to deploy a Node.js app to DigitalOcean using PM2, NGINX as a reverse proxy and an SSL from LetsEncrypt
    ## 1. Create Free AWS Account

    ## 2. Create and Lauch an EC2 instance and SSH into machine

    ## 3. Install Node and NPM
    ```
    curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt install nodejs
    node --version
    ```

    ## 4. Clone your project from Github
    ```
    git clone https://github.com/piyushgargdev-01/short-url-nodejs
    ```