Closed stdweird closed 2 years ago
How did you install OnDemand? Because if you installed via the RPMs, which is the best method for EL8, the file /opt/rh/ondemand/root/usr/lib64/ruby/vendor_ruby/passenger_native_support.so
should be present and loaded when OnDemand goes to launch. The package ondemand-passenger-devel
has that extconf.rb
from output but that package should not be necessary to run OnDemand. The file /opt/rh/ondemand/root/usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini
with RPM installs will have the location for passenger_native_support.so
directory via ruby_libdir
parameter.
it's an rpm install. the ini has ruby_libdir=/opt/rh/ondemand/root/usr/share/ruby/vendor_ruby
which points to usr/share, not usr/lib64. the .so file is there in the location you mentioned
Have you done anything custom to environment launching OnDemand? We still run OnDemand on RHEL7 but we have E2E testing and Docker images that run OnDemand on Rocky 8 and unable to reproduce this in those environments. Are you running SELinux by chance? If you have SELinux enabled, might be something in /var/log/audit/audit.log
to indicate a denial of some kind.
The ondemand
SCL is what sets RUBYLIB
environment variable to include /opt/ood/ondemand/root/usr/lib64/ruby/vendor_ruby
and that SCL is loaded by several things.
A few things to check I can think of, the value $USERNAME
would be replaced with whichever user you're logging into OnDemand with:
# grep ruby /var/lib/ondemand-nginx/config/puns/$USERNAME.conf
passenger_root /opt/ood/ondemand/root/usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /opt/ood/nginx_stage/bin/ruby;
# scl enable ondemand -- env | grep RUBYLIB
RUBYLIB=/opt/ood/ondemand/root/usr/share/ruby/vendor_ruby:/opt/ood/ondemand/root/usr/lib64/ruby/vendor_ruby
@treydock no selinux, but yes on custom env.
when i run the scl enable
command in a shell in that env, i get same output. i'll see if strace points to something
@treydock i ran it all though strace, neither path in the scl RUBYLIB
is checked. lots of other paths are checked, incl the ondemand gems.
@treydock no selinux, but yes on custom env.
Could you describe the custom env?
The thing to launch NGINX which is what uses Passenger is nginx_stage, specifically /opt/ood/nginx_stage/sbin/nginx_stage
. That script will source two files, one is /opt/ood/nginx_stage/etc/profile
which loads ondemand
SCL and the other is /etc/ood/profile
, if it exists. Do you have anything in /etc/ood/profile
?
@treydock our custom wrappers missed to pass an env variable. this was a mistake on our side apologies to waste your time.
on a el8 ondemadn 2.0.18 setup, i get non-fatal errors in the user error logs e.g.
the erorr log in /tmp looks like
something missing? can i install something so this isn't required for all users?