Как установить и настроить Ghost на CentOS 7

Вступление

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

В этом уроке вы настроите Ghost на CentOS 7. Вы также настроите Nginx для прокси-запросов к Ghost и продолжите работу Ghost в фоновом режиме в качестве системной службы.

Предпосылки

Для завершения этого урока вам понадобится:

Шаг 1 - Установка Ghost

Сначала нам нужно установить Ghost. Мы поместим Ghost в каталог + / var / www / ghost +, который является рекомендуемым местом установки.

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

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

Чтобы распаковать архив, сначала установите программу + unzip + с менеджером пакетов. Перед установкой новой программы всегда полезно убедиться, что система обновлена, поэтому обновите пакеты и установите + unzip + с помощью следующих команд:

sudo yum update -y
sudo yum install unzip -y

Флаг + -y + в предыдущих командах обновляет и устанавливает пакеты автоматически, не запрашивая подтверждения у пользователя.

После установки + unzip + разархивируйте загруженный пакет в каталог + / var / www / ghost +. Сначала создайте папку + / var / www +, затем разархивируйте файл:

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

Переключитесь в каталог + / var / www / ghost / +:

cd /var/www/ghost/

Затем установите зависимости Ghost, но только те, которые необходимы для производства. Это пропускает любые зависимости, которые нужны только людям, которые разрабатывают Ghost.

sudo npm install --production

Ghost устанавливается после завершения этого процесса, но нам нужно настроить Ghost, прежде чем мы сможем его запустить.

Шаг 2 - Настройка Ghost

Ghost использует файл конфигурации, расположенный в + / var / www / ghost / config.js. Этот файл не существует "из коробки", но установка Ghost включает файл + config.example.js +, который мы будем использовать в качестве отправной точки.

Скопируйте пример файла конфигурации в + / var / www / ghost / config.js. Мы скопируем файл вместо того, чтобы переместить его, чтобы у нас была копия исходного файла конфигурации на случай, если нам потребуется отменить ваши изменения.

sudo cp config.example.js config.js

Откройте файл для редактирования:

sudo vi config.js

Мы должны изменить URL, который использует Ghost. Если мы этого не сделаем, ссылки в блоге приведут посетителей на http://my-ghost-blog.com [my-ghost-blog.com]. Измените значение поля + url + на имя вашего домена или на IP-адрес вашего сервера, если вы не хотите использовать домен прямо сейчас.

/var/www/ghost/config.js

...

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

Значение + url + должно быть в форме URL, например + http: // + или + http: // +. Если это значение не отформатировано правильно, Ghost не запустится.

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

Вы можете настроить Ghost дальше, следуя сведениям о конфигурации на http://ghost.org [официальный сайт].

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

Находясь в каталоге + / var / www / ghost +, запустите Ghost с помощью следующей команды:

sudo npm start --production

Вывод должен быть похож на следующее:

Output
> [email protected] 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://
Ctrl+C to shut down

Ghost прослушивает порт + 2368 + и не слушает через общедоступный сетевой интерфейс, поэтому вы не сможете получить к нему прямой доступ. Давайте настроим Nginx перед Ghost.

Шаг 3 - Настройка запросов Nginx к прокси Ghost

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

Если Ghost все еще работает в вашем терминале, нажмите + CTRL + C +, чтобы выключить экземпляр Ghost, прежде чем продолжить.

Теперь давайте настроим Nginx. Сначала перейдите в каталог + / etc / nginx:

cd /etc/nginx/

Если вы установили Nginx из репозитория CentOS EPEL, как показано в предварительном учебнике, у вас не будет каталогов + sites-available + и + sites-enabled +, которые используются для управления конфигурациями веб-сайтов. Давайте создадим их:

sudo mkdir sites-available
sudo mkdir sites-enabled

Затем создайте новый файл в + / etc / nginx / sites-available / + с именем + ghost +:

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

Поместите следующую конфигурацию в файл и замените ++ на имя вашего домена или IP-адрес вашего сервера, если у вас нет домена:

/ И т.д. / Nginx / сайты-доступные / призрак

server {
   listen 80;
   server_name ;
   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         ;
   }
}

Эта базовая конфигурация отправляет все запросы на этот сервер в блог Ghost, работающий через порт + 2368 +, и устанавливает соответствующие заголовки HTTP, чтобы при просмотре журналов Ghost вы могли видеть исходный IP-адрес ваших посетителей. , Вы можете узнать больше об этой конфигурации в https://www.digitalocean.com/community/tutorials/understanding-nginx-http-proxying-load-balancing-buffering-and-caching[Understanding HTTP прокси Nginx, балансировка нагрузки, буферизация, и кеширование.

