Как установить ghost

Обновлено: 03.07.2024

Ghost – это легковесная и простая блог-платформа с открытым исходным кодом. Ghost легко приспособить к индивидуальным потребностям пользователей. Также платформа предоставляет множество тем.

Данное руководство поможет установить Ghost на сервер Ubuntu 16.04, настроить Nginx как прокси-сервер Ghost и перевести платформу в фоновый режим.

Устанавливаем GHOST за 20 минут

Ghost написана на Node.js и требует небольших настроек MySQL и Nginx сервера, но этот шаг можно просто пропустить если воспользоваться заранее сконфигурируемым дроплетом от DigitalOcean.

Процесс регистрации прост, но у многих могут возникнуть проблемы. Давай быстро пройдёмся по шагам регистрации.


Для начала нужно будет зарегистрироваться в DigitalOcean и после, подтвердить регистрацию в письме, которое придёт на указанную тобой почту.

Затем нужно будет привязать свою дебетовую/кредитную карту или Paypal, если он есть и подтвердить свой профиль - паспорт или водительское удостоверение. Так они борются со спамерами, так что ничего страшного в этом нет.

Могут возникнуть проблемы с идентификацией - нужно будет с телефона сделать фотографии в режиме синхронизации с ПК. У кого на телефоне будет выдавать ошибки при отправке фото - воспользуйтесь VPN, это поможет.

После всех необходимых проверок по идентификации профиля, нужно будет создать план и настроить дроплет, как показано на фото ниже.





В графе "Choose an image" перейди на вкладу "Marketplace" и в строке поиска введи "Ghost", а затем выбери образ "Ghost on Ubuntu 18.04".

Стандартно, DigitalOcean будет предлагать тебе план за 40$/месяц, но если прокрутить влево, то можно будет самому выбрать план за 5$/месяц - при этом, конфигурации будет более чем достаточно: 1 Гб оперативной памяти; 1 CPU; 25 Гб на диске SSD.

Датацентр рекомендую выбирать тот, который будет ближе к вашем клиентам. Для России оптимальным выбором будут Амстердам, Лондон и Франкфурт. Мой выбор пал на Амстердам.

🚀 Понравилась статья? Подпишись!

Так же не забудь включить дополнительные опции в "Select additional options" - IP6 (даёт возможность доступа по этой версии сетей) и Monitoring (активирует возможность мониторинга за разнообразными показаниями сервера и сайта). Они бесплатны.

Обязательно включаем автоматические бэкапы (стоит 1$/месяц) - в случае каких-либо проблем с сайтом, именно бэкап вас выручит и позволит быстро восстановить сервер и его настройки.

После всех необходимых настроек, жми на "Create Droplet" - дальше сервер сам произведет все необходимые действия. Когда настройка будет завершена, нужно будет перейти в проект и скопировать IP4 адресс твоего сервера, что внести его в A-запись DNS домена (вносить нужно там, где регистрировал домен. Кабинеты у них у всех разные, поэтому за подробной информацией, лучше обращайся к своему регистратору домена).

Настраиваем доступ к сайту через терминал

Установка на сервер завершена, теперь тебе необходимо настроить непосредственно сам Ghost и сделать это нужно через терминал.

Для этого скачай и установи PuTTY (актуально для Windows. Если у тебя другая система, используй любую другую аналогичную программу).

После установки, тебе нужно будет сгенерировать приватный ключ SSH - для этого открой PuTTY Key Generator и жми "Generate" (для генерации ключа, нужно поводить мышкой по экрану 😀).

Затем заполни "Key passphrase" (любой пароль, на твоё усмотрение).

Выдели и скопируй весь приватный ключ (учти, что поле большое и нужно ещё немного проскролить вниз) - этот ключ нужно будет вставить в дроплет сервера DigitalOcean чуть позже. Перед закрытием PuTTY, не забудь обязательно сохранить приватный ключ на свой диск: File - Save Private Key.



Возвращайся в DigitalOcean и переходи в пункт меню Settings - Security и жми кнопку Add SHH Key. В появившемся окне вставляем заранее скопированный приватный ключ SHH (тот, что генерировали в PuTTY) и жми добавить.



