从Openshift权限拒绝错误运行Shoutcast

时间:2014-08-10 21:06:56

标签: action hook openshift shoutcast

我一直在跟随此blog使用diy盒式磁带在openshift上设置shoutcast服务器。在用我的服务器的OPENSHIFT_DIY_IP替换destip并编辑动作和停止挂钩后,我发现当我访问应用程序的网址时服务器没有启动,而是我得到了<\ n <: / p>

503服务暂时不可用

Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

当我检查动作挂钩中使用的日志文件时,我发现:

的server.log

nohup: failed to run command `/var/lib/openshift/xxxx app-id xxxx/app-root/runtime/repo//diy/sc_serv.exe': Permission denied

(使用窗口的shoutcast发布时)和

nohup: failed to run command `/var/lib/openshift/xxxx app-id xxxx/app-root/runtime/repo//diy/sc_serv': Permission denied

(使用linux&#39; shoutcast发行版)

我已经在几个论坛上读过,通常openhift会重置chmod文件权限并阻止应用程序被执行,而这正是我发现我的openshift应用程序所做的事情(使用filezilla编辑文件权限之后) )。由于sc_serv或sc_serv.exe是保持服务器运行的主要应用程序(命令行应用程序),我想知道如何解决这个奇怪的权限错误。

启动动作挂钩(当我使用窗口的shoutcast发布时)

nohup $OPENSHIFT_REPO_DIR/diy/sc_serv.exe $OPENSHIFT_REPO_DIR/diy/sc_serv.conf > $OPENSHIFT_DIY_LOG_DIR/server3.log 2>&1 &

启动动作挂钩(当我使用linux&#39; shoutcast发行版时)

nohup $OPENSHIFT_REPO_DIR/diy/sc_serv $OPENSHIFT_REPO_DIR/diy/sc_serv.conf > $OPENSHIFT_DIY_LOG_DIR/server3.log 2>&1 &

我想注意博客使用linux,我使用windows编辑openshift存储库,我认为从shoutcast的linux发行版中提取的文件无论是从windows还是linux都是一样的,但我显然无法测试。到目前为止,我所能说的是openshift阻止了主要可执行文件(无论是linux还是windows),它基本上运行整个服务。我已经在我自己的localhost上测试了服务器,发现它运行正常,所以我毫不怀疑它是否可以运行(使用blog中列出的正确设置它可以正常工作。

编辑:已解决

为了更改权限并保持这种方式,需要使用

从git编辑它们
git update-index --chmod=+x filename
git commit -m 'update file permissions ect...'
git push origin master

1 个答案:

答案 0 :(得分:0)

在遇到更多stackoverflow答案之后(并随意链接一个解释这个问题的我不记得我使用过哪一个)我读到openshift会在每次git推送时重置所有内容(权限明智)(以保持安全性我假设的代码)。因此,解决权限问题的唯一方法实际上是使用git,而不是通过像filezilla或ssh这样的ftp软件。这样改变chmod将永久保留。

git update-index --chmod=+x filename
git commit -m 'update file permissions ect...'
git push origin master

最后我在openshift的diy文件夹中的是shoutcast的linux发行版(可以用7-Zip提取。修改后可以通过端口转发来访问它,就像在blog中一样。要进入服务器(设置了openshift的工具),你需要做的就是在命令行中进行广播:

rhc port-forward [app-name]

如果您正在使用Sam广播软件,那么好消息是您可以轻松添加一个mysql数据库,并使用相同的命令将端口转发到该数据库中。端口转发意味着不是在您的流上找到ip:端口而是在openshift上找到mysql,而是使用localhost或127.0.0.1以及rhc port-forward指示的任何端口。您也可以使用其他喜爱的软件进行广播,在这种情况下,我建议您设置一个批处理文件:

cd C:\YourSoftwarePath
start YourSoftware.exe
start rhc port-forward [app-name]

如果你有硬件像barix box一样进行流媒体传输,那么可能会有一些方法可以用其他一些棘手的方式来做这件事。