问题
I'm deploying a rails app using Apache and Phusion Passenger I already deployed apps using this stack but now i'm using NVM to install node but when I try to load the site shows an error, looking on logs shows this error:
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
On this server I didn't installed nodejs from OS repos, and looking on the passenger documentation shows something about passenger_nodejs but this is from nginx.
This is my conf from apache:
ServerName yourserver.com
# Tell Apache and Passenger where your app's 'public' directory is
DocumentRoot /var/www/myproj/public
PassengerRuby /home/appuser/.rvm/gems/ruby-2.3.0/wrappers/ruby
PassengerNodejs /home/appuser/.nvm/versions/node/v6.9.2/bin/node
# Relax Apache security settings
<Directory /var/www/myproj/public>
Allow from all
Options -MultiViews
# Uncomment this if you're on Apache >= 2.4:
Require all granted
</Directory>
and keep showing that error
Installing nodejs from OS repos fix the message and the app works but is because it's using the node version from OS but I want to use the NVM version.
回答1:
I have the same problem and don't have a good solution but I did find I was able to get around my problem by creating a symbolic link like:
ln -sf /home/deploy/.nvm/versions/node/v6.10.1/bin/node /usr/local/bin/node
Doesn't work very well if there are multiple deployments on the same server but I also couldn't find a way to "properly" use NVM with Passenger / Rails.
回答2:
One other way to do this that doesn't require writing to /usr/local/bin is to use the https://www.phusionpassenger.com/library/config/apache/reference/#passengernodejs PassengerNodeJs directive. This also works if you have other apps on the server using a different version of node.
来源:https://stackoverflow.com/questions/41475241/phusion-passenger-and-rails-app-using-nvm-could-not-find-a-javascript-runtime