Сохраните файл, выйдите из редактора и включите эту конфигурацию, создав символическую ссылку для этого файла в каталоге + / etc / nginx / sites-enabled +:

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

Nginx не будет использовать эту новую конфигурацию, пока мы не изменим файл конфигурации Nginx по умолчанию и не скажем, чтобы он включал файлы конфигурации в папку + sites-enabled +. Кроме того, мы должны отключить сайт по умолчанию. Откройте файл + nginx.conf в вашем редакторе:

sudo vi nginx.conf

Включите следующую строку внутри блока + http +, чтобы включить файлы конфигурации в папку + sites-enabled +:

/etc/nginx/nginx.conf

http {
...
   # Load modular configuration files from the /etc/nginx/conf.d directory.
   # See http://nginx.org/en/docs/ngx_core_module.html#include
   # for more information.
   include /etc/nginx/conf.d/*.conf;

Затем полностью закомментируйте блок + server +, найденный внутри блока + http +:

/etc/nginx/nginx.conf

...

   # Load modular configuration files from the /etc/nginx/conf.d directory.
   # See http://nginx.org/en/docs/ngx_core_module.html#include
   # for more information.
   include /etc/nginx/conf.d/*.conf;



   server {
      listen       80 default_server;
      listen       [::]:80 default_server;
      server_name  _;
      root         /usr/share/nginx/html;

      # Load configuration files for the default server block.
      include /etc/nginx/default.d/*.conf;

      location / {
      }

      error_page 404 /404.html;
          location = /40x.html {
      }

      error_page 500 502 503 504 /50x.html;
          location = /50x.html {
      }
...
...

Сохраните файл и выйдите из редактора. Протестируйте конфигурацию, чтобы убедиться в отсутствии проблем:

sudo nginx -t

Вы увидите следующий вывод, если все правильно:

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

Если вы видите какие-либо ошибки, исправьте их и повторно протестируйте конфигурацию.

С рабочим файлом конфигурации перезапустите Nginx, чтобы применить изменения:

sudo systemctl restart nginx

Прежде чем мы снова запустим Ghost, давайте создадим новую учетную запись пользователя для запуска Ghost.

Шаг 4 - Запуск Ghost как отдельного пользователя

Чтобы повысить безопасность, мы запустим Ghost под отдельной учетной записью пользователя. Этот пользователь будет иметь доступ только к каталогу + / var / www / ghost + и его домашней папке. Таким образом, если Ghost скомпрометирован, вы минимизируете потенциальный ущерб вашей системе.

Создайте нового пользователя + ghost + с помощью следующей команды:

sudo adduser --shell /bin/bash

Затем сделайте этого нового пользователя владельцем каталога + / var / www / ghost +:

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

Теперь давайте удостоверимся, что этот пользователь может запустить Ghost. Войдите в систему как + ghost + пользователь:

sudo su - ghost

Теперь запустите Ghost под этим пользователем и убедитесь, что он работает:

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

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

Все работает отлично, но давайте удостоверимся, что Призрак продолжает идти в будущее.

Шаг 5 - Запуск Ghost в качестве системной службы

В настоящее время Ghost работает в нашем терминале. Если мы выйдем из системы, наш блог закроется. Давайте запустим Ghost в фоновом режиме и убедитесь, что он перезагружается при перезагрузке системы. Для этого мы создадим файл модуля + systemd +, который определяет, как + systemd + должен управлять Ghost. Нажмите + CTRL + C +, чтобы остановить Ghost, и выйдите из учетной записи пользователя + ghost +, нажав + CTRL + D +.

Создайте новый файл для хранения определения файла модуля + systemd +:

sudo vi /etc/systemd/system/ghost.service

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

/etc/systemd/system/ghost.service

[Unit]
Description=
After=network.target

[Service]
Type=simple

WorkingDirectory=
User=
Group=

ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost

[Install]
WantedBy=multi-user.target

Если вы не знакомы с файлами модулей + systemd +, взгляните на учебное пособие Understanding Systemd Units и Файлы юнитов, которые помогут вам быстро освоиться.

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

sudo systemctl enable ghost.service
sudo sytemctl start ghost.service

Еще раз зайдите в + http: // +, и вы увидите свой блог.

Заключение

В этом руководстве вы установили Ghost, настроили Nginx для запросов прокси к Ghost и убедились, что Ghost работает как системная служба. Впрочем, с Ghost можно сделать гораздо больше. Посмотрите эти руководства, чтобы узнать больше о том, как использовать ваш новый блог:

Related