Apache/Passenger部署Rails应用报错:无法加载bundler/setup (LoadError)
解决Ruby版本不匹配导致的
bundler/setup LoadError问题 从你的错误调用栈一眼就能看出核心问题:Ruby版本不匹配——你用rbenv管理的是Ruby 2.4.2,但Passenger却在调用系统自带的Ruby 2.3.0(路径/var/lib/gems/2.3.0),这直接导致bundler的加载路径完全错位,自然找不到bundler/setup文件。
下面是一步步的实操解决方法:
1. 让Passenger指向rbenv的Ruby版本
首先得给Passenger明确指定正确的Ruby路径:
- 先在终端确认rbenv的Ruby路径,运行:
正常应该输出which ruby/home/ubuntu/.rbenv/shims/ruby - 找到你的Apache配置文件(可能是
/etc/apache2/apache2.conf,或者应用对应的虚拟主机配置,比如/etc/apache2/sites-available/your-app.conf),添加或修改以下配置:PassengerRuby /home/ubuntu/.rbenv/shims/ruby # 确保Apache加载rbenv的环境变量 SetEnv PATH /home/ubuntu/.rbenv/shims:/home/ubuntu/.rbenv/bin:$PATH - 重启Apache生效:
sudo systemctl restart apache2
2. 重新安装应用依赖
进入你的应用根目录,用正确的Ruby版本重新安装bundler和所有依赖:
cd /home/ubuntu/sephcordovano gem install bundler bundle install
3. 验证Passenger的Ruby版本
运行以下命令确认Passenger现在用的是正确的Ruby版本:
passenger-config about ruby-command
输出里的Command应该指向/home/ubuntu/.rbenv/shims/ruby,版本显示2.4.2就说明配置对了。
4. 修复权限问题
确保Apache的运行用户(通常是www-data)能访问你的rbenv目录和应用目录:
sudo chown -R ubuntu:www-data /home/ubuntu/sephcordovano sudo chmod -R 755 /home/ubuntu/.rbenv
错误信息与调用栈参考
无法加载文件 -- bundler/setup (LoadError),Web应用无法启动,错误ID:e36eb8ab。
详细调用栈:
/home/ubuntu/.rbenv/versions/2.4.2/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' /home/ubuntu/.rbenv/versions/2.4.2/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' /var/lib/gems/2.3.0/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb:456:in `activate_gem' /var/lib/gems/2.3.0/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb:323:in `block in run_load_path_setup_code' /var/lib/gems/2.3.0/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb:461:in `running_bundler' /var/lib/gems/2.3.0/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb:322:in `run_load_path_setup_code' /var/lib/gems/2.3.0/gems/passenger-5.1.12/src/helper-scripts/rack-preloader.rb:100:in `preload_app' /var/lib/gems/2.3.0/gems/passenger-5.1.12/src/helper-scripts/rack-preloader.rb:156:in `<module:App>' /var/lib/gems/2.3.0/gems/passenger-5.1.12/src/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>' /var/lib/gems/2.3.0/gems/passenger-5.1.12/src/helper-scripts/rack-preloader.rb:29:in `<main>'
系统信息:
- 应用根目录:
/home/ubuntu/sephcordovano - 环境:development
- Ruby版本:2.4.2
内容的提问来源于stack exchange,提问作者Seph Cordovano
相关产品推荐
相关产品推荐

