Openshift:OSError Errno 98 无法更新服务器
我在用Openshift搭建Django/Python 3的服务器。昨天开始,我发现无法更新我的服务器。当我推送一个更改时,推送是成功的。我用SCP查看服务器上的文件,发现更新的文件确实存在。使用rhc git-pull也能下载到正确的文件。不过,只有模板的更改在应用中生效,Python文件的更改却没有任何效果。
当我尝试使用'rhc tail'时,出现了以下错误:
OSError: [Errno 98] Address already in use
搜索这个错误让我觉得我的应用可能有多个服务器进程在运行。我不太确定怎么进行建议的诊断,因为我不控制服务器。有什么想法吗?重启应用并没有解决问题。运行rhc stop似乎成功停止了应用,但我的网站却没有受到影响。(我之前从没尝试过停止,但我想这应该会让网站无法访问。)
3 个回答
我想我解决了这个问题。
我之前用的是一个旧的django项目,基于这个链接的内容:https://github.com/openshift/openshift-community-cartridge-python-3.3/blob/master/template/app.py(这个链接已经失效,我提到它只是为了提供信息)。
在这些旧的社区项目中,有一个叫做app.py
的文件,用来启动CherryPy或httpd,但现在官方的django项目里已经没有这个文件了。(可以查看https://github.com/openshift/django-example)
之所以app.py
不再存在,是因为httpd
服务现在是自动添加的。这就是我们遇到OSError: [Errno 98] Address already in use
错误的原因。
把我项目里的app.py
文件删掉后,问题就解决了。
我之前收到500错误是因为我的Django应用出现了问题,而不是我的Python项目有问题。这就是我当时不明白发生了什么的原因。我在我的项目里执行了find . -name *.log*
命令,查看了所有的日志。
现在我的应用可以正常工作了。祝好运!
通过执行 'rhc app force-stop',然后再执行 'rhc app start' 解决了问题。我不知道是什么导致了这个问题,但强制停止后网站就挂掉了,重新启动后就能用新代码正常运行了。
今天下午我看到一个帖子,里面有人遇到了和我一样的问题。看起来是Openshift对一些东西进行了修改,但我没收到通知,真是郁闷。
可以在这里查看详细内容: Openshift三月博客帖子
@MSDOS,你的回答和我遇到的情况类似,但我想分享一个更通用的解决方案,这可能影响到大多数人。
对我来说,我只需要把app.py(我之前的wsgi入口文件)改名为wsgi.py,之后一切就正常了。现在我还得弄清楚他们对定时任务做了什么改动。