У меня есть 2 Анонимных блога на Цифровом Океанском выполнении сервера:
Я использовал инструкции, предоставленные Цифровым Океаном для установки блогов, и они хорошо работали и пережили обновления прежде.
Вчера вечером я обновил блог № 1 от Фантома v0.6.0 к 0.7.0 и не испытал проблем. После обновления я работал service ghost-{blog1} restart
и это прибыло онлайн с великолепием и триумфом.
Я сразу попытался обновить блог № 2, выполняющий те же шаги, но когда я открыл его в своем браузере после перезапуска сервиса, я получил "502 Недопустимых шлюза" ошибка.
Я нашел, что npm не удался установить SQLite3 правильно и зафиксировал это. Теперь, я могу запустить блог успешно путем выполнения npm start --production
. Терминал показывает, что Фантом выполняет и прерывает запросы, и я могу использовать сайт и ведущее блог приложение в моем браузере.
Но когда я работаю service ghost-{blog2} start
, это продолжает перестать работать, не представляя терминальную ошибку. Я получаю следующее сообщение:
ghost-{blog2} start/running, process 1693
Но я все еще вижу "502 Недопустимых шлюза" ошибка в моем браузере.
Править: Я изменил свой сценарий запуска для выполнения npm start --production > ghost-{blog2}.log
вместо npm start --production
, и я вижу, что Фантом запускает и затем сразу выходит без ошибки:
> ghost@0.7.0 start /var/www/{blog2}/ghost
> node index
Это - все, что находится в журнале, даже после удара страницы несколько раз. Nginx регистрирует запросы, но Фантом не делает.
В отличие от этого, когда я запускаю блог путем выполнения npm start --production > ghost-{blog2}.log
от терминала журнал продолжается таким образом:
> ghost@0.7.0 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}}
Кто-либо может предложить шаги, которые я могу сделать для поиска и устранения неисправностей этого?
Править: Вот соответствующие детали конфигурации для каждого блога.
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'
}
},
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;
}
}
# ghost-{blog1}
start on startup
script
cd /var/www/{blog1}
npm start --production
end script
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'
}
},
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;
}
}
# ghost-{blog2}
start on startup
script
cd /var/www/{blog2}/ghost
npm start --production > ghost-{blog2}.log
end script
Наконец-то я решил эту проблему!
Ответ был на понижение Node.js до версии 0.10.40 . Когда я писал выше, я использовал узел vv0.12.7.
В документации по установке Ghost говорится, что он поддерживает v0.12.x, но, взглянув на него сегодня снова, я заметил, что он рекомендует v0.10.40.
Мне вообще не понятно, почему это решает проблему, но я возьму.
Я удалил node_modules для призрака, а затем переустановил все.
rm -rf node_modules && npm cache clean
npm install --production
Sqlite3 не был установлен должным образом, поэтому мне пришлось переустановить и его. Это удалило мою базу данных, но у меня была резервная копия.
npm install sqlite3
После перезапуска служб все снова заработало.
service nginx restart && service ghost restart