Супервизор nginx прерван SIGABRT; неожиданно

Я использую ядро ​​.net в Ubuntu. Если я просто запустите свое приложение с dotnet run Мое приложение успешно запущено

Но я хочу запустить свое приложение на nginx с супервизором. Вот моя конфигурация:

nginx / etc / nginx / sites-available / default:

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                proxy_pass http://localhost:5000;
                proxy_http_version 1.1;
                 proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection keep-alive;
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
        #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}

        }


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#       listen 80;
#       listen [::]:80;
#
#       server_name example.com;
#
#       root /var/www/example.com;
#       index index.html;
#
#       location / {
#               try_files $uri $uri/ =404;
#       }
#}

supervisor /etc/supervisor/conf.d/webapi.conf:

[program:webapi]
command=/usr/bin/dotnet /var/webapi/WebApi.dll --server.urls:http://*:5000
directory=/var/webapi/
autostart=true
autorestart=true
stderr_logfile=/var/log/webapi.err.log
stdout_logfile=/var/log/webapi.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=www-data
stopsignal=INT

И я получаю такую ​​ошибку:

sudo tail -f /var/log/supervisor/supervisord.log

User@ubuntu:~/projects/WebApi$ sudo tail -f /var/log/supervisor/supervisord.log
2016-11-05 04:36:02,701 WARN Included extra file "/etc/supervisor/conf.d/webapi.conf" during parsing
2016-11-05 04:36:02,709 INFO RPC interface 'supervisor' initialized
2016-11-05 04:36:02,710 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2016-11-05 04:36:02,710 INFO supervisord started with pid 10214
2016-11-05 04:36:03,713 INFO spawned: 'webapi' with pid 10217
2016-11-05 04:36:03,823 INFO exited: webapi (terminated by SIGABRT; not expected)
2016-11-05 04:36:04,826 INFO spawned: 'webapi' with pid 10224
2016-11-05 04:36:04,936 INFO exited: webapi (terminated by SIGABRT; not expected)
2016-11-05 04:36:06,941 INFO spawned: 'webapi' with pid 10246
2016-11-05 04:36:07,054 INFO exited: webapi (terminated by SIGABRT; not expected)
2016-11-05 04:36:10,060 INFO spawned: 'webapi' with pid 10255
2016-11-05 04:36:10,169 INFO exited: webapi (terminated by SIGABRT; not expected)
2016-11-05 04:36:11,171 INFO gave up: webapi entered FATAL state, too many start retries too quickly

Я думаю, что у меня есть проблемы с конфигурацией. Может быть, кто-то может помочь?

3 ответа

Здесь есть ошибка: --server.urls:http://*:5000 - должно быть = между server.urls и http...,

Так что вам нужно исправить это --server.urls=http://*:5000

Я столкнулся с той же проблемой и смог ее решить, изменив первую строку на --port=5010 вместо --server.urls:http://*:5010

Я получил более подробную информацию о том, где произошла ошибка, посмотрев журнал ошибок:

$ cat /var/log/supervisor/testapp.err.log

Когда я запустил эту команду, я увидел следующую ошибку:

Unhandled Exception: System.FormatException: Value for switch '--server.urls:http://*:5010' is missing.

Это заставило меня задуматься о переходе на --port переключаться вместо --server после просмотра документации по файлам конфигурации супервизора

Изменение первой строки моего файла.conf для чтения, как показано ниже, решило проблему:

command=/usr/bin/dotnet /var/dotnettest/testapp.dll --port=5010

Я знаю, что этой проблеме 2 года, но только для тех, кто просматривает эту проблему

Посмотрев на настройки.conf вашего супервизора, у вас есть журнал ошибок приложения, который вы можете прочитать, попробуйте следующую команду:

sudo nano /var/log/webapi.err.log

Я получал сообщение SIGABRT, поскольку мое приложение могло загружать плохо структурированный JSON, идентифицированный только в упомянутом выше журнале err.log.

У меня также было неправильное назначение порта --server.urls:http или же --server.urls=http, но это только что сгенерировало страницу 502 nginx.

Убедитесь, что ваш файл.conf supervisor использует.dll, которую вы опубликовали.

Если вы посмотрите на файл Скотта, как показано ниже, убедитесь, что dll, которую вы опубликовали, является файлом в файле. Для меня это был testweb.dll.

http://www.hanselman.com/blog/PublishingAnASPNETCoreWebsiteToACheapLinuxVMHost.aspx

[program:dotnettest]
command=/usr/bin/dotnet /var/dotnettest/testweb.dll --server.urls:http://*:5123
directory=/var/dotnettest/
autostart=true
autorestart=true
stderr_logfile=/var/log/dotnettest.err.log
stdout_logfile=/var/log/dotnettest.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=www-data
stopsignal=INT

У меня были другие проблемы, о которых я писал здесь... https://stackoverflow.com/questions/42243966/asp-net-core-on-ubuntu-16-04-gives-me-bad-gateway

Другие вопросы по тегам