Когда ключ SHH добавлен в Digital Ocean, настраивай соединение в самом PuTTY.

В PuTTY, в поле Host Name - вставляй IP из дроплета DigitalOcean (смотри фото ниже). Port оставь тайкой же: 22.




Потом в PuTTY переходи на вкладку SSH - Auth и в поле "Private key file. ", открой сохраненный приватный ключ (который ты генерировал ранее, сверху по тексту).

Во вкладке "Connection" - "Data" , в поле Auto-login username - укажи root (чтобы каждый раз не вводить логин).



Вот ты и закончил настройку PuTTY, но чтобы не приходилось заново повторять всё вновь, не забудь сохранить эту сессию - зайди на вкладку "Session", в поле Saved Sessions пиши имя и жми Save и Open

Откроется заветный терминал и попросит ввести фразу-пароль (её ты вводил при генерации приватного ключа).


После сборки сайта, терминал попросит ввести url сайта (в моём случае это budaev.digital) и через 1-2 минуты настройки полностью будут завершены и ты наконец сможешь перейти по указанному домену сайта.

Кому может пригодится GHOST?

Ghost - это не просто блог. Это полноценное медиа издание, в котором можно сделать закрытый клуб ваших подписчиков с месячной и годовой подпиской. (аналог этого - Patreon).

Сравнение платных подписок с популярными платформами медиа изданий Пример того, как может выглядеть страница подписки. (Можешь посмотреть тут)

Ghost подойдёт всем тем, кто создаёт контент (причем неважно какой это контент - это может быть видео, аудио, текстовой формат. всё что угодно), а именно:

  • Блогерам и контент-креэйторам;
  • Предпринимателям, кому есть что рассказать;
  • Некоммерческим организациям;
  • Крупным медиа-изданиям.

Перечислю несколько преимуществ данной CMS:

  • Бесплатная;
  • Быстрая установка и минимальное количество предварительных настроек;
  • Имеет оптимизацию в SEO (уже настроены AMP и Турбо-страницы);
  • Быстрая скорость загрузки страницы в отличии от других CMS;
  • Простота в использовании;
  • Имеет огромное количество интеграций с другими сервисами.

Крупные компании используют Ghost для своих корпоративных медиа и среди таких компаний есть NASA, Apple, Mozilla и др.

Кто использует CMS Ghost

Список компаний явно внушающий доверие.

Ghost - это некоммерческий open-source проект, но распространяется он по двум тарифам:

Платный тариф

Вы платите только за аренду сервера и дискового пространства у самих разработчиков проекта. При этом все настройки, включая настройки CDN (оптимизирует загрузку ресурсов вашего сайта) включены в стоимость. Начальная цена от 29$, что в наших реалиях дороже, чем хотелось бы. И именно поэтому мы будем использовать бесплатную версию.

Бесплатный тариф

Мы самостоятельно скачиваем проект и устанавливаем его на любом облачном сервере. В таком случае, все сопутствующие настройки сервера нужно будет делать самостоятельно, но есть сервисы, которые предоставляют уже готовые серверные решения именно под Ghost.

Требования

  • Сервер Ubuntu 16.04 (1GB минимум).
  • Пользователь с доступом к sudo (больше информации в руководстве по начальной настройке сервера).
  • Настроенный брандмауэр.
  • Node.js из официального PPA (инструкции по установке можно найти здесь).
  • Nginx (подробнее – здесь).

Useful options

There are some global flags you may find useful when using ghost-cli :

4: Пользователь для Ghost

Чтобы повысить безопасность сервиса, нужно создать отдельного пользователя для Ghost, у которого будет доступ только к /var/www/ghost и домашнему каталогу. Даже если блог Ghost будет взломан, злоумышленник не сможет сильно повредить систему.

Создайте пользователя ghost:

sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost

Передайте ему права на каталог /var/www/ghost:

sudo chown -R ghost:ghost /var/www/ghost/

