Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 520 Vote(s) - 3.59 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Amazon Elastic Beanstalk node and npm non-standard install locations

#1
Amazon Beanstalk installs node and npm into really obscure places - and I'm not sure they won't change if EB decides to use a newer version of node, which would cause my application to break.

These are the locations for node and npm:

/opt/elasticbeanstalk/node-install/node-v0.8.24-linux-x64/bin/node
/opt/elasticbeanstalk/node-install/node-v0.8.24-linux-x64/bin/npm

I'm worried about the `0.8.24` part changing and I'd rather not grep for things in cron or monit scripts when trying to find something that is normally just `/usr/bin/XXX`.

how do I get a consistent filepath for these executables? and why does EB do this?

for reference, I tried setting the `NodeVersion` option in an `.ebextensions/app.config`, it had no effect on the install location.
Reply

#2
You can add the most recent **node** and **npm** binaries to $PATH with a command like this:

PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin

I couldn't figure out how to prevent beanstalk commands from resetting the $PATH back again.

If you are so inclined you can probably create a symlink with a command similar to the above and use that as your reference point in cron scripts etc.

Agreed, it is very very annoying.
Reply

#3
I created the file `/.ebextensions/node.config` in my project folder to declare my node version and add symlinks to the /bin folder. More information about the .ebextensions folder can be found here:

[To see links please register here]


option_settings:
- option_name: NodeVersion
value: 0.12.2
files:
"/bin/node" :
mode: "755755"
content: "/opt/elasticbeanstalk/node-install/node-v0.12.2-linux-x64/bin/node"
"/bin/npm" :
mode: "755755"
content: "/opt/elasticbeanstalk/node-install/node-v0.12.2-linux-x64/bin/npm"
Reply

#4
Following Peter Johnson & Greg Tatum replies I created a symlink to the latest node executable:

container_commands:
01_node_binary:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node"

- I find the latest version of the node install binary
- Out of it I create a symlink in the /bin directory (which is part of the $PATH)
Reply

#5
We had a similar issue with "node not found", trying to run node in container commands. After running `ps aux` on the EC2 instance we saw that EB has access to the `$NODE_HOME` env var:

su -s /bin/sh -c PATH=$PATH:$NODE_HOME/bin $EB_NODE_COMMAND 2>&1 nodejs

This can be used in .ebextensions, e.g.:

container_commands:
your_node_script:
command: 'env PATH="$PATH:$NODE_HOME/bin" ./bin/your_node_script'

(thanks to Alan Grow)
Reply

#6
# Amazon Elastic Beanstalk

## Grand the access to node command

1. sudo su
2. vipw
3. nodejs:x:496:494::/tmp:/bin/bash (":wq" to save changes)
4. sudo su nodejs
5. PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
6. node -v (enjoy :)
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through