Установка и настройка Ghost в Ubuntu 16.04

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

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

Требования

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

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

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

wget https://ghost.org/zip/ghost-latest.zip

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

sudo apt-get install unzip

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

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

Откройте /var/www/ghost/:

cd /var/www/ghost/

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

sudo npm install --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

Сначала нужно изменить URL (в противном случае ссылки на блог будут перенаправлять пользователей на my-ghost-blog.com). В поле url укажите свой домен или IP-адрес.

...
config = {
// ### Production
// When running Ghost in the wild, use the production environment
// Configure your URL and mail settings here
production: {
url: 'http://your_domain_or_ip_address',
mail: {},
...

Значение url записывается в формате http://example.com или http://11.11.11.11 (если использовать неправильный формат, Ghost не запустится).

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

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

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

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

sudo npm start --production

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

> ghost@0.11.7 start /var/www/ghost
> node index
WARNING: Ghost is attempting to use a direct method to send email.
It is recommended that you explicitly configure an email service.
Help and documentation can be found at http://support.ghost.org/mail.
Migrations: Creating tables...
...
Ghost is running in production...
Your blog is now available on http://your_domain_or_ip_address
Ctrl+C to shut down

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

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).

server {
listen 80;
server_name your_domain_or_ip_address;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass         http://127.0.0.1:2368;
}
}

Теперь все запросы к этому серверу будут передаваться блогу Ghost, который работает на порте 2368. Также эти настройки устанавливают соответствующие HTTP-заголовки, благодаря чему в логах вы увидите IP-адреса посетителей.

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

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

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

sudo nginx -t

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

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

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:

su - ghost

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

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

Теперь блог Ghost должен быть доступен по ссылке http://your_domain_or_ip_address. Nginx отправит запросы экземпляру Ghost.

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

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

nano /etc/systemd/system/ghost.service

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

[Unit] Description=Ghost
After=network.target
[Service] Type=simple
WorkingDirectory=/var/www/ghost
User=ghost
Group=ghost
ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost
[Install] WantedBy=multi-user.target

Читайте также: Основы Systemd: управление сервисами и журналирование

Сохраните и закройте файл. Включите и запустите сервис:

systemctl enable ghost.service
sytemctl start ghost.service

Чтобы убедиться, что всё работает, откройте ссылку:

http://your_domain_or_ip_address

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

Tags: , ,

Добавить комментарий