Убедитесь, что новый пользователь может запускать Ghost. Войдите как пользователь ghost:

Запустите Ghost и запросите состояние сервиса:

cd /var/www/ghost
npm start --production

2: Настройка Ghost

Конфигурационный файл Ghost – /var/www/ghost/config.js. Этот файл не поставляется по умолчанию, но Ghost предоставляет шаблон конфигурации, файл config.example.js.

Скопируйте файл config.example.js в /var/www/ghost/config.js (у вас останется копия исходного файла).

sudo cp config.example.js config.js

Откройте конфигурационный файл:

sudo nano config.js

Ghost может работать без настроек почты; они необходимы только в том случае, если вы хотите обеспечить восстановление пароля пользователей Ghost (данное руководство не охватывает этот раздел настроек).

Больше о пользовательской настройке Ghost можно узнать на официальном сайте проекта.

Сохраните и закройте файл.

Запустите Ghost из каталога /var/www/ghost.

sudo npm start --production

Команда должна вернуть:

Ghost прослушивает порт 2368. Если вы настроили UFW, вы не сможете получить прямой доступ к блогу. Настройте прокси-сервер Nginx.

Commands

Below are the available commands in Ghost-CLI. You can always run ghost --help or ghost [command] --help to get more detail, or inline help for available options.

Ghost config

ghost config accepts two optional arguments: key and value . Here are the three different combinations and what happens on each of them:

The ghost config command only affects the configuration files. In order for your new config to be used, run ghost restart .

Options

If you’re using ghost config to generate a configuration file, you can supply multiple key-value pairs in the form of options to avoid being prompted for that value.

All of these options can also be passed to ghost install and ghost setup , as these commands call ghost config .

See the config guide or run ghost config --help for more detailed information.

Application options
Database options
Mail options
Service options

Debugging

In order for your new config to be used, run ghost restart .

Ghost install

The ghost install command is your one-stop-shop to get a running production install of Ghost.

This command includes the necessary mysql, nginx and systemd configuration to get your publication online, and provides a series of setup questions to configure your new publication. The end result is a fully installed and configured instance ✨

Not ready for production yet? ghost install local installs ghost in development mode using sqlite3 and a local process manager. Read more about local installs.

How it works

The ghost install command runs a nested command structure, but you only ever have to enter a single command.

First, it will run ghost doctor to check your environment is compatible. If checks pass, a local folder is setup, and Ghost is then downloaded from npm and installed.

Next, ghost setup runs, which will provide prompts for you to configure your new publication via the ghost config command, including creating a MySQL user, initialising a database, configure nginx and sets up SSL.

Finally, the CLI will prompt to see if you want to run Ghost and if you choose yes ghost start will run.

Arguments

Options

As ghost install runs nested commands, it also accepts options for the ghost doctor , ghost config , ghost setup and ghost start commands.

See the individual command docs, or run ghost install --help for more detailed information.

Directory structure

When you install Ghost using Ghost-CLI, the local directory will be setup with a set of folders designed to keep the various parts of your install separate. After installing Ghost, you will have a folder structure like this which should not be changed:

Ghost setup

ghost setup is the most useful feature of Ghost-CLI. In most cases you will never need to run it yourself, as it’s called automatically as a part of ghost install .

How it works

Setup configures your server ready for running Ghost in production. It assumes the recommended stack and leaves your site in a production-ready state. Setup is broken down into stages:

  • mysql - create a specific MySQL user that is used only for talking to Ghost’s database.
  • nginx - creates an nginx configuration
  • ssl - setup SSL with letsencrypt, using acme.sh
  • migrate - initialises the database
  • linux-user - creates a special low-privilege ghost user for running Ghost

What if I want to do something else?

The Ghost-CLI tool is designed to work with the recommended stack and is the only supported install method. However, since Ghost is a fully open-source project, and many users have different requirements, it is possible to setup and configure your site manually.

The CLI tool is flexible and each stage can be run individually by running ghost setup <stage-name> or skipped by passing the --no-setup-<stage-name> flag.

Arguments

Options

