问题:如何确认我的“专属服务器”是否正常运行?
背景:我正在努力获得在独立 Linux 系统上运行的“专用 CoreNLP 服务器”。该系统是运行 CentOS 7 的笔记本电脑。选择该操作系统是因为 Dedicated CoreNLP Server 的说明特别说明它们适用于 CentOS。
我已逐步遵循专用 CoreNLP 服务器的说明(如下所述):
- 从 Stanford CoreNLP 网站(而非 GitHub)下载 CoreNLP 3.7.0 并将其放置/解压到 /opt/corenlp 中文件夹。
安装了
authbind
并创建了一个名为 'nlp' 的用户,具有 super 用户权限并将其绑定(bind)到端口 80sudo 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
将路径
edu/stanford/nlp/pipeline/demo/corenlp
的源 jar 中的启动脚本复制到/etc/init.d/corenlp
给启动脚本可执行权限:
sudo chmod a+x/etc/init.d/corenlp
将脚本链接到
/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 服务器实例化在我的机器上本地运行,我采取了两个关键步骤,如下所示:
对“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"
如果您尝试使用上述更改启动服务器,您将无法成功运行服务器,因为使用 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/