Skip to content

Commit 6199e4a

Browse files
authored
Merge pull request botpress#89 from wac2007/master
Aws Deployment Docs
2 parents 9125acd + f52092e commit 6199e4a

File tree

2 files changed

+94
-1
lines changed

2 files changed

+94
-1
lines changed

docs/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
* [Advanced Topics](advanced-topics.md)
55
* [CLI Reference](cli-reference.md)
66
* [Core Reference](core-reference.md)
7-
* [Debugging](debugging.md)
7+
* [Debugging](debugging.md)
8+
* [Deploying](deploying.md)

docs/deploying.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Deployment
2+
3+
Here you find how to deploy your application to a Server.
4+
5+
## Amazon AWS (EC2)
6+
7+
#### 1 - First you need to have a custom domain name bought (can be bought in AWS)
8+
9+
#### 2 - Go to [Route 53](https://console.aws.amazon.com/route53) click in hosted zones, created hosted zone and add your custom domain with type Public Hosted Zone.
10+
OBS: You may need confirm the domain you using. AWS sends an email to address of the domain owner.
11+
12+
2.1 - Click on your domain name and you will see the NS Register. Go to your domain register provider and configure the Name Servers (NS) with these on Hosted Zone.
13+
14+
#### 3 - Go to [AWS Certificate Manager](https://console.aws.amazon.com/acm/) click o request a new Certificate
15+
3.1 - In the field domain name, create a wildcard **.yourdomain.com* and click review and request.
16+
17+
3.2 - Amazon will send an confirmation email to the email linked to the domain, click on link to confirm this domain belongs to you.
18+
19+
#### 4 - Go to [Amazon EC2](https://console.aws.amazon.com/ec2/) in the left bar under _Network & Security_ click on Keypairs.
20+
21+
4.1 - Click on create, name your keypair and will be downloaded automatically. SAVE IT IN A SECURE PLACE OR YOU WILL NOT BE ABLE TO ACESS THIS MACHINE AGAIN!!
22+
23+
#### 5 - Click on instances, launch instances, select ubuntu server 16.04 LTS, Select The instance type you desire and launch.
24+
25+
5.1 - When it's online, select your created instance and, if you don't selected a security group, there's created a new one.
26+
27+
5.2 - Click on this name and you will be in Security Groups List (There's a link in left panel).
28+
29+
5.3 - Go to Inbound tab, click on edit and Add Rule for your Port Http (80) and Https (443).
30+
31+
#### 4 - Go to Load Balancers (Left Bar) and create a new Load Balancer, selecting Application Load Balancer and click in next.
32+
33+
4.1 - In Basic Configuration, name-it default (or anyway you like) and in listeners, add listeners to the ports 80 and 443.
34+
35+
4.2 - Select Desired Availability Zones inside your VPC and click next
36+
37+
4.3 - (Step 2) In Certificate Type, choose an existing certificate then we created in step 3. Click Next.
38+
39+
4.4 - (Step 3) Select the same Security group then you're using in your EC2 Instance.
40+
41+
4.5 - (Step 4) Select new Target Group, name it as default (or anyway you like), keep protocol http and port 80 in target group.´
42+
43+
4.6 - (Step 4) In health checks select protocol http and put an path to health status. (The aws will ping this url to check if the server is alive)
44+
45+
4.7 - Select the machines you want to put under this load balance (We created just one for this example) and create.
46+
47+
48+
#### 5 - Back [Route 53](https://console.aws.amazon.com/route53) and enter in your hosted zone (domain)
49+
50+
5.2 - Click on create record set, name it bot, type cname and check "alias" to yes
51+
52+
5.3 - In target name, find your load balance.
53+
54+
5.4 - Let policy simple and Evaluate Target Health No. Click Create
55+
56+
#### 6 - Remember of .pem file of step 4? Find his directory and filename and put in YOUR_KEY_DIRECTORY
57+
58+
6.1 - Connect on your machine by ssh ```ssh YOUR_KEY_DIRECTORY ubuntu@YOUR_AMAZON_AWS_PUBLIC_DNS```
59+
60+
Obs: Go to EC2 -> Instances -> Select your instance and See "Public DNS (IPV4)"
61+
62+
Obs2: If you use windows [Git Bash (Distributed with Git for Windows)](https://git-scm.com/downloads) it's an excellent choice.
63+
64+
#### 7 - Now you connected, run this commands
65+
66+
```cd ~```
67+
68+
```curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh```
69+
70+
```sudo bash nodesource_setup.sh```
71+
72+
7.1 - Then install NodeJs and NPM with
73+
74+
```sudo apt-get install nodejs```
75+
76+
7.2 - Next you need to compile some source files
77+
78+
```sudo apt-get install build-essential```
79+
80+
7.3 - You can run ```npm --version``` and ```node --version``` to check if instalation is ok.
81+
82+
#### 8 - [Install pm2 to manage process](https://github.com/Unitech/pm2)
83+
84+
```npm install -g pm2``
85+
86+
#### 9 - [Setup Nginx and pm2](https://doesnotscale.com/deploying-node-js-with-pm2-and-nginx/)
87+
88+
#### 10 - Clone your project inside some server folder (i like to put into /var/app/myapp)
89+
90+
9.1 - Go to your app folder and run ```npm install```
91+
92+
9.2 - Put your app into production! ```pm2 start npm -- start``` that's all folks!

0 commit comments

Comments
 (0)