As ghost setup runs nested commands, it also accepts options for the ghost config , ghost start and ghost doctor commands. Run ghost setup --help for more detailed information.

Ghost start

Running ghost start will start your site in background using the configured process manager. The default process manager is systemd, or local for local installs.

The command must be executed in the directory where the Ghost instance you are trying to start lives, or passed the correct directory using the --dir option.

Options

Debugging

If running ghost start gives an error, try use ghost run to start Ghost without using the configured process manager. This runs Ghost directly, similar to node index.js . All the output from Ghost will be written directly to your terminal, showing up any uncaught errors or other output that might not appear in log files.

Ghost stop

Running ghost stop stops the instance of Ghost running in the current directory. Alternatively it can be passed the name of a particular ghost instance or directory. You can always discover running Ghost instances using ghost ls .

Arguments

Options

Ghost restart

Running ghost restart will stop and then start your site using the configured process manager. The default process manager is systemd, or local for local installs.

The command must be executed in the directory where the Ghost instance you are trying to start lives, or passed the correct directory using the --dir option.

Options

Debugging

If running ghost restart gives an error, try using ghost run to debug the error.

Ghost update

Run ghost update to upgraded to new versions of Ghost, which are typically released every 1-2 weeks.

Arguments

Options

Major upgrades

Every 12-18 months we release a major version which breaks backwards compatibility and requires a more involved upgrade process, including backups and theme compatibility.

Use upgrade documentation as a guide to the necessary steps for a smooth upgrade experience.

Debugging

If running ghost update gives an error, try using ghost run to debug the error.

Ghost doctor

Running ghost doctor will check the system for potential hiccups when installing or updating Ghost.

This command allows you to use ghost-cli as a diagnostic tool to find potential issues for your Ghost install, and provides information about what needs to be resolved if any issues arise.

The CLI automatically runs this command when installing, updating, starting or setting up ghost - and you can use is manually with ghost doctor .

Arguments

Options

Run ghost doctor --help for more detailed information.

Ghost ls

The ghost ls command lists all Ghost sites and their status from the

/.ghost/config file. This is useful if you can’t remember where you installed a particular instance of Ghost, or are working with multiple instances (local, production, staging and so on).

Output

Ghost log

View the access and error logs from your Ghost site (not the CLI). By default ghost log outputs the last 20 lines from the access log file for the site in the current folder.

Ghost’s default log config creates log files in the content/logs directory, and creates two different files:

  1. An access log that contains all log levels, named e.g. [site_descriptor].log
  2. An error log that contains error-level logs only, named e.g. [site_descriptor].error.log

Arguments

Options

Debugging

There may be some output from Ghost that doesn’t appear in the log files, so for debugging purposes you may also want to try the ghost run command.

If you have a custom log configuration the ghost log command may not work for you. In particular the ghost log command requires that file logging is enabled. See the logging configuration docs for more information.

Ghost uninstall

Use with caution - this command completely removes a Ghost install along with all of its related data and config. There is no recovery from this if you have no backups.

The command ghost uninstall must be executed in the directory containing the Ghost install that you would like to remove. The following tasks are performed:

  • stop ghost
  • disable systemd if necessary
  • remove the content folder
  • remove any related systemd or nginx configuration
  • remove the remaining files inside the install folder

Running ghost uninstall --no-prompt or ghost uninstall --force will skip the warning and remove Ghost without a prompt.

Ghost help

Use the help command to access a list of possible ghost-cli commands when required.

This command is your port of call when you want to discover a list of available commands in the Ghost-CLI. You can call it at any time ✨

Output

Options

It’s also possible to run ghost install --help and ghost setup --help to get a specific list of commands and help for the install and setup processes. Don’t worry - you got this! 💪

5: Ghost как сервис системы

На данный момент Ghost работает в терминале. Если вы прервёте сессию, блог прекратит работу. Чтобы блог Ghost продолжал работать в фоновом режиме, создайте unit-файл systemd.

Добавьте в файл следующую конфигурацию, которая определяет имя, группу и пользователя сервиса, а также информацию о том, как его запускать:

