web-dev-qa-db-ja.com

同じサーバー上の2つのGhostブログをアップグレードし、1つはサービスとして実行するとすぐに終了します

DigitalOceanサーバーで2つのGhostブログを実行しています。

  • Ubuntu 14.04.3 LTS
  • Nginx 1.4.6(Ubuntu)
  • ノードv0.12.7

私は Digital Oceanが提供する指示 を使用してブログを設定しましたが、ブログは正常に機能し、以前はアップグレードを生き延びました。

昨夜、ブログ#1をGhost v0.6.0から0.7.0にアップグレードしましたが、問題は発生しませんでした。アップグレード後、service ghost-{blog1} restartを実行すると、華やかで勝利を収めてオンラインになりました。

同じ手順ですぐにブログ#2をアップグレードしようとしましたが、サービスを再起動した後にブラウザでブログを開くと、「502BadGateway」エラーが発生しました。

NpmがSQLite3を正しくインストールできないことがわかり、それを修正しました。これで、npm start --productionを実行してブログを正常に開始できます。ターミナルは、Ghostが実行されてリクエストを傍受していることを示しており、ブラウザでサイトとブログアプリを使用できます。

しかし、service ghost-{blog2} startを実行すると、ターミナルエラーが発生することなく失敗し続けます。次のメッセージが表示されます。

ghost-{blog2} start/running, process 1693

それでも、ブラウザに「502BadGateway」エラーが表示されます。

編集:起動スクリプトをnpm start --production > ghost-{blog2}.logではなくnpm start --productionを実行するように変更しました。Ghostが起動し、エラーなしですぐに終了することがわかります。

> [email protected] start /var/www/{blog2}/ghost
> node index

ページを数回押した後でも、ログに記録されているのはそれだけです。 Nginxはリクエストをログに記録しますが、Ghostはログに記録しません。

対照的に、ターミナルからnpm start --production > ghost-{blog2}.logを実行してブログを開始すると、ログは次のように続きます。

> [email protected] start /var/www/{blog2}/ghost
> node index

Migrations: Up to date at version 004
Ghost is running in production...
Your blog is now available on http://{blog2}
Ctrl+C to shut down
{{Requests}}

誰かがこれをトラブルシューティングするために私が取ることができるステップを提案できますか?

編集:各ブログに関連する構成の詳細は次のとおりです。

ブログ#1:これは機能するものです

/var/www/{blog1}/config.js

production: {
    url: 'http://{blog1}',
    mail: {},
    database: {
        client: 'sqlite3',
        connection: {
            filename: path.join(__dirname, '/content/data/ghost.db')
        },
        debug: false
    },

    server: {
        // Host to be passed to node's `net.Server#listen()`
        Host: '127.0.0.1',
        // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
        port: '2369'
    }
},

/ etc/nginx/sites-enabled/{blog1}

    server {
        listen 80;

        server_name {blog1};

        root /usr/share/nginx/html;
        index index.html index.htm;

        client_max_body_size 10G;

        location / {
            proxy_pass http://localhost:2369;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_Host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_buffering off;
        }
    }

/ etc/init/ghost- {blog1} .conf

    # ghost-{blog1}

    start on startup

    script
        cd /var/www/{blog1}
        npm start --production
    end script

ブログ#2:これはnpm start --productionの使用を開始すると機能しますが、サービスとして開始すると失敗します

/var/www/{blog2}/ghost/config.js

production: {
    url: 'http://{blog2}',
    mail: {},
    database: {
        client: 'sqlite3',
        connection: {
            filename: path.join(__dirname, '/content/data/ghost.db')
        },
        debug: false
    },

    server: {
        // Host to be passed to node's `net.Server#listen()`
        Host: '127.0.0.1',
        // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
        port: '2777'
    }
},

/ etc/nginx/sites-enabled/{blog2}

    server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        server_name {blog2};

        root /usr/share/nginx/html;
        index index.html index.htm;

        client_max_body_size 10G;

        location / {
            proxy_pass http://localhost:2777;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_Host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_buffering off;
        }
    }

/ etc/init/ghost- {blog2} .conf

    # ghost-{blog2}

    start on startup

    script
        cd /var/www/{blog2}/ghost
        npm start --production > ghost-{blog2}.log
    end script
4
John Stephens

私はついにこの問題を解決しました!

答えはNode.jsをバージョン0.10.40にダウングレードすることでした。上記を書いたとき、ノードvv0.12.7を実行していました。

Ghostのインストールドキュメント はv0.12.xをサポートしていると言っていますが、今日もう一度見てみると、v0.10.40を推奨していることがわかりました。

なぜこれで問題が解決するのかは私にはまったくわかりませんが、私はそれを取り上げます。

0
John Stephens

結局、ghostのnode_modulesを削除してから、すべてを再インストールしました。

rm -rf node_modules && npm cache clean
npm install --production

Sqlite3が正しくインストールされなかったので、それも再インストールする必要がありました。 これによりデータベースが削除されましたが、バックアップがありました。

npm install sqlite3

サービスを再起動した後、すべてが再び機能していました。

service nginx restart && service ghost restart
1
tprnkstr