【发布时间】:2017-12-12 02:08:12
【问题描述】:
因此,我使用烧瓶前端构建了一个数据和 NLP 应用程序,该应用程序在本地完美运行,但是当我尝试按照我们建议的那样在 Apache 服务器后面的 AWS(Ubuntu linux)上进行设置时,开始出现大量问题(烧瓶不是为部署而设计的)。在这种设置下,python 模块的导入突然变成了一个相当大的挑战,在 Stackoverflow 上有很多关于它的问题。已经解决了其中大约 5 个问题,每次在整个代码中都使用大量 Python 日志记录语句来查看各种脚本究竟在什么时候崩溃或挂起(没有错误消息),然后它比以往任何时候都更进一步,这个问题关于 NLTK 语料库的位置出现了。不是 NLTK 模块,导入很好,只是语料库文件夹。
因此,这样做通常只需要以下代码:
import nltk
nltk.download()
这会打开一种用户界面,您可以在其中选择要下载的语料库或 NLP 项目以及是否更改目录以将其存储在其他地方。默认情况下,它会在您的主目录中创建目录nltk_data/ 并将其放入其中。
所以我起初认为问题是该文件夹需要 Apache 用户 www-data 的权限,但这不起作用。然后在 Apache 错误日志中注意到它查看了 4 个文件夹,但没有找到任何东西——其中一个是 /var/www/nltk_data,而没有一个是它实际所在的主目录。其他三个不记得了..
我在 Stackoverflow (1,2,3,4) 上查看了几个类似的问题,但决定选择更简单的问题。以下内容也是如此:
sudo mkdir /var/www/nltk_data
sudo cp -r nltk_data/ /var/www/
然后我再次刷新 Apache 日志,重新启动服务器并开始检查日志。它以通常的速度运行,需要几分钟才能完成脚本,正在重新检查日志,新的日志消息不断出现,然后一些关于内存的消息不断在 ssh 屏幕上重复,日志不再可见。我什么都打不出来。它让我退出,不允许我重新登录。进入 AWS 控制台,重新启动了两次。停止它,重新启动它,仍然无法登录。所以一怒之下,终止了它。很遗憾这样做,但如果您无法登录,则认为将其保留在那里没有任何意义。
问题:
- 是否可以将 nltk_data 目录复制到 Apache 正在查找的 /var/www 中,我应该再这样做吗?
- 如果 EC2 实例内存不足,它是否通常会严重杀死它,以至于即使在停止和启动它之后,您也无法再登录?
- 如果这种情况再次发生,从我的本地终端,有没有办法在“安全”模式下重新启动这个东西,这样我就可以进入那里并尝试撤消我所做的任何杀死它的事情? (而不仅仅是有效地删除整个内容)
现在可能会再做一次,重新创建实例,也许 4MB 内存不足以让我的应用程序和 Apache 一起使用,想知道这些事情的答案或任何其他相关提示,以便我下次必须这样做nltk 步骤..
【问题讨论】:
-
我无法与 AWS 交谈,但
nltk_data没有理由在/var/www之下。只需确保您的nltk可以找到它,通过设置环境变量NLTK_DATA(或在您的应用程序中调整nltk.data.path,请参阅stackoverflow.com/questions/3522372/…) -
如果 'import nltk` 工作正常(并且您也拥有所有依赖项),那么您链接到的四个问题中只有
1是相关的——它没有答案。问题 3 在任何情况下都无关紧要。 -
感谢您的回答并查看已发布的问题。同时发现 link 回答了我的一个问题 - 不幸的是,EC2 实例无法在安全模式下启动,恢复过程听起来不愉快。这次有一个更大的内存,以减少再次发生的机会,并会看看我什么时候达到那个点,如果我解决了 nltk 目录问题。
标签: python apache amazon-ec2 nltk mod-wsgi