Я пытаюсь создать совершенно новый блог Ghost на сервере Centos 7. У меня установлены Nginx, Node и Ghost и написаны все необходимые файлы конфигурации. Это довольно близко к работе, но я хотел использовать MySQL вместо SQLite, поэтому я создал новую (пустую) базу данных MySQL под названием "ghost_db", настроил пользователя MySQL под названием "призрак", дал пользователю разрешение на базу данных и добавили эти строки в config.js:
database: {
client: 'mysql',
connection: {
host: 'localhost',
user: 'ghost',
password: 'mypassword',
database: 'ghost_db'
charset: 'utf8'
filename: path.join(__dirname, '/content/data/ghost-dev.db')
},
debug: false
}, ...
Когда я пытаюсь запустить его, у меня появляется ошибка, из-за которой я использую knex-migrator для инициализации базы данных.
[john@a ghost]$ npm start
> [email protected] start /var/www/ghost
> node index
[2017-12-10 00:08:00] ERROR
NAME: DatabaseIsNotOkError
CODE: MIGRATION_TABLE_IS_MISSING
MESSAGE: Please run knex-migrator init ...
Тем не менее, некоторые комментарии к Stackexchange предполагают, что использование knex-migrate может оказаться ненужным для этой версии Ghost, и когда я запускаю knex-migrator, он также терпит неудачу:
[john@a ghost]$ knex-migrator init
[2017-12-09 16:21:33] ERROR
NAME: RollbackError
CODE: SQLITE_ERROR
MESSAGE: delete from "migrations" where "name" = '2-create-fixtures.js' and "version" = 'init' and "currentVersion" = '1.18' - SQLITE_ERROR: no such table: migrations
...[omitted]
Error: SQLITE_ERROR: no such table: migrations
Я думаю, проблема может заключаться в том, что база данных "ghost_db", изначально созданная, пустая. Файл "ghost-dev.db", который указан в файле config.js, похоже, относится к SQLite, но я получаю такое же сообщение об ошибке, если я переключу config.js обратно на базу данных SQLite. Я не знаю, что такое таблица "миграции". Я нашел схему, которую я думаю, что Ghost ожидает на [ https://github.com/TryGhost/Ghost/blob/1.16.2/core/server/data/schema/schema.js], но я не уверен, как используйте это, чтобы инициализировать таблицы и т.д., за исключением того, что делаете это очень осторожно вручную. Я в тупике!
Я выбрал альтернативный подход, который оказался успешным, а именно, чтобы установить Ghost в качестве модуля NPM. Официальные инструкции Призрачных маркировать это как "продвинутый" процесс, но это было не слишком трудно следовать инструкциям в отличном nehalist.io и Колюшка блог. Было также полезное руководство по базе знаний HugeServer. Я думаю, что в конечном итоге проблема заключалась в том, что интерфейс командной строки Ghost (ghost-cli) не был разработан для Centos 7.
Ответ для меня состоял в том, чтобы просто не создавать базу данных и позволить Ghost делать это как часть ghost install
.
Knex-migrator является новым в Ghost 1.0, который также использует config.<env>.json
file для конфигурации.
Похоже, вы добавили конфигурацию своей базы данных в файл config.js
который был правильным <1.0, однако, похоже, вы устанавливали Ghost 1.0, и поэтому ваши новые данные о соединении должны были бы жить в config.production.json
.
Вы правы, что Ghost-CLI не предназначен для использования в CentOS (это для Ubuntu), но я был бы очень удивлен, если бы он не смог правильно установить Ghost. Проблемы с другими ОС в основном связаны с незначительными различиями между systemd, т.е. поддержанием Ghost.