A fully loaded tool to help you get Ghost installed and configured and to make it super easy to keep your Ghost install up to date.

Ghost-CLI is to makes it possible to install or update Ghost with a single command. In addition, it performs useful operations to assist with maintaining your environment, such as:

  • Checking for common environment problems
  • Creating a logical folder structure
  • Providing for production or development installs
  • Allowing for upgrades and rollbacks
  • Handling user management and permissions
  • Configuring Ghost
  • Configuring NGINX
  • Setting up MySQL
  • Configuring systemd
  • Accessing Ghost log files
  • Managing existing Ghost installs

Knowledgebase

SSL configuration

After a successful ssl setup, you can find your ssl certificate in /etc/letsencrypt .

SSL for additional domains
Let’s Encrypt

Let’s Encrypt provides SSL certificates that are accepted by browsers free of charge! This is provided by the non-profit Internet Security Research Group (ISRG). The Ghost-CLI will offer you to generate a free SSL certificate as well as renew it every 60 days.

Ghost uses acme.sh for provisioning and renewing SSL certificates from Let’s Encrypt. You can call acme.sh manually if you need to perform extra tasks. The following command will output all available options:

Systemd

systemd is the default way of starting and stopping applications on Ubuntu. The advantage is that if Ghost crashes, systemd will restart your instance. This is the default recommended process manager.

Permissions

Ghost-CLI will create a new system user and user-group called ghost during the installation process. The ghost user will be used to run your Ghost process in systemd .

This means that Ghost will run with a user that has no system-wide permissions or a shell that can be used (similar to other services such as NGINX). Sudo is required to modify files in the The <install-directory>/content/ .

To prevent accidental permissions changes, it’s advisable to execute tasks such as image upload or theme upload using Ghost admin.

File Permissions

The ghost-cli enforces default linux permissions (via ghost doctor hooks) for installations.

  • For normal users, default directory permissions are 775, and default file permissions are 664.
  • For root users, default directory permissions are 755, and default file permissions are 644.

Running ghost install as the non-root user will result in directories created with 775 ( drwxrwxr-x ) permissions and file with 664 ( -rw-rw-r-- ) permissions.

These file permissions don’t need to be changed. The only change that is executed by ghost-cli is changing ownership, file permissions stay untouched.

If permissions were changed, the following two commands will revert file and directory permissions to the ones of a non-root user.

The cli doesn’t support directory flags such as setuid and setguid ). If your commands keep failing because of file permissions, ensure your directories have no flags!

Всем, привет! Сегодня, я хочу поделиться знаниями того, как установить CMS-систему Ghost на операционную систему Windows. Сделать это не сложно, но там есть пару нюансов, из-за которых у новичков по началу могут возникнуть определенные трудности.

Но переживать по этому поводу не стоит, т. к. там просто нужно скачать node.js, установить переменные среды и ввести пару команд.

Перейдите на официальный сайт node.js, затем скачайте данную программу и установите. Откройте на вашем ПК переменные среды и затем создайте новую пользовательскую переменную с именем APPDATA и со значением: C:\Users\Имя\AppData\Roaming\npm.

Все, теперь просто введите в поиске CMD + Enter и когда откроется консоль введите сперва node -v и затем npm -v. Если версия node.js и nmp отобразятся, значит вы все корректно настроили.

Откройте консоль и затем перейдите в папку загрузок -> cd downloads или же туда, куда вам будет удобно. Создайте в той директории, где вы сейчас находитесь новую папку -> mkdir ghost и затем перейдите в нее -> cd ghost. Ну, а после установите ghost-cli с помощью команды:

Теперь для того, чтобы проверить работу ghost-cli - введите в консоле ghost help. Если все корректно работает, то отобразятся команды, а если нет, то в консоле будет написано то, что Node.js не понимает команды ghost. Например, в моем случае все абсолютно так и было.

Но почему Node.js не понимает команды ghost?

