Вступление
Ghost - это легкая платформа для ведения блогов с открытым исходным кодом, которая проста в использовании. Ghost полностью настраиваемый, с множеством доступных тем.
В этом уроке вы настроите Ghost на CentOS 7. Вы также настроите Nginx для прокси-запросов к Ghost и продолжите работу Ghost в фоновом режиме в качестве системной службы.
Предпосылки
Для завершения этого урока вам понадобится:
-
Один сервер CentOS 7 емкостью 1 ГБ, настроенный в соответствии с Initial Server Setup с руководством CentOS 7, включая sudo пользователь root.
-
Node.js, установленный с использованием метода репозитория EPEL, описанного в руководстве: How To Установите Node.js на сервере CentOS 7.
-
Nginx установлен на вашем сервере, как показано в How для установки Nginx на CentOS 7.
Шаг 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 можно сделать гораздо больше. Посмотрите эти руководства, чтобы узнать больше о том, как использовать ваш новый блог: