使用capistrano部署时获取错误
DEBUG [aaaad896] Command: cd /home/dev/PROJECT-NAME/current && ( export RAILS_ENV="production" ; ~/.rvm/bin/rvm default do bundle exec unicorn -c /home/dev/PROJECT-NAME/current/config/unicorn.rb -E deployment -D )
DEBUG [aaaad896] master failed to start, check stderr log for details
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as dev@XX.XXX.XXX.XX: bundle exit status: 1
bundle stdout: Nothing written
bundle stderr: master failed to start, check stderr log for details
其他日志。
Errno::EADDRINUSE: Address already in use - bind(2) for 0.0.0.0:8080
/home/dev/PROEJCT-NAME/shared/bundle/ruby/2.3.0/gems/unicorn-5.1.0/lib/unicorn/socket_helper.rb:149:in `bind'
unicorn.rb文件:unicorn.rb
deploy.rb文件 deploy.rb
默认(nginx / site-enabled / default)文件:default
每次重新启动独角兽时我都会在capistrano中遇到此错误。那么我该如何解决这个问题?
答案 0 :(得分:2)
问题是您在端口8080中有另一个服务侦听,这是您的日志所说的内容。如果您正在使用Linux,则可以使用lsof -i:8080
检查它正在使用哪个服务。这将告诉您谁正在使用该端口。如果您可以终止服务,只需执行此操作即可,只需更改配置文件中的端口即可。
答案 1 :(得分:0)
要杀死已经运行的进程,可以使用
检查它们ps aux | grep unicorn
将列出类似的内容
deployer 3807 2.8 9.3 369964 94996 ? Sl 12:51 0:03 unicorn master -D -c /home/deployer/apps/cb_app/current/config/unicorn.rb -E staging
deployer 3816 0.0 8.5 369964 87040 ? Sl 12:51 0:00 unicorn worker[0] -D -c /home/deployer/apps/cb_app/current/config/unicorn.rb -E staging
deployer 3818 0.0 8.5 369964 87200 ? Sl 12:51 0:00 unicorn worker[1] -D -c /home/deployer/apps/cb_app/current/config/unicorn.rb -E staging
然后您可以用
杀死它们kill 3807
现在再次尝试部署,看看主服务器是否启动。
答案 2 :(得分:0)
有时候,这与权限有关,因为独角兽重启后需要将其写入日志。检查/ log的文件夹权限,并使其所有人都可写。
答案 3 :(得分:0)
我遇到了同样的问题,是的,这是关于权限的,早在docker GitLab容器(或服务器)关闭时,我确实对本地计算机上的日志和数据文件(即卷)的权限进行了一些更改。由于更改了权限,因此GitLab容器在启动时无法写入任何内容,因此出现此错误。当我恢复所做的更改时。对我来说很好。