Не могу запустить Rails localhost - (нет процессов, работающих на порту 3000) - PullRequest
0 голосов
/ 25 мая 2018

попытался запустить мой сервер rails, но я получил эту ошибку

=> Booting Puma
=> Rails 5.1.4 application starting in development 
=> Run `rails server -h` for more startup options
[25156] Puma starting in cluster mode...
[25156] * Version 3.9.1 (ruby 2.4.1-p111), codename: Private Caller
[25156] * Min threads: 5, max threads: 5
[25156] * Environment: development
[25156] * Process workers: 2
[25156] * Preloading application
[25156] * Listening on tcp://0.0.0.0:3000
Exiting
/home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/binder.rb:269:in `initialize': Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/binder.rb:269:in `new'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/binder.rb:269:in `add_tcp_listener'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/binder.rb:105:in `block in parse'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/binder.rb:88:in `each'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/binder.rb:88:in `parse'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/runner.rb:144:in `load_and_bind'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/cluster.rb:391:in `run'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/launcher.rb:174:in `run'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/rack/handler/puma.rb:69:in `run'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/rack-2.0.5/lib/rack/server.rb:297:in `start'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:44:in `start'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:135:in `block in perform'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:130:in `tap'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:130:in `perform'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/command/base.rb:63:in `perform'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/command.rb:44:in `invoke'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/commands.rb:16:in `<top (required)>'
    from /home/ahmed/Rails/sample_app/bin/rails:9:in `require'
    from /home/ahmed/Rails/sample_app/bin/rails:9:in `<top (required)>'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/client.rb:30:in `run'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/spring-2.0.2/bin/spring:49:in `<top (required)>'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load'
    from /home/ahmed/.rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>'
    from /home/ahmed/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
    from /home/ahmed/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
    from /home/ahmed/Rails/sample_app/bin/spring:15:in `<top (required)>'
    from bin/rails:3:in `load'
    from bin/rails:3:in `<main>'

Я думал, что какой-то процесс или что-то работает на порту 3000, поэтому я попытался найти его, используя

lsof -wni tcp:3000

но команда ничего не возвращает, так что это выглядит очень странно, какие-либо решения?

Обновление # 1

Я запускаю этот код из другого вопроса на stackoverflow, и я получил, что

➜  ~ sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000
ruby      1595        beef-xss   17u  IPv4  32839      0t0  TCP *:3000 (LISTEN)

поэтому я попытался

kill -9 1595

и

kill -9 32839

, но ничего не помогло

также я перезагрузил компьютер, но такая же проблема существует, и естьв моих папках "tmp / pids" нет файлов

Обновление # 2

Решено после удаления чего-то, называемого beef-xss, с использованием

sudo apt-get --purge remove beef-xss

Ответы [ 4 ]

0 голосов
/ 26 мая 2018

Я запускаю этот код из другого вопроса на stackoverflow, и я получил это

➜  ~ sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000
ruby      1595        beef-xss   17u  IPv4  32839      0t0  TCP *:3000 (LISTEN)

, поэтому я попытался

kill -9 1595

и

kill -9 32839

, но ничего не получалось

также я перезагрузил компьютер, но та же проблема существует, и в моих папках "tmp / pids" нет файлов

Обновление # 2

Решено после удалениячто-то под названием beef-xss с использованием

sudo apt-get --purge remove beef-xss
0 голосов
/ 26 мая 2018

Я думаю, что вы запустили другой сервер на том же порту, и вы не остановили это, к сожалению, и командная строка закрылась, поэтому она показывает эту ошибку.Таким образом, вы можете решить эту проблему, если вы restart ваш компьютер.

Просто перезагрузите компьютер и попробуйте снова.

Также вы можете попробовать удалить файлы из tmp/pids/

0 голосов
/ 26 мая 2018

Если вы используете операционную систему Linux

Сначала мы будем использовать команду fuser, которая определяет, какие процессы используют файл или сокет.

fuser -n tcp 3000
3000 / tcp: 7425

Параметр -nиспользуется, когда мы хотим идентифицировать процессы, использующие сокеты TCP или UDP, в моем случае я хочу знать, кто использует порт 3000.

Команда возвращает pid процесса, с этими данными и с помощьюиз команды ps мы получим больше информации об этом.

ps x | grep 7425
7425 pts / 3 Tl 1:15 /home/carlos/.rvm/rubies/ruby-1.9.3-p0/bin/ruby 
script / rails s

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

kill -9 7425

И тогда мы видим, что действительно процесс завершен.

ps x | grep 7425
7973 pts / 3 S + 0:00 grep --color = auto 7425
[1] + Finished (killed) rails s

Надеюсь, он вам пригодится

Статья ответаhttp://community.logicalbricks.com/node/103

0 голосов
/ 26 мая 2018

Вы пытались удалить файлы pid в tmp / pids ?Если в папке есть что-либо, попробуйте найти процесс Puma с pgrep -lf puma и посмотрите, есть ли какой-нибудь процесс этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...