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