66 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Heroku Deployment Guide
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								1.  Create a Heroku account.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								2.  After making an account, you can go to your <a href='https://dashboard.heroku.com/apps' target='_blank' rel='nofollow'>dashboard</a>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								3.  Click the + sign in the top right hand corner and click Create New App (just like you're making a new repo on github). Give it a name, and click Create.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.  After creating the app you'll see its name in your dashboard. Click on it.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								2.  You'll be taken to a dashboard for that app. Click on the Deploy tab.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								3.  There you'll be pleased to find that you can connect to a github repo. In the Deployment Method section, choose Github and authenticate by signing into Github.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								4.  Right below that, fill in your github repo name. (This of course requires that you've pushed a repo to github from either cloud9 or your local machine...and that you've correctly configured it. More on that below.)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								5.  Scroll down again and click Automatic Deploy or scroll down even more and click Manual Deploy. After a few moments you should see your app running at your-repo-name.herokuapp.com. Sweet.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Creating your app locally or on Cloud9
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.  Make a new folder called timestamp-microservice (or whatever your project is called).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ mkdir timestamp-microservice && cd timestamp-microservice`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.  Create the files you're going to need:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ touch .env .gitignore README.md index.html server.js`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.  Install the packages that you need along the way
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Examples:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ npm install --save express`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ npm install --save moment`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								These will get added to a folder called node_modules in your root folder.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.  Initialize the project with a package.json by doing `$ npm init`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								It'll ask you a series of questions and create a package.json file in your root folder based on your answers and its defaults. If you've already created a file called server.js as mentioned above, this _essential_ line will get added to your package.json file:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      "scripts": {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      "start": "node server.js"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you name it anything else, though, like 'index.js', that line won't get added and you'll have to manually add that. That's the default behavior as mentioned <a href='https://docs.npmjs.com/files/package.json#default-values' target='_blank' rel='nofollow'>here</a>. You can install node modules before or after this step and they will get added to package.json automatically.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.  When you're ready, create a new repository on github, copy the remote URL, and initialize the project locally by doing:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ git init`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ git add .`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ git commit -m "initial commit"`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ git remote add origin <your github url>`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`$ git push -u origin master`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Tip: In your server.js file, make sure to use `app.listen(process.env.PORT || <default port>)` so that the app works on heroku.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Return to step 7 above.
							 |