badwolfff
asked on
How do I autostart meanjs on the boot of my ubuntu server?
Hi all,
I just installed MEAN.JS on my ubuntu 14. The tutorial I found on DigitalOcean
https://www.digitalocean.c om/communi ty/tutoria ls/how-to- install-a- mean-js-st ack-on-an- ubuntu-14- 04-server
which as you can see on their tutorial is launched via:
When I run this command my shell is occupied by this and I can't use it for anything else.
If I close the shell mean.js goes offline.
I would like it to start with the boot and stay on always.
Could someone suggest a method to achieve this please? By the way if I need to create and save a .sh script or similar, please also help me with the procedure to do so, as I have no experience yet with these things.
thanks in advance
I just installed MEAN.JS on my ubuntu 14. The tutorial I found on DigitalOcean
https://www.digitalocean.c
which as you can see on their tutorial is launched via:
cd /opt/mean
grunt
When I run this command my shell is occupied by this and I can't use it for anything else.
If I close the shell mean.js goes offline.
I would like it to start with the boot and stay on always.
Could someone suggest a method to achieve this please? By the way if I need to create and save a .sh script or similar, please also help me with the procedure to do so, as I have no experience yet with these things.
thanks in advance
ASKER
Hi
Thanks
Tried it
Doesn't work
Any other suggestions?
Thanks
Tried it
Doesn't work
Any other suggestions?
ASKER
By the way "grunt" or "grunt &" do not work on my shell unless you do "cd /opt/mean" first. Maybe that's the problem?
Thanks
Thanks
The ampersand following a command tells the command to run in the background.
You can run it in one step instead of with the cd
/opt/mean/grunt &
You can also background a running command by pressing ctrl z, then typing bg.
With your previous sequence.
Type
bg
and it will become a background process.
In your script, you may not have the same environment as in your shell, so it's always best to use the full path to call your commands.
/opt/mean/grunt
You can run it in one step instead of with the cd
/opt/mean/grunt &
You can also background a running command by pressing ctrl z, then typing bg.
With your previous sequence.
cd /opt/mean
grunt
The prompt doesn't return. At this point press ctrl z and you will get a prompt, but the program will be paused.Type
bg
and it will become a background process.
In your script, you may not have the same environment as in your shell, so it's always best to use the full path to call your commands.
/opt/mean/grunt
ASKER
Hi Serialband,
doesn't work. Also that job -l command doesn't work.
Any other suggestions?
thanks
doesn't work. Also that job -l command doesn't work.
Any other suggestions?
thanks
doesn't work is kinda non descriptive. If a command fails mostly an messages is issued.
i think the job command should be spelled as jobs (with s)
i think the job command should be spelled as jobs (with s)
ASKER
Sorry about the delay guys.
Well I did what Serialband suggested and rebooted my VPS.
After reboot I tried to load the mean.js page but nothing showed up.
When I run the jobs -l command nothing happens:
If I try it with sudo I get and error:
Also I am unable to run the /opt/mean/grunt or the /opt/mean/grunt & commands as suggested above:
This is despite the fact that I can do:
Also if I try the grunt & command I can't still use my shell.
When I run the command, mean.js works. Then on the shell I can if I do a Ctrl+Z and then type bg, but then the service exits too:
Any ideas anyone?
All I would like is that the service start automatically at every reboot and stay up without any manual intervention.
thanks
Well I did what Serialband suggested and rebooted my VPS.
After reboot I tried to load the mean.js page but nothing showed up.
When I run the jobs -l command nothing happens:
lupocatttivo@octane:~$ jobs -l
lupocatttivo@octane:~$
If I try it with sudo I get and error:
lupocatttivo@octane:~$ sudo jobs -l
sudo: jobs: command not found
Also I am unable to run the /opt/mean/grunt or the /opt/mean/grunt & commands as suggested above:
lupocatttivo@octane:~$ /opt/mean/grunt
-bash: /opt/mean/grunt: No such file or directory
lupocatttivo@octane:~$ /opt/mean/grunt &
[2] 25104
lupocatttivo@octane:~$ -bash: /opt/mean/grunt: No such file or directory
This is despite the fact that I can do:
lupocatttivo@octane:~$ cd /opt
lupocatttivo@octane:/opt$ cd mean
Also if I try the grunt & command I can't still use my shell.
When I run the command, mean.js works. Then on the shell I can if I do a Ctrl+Z and then type bg, but then the service exits too:
cd /opt/mean
grunt &
[ctrl + z]
bg
[1]+ grunt &
[1]+ Stopped grunt
lupocatttivo@octane:/opt/mean$
Any ideas anyone?
All I would like is that the service start automatically at every reboot and stay up without any manual intervention.
thanks
jobs is a shell internal and shows all sub/child processes.
so it wouldn't work on sudo.
That it doesn't show anything means there are nu jobs...
Doing "grunt &" should already background a process (still showing up in a jobs command though).
the output of jobs should look like line 7 in the last example.
If a background job wants to do i/o it will do a SIGSTOP until it can be done.
to prevent all that use:
nohup grunt >grunt.log &
then output will go to the background and a logout will leave the job running, input will be from /dev/null
so it wouldn't work on sudo.
That it doesn't show anything means there are nu jobs...
Doing "grunt &" should already background a process (still showing up in a jobs command though).
the output of jobs should look like line 7 in the last example.
If a background job wants to do i/o it will do a SIGSTOP until it can be done.
to prevent all that use:
nohup grunt >grunt.log &
then output will go to the background and a logout will leave the job running, input will be from /dev/null
ASKER
Hi Noci,
I tried it and I get this output:
Mean.js in the meantime does not still work.
By the way I am not a Ubuntu expert so please when you explain command could you be more explicit.
Your explanation above was a little difficult for me to follow
thanks
I tried it and I get this output:
lupocatttivo@octane:~$ nohup grunt >grunt.log &
[1] 32559
lupocatttivo@octane:~$ nohup: ignoring input and redirecting stderr to stdout
Mean.js in the meantime does not still work.
By the way I am not a Ubuntu expert so please when you explain command could you be more explicit.
Your explanation above was a little difficult for me to follow
thanks
now what is showing in grunt.log?
ASKER
Sorry Noci, am away from office on business trip. When I am back tomorrow I will check and respond with the log.
thanks
thanks
You said
and
For me it means that your command is not in this directory.
What does it say when you issue
Then use the returned fullpath.
By the way "grunt" or "grunt &" do not work on my shell unless you do "cd /opt/mean" first. Maybe that's the problem?
and
Also I am unable to run the /opt/mean/grunt or the /opt/mean/grunt & commands as suggested above:
lupocatttivo@octane:~$ /opt/mean/grunt -bash: /opt/mean/grunt: No such file or directory lupocatttivo@octane:~$ /opt/mean/grunt & [2] 25104 lupocatttivo@octane:~$ -bash: /opt/mean/grunt: No such file or directory
For me it means that your command is not in this directory.
What does it say when you issue
which grunt
Then use the returned fullpath.
ASKER
sorry guys I was away on a long business trip
Docteur Z here is what I get
and Noci here are the contents of grunt.log:
thanks again guys and sorry for the delay
Docteur Z here is what I get
lupocatttivo@octane:~$ which grunt
/usr/local/bin/grunt
and Noci here are the contents of grunt.log:
grunt-cli: The grunt command line interface. (v0.1.13)
Fatal error: Unable to find local grunt.
If you're seeing this message, either a Gruntfile wasn't found or grunt
hasn't been installed locally to your project. For more information about
installing and configuring grunt, please see the Getting Started guide:
http://gruntjs.com/getting-started
thanks again guys and sorry for the delay
ASKER
any ideas?
thanks
thanks
Either it isn't installed correctly or your path is wrong.
ASKER
Any suggestions on how to fix it?
I followed the instructions on digital ocean by the letter. No one else on that page seems to find it not working. Strange!
Or perhaps help me with a command to uninstall it and if anyone has any ideas of another better step-by-step installation tutorial?
In general any and all help will be highly appreciated
Thanks in advance
I followed the instructions on digital ocean by the letter. No one else on that page seems to find it not working. Strange!
Or perhaps help me with a command to uninstall it and if anyone has any ideas of another better step-by-step installation tutorial?
In general any and all help will be highly appreciated
Thanks in advance
So i did install according to the manual (except for nodejs, for which my system has a package)
and mongo. I didn't start mongo yet... and yes grunt does start.
So what step was missed...
/usr/local directory use does indicate that maybe the configure phase may need some extra parameters, like --prefix=/usr
and mongo. I didn't start mongo yet... and yes grunt does start.
So what step was missed...
/usr/local directory use does indicate that maybe the configure phase may need some extra parameters, like --prefix=/usr
testnode # npm install -g bower grunt-cli
/usr/bin/grunt -> /usr/lib/node_modules/grunt-cli/bin/grunt
/usr/bin/bower -> /usr/lib/node_modules/bower/bin/bower
grunt-cli@0.1.13 /usr/lib/node_modules/grunt-cli
├── resolve@0.3.1
├── nopt@1.0.10 (abbrev@1.0.5)
└── findup-sync@0.1.3 (lodash@2.4.2, glob@3.2.11)
bower@1.4.1 /usr/lib/node_modules/bower
├── is-root@1.0.0
├── junk@1.0.1
├── stringify-object@1.0.1
├── user-home@1.1.1
├── abbrev@1.0.5
├── chmodr@0.1.0
├── rimraf@2.3.3
├── archy@1.0.0
├── opn@1.0.2
├── bower-logger@0.2.2
├── bower-endpoint-parser@0.2.2
├── graceful-fs@3.0.6
├── lockfile@1.0.0
├── lru-cache@2.6.2
├── nopt@3.0.1
├── retry@0.6.1
├── tmp@0.0.24
├── request-progress@0.3.1 (throttleit@0.0.2)
├── q@1.4.0
├── shell-quote@1.4.3 (array-filter@0.0.1, array-map@0.0.0, array-reduce@0.0.0, jsonify@0.0.0)
├── semver@2.3.2
├── which@1.1.1 (is-absolute@0.1.7)
├── p-throttler@0.1.1 (q@0.9.7)
├── fstream@1.0.6 (inherits@2.0.1)
├── chalk@1.0.0 (escape-string-regexp@1.0.3, ansi-styles@2.0.1, supports-color@1.3.1, strip-ansi@2.0.1, has-ansi@1.0.3)
├── promptly@0.2.0 (read@1.0.5)
├── bower-json@0.4.0 (intersect@0.0.3, deep-extend@0.2.11, graceful-fs@2.0.3)
├── mkdirp@0.5.0 (minimist@0.0.8)
├── fstream-ignore@1.0.2 (inherits@2.0.1, minimatch@2.0.7)
├── tar-fs@1.5.0 (pump@1.0.0, tar-stream@1.1.4)
├── glob@4.5.3 (inherits@2.0.1, once@1.3.2, inflight@1.0.4, minimatch@2.0.7)
├── insight@0.5.3 (object-assign@2.0.0, async@0.9.0, lodash.debounce@3.0.3, os-name@1.0.3, tough-cookie@0.12.1)
├── decompress-zip@0.1.0 (mkpath@0.1.0, touch@0.0.3, readable-stream@1.1.13, binary@0.3.0)
├── update-notifier@0.3.2 (is-npm@1.0.0, string-length@1.0.0, semver-diff@2.0.0, latest-version@1.0.0)
├── request@2.53.0 (caseless@0.9.0, json-stringify-safe@5.0.0, forever-agent@0.5.2, aws-sign2@0.5.0, stringstream@0.0.4, oauth-sign@0.6.0, tunnel-agent@0.4.0, isstream@0.1.2, node-uuid@1.4.3, qs@2.3.3, combined-stream@0.0.7, form-data@0.2.0, mime-types@2.0.11, http-signature@0.10.1, bl@0.9.4, tough-cookie@1.1.0, hawk@2.3.1)
├── github@0.2.4 (mime@1.3.4)
├── cardinal@0.4.4 (ansicolors@0.2.1, redeyed@0.4.4)
├── bower-registry-client@0.3.0 (request-replay@0.2.0, graceful-fs@2.0.3, rimraf@2.2.8, lru-cache@2.3.1, async@0.2.10, mkdirp@0.3.5, request@2.51.0)
├── mout@0.11.0
├── bower-config@0.6.1 (osenv@0.0.3, graceful-fs@2.0.3, optimist@0.6.1, mout@0.9.1)
├── configstore@0.3.2 (object-assign@2.0.0, xdg-basedir@1.0.1, osenv@0.1.0, uuid@2.0.1, js-yaml@3.3.1)
├── handlebars@2.0.0 (optimist@0.3.7, uglify-js@2.3.6)
└── inquirer@0.8.0 (figures@1.3.5, ansi-regex@1.1.1, mute-stream@0.0.4, through@2.3.7, readline2@0.1.1, chalk@0.5.1, lodash@2.4.2, cli-color@0.3.3, rx@2.5.2)
testnode # sudo git clone https://github.com/meanjs/mean.git /opt/mean
Cloning into '/opt/mean'...
remote: Counting objects: 5455, done.
remote: Total 5455 (delta 0), reused 0 (delta 0), pack-reused 5455
Receiving objects: 100% (5455/5455), 2.34 MiB | 1.44 MiB/s, done.
Resolving deltas: 100% (2789/2789), done.
Checking connectivity... done.
testnode # cd /opt/mean
testnode # npm install
npm WARN excluding symbolic link build/defs-config.json -> ../defs-config.json
npm WARN optional dep failed, continuing fsevents@0.3.6
npm WARN engine hawk@0.10.2: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
> phantomjs@1.9.16 install /opt/mean/node_modules/karma-phantomjs-launcher/node_modules/phantomjs
> node install.js
Downloading https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2
Saving to /opt/mean/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/phantomjs/phantomjs-1.9.8-linux-x86_64.tar.bz2
Receiving...
- [=======================================-] 97% 0.0s/
Received 12854K total.
Extracting tar contents (via spawned process)
Removing /opt/mean/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom
Copying extracted folder /opt/mean/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/phantomjs/phantomjs-1.9.8-linux-x86_64.tar.bz2-extract-1431546802242/phantomjs-1.9.8-linux-x86_64 -> /opt/mean/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom
Writing location.js file
Done. Phantomjs binary available at /opt/mean/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom/bin/phantomjs
npm WARN engine cryptiles@0.1.3: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine sntp@0.1.4: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine hoek@0.7.6: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine boom@0.3.8: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine hawk@0.10.2: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
> kerberos@0.0.11 install /opt/mean/node_modules/connect-mongo/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: Entering directory '/opt/mean/node_modules/connect-mongo/node_modules/mongodb/node_modules/kerberos/build'
CXX(target) Release/obj.target/kerberos/lib/kerberos.o
CXX(target) Release/obj.target/kerberos/lib/worker.o
CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
CC(target) Release/obj.target/kerberos/lib/base64.o
CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
SOLINK_MODULE(target) Release/obj.target/kerberos.node
SOLINK_MODULE(target) Release/obj.target/kerberos.node: Finished
COPY Release/kerberos.node
make: Leaving directory '/opt/mean/node_modules/connect-mongo/node_modules/mongodb/node_modules/kerberos/build'
npm WARN engine boom@0.3.8: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine hoek@0.7.6: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine sntp@0.1.4: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine cryptiles@0.1.3: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine hawk@0.10.2: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine sntp@0.1.4: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine hoek@0.7.6: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine boom@0.3.8: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN engine cryptiles@0.1.3: wanted: {"node":"0.8.x"} (current: {"node":"0.10.30","npm":"1.4.21"})
npm WARN optional dep failed, continuing default-browser-id@1.0.2
> kerberos@0.0.9 install /opt/mean/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: Entering directory '/opt/mean/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/build'
CXX(target) Release/obj.target/kerberos/lib/kerberos.o
CXX(target) Release/obj.target/kerberos/lib/worker.o
CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
CC(target) Release/obj.target/kerberos/lib/base64.o
CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
SOLINK_MODULE(target) Release/obj.target/kerberos.node
SOLINK_MODULE(target) Release/obj.target/kerberos.node: Finished
COPY Release/kerberos.node
make: Leaving directory '/opt/mean/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/build'
> bson@0.2.21 install /opt/mean/node_modules/connect-mongo/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: Entering directory '/opt/mean/node_modules/connect-mongo/node_modules/mongodb/node_modules/bson/build'
CXX(target) Release/obj.target/bson/ext/bson.o
SOLINK_MODULE(target) Release/obj.target/bson.node
SOLINK_MODULE(target) Release/obj.target/bson.node: Finished
COPY Release/bson.node
make: Leaving directory '/opt/mean/node_modules/connect-mongo/node_modules/mongodb/node_modules/bson/build'
> bson@0.2.21 install /opt/mean/node_modules/mongoose/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: Entering directory '/opt/mean/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build'
CXX(target) Release/obj.target/bson/ext/bson.o
SOLINK_MODULE(target) Release/obj.target/bson.node
SOLINK_MODULE(target) Release/obj.target/bson.node: Finished
COPY Release/bson.node
make: Leaving directory '/opt/mean/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build'
> ws@0.4.32 install /opt/mean/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: Entering directory '/opt/mean/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/obj.target/bufferutil.node
SOLINK_MODULE(target) Release/obj.target/bufferutil.node: Finished
COPY Release/bufferutil.node
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/obj.target/validation.node
SOLINK_MODULE(target) Release/obj.target/validation.node: Finished
COPY Release/validation.node
make: Leaving directory '/opt/mean/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build'
> v8-profiler@5.2.7 preinstall /opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-profiler
>
> v8-debug@0.4.4 preinstall /opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-debug
>
> ws@0.4.32 install /opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: Entering directory '/opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/ws/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/obj.target/bufferutil.node
SOLINK_MODULE(target) Release/obj.target/bufferutil.node: Finished
COPY Release/bufferutil.node
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/obj.target/validation.node
SOLINK_MODULE(target) Release/obj.target/validation.node: Finished
COPY Release/validation.node
make: Leaving directory '/opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/ws/build'
> v8-debug@0.4.4 postinstall /opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-debug
> node-pre-gyp install --fallback-to-build
[v8-debug] Success: "/opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-debug/build/debug/v0.4.4/node-v11-linux-x64/debug.node" is installed via remote
> v8-profiler@5.2.7 postinstall /opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-profiler
> node-pre-gyp install --fallback-to-build
[v8-profiler] Success: "/opt/mean/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-profiler/build/profiler/v5.2.7/node-v11-linux-x64/profiler.node" is installed via remote
npm WARN cannot run in wd meanjs@0.3.3 bower install --config.interactive=false (wd=/opt/mean)
karma-firefox-launcher@0.1.6 node_modules/karma-firefox-launcher
connect-flash@0.1.1 node_modules/connect-flash
consolidate@0.10.0 node_modules/consolidate
karma-jasmine@0.2.3 node_modules/karma-jasmine
async@0.9.0 node_modules/async
cookie-parser@1.3.4 node_modules/cookie-parser
├── cookie-signature@1.0.6
└── cookie@0.1.2
passport-local@1.0.0 node_modules/passport-local
└── passport-strategy@1.0.0
grunt-env@0.4.4 node_modules/grunt-env
└── ini@1.3.3
passport@0.2.1 node_modules/passport
├── pause@0.0.1
└── passport-strategy@1.0.0
chalk@1.0.0 node_modules/chalk
├── escape-string-regexp@1.0.3
├── ansi-styles@2.0.1
├── supports-color@1.3.1
├── strip-ansi@2.0.1 (ansi-regex@1.1.1)
└── has-ansi@1.0.3 (get-stdin@4.0.1, ansi-regex@1.1.1)
grunt-concurrent@1.0.0 node_modules/grunt-concurrent
└── pad-stdio@1.0.0 (lpad@1.0.0)
method-override@2.3.3 node_modules/method-override
├── methods@1.1.1
├── vary@1.0.0
├── parseurl@1.3.0
└── debug@2.2.0 (ms@0.7.1)
karma-chrome-launcher@0.1.12 node_modules/karma-chrome-launcher
└── which@1.1.1 (is-absolute@0.1.7)
express-session@1.9.3 node_modules/express-session
├── cookie@0.1.2
├── utils-merge@1.0.0
├── cookie-signature@1.0.5
├── on-headers@1.0.0
├── parseurl@1.3.0
├── depd@1.0.1
├── crc@3.2.1
├── debug@2.1.3 (ms@0.7.0)
└── uid-safe@1.0.1 (base64-url@1.2.1, mz@1.3.0)
morgan@1.4.1 node_modules/morgan
├── basic-auth@1.0.0
├── depd@1.0.1
├── on-finished@2.1.1 (ee-first@1.1.0)
└── debug@2.1.3 (ms@0.7.0)
passport-github@0.1.5 node_modules/passport-github
├── pkginfo@0.2.3
└── passport-oauth@0.1.15 (passport@0.1.18, oauth@0.9.12)
should@4.1.0 node_modules/should
└── should-equal@0.0.1
grunt-contrib-csslint@0.3.1 node_modules/grunt-contrib-csslint
├── chalk@0.5.1 (ansi-styles@1.1.0, escape-string-regexp@1.0.3, supports-color@0.2.0, has-ansi@0.1.0, strip-ansi@0.3.0)
└── csslint@0.10.0 (parserlib@0.2.5)
load-grunt-tasks@1.0.0 node_modules/load-grunt-tasks
├── multimatch@1.0.1 (array-differ@1.0.0, array-union@1.0.1, minimatch@1.0.0)
└── findup-sync@0.1.3 (glob@3.2.11)
body-parser@1.9.3 node_modules/body-parser
├── bytes@1.0.0
├── media-typer@0.3.0
├── raw-body@1.3.1
├── on-finished@2.1.1 (ee-first@1.1.0)
├── qs@2.3.3
├── depd@1.0.1
├── type-is@1.5.7 (mime-types@2.0.11)
└── iconv-lite@0.4.5
passport-google-oauth@0.1.5 node_modules/passport-google-oauth
├── pkginfo@0.2.3
└── passport-oauth@0.1.15 (passport@0.1.18, oauth@0.9.12)
supertest@0.14.0 node_modules/supertest
├── methods@1.1.0
└── superagent@0.19.0 (extend@1.2.1, methods@1.0.1, cookiejar@2.0.1, component-emitter@1.1.2, reduce-component@1.0.1, qs@1.2.0, debug@1.0.4, mime@1.2.11, readable-stream@1.0.27-1, form-data@0.1.3, formidable@1.0.14)
passport-linkedin@0.1.3 node_modules/passport-linkedin
├── pkginfo@0.2.3
└── passport-oauth@0.1.15 (passport@0.1.18, oauth@0.9.12)
compression@1.2.2 node_modules/compression
├── on-headers@1.0.0
├── bytes@1.0.0
├── vary@1.0.0
├── debug@2.1.3 (ms@0.7.0)
├── compressible@2.0.2 (mime-db@1.9.1)
└── accepts@1.1.4 (negotiator@0.4.9, mime-types@2.0.11)
nodemailer@1.3.4 node_modules/nodemailer
├── nodemailer-direct-transport@1.0.2 (smtp-connection@1.2.0)
├── buildmail@1.2.4 (libbase64@0.1.0, libqp@1.0.0, addressparser@0.3.2)
├── nodemailer-smtp-transport@1.0.3 (nodemailer-wellknown@0.1.5, clone@1.0.2, smtp-connection@1.2.0)
├── libmime@1.0.0 (libbase64@0.1.0, libqp@1.0.0, iconv-lite@0.4.8)
└── hyperquest@1.2.0 (through2@0.6.5, duplexer2@0.0.2)
lodash@2.4.2 node_modules/lodash
grunt-contrib-watch@0.6.1 node_modules/grunt-contrib-watch
├── async@0.2.10
├── tiny-lr-fork@0.0.5 (debug@0.7.4, faye-websocket@0.4.4, noptify@0.0.3, qs@0.5.6)
└── gaze@0.5.1 (globule@0.1.0)
passport-twitter@1.0.3 node_modules/passport-twitter
├── xtraverse@0.1.0 (xmldom@0.1.19)
└── passport-oauth1@1.0.1 (utils-merge@1.0.0, passport-strategy@1.0.0, oauth@0.9.12)
glob@4.0.6 node_modules/glob
├── inherits@2.0.1
├── graceful-fs@3.0.6
├── once@1.3.2 (wrappy@1.0.1)
└── minimatch@1.0.0 (sigmund@1.0.0, lru-cache@2.6.2)
express@4.10.8 node_modules/express
├── methods@1.1.1
├── cookie@0.1.2
├── merge-descriptors@0.0.2
├── fresh@0.2.4
├── cookie-signature@1.0.5
├── escape-html@1.0.1
├── range-parser@1.0.2
├── utils-merge@1.0.0
├── vary@1.0.0
├── media-typer@0.3.0
├── parseurl@1.3.0
├── finalhandler@0.3.3
├── serve-static@1.7.2
├── content-disposition@0.5.0
├── path-to-regexp@0.1.3
├── on-finished@2.2.1 (ee-first@1.1.0)
├── depd@1.0.1
├── qs@2.3.3
├── etag@1.5.1 (crc@3.2.1)
├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1)
├── debug@2.1.3 (ms@0.7.0)
├── send@0.10.1 (destroy@1.0.3, ms@0.6.2, mime@1.2.11, on-finished@2.1.1)
├── type-is@1.5.7 (mime-types@2.0.11)
└── accepts@1.1.4 (negotiator@0.4.9, mime-types@2.0.11)
grunt-cli@0.1.13 node_modules/grunt-cli
├── nopt@1.0.10 (abbrev@1.0.5)
├── resolve@0.3.1
└── findup-sync@0.1.3 (glob@3.2.11)
passport-facebook@1.0.3 node_modules/passport-facebook
└── passport-oauth2@1.1.2 (uid2@0.0.3, passport-strategy@1.0.0, oauth@0.9.12)
helmet@0.5.4 node_modules/helmet
├── ienoopen@0.1.0
├── dont-sniff-mimetype@0.1.0
├── hide-powered-by@0.1.0
├── helmet-crossdomain@0.1.0
├── nocache@0.2.0
├── frameguard@0.2.0 (lodash.isstring@2.4.1)
├── x-xss-protection@0.1.1 (platform@1.3.0)
├── hsts@0.1.0 (underscore@1.7.0)
├── connect@3.3.3 (utils-merge@1.0.0, parseurl@1.3.0, finalhandler@0.3.2, debug@2.1.3)
└── helmet-csp@0.1.2 (camelize@1.0.0, platform@1.2.0, lodash@2.4.1)
grunt-contrib-uglify@0.6.0 node_modules/grunt-contrib-uglify
├── uri-path@0.0.2
├── chalk@0.5.1 (ansi-styles@1.1.0, escape-string-regexp@1.0.3, supports-color@0.2.0, has-ansi@0.1.0, strip-ansi@0.3.0)
├── uglify-js@2.4.21 (uglify-to-browserify@1.0.2, async@0.2.10, yargs@3.5.4, source-map@0.1.34)
└── maxmin@1.1.0 (figures@1.3.5, chalk@1.0.0, pretty-bytes@1.0.4, gzip-size@1.0.0)
mocha@2.2.4 node_modules/mocha
├── escape-string-regexp@1.0.2
├── supports-color@1.2.1
├── diff@1.0.8
├── growl@1.8.1
├── commander@2.3.0
├── debug@2.0.0 (ms@0.6.2)
├── glob@3.2.3 (graceful-fs@2.0.3, inherits@2.0.1, minimatch@0.2.14)
├── mkdirp@0.5.0 (minimist@0.0.8)
└── jade@0.26.3 (commander@0.6.1, mkdirp@0.3.0)
grunt-mocha-test@0.12.7 node_modules/grunt-mocha-test
├── hooker@0.2.3
└── mkdirp@0.5.0 (minimist@0.0.8)
swig@1.4.2 node_modules/swig
├── optimist@0.6.1 (wordwrap@0.0.3, minimist@0.0.10)
└── uglify-js@2.4.21 (uglify-to-browserify@1.0.2, async@0.2.10, yargs@3.5.4, source-map@0.1.34)
karma-phantomjs-launcher@0.1.4 node_modules/karma-phantomjs-launcher
└── phantomjs@1.9.16 (which@1.0.9, progress@1.1.8, kew@0.4.0, request-progress@0.3.1, adm-zip@0.4.4, npmconf@2.1.1, fs-extra@0.16.5, request@2.42.0)
grunt-contrib-cssmin@0.10.0 node_modules/grunt-contrib-cssmin
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
├── clean-css@2.2.23 (commander@2.2.0)
└── maxmin@0.2.2 (pretty-bytes@0.1.2, figures@1.3.5, chalk@0.5.1, gzip-size@0.2.0)
forever@0.11.1 node_modules/forever
├── watch@0.8.0
├── colors@0.6.2
├── pkginfo@0.3.0
├── timespan@2.3.0
├── nssocket@0.5.3 (eventemitter2@0.4.14, lazy@1.0.11)
├── optimist@0.6.1 (wordwrap@0.0.3, minimist@0.0.10)
├── utile@0.2.1 (deep-equal@1.0.0, ncp@0.4.2, async@0.2.10, i@0.3.3, mkdirp@0.5.0, rimraf@2.3.3)
├── nconf@0.6.9 (ini@1.3.3, async@0.2.9, optimist@0.6.0)
├── cliff@0.1.8 (eyes@0.1.8, winston@0.6.2)
├── winston@0.7.3 (cycle@1.0.3, stack-trace@0.0.9, eyes@0.1.8, async@0.2.10, request@2.16.6)
├── forever-monitor@1.2.3 (watch@0.5.1, minimatch@0.2.14, utile@0.1.7, ps-tree@0.0.3, broadway@0.2.10)
└── flatiron@0.3.11 (optimist@0.6.0, director@1.1.10, prompt@0.2.11, broadway@0.2.9)
grunt@0.4.5 node_modules/grunt
├── which@1.0.9
├── dateformat@1.0.2-1.2.3
├── eventemitter2@0.4.14
├── getobject@0.1.0
├── rimraf@2.2.8
├── colors@0.6.2
├── async@0.1.22
├── hooker@0.2.3
├── grunt-legacy-util@0.2.0
├── nopt@1.0.10 (abbrev@1.0.5)
├── exit@0.1.2
├── glob@3.1.21 (inherits@1.0.0, graceful-fs@1.2.3)
├── minimatch@0.2.14 (sigmund@1.0.0, lru-cache@2.6.2)
├── lodash@0.9.2
├── coffee-script@1.3.3
├── underscore.string@2.2.1
├── iconv-lite@0.2.11
├── js-yaml@2.0.5 (argparse@0.1.16, esprima@1.0.4)
├── findup-sync@0.1.3 (glob@3.2.11, lodash@2.4.2)
└── grunt-legacy-log@0.1.1 (underscore.string@2.3.3, lodash@2.4.2)
grunt-karma@0.9.0 node_modules/grunt-karma
grunt-contrib-jshint@0.10.0 node_modules/grunt-contrib-jshint
├── hooker@0.2.3
└── jshint@2.5.11 (strip-json-comments@1.0.2, underscore@1.6.0, exit@0.1.2, console-browserify@1.1.0, minimatch@1.0.0, shelljs@0.3.0, cli@0.6.6, htmlparser2@3.8.2)
grunt-ng-annotate@0.4.0 node_modules/grunt-ng-annotate
└── ng-annotate@0.10.3 (tryor@0.1.2, alter@0.2.0, simple-fmt@0.1.0, simple-is@0.2.0, stringset@0.2.1, stringmap@0.2.2, stable@0.1.5, convert-source-map@0.4.1, ordered-ast-traverse@0.1.1, source-map@0.1.43, optimist@0.6.1, esprima@1.2.5, acorn@0.9.0)
grunt-nodemon@0.3.0 node_modules/grunt-nodemon
└── nodemon@1.2.1 (minimatch@0.3.0, ps-tree@0.0.3, update-notifier@0.1.10)
karma-coverage@0.2.7 node_modules/karma-coverage
├── minimatch@0.3.0 (sigmund@1.0.0, lru-cache@2.6.2)
├── dateformat@1.0.11 (get-stdin@4.0.1, meow@3.1.0)
├── ibrik@2.0.0 (estraverse@1.8.0, which@1.0.9, mkdirp@0.5.0, optimist@0.6.1, fileset@0.1.5, coffee-script@1.8.0, esprima@1.2.5)
└── istanbul@0.3.14 (supports-color@1.3.1, which@1.0.9, abbrev@1.0.5, nopt@3.0.1, wordwrap@0.0.3, once@1.3.2, mkdirp@0.5.0, esprima@2.1.0, resolve@1.1.6, fileset@0.1.5, escodegen@1.6.1, handlebars@3.0.0, js-yaml@3.3.1)
bower@1.3.12 node_modules/bower
├── is-root@1.0.0
├── junk@1.0.1
├── stringify-object@1.0.1
├── which@1.0.9
├── abbrev@1.0.5
├── chmodr@0.1.0
├── osenv@0.1.0
├── archy@0.0.2
├── opn@1.0.2
├── rimraf@2.2.8
├── bower-logger@0.2.2
├── bower-endpoint-parser@0.2.2
├── graceful-fs@3.0.6
├── lockfile@1.0.0
├── nopt@3.0.1
├── lru-cache@2.5.2
├── retry@0.6.0
├── tmp@0.0.23
├── request-progress@0.3.0 (throttleit@0.0.2)
├── q@1.0.1
├── chalk@0.5.0 (ansi-styles@1.1.0, escape-string-regexp@1.0.3, supports-color@0.2.0, has-ansi@0.1.0, strip-ansi@0.3.0)
├── shell-quote@1.4.3 (array-filter@0.0.1, array-reduce@0.0.0, array-map@0.0.0, jsonify@0.0.0)
├── semver@2.3.2
├── bower-json@0.4.0 (intersect@0.0.3, deep-extend@0.2.11, graceful-fs@2.0.3)
├── promptly@0.2.0 (read@1.0.5)
├── p-throttler@0.1.0 (q@0.9.7)
├── fstream@1.0.6 (inherits@2.0.1)
├── bower-config@0.5.2 (osenv@0.0.3, graceful-fs@2.0.3, optimist@0.6.1)
├── fstream-ignore@1.0.2 (inherits@2.0.1, minimatch@2.0.7)
├── mkdirp@0.5.0 (minimist@0.0.8)
├── tar-fs@0.5.2 (pump@0.3.5, tar-stream@0.4.7)
├── decompress-zip@0.0.8 (nopt@2.2.1, mkpath@0.1.0, touch@0.0.2, readable-stream@1.1.13, binary@0.3.0)
├── request@2.42.0 (caseless@0.6.0, json-stringify-safe@5.0.0, aws-sign2@0.5.0, forever-agent@0.5.2, stringstream@0.0.4, oauth-sign@0.4.0, tunnel-agent@0.4.0, qs@1.2.2, node-uuid@1.4.3, mime-types@1.0.2, form-data@0.1.4, http-signature@0.10.1, bl@0.9.4, hawk@1.1.1, tough-cookie@1.1.0)
├── cardinal@0.4.0 (redeyed@0.4.4)
├── bower-registry-client@0.2.4 (graceful-fs@2.0.3, request-replay@0.2.0, lru-cache@2.3.1, mkdirp@0.3.5, async@0.2.10, request@2.51.0)
├── mout@0.9.1
├── handlebars@2.0.0 (optimist@0.3.7, uglify-js@2.3.6)
├── inquirer@0.7.1 (figures@1.3.5, through@2.3.7, mute-stream@0.0.4, readline2@0.1.1, cli-color@0.3.3, rx@2.5.2)
├── update-notifier@0.2.0 (semver-diff@0.1.0, string-length@0.1.2, latest-version@0.2.0, configstore@0.3.2)
└── insight@0.4.3 (object-assign@1.0.0, chalk@0.5.1, lodash.debounce@2.4.1, os-name@1.0.3, tough-cookie@0.12.1, configstore@0.3.2, inquirer@0.6.0)
connect-mongo@0.4.2 node_modules/connect-mongo
└── mongodb@1.4.37 (readable-stream@1.0.33, kerberos@0.0.11, bson@0.2.21)
mongoose@3.8.28 node_modules/mongoose
├── regexp-clone@0.0.1
├── sliced@0.0.5
├── muri@1.1.0
├── hooks@0.2.1
├── mpath@0.1.1
├── mpromise@0.4.3
├── ms@0.1.0
├── mquery@1.4.0 (debug@0.7.4, bluebird@2.3.2)
└── mongodb@1.4.32 (readable-stream@1.0.33, kerberos@0.0.9, bson@0.2.21)
karma@0.12.31 node_modules/karma
├── di@0.0.1
├── graceful-fs@2.0.3
├── rimraf@2.2.8
├── colors@0.6.2
├── mime@1.2.11
├── q@0.9.7
├── source-map@0.1.43 (amdefine@0.1.0)
├── minimatch@0.2.14 (sigmund@1.0.0, lru-cache@2.6.2)
├── optimist@0.6.1 (minimist@0.0.10, wordwrap@0.0.3)
├── chokidar@1.0.1 (arrify@1.0.0, is-glob@1.1.3, glob-parent@1.2.0, async-each@0.1.6, is-binary-path@1.0.0, readdirp@1.3.0, anymatch@1.3.0)
├── log4js@0.6.25 (async@0.2.10, underscore@1.8.2, readable-stream@1.0.33, semver@4.3.4)
├── glob@3.2.11 (inherits@2.0.1, minimatch@0.3.0)
├── http-proxy@0.10.4 (pkginfo@0.3.0, utile@0.2.1)
├── connect@2.26.6 (cookie@0.1.2, fresh@0.2.4, pause@0.0.1, cookie-signature@1.0.5, on-headers@1.0.0, response-time@2.0.1, bytes@1.0.0, media-typer@0.3.0, vhost@3.0.0, parseurl@1.3.0, basic-auth-connect@1.0.0, depd@0.4.5, connect-timeout@1.3.0, finalhandler@0.2.0, method-override@2.2.0, qs@2.2.4, debug@2.0.0, morgan@1.3.2, serve-favicon@2.1.7, csurf@1.6.6, express-session@1.8.2, type-is@1.5.7, serve-static@1.6.5, multiparty@3.3.2, body-parser@1.8.4, errorhandler@1.2.4, serve-index@1.2.1, compression@1.1.2)
├── useragent@2.0.10 (lru-cache@2.2.4)
└── socket.io@0.9.16 (base64id@0.1.0, policyfile@0.0.4, redis@0.7.3, socket.io-client@0.9.16)
grunt-node-inspector@0.1.6 node_modules/grunt-node-inspector
└── node-inspector@0.9.2 (debug@1.0.4, which@1.1.1, rc@0.5.5, semver@3.0.1, strong-data-uri@0.1.1, serve-favicon@2.2.0, yargs@1.3.3, glob@4.5.3, biased-opener@0.2.5, ws@0.4.32, v8-debug@0.4.4, v8-profiler@5.2.7)
testnode # bower --allow-root --config.interactive=false install
bower angular-mocks#~1.2 not-cached git://github.com/angular/bower-angular-mocks.git#~1.2
bower angular-mocks#~1.2 resolve git://github.com/angular/bower-angular-mocks.git#~1.2
bower angular-animate#~1.2 not-cached git://github.com/angular/bower-angular-animate.git#~1.2
bower angular-animate#~1.2 resolve git://github.com/angular/bower-angular-animate.git#~1.2
bower angular#~1.2 not-cached git://github.com/angular/bower-angular.git#~1.2
bower angular#~1.2 resolve git://github.com/angular/bower-angular.git#~1.2
bower angular-bootstrap#~0.12.0 not-cached git://github.com/angular-ui/bootstrap-bower.git#~0.12.0
bower angular-bootstrap#~0.12.0 resolve git://github.com/angular-ui/bootstrap-bower.git#~0.12.0
bower angular-ui-utils#~0.1.1 not-cached git://github.com/angular-ui/ui-utils.git#~0.1.1
bower angular-ui-utils#~0.1.1 resolve git://github.com/angular-ui/ui-utils.git#~0.1.1
bower angular-ui-router#~0.2.11 not-cached git://github.com/angular-ui/ui-router.git#~0.2.11
bower angular-ui-router#~0.2.11 resolve git://github.com/angular-ui/ui-router.git#~0.2.11
bower angular-resource#~1.2 not-cached git://github.com/angular/bower-angular-resource.git#~1.2
bower angular-resource#~1.2 resolve git://github.com/angular/bower-angular-resource.git#~1.2
bower bootstrap#~3 not-cached git://github.com/twbs/bootstrap.git#~3
bower bootstrap#~3 resolve git://github.com/twbs/bootstrap.git#~3
bower angular-bootstrap#~0.12.0 download https://github.com/angular-ui/bootstrap-bower/archive/0.12.1.tar.gz
bower angular-ui-utils#~0.1.1 download https://github.com/angular-ui/ui-utils/archive/v0.1.1.tar.gz
bower angular-ui-router#~0.2.11 download https://github.com/angular-ui/ui-router/archive/0.2.14.tar.gz
bower angular-mocks#~1.2 download https://github.com/angular/bower-angular-mocks/archive/v1.2.28.tar.gz
bower angular-resource#~1.2 download https://github.com/angular/bower-angular-resource/archive/v1.2.28.tar.gz
bower angular-animate#~1.2 download https://github.com/angular/bower-angular-animate/archive/v1.2.28.tar.gz
bower angular#~1.2 download https://github.com/angular/bower-angular/archive/v1.2.28.tar.gz
bower bootstrap#~3 download https://github.com/twbs/bootstrap/archive/v3.3.4.tar.gz
bower angular-ui-utils#~0.1.1 extract archive.tar.gz
bower angular-bootstrap#~0.12.0 extract archive.tar.gz
bower angular-ui-utils#~0.1.1 invalid-meta angular-ui-utils is missing "ignore" entry in bower.json
bower angular-ui-utils#~0.1.1 resolved git://github.com/angular-ui/ui-utils.git#0.1.1
bower angular#>= 1.0.2 not-cached git://github.com/angular/bower-angular.git#>= 1.0.2
bower angular#>= 1.0.2 resolve git://github.com/angular/bower-angular.git#>= 1.0.2
bower angular#>= 1.0.2 download https://github.com/angular/bower-angular/archive/v1.3.15.tar.gz
bower angular-mocks#~1.2 extract archive.tar.gz
bower angular-animate#~1.2 extract archive.tar.gz
bower angular-bootstrap#~0.12.0 resolved git://github.com/angular-ui/bootstrap-bower.git#0.12.1
bower angular-resource#~1.2 extract archive.tar.gz
bower angular-mocks#~1.2 resolved git://github.com/angular/bower-angular-mocks.git#1.2.28
bower angular-animate#~1.2 resolved git://github.com/angular/bower-angular-animate.git#1.2.28
bower angular-resource#~1.2 resolved git://github.com/angular/bower-angular-resource.git#1.2.28
bower angular#~1.2 extract archive.tar.gz
bower angular#~1.2 resolved git://github.com/angular/bower-angular.git#1.2.28
bower angular#>= 1.0.2 extract archive.tar.gz
bower angular-ui-router#~0.2.11 extract archive.tar.gz
bower angular#>= 1.0.2 resolved git://github.com/angular/bower-angular.git#1.3.15
bower angular-ui-router#~0.2.11 resolved git://github.com/angular-ui/ui-router.git#0.2.14
bower bootstrap#~3 extract archive.tar.gz
bower bootstrap#~3 resolved git://github.com/twbs/bootstrap.git#3.3.4
bower jquery#>= 1.9.1 not-cached git://github.com/jquery/jquery.git#>= 1.9.1
bower jquery#>= 1.9.1 resolve git://github.com/jquery/jquery.git#>= 1.9.1
bower jquery#>= 1.9.1 download https://github.com/jquery/jquery/archive/2.1.4.tar.gz
bower jquery#>= 1.9.1 extract archive.tar.gz
bower jquery#>= 1.9.1 resolved git://github.com/jquery/jquery.git#2.1.4
bower angular-ui-utils#~0.1.1 install angular-ui-utils#0.1.1
bower angular-bootstrap#~0.12.0 install angular-bootstrap#0.12.1
bower angular-mocks#~1.2 install angular-mocks#1.2.28
bower angular-animate#~1.2 install angular-animate#1.2.28
bower angular-resource#~1.2 install angular-resource#1.2.28
bower angular#~1.2 install angular#1.2.28
bower angular-ui-router#~0.2.11 install angular-ui-router#0.2.14
bower bootstrap#~3 install bootstrap#3.3.4
bower jquery#>= 1.9.1 install jquery#2.1.4
angular-ui-utils#0.1.1 public/lib/angular-ui-utils
└── angular#1.2.28
angular-bootstrap#0.12.1 public/lib/angular-bootstrap
└── angular#1.2.28
angular-mocks#1.2.28 public/lib/angular-mocks
└── angular#1.2.28
angular-animate#1.2.28 public/lib/angular-animate
└── angular#1.2.28
angular-resource#1.2.28 public/lib/angular-resource
└── angular#1.2.28
angular#1.2.28 public/lib/angular
angular-ui-router#0.2.14 public/lib/angular-ui-router
└── angular#1.2.28
bootstrap#3.3.4 public/lib/bootstrap
└── jquery#2.1.4
jquery#2.1.4 public/lib/jquery
testnode # grunt
Running "jshint:all" (jshint) task
>> 56 files lint free.
Running "csslint:all" (csslint) task
>> 2 files lint free.
Running "concurrent:default" (concurrent) task
Running "watch" task
Waiting...
Running "nodemon:dev" (nodemon) task
[nodemon] v1.2.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: app/views/**/*.* gruntfile.js server.js config/**/*.js app/**/*.js
[nodemon] starting `node --debug server.js`
debugger listening on port 5858
NODE_ENV is not defined! Using default development environment
--
MEAN.JS - Development Environment application started
Environment: development
Port: 3000
Database: mongodb://localhost/mean-dev
--
Could not connect to MongoDB!
Error: failed to connect to [localhost:27017]
And after installing mongodb, started grunt, and accessed the webside through a browser.
testnode # grunt
Running "jshint:all" (jshint) task
>> 56 files lint free.
Running "csslint:all" (csslint) task
>> 2 files lint free.
Running "concurrent:default" (concurrent) task
Running "nodemon:dev" (nodemon) task
Running "watch" task
Waiting...
[nodemon] v1.2.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: app/views/**/*.* gruntfile.js server.js config/**/*.js app/**/*.js
[nodemon] starting `node --debug server.js`
debugger listening on port 5858
Fatal error: Port 35729 is already in use by another process.
Warning: Used --force, continuing.
NODE_ENV is not defined! Using default development environment
--
MEAN.JS - Development Environment application started
Environment: development
Port: 3000
Database: mongodb://localhost/mean-dev
--
GET / 200 117.451 ms - -
GET /lib/bootstrap/dist/css/bootstrap.css 200 24.521 ms - -
GET /lib/bootstrap/dist/css/bootstrap-theme.css 200 8.382 ms - -
GET /modules/core/css/core.css 200 3.569 ms - 354
GET /modules/users/css/users.css 200 3.573 ms - 211
GET /lib/angular/angular.js 200 65.220 ms - -
GET /lib/angular-resource/angular-resource.js 200 9.153 ms - -
GET /lib/angular-animate/angular-animate.js 200 9.094 ms - -
GET /lib/angular-ui-router/release/angular-ui-router.js 200 17.506 ms - -
GET /lib/angular-ui-utils/ui-utils.js 200 13.735 ms - -
GET /lib/angular-bootstrap/ui-bootstrap-tpls.js 200 15.681 ms - -
GET /config.js 200 2.710 ms - 791
GET /application.js 200 3.072 ms - 730
GET /modules/articles/articles.client.module.js 200 4.811 ms - 133
GET /modules/core/core.client.module.js 200 4.435 ms - 129
GET /modules/users/users.client.module.js 200 3.090 ms - 129
GET /modules/articles/config/articles.client.config.js 200 2.446 ms - 389
GET /modules/articles/config/articles.client.routes.js 200 2.512 ms - 700
GET /modules/articles/controllers/articles.client.controller.js 200 3.311 ms - -
GET /modules/articles/services/articles.client.service.js 200 3.139 ms - 294
GET /modules/core/config/core.client.routes.js 200 3.093 ms - 384
GET /modules/core/controllers/header.client.controller.js 200 3.397 ms - 495
GET /modules/core/controllers/home.client.controller.js 200 2.455 ms - 224
GET /modules/core/services/menus.client.service.js 200 4.727 ms - -
GET /modules/users/config/users.client.config.js 200 2.479 ms - 708
GET /modules/users/config/users.client.routes.js 200 2.986 ms - -
GET /modules/users/controllers/authentication.client.controller.js 200 2.840 ms - -
GET /modules/users/controllers/password.client.controller.js 200 2.974 ms - -
GET /modules/users/controllers/settings.client.controller.js 200 5.563 ms - -
GET /modules/users/services/authentication.client.service.js 200 2.442 ms - 202
GET /modules/users/services/users.client.service.js 200 4.556 ms - 244
GET /modules/core/views/header.client.view.html 200 6.754 ms - -
GET /modules/core/views/home.client.view.html 200 3.597 ms - -
GET /modules/core/img/brand/favicon.ico 200 4.943 ms - 32038
GET /modules/core/img/brand/logo.png 200 2.855 ms - 14055
GET /modules/core/img/brand/favicon.ico 304 4.596 ms - -
GET / 304 14.846 ms - -
GET /lib/bootstrap/dist/css/bootstrap.css 304 3.157 ms - -
GET /lib/bootstrap/dist/css/bootstrap-theme.css 304 1.927 ms - -
GET /modules/core/css/core.css 304 2.436 ms - -
GET /modules/users/css/users.css 304 1.427 ms - -
GET /lib/angular/angular.js 304 2.106 ms - -
GET /lib/angular-resource/angular-resource.js 304 4.780 ms - -
GET /lib/angular-animate/angular-animate.js 304 3.073 ms - -
GET /lib/angular-ui-router/release/angular-ui-router.js 304 3.639 ms - -
GET /lib/angular-ui-utils/ui-utils.js 304 2.296 ms - -
GET /lib/angular-bootstrap/ui-bootstrap-tpls.js 304 12.429 ms - -
GET /config.js 304 11.198 ms - -
GET /application.js 304 10.538 ms - -
GET /modules/articles/articles.client.module.js 304 7.757 ms - -
GET /modules/core/core.client.module.js 304 3.187 ms - -
GET /modules/users/users.client.module.js 304 2.383 ms - -
GET /modules/articles/config/articles.client.config.js 304 7.232 ms - -
GET /modules/articles/config/articles.client.routes.js 304 11.502 ms - -
GET /modules/articles/controllers/articles.client.controller.js 304 12.149 ms - -
GET /modules/articles/services/articles.client.service.js 304 10.938 ms - -
GET /modules/core/config/core.client.routes.js 304 3.096 ms - -
GET /modules/core/controllers/header.client.controller.js 304 2.876 ms - -
GET /modules/core/controllers/home.client.controller.js 304 1.531 ms - -
GET /modules/core/services/menus.client.service.js 304 1.727 ms - -
GET /modules/users/config/users.client.config.js 304 15.254 ms - -
GET /modules/users/config/users.client.routes.js 304 13.665 ms - -
GET /modules/users/controllers/authentication.client.controller.js 304 10.751 ms - -
GET /modules/users/controllers/password.client.controller.js 304 10.679 ms - -
GET /modules/users/controllers/settings.client.controller.js 304 8.204 ms - -
GET /modules/users/services/authentication.client.service.js 304 8.637 ms - -
GET /modules/users/services/users.client.service.js 304 2.352 ms - -
GET /modules/core/views/header.client.view.html 304 1.433 ms - -
GET /modules/core/views/home.client.view.html 304 1.446 ms - -
GET /modules/core/img/brand/logo.png 304 2.047 ms - -
ASKER
Hi Noci,
thanks for the effort in running the test. So if I get it right you followed the exact same procedure and were able to start grunt and get an output in the browser? If it is so, I did the same too. The problem was always with the grunt command in the shell/putty. As I say in my original questions:
So I ask you, after you ran grunt, were you still able to use putty? If not, were you able to use the script suggested by Mark Bullock or any of the other suggestions by anyone else at all?
I am happy to uninstall and reinstall if you did get results as it would clearly mean I missed a step somewhere.
thanks
thanks for the effort in running the test. So if I get it right you followed the exact same procedure and were able to start grunt and get an output in the browser? If it is so, I did the same too. The problem was always with the grunt command in the shell/putty. As I say in my original questions:
When I run this command my shell is occupied by this and I can't use it for anything else.
If I close the shell mean.js goes offline.
So I ask you, after you ran grunt, were you still able to use putty? If not, were you able to use the script suggested by Mark Bullock or any of the other suggestions by anyone else at all?
I am happy to uninstall and reinstall if you did get results as it would clearly mean I missed a step somewhere.
thanks
When you run grunt? Add the ampersand (&) after the command, before you press Enter. That should background the task.
If you've already started the command, you can also press Control z and you will put the command temporarily to sleep. You then type the command bg, press enter, and the grunt command will run in the background.
If you've already started the command, you can also press Control z and you will put the command temporarily to sleep. You then type the command bg, press enter, and the grunt command will run in the background.
ASKER
Yes serialband, thanks
What I would like to know from Noci is if your suggestions work on his shell or not
thanks
What I would like to know from Noci is if your suggestions work on his shell or not
thanks
Have you tried it yourself?
ASKER
In my case they didn't work
I wanted to establish a common ground first: So i did an install like the one you described with the exception of nodejs, because i have a distro package for that (emerge nodejs)
grunt gets installed in /usr and not in /usr/local like you have. (there is a first difference).
testnode# which grunt
/usr/bin/grunt
If i start it with nohup:
nohup grunt &
or
nohup /usr/bin/grunt >/var/log/grunt.log &
The service starts...
this would suffice for one time startup....
To start on each boot then the above command needs to be in a script called
/etc/init.d/rungrunt
Now it still runs as root etc.
that can be fixed with:
/etc/init.d/rungrunt
and that can be expanded using daemontools when running under debian etc. or the tooling of choice on your distro. (see other scripts in /etc/init.d/
the /etc/init.d/rungrunt should be symlinked in the runlevel of your choice (3, 4, 5) as network is needed.
ln -nsf /etc/init.d/rungrunt /etc/rc3.d/S99rungrunt
ln -nsf /etc/init.d/rungrunt /etc/rc4.d/S99rungrunt
ln -nsf /etc/init.d/rungrunt /etc/rc5.d/S99rungrunt
For chkconfig et. al more header info is needed inside the script.
grunt gets installed in /usr and not in /usr/local like you have. (there is a first difference).
testnode# which grunt
/usr/bin/grunt
If i start it with nohup:
nohup grunt &
or
nohup /usr/bin/grunt >/var/log/grunt.log &
The service starts...
this would suffice for one time startup....
To start on each boot then the above command needs to be in a script called
/etc/init.d/rungrunt
#!/bin/bash
nohup /usr/bin/grunt >/var/log/grunt.log &
Unless you are using very recent versions of some major distro's that jumped the systemd bandwagon.Now it still runs as root etc.
that can be fixed with:
/etc/init.d/rungrunt
#!/bin/bash
su - gruntuser -c "nohup /usr/bin/grunt >/var/log/grunt.log &"
and that can be expanded using daemontools when running under debian etc. or the tooling of choice on your distro. (see other scripts in /etc/init.d/
the /etc/init.d/rungrunt should be symlinked in the runlevel of your choice (3, 4, 5) as network is needed.
ln -nsf /etc/init.d/rungrunt /etc/rc3.d/S99rungrunt
ln -nsf /etc/init.d/rungrunt /etc/rc4.d/S99rungrunt
ln -nsf /etc/init.d/rungrunt /etc/rc5.d/S99rungrunt
For chkconfig et. al more header info is needed inside the script.
ASKER
Ok tomorrow I will uninstall and reinstall and see what happens :D
Will keep you guys posted
However, Noci, I did not ask the installation to go into /usr/local
How do I force it to act differently as in the scenario illustration by yourself?
I am just asking it if my reinstall runs into the same problems as before
thanks all
Will keep you guys posted
However, Noci, I did not ask the installation to go into /usr/local
How do I force it to act differently as in the scenario illustration by yourself?
I am just asking it if my reinstall runs into the same problems as before
thanks all
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Open in new window
To see the jobs running in the background:
Open in new window
To run it on startup, create a shell script, let's call it grunt.sh in /etc/init.d/ that has your two commands.
You'll have to enable execution of the script file. The sudo command temporarily gives you permission to make changes to the file in the /etc/init.d directory.
Open in new window