Установка и настройка Ghost в Ubuntu 16.04
Ubuntu | Комментировать запись
Ghost – это легковесная и простая блог-платформа с открытым исходным кодом. Ghost легко приспособить к индивидуальным потребностям пользователей. Также платформа предоставляет множество тем.
Данное руководство поможет установить Ghost на сервер Ubuntu 16.04, настроить Nginx как прокси-сервер Ghost и перевести платформу в фоновый режим.
Требования
- Сервер Ubuntu 16.04 (1GB минимум).
- Пользователь с доступом к sudo (больше информации в руководстве по начальной настройке сервера).
- Настроенный брандмауэр.
- Node.js из официального PPA (инструкции по установке можно найти здесь).
- Nginx (подробнее – здесь).
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: GHOST, NGINX, Ubuntu 16.04