web-dev-qa-db-ja.com

開いているシフトノードアプリでアプリケーション 'appname'を開始できませんでした(ポート8080は使用できません)

Node restifyサーバーをコーヒーで書いたのですが、稼働させられないようです。

デプロイ中に次のエラーが発生します。

アプリケーションポート(8080)が使用可能になるのを待機しています...

その後、私は次のエラーを受け取ります

アプリケーション「appname」を開始できませんでした(ポート8080は使用できません)

Coffeescriptに問題があると思われる場合は、回避策があります。 jsに戻したくありません。

私のサーバーコードは:

restify = require 'restify'
Bunyan = require 'bunyan'

server = restify.createServer
    name: 'APPNAME'
    version: '0.0.1'
    log: Bunyan.createLogger
        name: 'api'
        serializers: 
            req: ()->
                return "bad"

# Usercontroller.access calls a function to process the request
server.post '/user/access', UserController.access

server = create.createServer()
server.listen server_port, ->
    console.log "Http server listening on #{server_port}"
    require('./document')(server.router.mounts, 'restify')
    return
19
philip_nunoo

確認する必要がある最初のステップは、〜/ app-root/logs/nodejs.logの下のログを確認することです

私の場合、パッケージやあらゆる種類のアクセスに問題はありませんでした。ログにある唯一の情報は次のとおりです。

エラー:listen [〜#〜] eacces [〜#〜] at errnoException(net.js:905:11)at Server._listen2(net.js:1024:19)

フロントコンソール以外に理由が見つからない場合は、8080にアクセスできないと表示され、ポート番号とともにIPアドレスを指定したことを確認してください。

これは私がそれを修正した方法です。

var express = require('express');
var app = express();
var http = require('http');

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");


http.createServer(app).listen(app.get('port') ,app.get('ip'), function () {
    console.log("✔ Express server listening at %s:%d ", app.get('ip'),app.get('port'));
    server();
});

前述のように、app.get( 'ip')は、聞くときに非常に重要です。そうでない場合、openshiftはアプリケーションを起動できません。

更新しました:

ログディレクトリに入る方法:

  1. コマンドrhc sshを使用してギアにSSH接続します
  2. ログインしたら、タイプcd $OPENSHIFT_LOG_DIR

Openshift環境によって保存されたログファイルがあります。

29
codebased

これにはいくつかの理由が考えられます。 nodejsが正しく起動しない場合、PaaSは継続的に起動しようとしているようです。ポートの衝突が発生するか、エラーが問題自体とは関係ありません。私の場合、依存関係がありませんでした。問題を解決する最良の方法は、アプリコンテナーでSSHを実行してログファイルを確認することです。tail-f〜/ app-root/logs/nodejs.log

6
Mihai

rhc app create ... --from-code ...および8080を取得できませんか?

ミハイが answer で説明したように、(port 8080 not available)はポートの設定方法に関連する必要はありません。したがって、process.env.OPENSHIFT_NODEJS_PORTprocess.env.OPENSHIFT_NODEJS_IPを正しく使用している場合でも発生する可能性があります。

~/app-root/logs/nodejs.logを確認するアドバイスは大いに役立ちますが、rhc app create ... --from-code ...でエラーが発生した場合はどうなりますか?アプリは作成されないため、sshしてnodejs.logを確認することはできません。

限定バージョンでアプリをプッシュしてみてください-できるだけ多くのコードをコメント化してください。

私にとっては、Expressアプリのみの初期化とリスニングから始めることがうまくいきました。次に、openshiftアプリを作成したら、コードを少しずつコメント解除して、nodejs.logファイルをプッシュしてチェックしました。

このようにして、私はmongoDb名が"APPNAME_"+process.env.NODE_ENVであることがわかりましたが、openshiftはAPPNAMEだけを呼び出すmongoDbデータベースを作成しました

質問に直接回答していないことをお詫びしますが、8080 not availableはあらゆる種類の設定が原因であるようです。おそらくこれは誰かを助けるでしょう。

1
Voy

エクスプレスを使用する場合:app.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);

または:

var port = process.env.OPENSHIFT_NODEJS_PORT;
var ip = process.env.OPENSHIFT_NODEJS_IP;
app.listen(port, ip);
1
eldelosrobots

Openshiftのノードアプリは2ステップのプロセスです:

  1. サーバーを起動する方法へのエントリをpackage.jsonに作成します(アプリへのエントリポイント):

    "scripts": {
    "start": "node server.js"
    },
    "main": "server.js"
    
  2. OPENSHIFT環境変数を使用して、IPとポートを取得します。

    process.env.OPENSHIFT_NODEJS_PORT
    process.env.OPENSHIFT_NODEJS_IP
    

詳細については、次を確認してください: OpenShift: "Failed to execute control start" on node application

1
devprashant

同じエラーが発生しましたが、それはgithubでポイントしていたブランチに関係していました。

マスターは私のメインブランチ(最初に作成されたブランチ)であり、それを指すとビルドされますが、他のブランチを指すとエラーになります。

1
Lorna Kelly

mongodbのユーザー名とパスワードを設定して問題を解決しました

1
philip_nunoo

それを解決する最良の方法は、ログフォルダーをチェックすることです。サーバーにSSHで接続し、nodejs.logファイル、cat nodejs.logでコンテンツを確認してください。

理由は次のとおりです。

  • 他のファイルの構文エラー
  • ポート環境変数がありません
  • IP環境変数がありません(これら2つは他の回答で最後に述べられました)

「ポート8080は使用できません」と表示されていても、エラーはファイル内で正しく実行できなかった可能性があるため、最近の変更を確認するか、ログを直接確認してエラーの場所を見つける必要があります。

0
George

私の場合、上記のようにrhc sshを使用して次のエラーチェックを取得しています。

Unhandled rejection Error: getaddrinfo ENOTFOUND
    at errnoException (dns.js:37:11)
    at Object.onanswer [as oncomplete] (dns.js:124:16)

私は問題を取り除くために設定します

mongo_url = process.env.OPENSHIFT_MONGODB_DB_URL;

マングースuriに。私は以下を試してみましたが

mongo_url = "mongodb://admin:pass@$OPENSHIFT_MONGODB_DB_Host:$OPENSHIFT_MONGODB_DB_PORT/mydbname"

これは機能していませんでした。

これが誰かを助けることを願っています。

0
Sandeep Sharma