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 |