Redmine 2.3, ruby 2.0.0, nginx 1.4.1 с пассажирской версией 4.0.2 все HTTP POST терпят неудачу
Я новичок в nginx и пытаюсь запустить Redmine 2.3, используя ruby 2.0.0, phusion passenger 4.0.2 и nginx 1.4.1. Это скомпилировано из сценария passenger-install-nginx в системе ARMv5te в Arch Linux ARM.
Я получаю следующее в журнале nginx: (Примечание: я удалил имя сервера из журналов / конфигов)
2013/05/08 23:41:12 [notice] 1359#0: signal process started
[ 2013-05-08 23:41:13.1325 1367/b6f9a000 agents/HelperAgent/Main.cpp:554 ]: PassengerHelperAgent online, listening at unix:/tmp/passenger.1.0.1363/generation-0/request.socket
[ 2013-05-08 23:41:13.2641 1387/b6f26000 agents/HelperAgent/Main.cpp:554 ]: PassengerHelperAgent online, listening at unix:/tmp/passenger.1.0.1381/generation-0/request.socket
[ 2013-05-08 23:41:13.3028 1392/b6faa000 agents/LoggingAgent/Main.cpp:272 ]: PassengerLoggingAgent online, listening at unix:/tmp/passenger.1.0.1381/generation-0/logging.socket
[ 2013-05-08 23:41:15.9700 1387/b59ff450 Pool2/Spawner.h:739 ]: [App 1408 stdout]
[ 2013-05-08 23:41:43.5820 1387/b6b4a450 Pool2/Spawner.h:159 ]: [App 1408 stderr] /var/www/sites/public-redmine-2.3/lib/SVG/Graph/Graph.rb:3: warning: class variable access from
toplevel
[ 2013-05-08 23:41:55.8491 1387/b59ff450 Pool2/Spawner.h:739 ]: [App 1439 stdout]
[ 2013-05-08 23:44:15.2842 1387/b57ff450 agents/HelperAgent/RequestHandler.h:581 ]: [Client 20] Disconnecting with error: invalid SCGI header
2013/05/08 23:44:15 [error] 1402#0: *3 upstream prematurely closed connection while reading response header from upstream, client: 192.168.4.254, server: (removed), request: "POST /login HTTP/1.1", upstream: "passenger:/tmp/passenger.1.0.1381/generation-0/request.socket:", host: "(removed)", referrer: "http://(removed)/login"
Последняя ошибка происходит постоянно, когда я делаю HTTP POST на любой странице в Redmine. HTTP-запросы GET отлично работают с отображаемыми страницами.
nginx.conf
worker_processes 2;
events {
worker_connections 1024;
}
http {
passenger_root /usr/lib/ruby/gems/2.0.0/gems/passenger-4.0.2;
passenger_ruby /usr/bin/ruby;
passenger_max_pool_size 2;
passenger_pool_idle_time 120;
passenger_pre_start http://(removed)/;
passenger_spawn_method smart;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include sites-enabled/*.conf;
}
сайты с поддержкой /redmine.conf
server {
listen *:80;
server_name (removed);
passenger_enabled on;
rails_env production;
passenger_spawn_method conservative;
root /var/www/sites/kamikaze-kb/public;
location /plugin_assets/ {
root /var/www/sites/kamikaze-kb/public/plugin_assets/;
}
}
Одна вещь, которая может иметь значение - я могу нормально запустить redmine, если использую встроенный сервер ruby webrick, так что я предполагаю, что это, вероятно, проблема nginx/passenger. Кто-нибудь понял, в чем проблема?
5 ответов
Похоже, эта проблема связана с платформой руки.
Я получил ту же проблему на руку, но тот же код и конфигурация отлично работает на x86.
Возможно, ошибка в Passenger ContentHandler.c, при которой выполняется преобразование "%ui" для значения off_t. Короче, найди строчку
b->last = ngx_snprintf(b->last, 10, "%ui", r->headers_in.content_length_n);
в ContentHandler.c и заменить его на
b->last = ngx_snprintf(b->last, 10, "%O", r->headers_in.content_length_n);
Подробнее здесь:
Была такая же проблема. Пассажир говорит:
[Client 20] New client accepted; new client count = 1
[Client 20] Disconnecting with error: invalid SCGI header
[Client 20] Disconnected; new client count = 0
Но у моего друга с той же системой (Raspberry Pi) нет проблем. Сравнивая установленные пакеты, мы обнаружили, что единственным несоответствием была версия Passenger.
4.0.10 против 3.0.19.
sudo gem remove passenger -v "=4.0.10"
sudo gem install passenger -v "=3.0.19"
sudo passenger-install-nginx-module
После понижения версии gem и восстановления nginx с пассажиром - проблема решена. POST-запросы не отваливаются и работают нормально.
В Apache вы должны установить конфиги ruby и passengee, как описано в этой статье http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_on_Debian_with_Ruby-on-Rails_and_Apache2-Passenger
Если нет, вы получаете сообщения об ошибках на сервере. Я мог бы представить, что вы должны установить что-то подобное в вашем nginx
В эти дни нет
gem remove
просто установите 3 0 19
и проверьте версию после
passenger --version
хорошо - похоже, мы должны удалить v 4
gem uninstall ....
pas --ver
сейчас v 3