修复ifup / 如果up-eth中的Django / 流浪汉错误
我通常使用本地无业游民实例测试django项目。 流浪汉创建了一个运行django项目的虚拟机,该虚拟机可立即识别代码更改。但是,我最近正在运行测试,因此VM突然开始输出错误消息,如下所示。注意:我’已编辑这些终端输出的某些部分。
(滚动到这篇文章的底部以跳至解决方案)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
(网络应用) [流浪汉@项目 流浪汉]$ ./管理.py 测试 追溯 (最 最近 呼叫 持续): 文件 “ ./manage.py”, 线 8, 在 <模组> 执行_from_command_line(系统.精油) 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/core/management/__init__.py”, 线 353, 在 执行_from_command_line 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/core/management/__init__.py”, 线 345, 在 执行 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/core/management/commands/test.py”, 线 30, 在 跑_from_argv 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/core/management/base.py”, 线 348, 在 跑_from_argv 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/core/management/commands/test.py”, 线 74, 在 执行 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/raven/contrib/django/management/__init__.py”, 线 41, 在 新_execute 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/core/management/base.py”, 线 413, 在 执行 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/utils/translation/__init__.py”, 线 147, 在 启用 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/utils/translation/trans_real.py”, 线 216, 在 启用 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/utils/translation/trans_real.py”, 线 205, 在 翻译 文件 “ /home/vagrant/venvs/webapp/lib/python2.7/site-packages/django/utils/translation/trans_real.py”, 线 118, 在 __在里面__ IOError: 没有 翻译 档案 发现 对于 默认 语言 恩-我们. |
没有翻译文件?一世’我从来没有听说过他们。认为这可能是一个随机错误,因此我尝试再次运行测试并得到:
1 2 |
(网络应用) [流浪汉@项目 流浪汉]$ ./管理.py 测试 -重击: ./管理.py: /我们r/箱子/环保: 坏 口译员: 输入值/输出 错误 |
我尝试注销实例,但遇到I / O错误:
1 2 |
(网络应用) [流浪汉@项目 流浪汉]$ 登出 -重击: /首页/流浪汉/.重击_logout: 输入值/输出 错误 |
尝试再次ssh进入VM:
1 2 |
先生-个人电脑:项目 脆弱的$ 流浪汉 ssh ssh_exchange_identification: 连接 关闭 通过 远程 主办 |
有时“关闭并重新打开”解决方案可以工作,所以让’s尝试流浪者重装:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
先生-个人电脑:项目 脆弱的$ 流浪汉 重装 ==> 默认: 尝试中 优美 关掉 的 虚拟机 ... 默认: 来宾 通讯 可以 不 是 已建立! 这个 是 通常 因为 默认: SSH协议 是 不 跑步, 的 认证方式 信息 原为 变了, 默认: 要么 一些 其他 联网 问题. 流浪汉 将 力 停, 如果 默认: 能. ==> 默认: 强迫 关掉 的 虚拟机 ... ==> 默认: 检查 如果 框 'bento / centos-7.1' 是 向上 至 日期... ==> 默认: 清算 任何 先前 组 转发 港口... ==> 默认: 固定 港口 碰撞 对于 22 => 2222. 现在 上 港口 2200. ==> 默认: 清算 任何 先前 组 网络 介面... ==> 默认: 准备中 网络 介面 基于 上 组态... 默认: 适配器 1: t 默认: 适配器 2: 仅主机 ==> 默认: 转寄 港口... 默认: 22 => 2200 (适配器 1) ==> 默认: 跑步 “预启动” 虚拟机 定制... ==> 默认: 正在启动 虚拟机 ... ==> 默认: 等候 对于 机 至 开机. 这个 可能 采取 a 几个 分钟... 默认: SSH协议 地址: 127.0.0.1:2200 默认: SSH协议 用户名: 流浪汉 默认: SSH协议 认证 方法: 私人的 键 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... ^C==> 默认: 等候 对于 清理 之前 退出... 先生-个人电脑:项目 脆弱的$ 流浪汉 退出 后 清理 到期 至 外部 打断. |
此轮超时错误。该错误似乎与身份验证有关,但它’并非全部。尽管未正确设置,但VM仍根据全局状态运行,这有点奇怪。
1 2 3 4 |
先生-个人电脑:项目 脆弱的$ 流浪汉 全球-状态 id 名称 提供者 州 目录 -------------------------------------------- 0e8faad 默认 虚拟盒子 跑步 /卷数/数据/用户数/脆弱的/文件资料/码/项目 |
我也跑了 名为VirtualBox的GUI 有时对于可视化笔记本电脑上的所有VM十分方便。检查那里,它似乎也存在–所以全局状态’t lying 至 我们. 让’s try 停ing 它:
1 2 3 4 5 6 7 |
先生-个人电脑:项目 脆弱的$ 流浪汉 停 ==> 默认: 尝试中 优美 关掉 的 虚拟机 ... 默认: 来宾 通讯 可以 不 是 已建立! 这个 是 通常 因为 默认: SSH协议 是 不 跑步, 的 认证方式 信息 原为 变了, 默认: 要么 一些 其他 联网 问题. 流浪汉 将 力 停, 如果 默认: 能. ==> 默认: 强迫 关掉 的 虚拟机 ... |
这次强制关闭。到目前为止,调试此错误是’不好完全奇怪,因为VM事先运行良好。在产生相同的超时后流浪汉:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
先生-个人电脑:项目 脆弱的$ 流浪汉 向上 带来 机 '默认' 向上 与 'virtualbox' 提供者... ==> 默认: 检查 如果 框 'bento / centos-7.1' 是 向上 至 日期... ==> 默认: 清算 任何 先前 组 转发 港口... ==> 默认: 固定 港口 碰撞 对于 22 => 2222. 现在 上 港口 2200. ==> 默认: 清算 任何 先前 组 网络 介面... ==> 默认: 准备中 网络 介面 基于 上 组态... 默认: 适配器 1: t 默认: 适配器 2: 仅主机 ==> 默认: 转寄 港口... 默认: 22 => 2200 (适配器 1) ==> 默认: 跑步 “预启动” 虚拟机 定制... ==> 默认: 正在启动 虚拟机 ... ==> 默认: 等候 对于 机 至 开机. 这个 可能 采取 a 几个 分钟... 默认: SSH协议 地址: 127.0.0.1:2200 默认: SSH协议 用户名: 流浪汉 默认: SSH协议 认证 方法: 私人的 键 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... 默认: 警告: 连接 超时. 重试... |
让’尝试完全销毁无业游民的实例….
1 2 3 4 5 6 |
先生-个人电脑:项目 脆弱的$ 流浪汉 破坏 默认: 是 您 当然 您 想 至 破坏 的 '默认' 虚拟机 ? [y/N] y ==> 默认: 强迫 关掉 的 虚拟机 ... ==> 默认: 毁灭 虚拟机 和 关联的 驱动器... ==> 默认: 跑步 清理 任务 对于 “可以” 供应者... ==> 默认: 跑步 清理 任务 对于 'hostsupdate' 供应者... |
从头开始:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
先生-个人电脑:项目 脆弱的$ 流浪汉 向上 带来 机 '默认' 向上 与 'virtualbox' 提供者... ==> 默认: 输入 基础 框 'bento / centos-7.1'... ==> 默认: 匹配 苹果电脑 地址 对于 NAT 联网... ==> 默认: 检查 如果 框 'bento / centos-7.1' 是 向上 至 日期... ==> 默认: 设置 的 名称 的 的 虚拟机 : 项目 ==> 默认: 固定 港口 碰撞 对于 22 => 2222. 现在 上 港口 2200. ==> 默认: 清算 任何 先前 组 网络 介面... ==> 默认: 准备中 网络 介面 基于 上 组态... 默认: 适配器 1: t 默认: 适配器 2: 仅主机 ==> 默认: 转寄 港口... 默认: 22 => 2200 (适配器 1) ==> 默认: 跑步 “预启动” 虚拟机 定制... ==> 默认: 正在启动 虚拟机 ... ==> 默认: 等候 对于 机 至 开机. 这个 可能 采取 a 几个 分钟... 默认: SSH协议 地址: 127.0.0.1:2200 默认: SSH协议 用户名: 流浪汉 默认: SSH协议 认证 方法: 私人的 键 默认: 警告: 连接 超时. 重试... 默认: 默认: 流浪汉 不安全的 键 检测到. 流浪汉 将 自动地 更换 默认: 这个 与 a 新 产生的 密钥对 对于 更好 安全. 默认: 默认: 插入 产生的 上市 键 内 来宾... 默认: 拆下 不安全的 键 从 的 来宾 如果 它's 当下... 默认: 键 插入! 断开连接 和 重新连接 使用 新 SSH协议 键... ==> 默认: 机 开机 和 准备! ==> 默认: 检查 对于 来宾 加法 在 虚拟机 ... ==> 默认: 配置中 和 使能 网络 介面... 的 以下 SSH协议 命令 回应 与 a 非-零 出口 状态. 流浪汉 假设 那 这个 手段 的 命令 失败了! <跨度 风格=“颜色:#ff0000;”>/箱子/如果up 恩p0s8 标准输出 从 的 命令: 错误 : [/等等/系统配置/网络-剧本/如果up-道德] 错误, 一些 其他 主办 已经 用途 地址 192.168.111.224. 斯特德 从 的 命令: </跨度> |
那’这是一个非常奇怪的错误。也许某些事情随机失败了?
1 2 3 4 |
先生-个人电脑:项目 脆弱的$ 流浪汉 向上 带来 机 '默认' 向上 与 'virtualbox' 提供者... ==> 默认: 检查 如果 框 'bento / centos-7.1' 是 向上 至 日期... ==> 默认: 虚拟盒子 虚拟机 是 已经 跑步. |
显然,它仍然创建了VM。 SSH协议进入它可以做到这一点:
1 2 3 4 5 6 7 |
先生-个人电脑:项目 脆弱的$ 流浪汉 ssh [流浪汉@本地主机 ~]$ [流浪汉@本地主机 ~]$ ls [流浪汉@本地主机 ~]$ [流浪汉@本地主机 ~]$ [流浪汉@本地主机 ~]$ 登出 连接 至 127.0.0.1 关闭. |
奇怪的是没有文件!还是有东西’t startup properly.
1 2 3 |
[流浪汉@本地主机 ~]$ 光盘 / [流浪汉@本地主机 /]$ ls 箱子 开机 开发者 等等 首页 LIB 的lib64 媒体 nt 选择 处理 根 跑 箱子 srv 系统 tmp 我们r 变种 |
在这一点上,我有点沮丧,并开始向Google询问错误。我可以找到的最相关的博客文章是Mike Berggren’s solution here: http://mikeberggren.com/post/100289806126/if-up。他解决了这个问题并报告:“我会为您省去其余的细节,但足以说明这一点,我们最终绕过了该检查并从主机运行了相同的命令。它返回了另一个声称拥有所有权的MAC地址“。这是否意味着他从字面上注释掉了进行检查的代码行?他可能遇到了非常不同的问题,而我’我不是开发人员专家,但也许在那里’s a 更好 solution –也许那张支票是有原因的。
让’回顾一下前面提到的网络错误:
1 2 3 4 5 6 7 8 9 10 11 |
的 以下 SSH协议 命令 回应 与 a 非-零 出口 状态. 流浪汉 假设 那 这个 手段 的 命令 失败了! /箱子/如果up 恩p0s8 标准输出 从 的 命令: 错误 : [/等等/系统配置/网络-剧本/如果up-道德] 错误, 一些 其他 主办 已经 用途 地址 192.168.111.224. 斯特德 从 的 命令: |
删除流浪者文件,并显示相同的IP地址。这意味着该特定的无业游民总是被分配该IP地址。如果这是唯一的实例,那么该虚拟网络上的其他对象正在使用它吗?我的mac电脑内部存在某些问题。
1 2 |
先生-个人电脑:项目 脆弱的$ 猫 流浪文件 | grep 111.224 配置.虚拟机.网络 :私人的_network, ip: “ 192.168.111.224” |
我们可以检查一下’通过检查正在运行的进程来真正运行(除了global-status和VirtualBox所说的那样):
1 2 3 |
先生-个人电脑:项目 脆弱的$ ps 辅助 | grep -i vbox | grep 项目 脆弱的 67692 1.0 6.0 3077812 502624 ?? S 2016年3月22日 87:35.54 /应用领域/虚拟盒子.应用程式/内容/苹果系统/VBox无头 -评论 项目 -startvm (杂凑) -vrde 配置 脆弱的 21971 0.6 5.5 3023580 459532 ?? S 5:22PM 1:00.31 /应用领域/虚拟盒子.应用程式/内容/苹果系统/VBox无头 -评论 项目 -startvm (杂凑) -vrde 配置 |
啊哈!实际上有两个。让’销毁我们之前创建的无法运行的空白虚拟机,并查看是否有任何更改:
1 2 3 4 5 6 |
先生-个人电脑:项目 脆弱的$ 流浪汉 破坏 默认: 是 您 当然 您 想 至 破坏 的 '默认' 虚拟机 ? [y/N] y ==> 默认: 强迫 关掉 的 虚拟机 ... ==> 默认: 毁灭 虚拟机 和 关联的 驱动器... ==> 默认: 跑步 清理 任务 对于 “可以” 供应者... ==> 默认: 跑步 清理 任务 对于 'hostsupdate' 供应者... |
是的,它已经消失了:
1 2 |
先生-个人电脑:项目 脆弱的$ ps 辅助 | grep -i vbox 脆弱的 67692 1.3 6.0 3077812 502640 ?? R 2016年3月22日 87:35.98 /应用领域/虚拟盒子.应用程式/内容/苹果系统/VBox无头 -评论 项目 -startvm (杂凑) -vrde 配置 |
使用kill -9 [pid]删除它。
1 |
先生-个人电脑:项目 脆弱的$ 杀 -9 67692 |
现在让’尝试重新创建VM:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
先生-个人电脑:项目 脆弱的$ 流浪汉 向上 带来 机 '默认' 向上 与 'virtualbox' 提供者... ==> 默认: 输入 基础 框 'bento / centos-7.1'... ==> 默认: 匹配 苹果电脑 地址 对于 NAT 联网... ==> 默认: 检查 如果 框 'bento / centos-7.1' 是 向上 至 日期... ==> 默认: 设置 的 名称 的 的 虚拟机 : 项目 ==> 默认: 清算 任何 先前 组 网络 介面... ==> 默认: 准备中 网络 介面 基于 上 组态... 默认: 适配器 1: t 默认: 适配器 2: 仅主机 ==> 默认: 转寄 港口... 默认: 22 => 2222 (适配器 1) ==> 默认: 跑步 “预启动” 虚拟机 定制... ==> 默认: 正在启动 虚拟机 ... ==> 默认: 等候 对于 机 至 开机. 这个 可能 采取 a 几个 分钟... 默认: SSH协议 地址: 127.0.0.1:2222 默认: SSH协议 用户名: 流浪汉 默认: SSH协议 认证 方法: 私人的 键 默认: 警告: 连接 超时. 重试... 默认: 警告: 远程 连接 断开. 重试... 默认: 默认: 流浪汉 不安全的 键 检测到. 流浪汉 将 自动地 更换 默认: 这个 与 a 新 产生的 密钥对 对于 更好 安全. 默认: 默认: 插入 产生的 上市 键 内 来宾... 默认: 拆下 不安全的 键 从 的 来宾 如果 它's 当下... 默认: 键 插入! 断开连接 和 重新连接 使用 新 SSH协议 键... ==> 默认: 机 开机 和 准备! ==> 默认: 检查 对于 来宾 加法 在 虚拟机 ... ==> 默认: 配置中 和 使能 网络 介面... ==> 默认: 安装 共享 资料夹... 默认: /流浪汉 => /卷数/数据/用户数/脆弱的/文件资料/码/项目 ==> 默认: 跑步 供应者: Ansible... |
有用!
结论:
- I’我仍然不确定为什么会首先发生这种情况。一开始的错误完全是突然的– I’d已在该虚拟机上运行了几周而没有任何问题。也许事实是我’d已经运行了这么长时间?
- 流浪汉的全局状态和VirtualBox似乎不能完全准确地报告正在运行的虚拟机,因此绝对可以使用ps检查所有正在运行的vbox进程,并删除没有’t正确关闭。这让我想起了–全局状态下的修剪选项(//www.vagrantup.com/docs/cli/global-status.html),它可以修复持久性旧条目。
非常感谢Tony(http://blog.tonns.org/)以帮助解决此问题!