代码之家  ›  专栏  ›  技术社区  ›  TheUnknownGeek

从Openshift运行Shoutcast权限被拒绝错误

  •  0
  • TheUnknownGeek  · 技术社区  · 10 年前

    我一直在关注这个 blog 使用diy盒带在openshift上设置shoutcast服务器。在用服务器的OPENSHIFT_DIY_IP替换destip并编辑操作和停止挂钩后,我发现当我访问应用程序的url时,服务器没有启动,相反,我得到了:

    503服务暂时不可用

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

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

    服务器日志

    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的shoutcast发行版时)

    我在几个论坛上读到,openshift经常重置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 &
    

    start action hook(当我使用linux的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),而这些文件基本上运行整个服务。我已经在自己的本地主机上测试了服务器,发现它工作得很好,所以我毫不怀疑它是否能够运行(使用本文中列出的正确设置 博客 它会起作用。

    编辑:已解决

    为了更改权限并保持这种状态,需要使用git对其进行编辑

    git update-index --chmod=+x filename
    git commit -m 'update file permissions ect...'
    git push origin master
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   TheUnknownGeek    10 年前

    在遇到了更多stackoverflow答案后(我不记得我用了哪一个),我读到openshift会在每次git推送时重置所有内容(以保留我假设的代码的安全性)。因此,解决权限问题的唯一方法实际上是使用git,而不是通过filezilla之类的ftp软件或ssh。这样,更改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数据库,也可以使用相同的命令将其转发到该数据库。端口转发意味着您将使用localhost或127.0.0.1以及rhc端口转发指示的任何端口,而不是在openshift上查找流和mysql的ip:Port。你也可以使用你最喜欢的其他软件来广播,在这种情况下,我建议像这样设置一个批处理文件:

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

    如果您有硬件通过 barix box 可能会有一些其他棘手的方式来实现这一点。