我最近在不同的计算机上安装了 OSX 和 Ubuntu。然后我尝试为两个操作系统安装 redis 和 foreman。这两个错误都没有抛出任何标志,并且似乎执行成功。但是,每当我用
foreman start
启动 foreman 时,我都会在两台计算机上遇到以下问题:
23:48:35 web.1 | started with pid 1316
23:48:35 redis.1 | started with pid 1317
23:48:35 worker.1 | started with pid 1318
23:48:35 redis.1 | [1317] 11 Jun 23:48:35.180 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
23:48:35 redis.1 | [1317] 11 Jun 23:48:35.181 * Increased maximum number of open files to 10032 (it was originally set to 256).
23:48:35 redis.1 | [1317] 11 Jun 23:48:35.181 # Creating Server TCP listening socket *:6379: bind: Address already in use
23:48:35 redis.1 | exited with code 1
23:48:35 system | sending SIGTERM to all processes
23:48:35 worker.1 | terminated by SIGTERM
23:48:35 web.1 | terminated by SIGTERM
出于某种原因,这对我来说似乎是一个路径问题,因为似乎 Redis 或 Foreman 找不到它们成功执行所需的文件,但我不太确定。
在 OSX 上我使用
gem install foreman
和 Brew install Redis
.
在 Ubuntu 上我使用了以下命令:
Redis:
$ cd ~
$ wget http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make
$ make test
工头:
$ gem install foreman
我在 OSX 上的路径如下:
/Users/c/.rvm/gems/ruby-2.1.0/bin:/Users/c/.rvm/gems/ruby-2.1.0@global/bin:/Users/c/.rvm/rubies/ruby -2.1.0/bin:/Users/c/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
在 Ubuntu 上,我的路径是:
/usr/local/bin:/usr/lib/postgresql:/usr/lib/postgresql/9.3:/usr/lib/postgresql/9.3/lib:/usr/lib/postgresql/9.3/bin:/usr/share /doc:/usr/share/doc/postgresql-9.3:/usr/share/postgresql:/usr/share/postgresql/9.3:/usr/share/postgresql/9.3/man:$PATH
Redis-server 似乎执行成功一次,然后失败并显示消息:
[1457] 12 Jun 00:02:48.481 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
[1457] 12 Jun 00:02:48.482 * Increased maximum number of open files to 10032 (it was originally set to 256).
[1457] 12 Jun 00:02:48.483 # Creating Server TCP listening socket *:6379: bind: Address already in use
尝试
$ redis-server stop
返回:
[1504] 12 Jun 00:05:56.173 # Fatal error, can't open config file 'stop'
我需要帮助弄清楚如何让 Foreman 和 Redis 协同工作,以便我可以在浏览器中通过 127.0.0.1 查看本地文件
编辑
Redis 确实启动了,但当我导航到 localhost:6379 时没有任何反应。我也尝试了寻找进程的建议。发现了
c 751 0.0 0.0 2432768 596 s005 R+ 2:03PM 0:00.00 grep redis
c 616 0.0 0.0 2469952 1652 s004 S+ 2:01PM 0:00.05 redis-server *:6379
尝试
kill
该过程会导致
kill:用法:kill [-s sigspec | -n 符号 | -sigspec] pid |工作规范 ...或kill -l [sigspec]
尝试使用以下命令启动 Redis 服务器:
redis-server <path to your config file>
另外,检查是否有 Redis 服务器实例已在运行
ps aux | grep redis
然后如果找到进程:
kill <process id>
重新启动您的 Redis 服务器。
这个衬垫将杀死任何现有的 redis 服务器,然后启动一个新的 redis 服务器。当在 Foreman 中运行时,它不会发送导致 Foreman 退出的 SIGTERM,而是发送 SIGINT 让 Foreman 继续。
(ps aux | grep 6379 | grep redis | awk '{ print $2 }' | xargs kill -s SIGINT) && redis-server
在 Procfile.dev 中:
redis: (ps aux | grep 6379 | grep redis | awk '{ print $2 }' | xargs kill -s SIGINT) && redis-server
试试这个:
$ sudo systemctl stop redis-server
现在运行:
foreman start
就我而言,我的 Procfile.dev 中有重复:
web: env RUBY_DEBUG_OPEN=true bin/rails server
css: yarn watch:css
vite: bin/vite dev
web: bin/rails s
我删除了最后一行,解决了它。