103 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			103 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: How to Install the Mean Stack on Mac Osx
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								To install MongoDB, you should have Mac OS X 10.6 (Snow Leopard) or above. To find out which version of OS X you own, click the  icon in the top left corner of your screen and select `About This Mac`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 **WARNING:** do a Time Machine backup before carrying out any of the following steps!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Step 1: installing MongoDB
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The easiest way to install MongoDB on OS X is using <a href='http://brew.sh/' target='_blank' rel='nofollow'>HomeBrew</a>. If you haven't used HomeBrew before, simply execute the following command in a Terminal window:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								After HomeBrew is successfully installed, follow up with this command:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    brew update && brew install mongodb
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								HomeBrew will automatically install all the dependencies for you.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Step 2: installing Node.js
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Again, we'll let HomeBrew do the heavy lifting:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    brew install node
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The npm executable is already included in the Node.js package.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Before continuing, let's make sure Node.js modules can be found by others ( **CAUTION**: it's best to copy and paste these commands, as you'd lose the original contents of your `.bashrc` file if you typed `>` in place of `>>`):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    echo 'export NODE_PATH="./node_modules:/usr/local/lib/node_modules"' >> ~/.bashrc && source ~/.bashrc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To check if the configuration is in effect, execute:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    echo $NODE_PATH
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You should see `./node_modules:/usr/local/lib/node_modules` printed out below your command.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you use a different shell than Bash, simply replace `~/.bashrc` with your shell configuration file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Step 3: installing fullstack tools
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    npm install -g express yo grunt grunt-cli generator-angular-fullstack bower
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Step 4: generating a fullstack app
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Make a directory for your Back End Project projects. Assuming your desktop is your de facto workspace:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    mkdir ~/Desktop/Back End Projects && cd ~/Desktop/Back End Projects
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Now that all the preparations are in place, it's time for the main event:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    yo angular-fullstack
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Answer the questions according to checklist items <span class="hashtag">#13-23</span> of <a href='http://www.freecodecamp.com/challenges/get-set-for-our-back-end-development-projects' target='_blank' rel='nofollow'>Challenge: Get Set for Back End Projects</a>. Consult <span class="hashtag">#24-27</span> if you run into errors. This will download ~350MB worth of files into your current directory.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Before going any further, we need to fix a <a href='https://github.com/clnhll/guidetobasejumps#fixing-exportsupdate' target='_blank' rel='nofollow'>known issue</a> in some generated files:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    echo "sed -i '' -e 's/_.merge/_.extend/' server/api/*/*.controller.js" > \
							 | 
						||
| 
								 | 
							
								    fix-exports-update.sh && chmod +x fix-exports-update.sh && \
							 | 
						||
| 
								 | 
							
								    ./fix-exports-update.sh
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You need to run `./fix-exports-update.sh` every time you generate a new API endpoint (until they fix this upstream, that is).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Step 5: initialising local Git repository
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Tell Git not to track your database:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    echo "data" >> .gitignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Turn the directory in which your application is located into a Git repository by running the following commands:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    git init && git add . && git commit -am 'initial commit'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Step 6: starting MongoDB
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To start MongoDB for the first time in your app's directory, run the following commands in your terminal:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    mkdir data && echo 'mongod --config /usr/local/etc/mongod.conf --dbpath=data --rest "$@" --httpinterface' > mongod.sh && chmod a+x mongod.sh && ./mongod.sh
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								From this point on you can simply start MongoDB by executing `./mongod.sh`. A few things to note:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*   The `.conf` file directs `mongod` to write messages to a log file instead of stdout. To view the log, run the following in a separate Terminal tab: `less /usr/local/var/log/mongodb/mongo.log`.
							 | 
						||
| 
								 | 
							
								*   Since we're not on Cloud9, we don't need the `--nojournal` option. Journaling lets you recover the database in case of a `mongod` crash.
							 | 
						||
| 
								 | 
							
								*   You have to make a clean database for each project. If you copied the `data` directory over from an earlier project, `mongod` will fail to start. If that's the case, just `rm -rf data && mkdir data && ./mongod.sh`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Step 7: starting Grunt
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Open a new Terminal tab by pressing `⌘T`, and run the following command:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    grunt serve
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Grunt should automatically open your new Angular site's index page as soon as it finishes starting up.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Now you should be able to follow the rest of the Challenge instructions to push to GitHub and Heroku. Just ignore the part about SSH key (#33-36) and replace `~/workspace` with your app directory's path.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Footnote
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The above steps were tested under the following configuration:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*   OS X 10.10.5
							 | 
						||
| 
								 | 
							
								*   zsh 5.0.8 (x86_64-apple-darwin14.3.0)
							 | 
						||
| 
								 | 
							
								*   node v0.12.7
							 | 
						||
| 
								 | 
							
								*   npm 2.11.3
							 |