Atualize 2 blogs do Ghost no mesmo servidor, 1 sai imediatamente quando executado como um serviço

4

Eu tenho dois blogs do Ghost em um servidor do Digital Ocean em execução:

  • Ubuntu 14.04.3 LTS
  • Nginx 1.4.6 (Ubuntu)
  • Nó v0.12.7

Eu usei o instruções fornecidas pela Digital Ocean para configurar os blogs, e eles funcionaram bem e sobreviveram a atualizações antes.

Ontem à noite, atualizei o blog # 1 do Ghost v0.6.0 para o 0.7.0 e não tive problemas. Após a atualização eu corri service ghost-{blog1} restart e ele entrou online com pompa e triunfo.

Eu imediatamente tentei atualizar o blog # 2 seguindo as mesmas etapas, mas quando o abri no navegador depois de reiniciar o serviço, recebi o erro "502 Bad Gateway".

Eu descobri que o npm falhou ao instalar o SQLite3 corretamente, e consertou isso. Agora, posso iniciar o blog com sucesso executando npm start --production . O terminal mostra que o Ghost está executando e interceptando solicitações, e eu posso usar o site e o aplicativo de blog no meu navegador.

Mas quando executo service ghost-{blog2} start , ele continua a falhar sem apresentar um erro de terminal. Eu recebo a seguinte mensagem:

ghost-{blog2} start/running, process 1693

Mas ainda vejo o erro "502 Bad Gateway" no meu navegador.

Editar: eu mudei meu script de inicialização para executar npm start --production > ghost-{blog2}.log em vez de npm start --production , e posso ver que o Ghost é iniciado e, em seguida, sai imediatamente sem erro:

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

Isso é tudo o que está no log, mesmo depois de acertar a página algumas vezes. O Nginx registra as solicitações, mas o Ghost não.

Por outro lado, quando inicio o blog executando npm start --production > ghost-{blog2}.log do terminal, o log continua assim:

> [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}}

Alguém pode sugerir passos que eu possa dar para resolver isso?

Editar: aqui estão os detalhes de configuração relevantes para cada blog.

Blog # 1: é o que funciona

/ 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

Blog # 2: Este funciona quando eu começo a usar o npm start --production, mas falha quando eu começo como um serviço

/ 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
    
por John Stephens 06.09.2015 / 23:47

2 respostas

0

Eu finalmente resolvi esse problema!

A resposta foi fazer o downgrade do Node.js para a versão 0.10.40. Quando escrevi o acima, eu estava executando o nó vv0.12.7.

A documentação de instalação do Ghost diz que ele suporta v0.12.x, mas ao olhar para ele novamente hoje, percebi que ele recomenda v0.10.40.

Não está claro para mim por que isso resolve o problema, mas vou aceitá-lo.

    
por 26.10.2015 / 04:11
1

Acabei de remover node_modules para ghost e depois reinstalei tudo.

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

O Sqlite3 não foi instalado corretamente, então tive que reinstalá-lo também. Isso excluiu meu banco de dados, mas eu fiz um backup.

npm install sqlite3

Depois de reiniciar os serviços, tudo estava funcionando novamente.

service nginx restart && service ghost restart
    
por 08.09.2015 / 00:03