问:如何确认我的“专用服务器”是否正常运行?
背景:我正在一个独立的linux系统上运行一个“专用corenlp服务器”。这个系统是一台运行centos 7的笔记本电脑。之所以选择此操作系统,是因为aDedicated CoreNLP Server的说明特别指出它们适用于centos。
我已经一步一步地遵循了专用corenlp服务器的说明(概述如下):
从斯坦福大学corenlp网站(不是github)下载corenlp 3.7.0并将其放入/提取到/opt/corenlp文件夹中。
安装authbind
并创建一个名为“nlp”的用户,该用户具有超级用户权限,并将其绑定到端口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”,这和启动脚本“corenlp”一致。然后我再次运行start命令并得到相同的响应,这与启动脚本不一致。据我所知,如果服务器确实在运行,并且我试图再次启动它,我应该会得到消息“corenlp server is already running!”这使我相信我的服务器实际上并没有按预期运行。
此命令是否正确启动服务器?我怎么知道?
由于“正确的”命令没有按我的预期工作,我使用了命令sudo systemctl *start* corenlp.service
并用sudo systemctl *status* corenlp.service
检查了服务的状态。我不确定这是否是启动和停止“专用corenlp服务器”的合适方式,但我可以控制该服务。我只是不知道我是否真的在启动和停止我的专用服务器。
我可以使用systemctl
命令来操作我的Dedicated CoreNLP Server
吗?
最佳答案
请阅读最初发布的问题下面的评论。这是@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文件(我在根用户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/