linux - 专用 CoreNLP 服务器控制问题

标签 linux terminal centos stanford-nlp

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

背景:我正在努力获得在独立 Linux 系统上运行的“专用 CoreNLP 服务器”。该系统是运行 CentOS 7 的笔记本电脑。选择该操作系统是因为 Dedicated CoreNLP Server 的说明特别说明它们适用于 CentOS。

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

  1. 从 Stanford CoreNLP 网站(而非 GitHub)下载 CoreNLP 3.7.0 并将其放置/解压到 /opt/corenlp 中文件夹。
  2. 安装了 authbind 并创建了一个名为 'nlp' 的用户,具有 super 用户权限并将其绑定(bind)到端口 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 server started”,它IS与启动脚本“corenlp”一致。然后我再次运行启动命令并得到相同的响应,这与启动脚本一致。据我所知,如果服务器实际上正在运行并且我尝试再次启动它,我应该会收到消息“CoreNLP 服务器已经在运行!”这让我相信我的服务器实际上没有按预期运行。

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

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

我可以使用systemctl命令来操作我的专用CoreNLP服务器吗?

最佳答案

请阅读最初发布的问题下方的评论。这是@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 文件来帮助您排除服务器故障。如果您要在命令窗口中运行服务器,这将输出您将看到的内容。如果出现错误,也会在此处输出,这非常有帮助。

关于linux - 专用 CoreNLP 服务器控制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43744429/

相关文章:

linux - Startx 和 VNC 无法在 AWS Lightsail CentOS7 上运行

linux - 连接到特定无线网络时运行命令

java - 当堆稳定时诊断 Java 中的 RSS 泄漏

macos - 递归获取文件夹中图像的文件大小和文件路径,某些子文件夹除外

linux - 如何在 CentOS 5 上升级到 Subversion 1.5?

centos - Ansible 在 CentOS7 中使用 {0..{{ansible_processor_cores}}} 启用 systemctl 服务不起作用

linux - Azure Powershell 模块 - Linux (.NET Core) 支持

c++ - 正在发送 UDP 广播,但未收到

java - 在 Java 中授予 macOS 上的权限后运行 .command 文件

objective-c - Cocoa 中 AuthorizationExecuteWithPriveleges 的非常奇怪的问题