Дело в том, что в моем случае ghost-cli почему-то установился в C:\Users\Имя\AppData\Roaming\npm\npm, поэтому Node.js его просто не видит. В связи с этим, я просто перенес все необходимые файлы в C:\Program Files\nodejs и все корректно стало работать.

Я знаю то, что при установки можно переопределить место загрузки ghost-cli, но я PHP-разработчик, поэтому в Node.js пока не силен.

Ну, да ладно. Теперь, когда Node.js стал понимать команды ghost перейдите в консоле в ту папку, которую мы с вами до этого создали и затем введите следующую команду:

После этого начнется установка Ghost CMS, по окончанию которой вам останется только ввести команду ghost start и перейти по адресу: localhost:2368/ghost в браузере, установленном по умолчанию.

Я знаю то, что можно было бы объяснить гораздо проще и нагляднее с помощью соответствующих скриншотов. Но я просто не представляю, как это возможно, учитывая то, что там нужно ввести всего 2 команды. Хотя, проблему с путями я не исключаю.

Ну и еще хотелось бы отметить то, что на CMS-систему Ghost можно натянуть абсолютно любую верстку. При этом заниматься данным занятием одно удовольствие.

Полная инструкция по созданию сайта на CMS Ghost. Часть 1. Установка и настройка на облачном сервере.

В сети, для создания своего блога или корпоративного медиа сайта, огромной популярностью пользуется Wordpress, но это далеко не единственная система по управлению контентом сайта (CMS) и сейчас я расскажу о существовании очень шустрой CMS Ghost (в создании которой, к слову, поучаствовали разработчики Wordpress) . И именно этот сайт сделан на CMS Ghost.

Данная инструкция по установке и настройке блога на Ghost, будет разбита на три части:

1 часть - расскажу, как установить сайт на облачный сервер.

2 часть - покажу, как настроить внешний вид твоего блога.

3 часть - дам общие рекомендации по оптимизации сайта, а также постингу и содержанию статей.

1: Установка Ghost

Ghost рекомендуется установить в каталог var/www/ghost.

Загрузите последнюю версию Ghost из репозитория GitHub:

Чтобы распаковать архив, установите инструмент unzip:

sudo apt-get install unzip

Распакуйте загруженный архив в каталог /var/www/ghost:

sudo unzip -d /var/www/ghost ghost-latest.zip

Установите зависимости Ghost, необходимые на этапе производства.

sudo npm install --production

Заходим на готовый сайт!

Вот так выглядит стандартная тема Ghost:






На этом первая часть завершена - сайт полностью установлен и готов к работе!

Во второй части этой инструкции, обсудим возможность кастомизации - найдём и поменяем тему сайта, а также настроим её под себя.

3: Nginx как прокси-сервер для Ghost

Теперь нужно настроить Nginx для обслуживания блога Ghost. Это позволит подключиться через порт 80 к тому порту, на котором работает Ghost (тогда пользователям не придётся указывать порт : 2368 в конце адреса). Также прокси-сервер добавляет ещё один уровень и в дальнейшем упростит масштабирование блога.

Остановите Ghost (CTRL+C).

Настройте Nginx. Откройте каталог /etc/nginx и удалите стандартный конфигурационный файл Nginx из каталога /etc/nginx/sites-enabled:

cd /etc/nginx/
sudo rm sites-enabled/default

Создайте новый файл ghost в каталоге /etc/nginx/sites-available/.

sudo nano /etc/nginx/sites-available/ghost

Вставьте в конфигурационный файл следующие параметры (вместо your-domain-name укажите свой домен или IP).

Сохраните и закройте файл. Чтобы активировать эти настройки, создайте символьную ссылку на файл в каталоге /etc/nginx/sites-enabled:

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

Проверьте файл на наличие ошибок:

Если ошибок нет, вы увидите:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Если команда обнаружила ошибки, исправьте их и повторите проверку.

После этого перезапустите Nginx:

sudo service nginx restart

Install & update

Ghost-CLI is an npm module that can be installed via either npm or yarn.

Locally, you likely don’t need sudo. Using @latest means this command with either install or update ghost-cli and you only have to remember the one command for both ✨

Читайте также: