Railsの経験はあまりありません。水曜日に戻って、Redmine をアップグレードし、プラグインをアップグレードするように言われました。私はこれに 3 日間取り組んできましたが、Rails が最新のパッケージ管理の時代に入るには、まだどこまで行かなければならないかを知ってショックを受けました。
私はCentos 6.3を使用しています。最初は Ruby 1.8.7 にアップグレードしました。これは Centos リポジトリにあるものであり、Redmine をアップグレードするにはそれで十分だったからです。しかし、redmine_backlogs プラグインにたどり着いたとき、Ruby の新しいバージョンが必要であることに気付きました。Centos で Ruby 1.9.3 を入手するのは簡単ではありません。機能するものを得る前に、4 つの異なるチュートリアルを試しました。手動で修正しなければならなかった奇妙なパスがたくさんあります。
Passenger で Nginx を試してみましたが、うまく動かなかったので、後で Phusion Passenger Standalone を実行しました。
これで、Rails 3.2.11 が実行されました。ここ数週間、Rails の世界で起きているすべてのセキュリティ問題を考えると、これにパッチを当てる必要があると思います。
2.2 の最新の Redmine にアップグレードしました。
私の Nginx は、必要なバージョンとは異なるバージョンの Ruby を使用していると思います。私がこれを行う場合:
/opt/nginx/sbin/nginx -V
それから私はこれを見ます:
built by gcc 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx --with-http_ssl_module --with-http_gzip_static_module --with-cc-opt=-Wno-error --with-pcre=/tmp/root-passenger-14193/pcre-8.31 --add-module=/usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/ext/nginx
Ruby 1.9.3 の代わりに Ruby 1.8 を使用しているように見えるのはどれですか?
私がこれを行う場合:
/opt/nginx/sbin/nginx -s stop
その後:
/opt/nginx/sbin/nginx
nginx を再起動しますが、ブラウザを更新すると、次のようになります。
Passenger encountered the following error:
The application spawner server exited unexpectedly: Unexpected end-of-file detected.
Exception class:
PhusionPassenger::Rack::ApplicationSpawner::Error
Backtrace:
# File Line Location
0 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/rack/application_spawner.rb 135 in `start'
1 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/spawn_manager.rb 253 in `spawn_rack_application'
2 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/abstract_server_collection.rb 132 in `lookup_or_add'
3 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/spawn_manager.rb 246 in `spawn_rack_application'
4 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/abstract_server_collection.rb 82 in `synchronize'
5 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/abstract_server_collection.rb 79 in `synchronize'
6 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/spawn_manager.rb 244 in `spawn_rack_application'
7 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/spawn_manager.rb 137 in `spawn_application'
8 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/spawn_manager.rb 275 in `handle_spawn_application'
9 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/abstract_server.rb 357 in `__send__'
10 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/abstract_server.rb 357 in `server_main_loop'
11 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/lib/phusion_passenger/abstract_server.rb 206 in `start_synchronously'
12 /usr/lib64/ruby/gems/1.8/gems/passenger-3.0.19/helper-scripts/passenger-spawn-server 99
この問題に関連するここからのコメントを見ました:
いくつかのインストール手順(神の祝福のVMとスナップショット)を確認した後、問題を解決しました。通常のユーザーアカウントと apache ユーザーは別の ruby バージョン (1.8) を使用し、root は (1.9.3) を使用します。今はすべて正常に動作します。
しかし、サーバーで修正する方法がわかりません。
Nginx ログを調べてみました。
tail /var/log/nginx/error.log
しかし、最新のエラーは 2 月 5 日のものなので、Phusion Passenger を使用するように切り替えると、エラー ログは新しい場所に移動したのではないかと思いますが、Nginx がエラー ログを保存する場所を見つける方法がわかりません。 Phusion Passengerがそれを制御しています。助言がありますか?
アップデート:
ここで新しいNginxエラーログを見つけました:
/opt/nginx/logs/error.log
エラーは次のとおりです。
2013/02/11 17:02:15 [notice] 25295#0: signal process started
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.11/lib/mysql2/mysql2.so: [BUG] Segmentation fault
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
2013/02/11 17:06:23 [notice] 25360#0: signal process started
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.11/lib/mysql2/mysql2.so: [BUG] Segmentation fault
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
2013/02/11 17:10:47 [notice] 25433#0: signal process started
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.11/lib/mysql2/mysql2.so: [BUG] Segmentation fault
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.11/lib/mysql2/mysql2.so: [BUG] Segmentation fault
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.11/lib/mysql2/mysql2.so: [BUG] Segmentation fault
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
2013/02/11 17:13:35 [notice] 25522#0: signal process started
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.11/lib/mysql2/mysql2.so: [BUG] Segmentation fault
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
2013/02/11 17:16:31 [notice] 25598#0: signal process started
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.11/lib/mysql2/mysql2.so: [BUG] Segmentation fault
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
私がこれを行う場合:
echo $PATH
、 それから:
/usr/local/rvm/gems/ruby-1.9.3-p385/bin:/usr/local/rvm/gems/ruby-1.9.3-p385@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p385/bin:/usr/local/rvm/bin:/sbin:/bin:/usr/sbin:/usr/bin
Passenger docs ページから:
デフォルト値は ruby です。これは、Ruby インタープリターが PATH 環境変数に従って検索されることを意味します。
したがって、1.8 ではなく Ruby 1.9.3 を使用すると考えるでしょう。
を調べるとconfig.ru
、次のように表示されます。
require::File.expand_path('../config/environment', __FILE__)
run RedmineApp::Application
助言がありますか?