Установка и настройка Ghost в Ubuntu 16.04
Из статьи вы узнаете, как поставить Ghost в Ubuntu 16.04, а также настроить платформу для стабильной работы.
Если бы хотите иметь свой блог, то обратите внимание на Ghost. Это легкая платформа, имеющая открытый исходный код и поддерживающая большое количество тем оформления. Сервис можно быстро настроить под потребности любого владельца сайта. Мы покажем вам, как поставить Ghost на Ubuntu сервер версии 16.04. Кроме того, вы узнаете, как настроить Nginx в качестве прокси-сервера для сервиса, а также как заставить работать платформу в фоновом режиме.
Что же нам потребуется?
Мы рекомендуем вам инсталлировать платформу в папку: 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
Данную директорию нужно открыть в консоли:
cd /var/www/ghost/
Нам также потребуются некоторые зависимости для Ghost. Их можно поставить вот так:
sudo npm install –production
Все настройки платформы находятся в одной файле /var/www/ghost/config.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. Нужно указать ваше доменное имя или IP-адрес в поле для URL. Все будет выглядеть вот так:
...
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: {},
...
Имейте ввиду, что адрес сайта нужно писать вот в таком формате: http://example.com либо http://11.11.11.11. Если вы пропишите URL некорректно, платформа 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
Платформа прослушивает порт 2368. Вы не сможете получить прямой доступ к вашему блогу, если настроили предварительно UFW. Поэтому и придется настраивать Nginx.
Приложение требуется настроить для того, чтобы оно обслуживало блог Ghost. Так вы сможете подключиться к 80 порту, ведь на нем и работает Ghost. Это важно, ведь так посетителям не будет нужно писать порт 2368 в конце URL. Прокси-сервер добавит еще один уровень, для упрощения дальнейшего масштабирования вашего блога. Для начала нам нужно остановить Ghost (Ctrl+C). После этого приступаем к настройке Nginx, чтобы сервер мог обслуживать блог. Нужно открыть папку /etc/nginx. Из директории /etc/nginx/sites-enabled: удалите файл конфигурации:
cd /etc/nginx/
sudo rm sites-enabled/default
В каталоге /etc/nginx/sites-available/ придется создать новый файл Ghost с помощью:
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;
}
}
После таких манипуляций все запросы нашему серверу будут передаваться в блог, работающий на 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
Для повышения безопасности сервиса, создайте отдельного 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. Чтобы проверить это, нужно войти в систему как пользователь сервиса:
su – ghost
Запускаем Ghost, а также запрашиваем состояние нашего сервиса посредством:
cd /var/www/ghost
npm start –production
Если все сделано без ошибок, блогом Ghost можно будет пользоваться по ссылке: http://your_domain_or_ip_addressю. Сервер Nginx сможет отправлять запросы нашему сервису.
После выполнения всех вышеописанных операций, сервис блога работает в терминале системы. Однако после окончания сессии 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
После этого изменения нужно сохранить, а файл – закрыть. Ghost нужно будет включить, а потом запустить:
systemctl enable ghost.service
sytemctl start ghost.service
Откройте ссылку, чтобы удостовериться в том, что все работает, как надо:
http://your_domain_or_ip_address
Опубликовано: Июнь 7, 2017