【问题标题】:Dedicated CoreNLP Server Control Issues专用 CoreNLP 服务器控制问题
【发布时间】:2017-09-30 08:43:16
【问题描述】:

问题:如何确认我的“专用服务器”是否正常运行?

背景:我正在努力让“专用 CoreNLP 服务器”在独立的 Linux 系统上运行。该系统是一台运行 CentOS 7 的笔记本电脑。之所以选择该操作系统,是因为 Dedicated CoreNLP Server 的说明明确指出它们适用于 CentOS。

我已逐步遵循专用 CoreNLP 服务器的说明(概述如下):

  1. 从 Stanford CoreNLP 网站(不是 GitHub)下载 CoreNLP 3.7.0 并将其放置/提取到 /opt/corenlp 文件夹中。
  2. 安装authbind并创建一个名为'nlp'的用户,拥有超级用户权限并将其绑定到80端口

    sudo mkdir -p /etc/authbind/byport/

    sudo touch /etc/authbind/byport/80

    sudo chown nlp:nlp /etc/authbind/byport/80

    sudo chmod 600 /etc/authbind/byport/80

  3. 将启动脚本从路径edu/stanford/nlp/pipeline/demo/corenlp的源jar复制到/etc/init.d/corenlp

  4. 赋予启动脚本可执行权限:sudo chmod a+x /etc/init.d/corenlp

  5. 将脚本链接到/etc/rc.d/ln -s /etc/init.d/corenlp /etc/rc.d/rc2.d/S75corenlp

完成这些步骤应该允许我运行命令sudo service corenlp start 以运行专用服务器。当我在终端中运行此命令时,我得到输出“CoreNLP 服务器已启动”,它IS 与启动脚本“corenlp”一致。然后我再次运行启动命令并得到相同的响应,这与启动脚本一致。据我所知,如果服务器实际上正在运行并且我尝试再次启动它,我应该会收到消息“CoreNLP 服务器已经在运行!”这让我相信我的服务器实际上并没有按预期运行。

此命令是否正确启动服务器?我怎么知道?

由于“正确”命令没有按我想的那样运行,我使用了命令sudo systemctl *start* corenlp.service 并使用sudo systemctl *status* corenlp.service 检查了服务的状态。我不确定这是否是启动和停止“专用 CoreNLP 服务器”的合适方式,但我可以控制该服务。我只是不知道我是否真的在启动和停止我的专用服务器。

我可以使用systemctl命令来操作我的Dedicated CoreNLP Server吗?

【问题讨论】:

  • @Gabor 你似乎对 CoreNLP 有知识和经验。你能告诉我一些关于我正在经历的事情吗?
  • @StanfordNLPHelp
  • ps 告诉你什么,日志说什么?启动脚本是不久前编写的,在我们拥有服务器的 /ready 端点之前,所以现在它总是说服务器已启动,即使它无法启动。
  • 不确定ps 会看到什么。我是一名机械工程师,有点脱离我的元素/仍在学习。如果我只使用不带参数的ps,它会打印两行输出4950 pts/5 00:00:00 ps30134 pts/5 00:00:00 bash,我还使用`ps -A 来获取完整列表,但我不知道我在寻找什么。从你所说的脚本来看,即使启动失败,脚本也会说它启动,我的服务器也启动失败。 @Gabor
  • [nlp@localhost corenlp]$ ps -e PID TTY TIME CMD 1 ? 00:00:03 系统 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 7 ? 00:00:00 迁移/0 8 ? 00:00:00 rcu_bh 9? 00:00:03 rcu_sched 10? 00:00:00 看门狗/0 11 ? 00:00:00 看门狗/1 12 ? 00:00:00 迁移/1 13 ? 00:00:00 ksoftirqd/1 15 ? 00:00:00 kworker/1:0H 16 ? 00:00:00 看门狗/2 17 ? 00:00:00 迁移/2 18 ? 00:00:00 ksoftirqd/2

标签: linux terminal centos stanford-nlp


【解决方案1】:

请阅读最初发布的问题下方的 cmets。这是@GaborAngeli 和我自己之间的反复,导致我的问题/问题得到解决。

遵循斯坦福 CoreNLP 网页上概述的有关如何设置专用服务器的所有说明后,为了让我的 CoreNLP 服务器实例在我的机器上本地运行,我采取了两个关键步骤,如下所示:

  1. 对“corenlp”启动脚本进行了两次修改。 (1) 在开头添加 sudo,因为用户“nlp”需要对系统上某些文件的权限 (2) 将第一个文件夹路径从 /usr/local/bin/authbind 更改为 /usr/bin/authbind。 authbind 自从编写启动脚本后,安装肯定发生了变化。

    nohup su "$SERVER_USER" -c "sudo /usr/bin/authbind --deep java -Djava.net.preferIPv4Stack=true -Djava.io.tmpdir_"$CORENLP_DIR" -cp "$CLASSPATH" -mx15g edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 80"

  2. 如果您尝试使用上述更改启动服务器,您将无法成功运行服务器,因为使用 sudo 需要输入密码。为了在不需要输入密码的情况下允许 sudo 权限,您需要编辑 sudoers 文件(我在 root 用户 b/c 下执行此操作,您需要更改甚至查看此文档的权限)。我的 sudoers 文件位于 /etc。有一部分写着## Allows people in group wheel to run all commands,下面是写着##Same thing without a password 的部分。您只需要删除下一行前面的注释标记 (#) 表格,上面写着 %wheel ALL+(ALL) NOPASSWD: ALL。保存此文件。 编辑此文件时请小心谨慎,因为它可能会导致严重问题。只进行上面概述的必要更改

这两个步骤使我能够成功运行我的专用服务器。我的系统在 CentOS 7 上运行。

有用的提示:通过与@GaborAngeli 的讨论,我了解到在“corenlp”文件夹中(/opt/corenlp,如果您按照说明正确操作)您可以打开stderr.log 文件以提供帮助你在解决你的服务器的问题。如果您要在命令窗口中运行服务器,这将输出您将看到的内容。如果有错误也会在这里输出,这非常有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    相关资源
    最近更新 更多