Антон Рябов bio photo

Антон Рябов

Не люблю бриться и у меня умный взгляд.

Email Twitter Telegram Github PGP RSS

Установка Ghost в CentOS

Обзор




Что такое Ghost?

О данном проекте писали на хабре, как минимум здесь. Так что, много рассказывать не собираюсь. Выделю самое главное:

  • Это платформа для блоггинга, как, например, Wordpress
  • Это очень быстрый движок, потому, что работает на node.js
  • Простой и удобный интерфейс
  • Собственный магазин с платными и бесплатными шаблонами

Установка Ghost в CentOS

Системные требования:

$ yum groupinstall -y "Development Tools"
$ yum install -y wget

Устанавливаем Node.js

$ wget http://nodejs.org/dist/node-latest.tar.gz
$ tar -xzf node-latest.tar.gz
$ cd node-v*
$ ./configure 
$ make 
$ make install
$ ln -s /usr/local/bin/node /usr/bin/node
$ ln -s /usr/local/bin/npm /usr/bin/npm

Устанавливаем Ghost

$ mkdir -p /var/www/ghost
$ cd /var/www/ghost
$ wget https://ghost.org/zip/ghost-latest.zip 
$ unzip ghost-latest.zip  
$ npm install --production

Создание пользователя Ghost

$ useradd ghost
$ chown ghost:ghost /var/www/ghost/ -R

Запуск Ghost в режиме разработчика

$ npm start

Таким образом мы запустили движок в режиме разработчика/отладки (dev) на localhost’е на порту 2368 (127.0.0.1:2368). Можно посмотреть результат, открыв в браузере адрес http://127.0.0.1:2368.

Дальнейшая настройка

Естественно нам необходимо две вещи, чтобы блог открывался по доменному имени и на 80 порту. В папке с Ghost есть два файла config.example.js и config.js (если второго нет, необходимо переименовать первый или скопировать). Считывается config.js.

Заметка: в конфигурационном файле есть несколько блоков настроек, dev, production и testing. В зависимости от того в каком режиме вы будете запускать сервер такие настройки и будут применены.

Итак, чтобы решить задачу с доменным именем и портом, можно изменить настройки в конфиге самого Ghost’а, а можно установить nginx и через него проксировать запросы в node.js. Тут, на мой взгляд, кому как удобнее. В конфиге Ghost, нас интересует следующее:

var path = require('path'),
config;

config = {
// ### Development **(default)**-  настройки для запуска в режиме DEV
development: {
// The url to use when providing links to the site, E.g. in RSS and email.
url: 'http://ghost.mysite.com', //Адрес который будет слушать встроенный веб-сервер
database: {
client: 'sqlite3',
connection: {
filename: path.join(__dirname, '/content/data/ghost-dev.db')
},
debug: false
},

server: {
// Host to be passed to node's `net.Server#listen()`
host: '0.0.0.0', //По умолчанию здесь указан localhost, если поставить 0.0.0.0
//будут слушаться все интерфейсы, либо можно выставить определенный.
// Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
port: '2368' // Здесь задается порт, нас интересует 80.
},
paths: {
contentPath: path.join(__dirname, '/content/')
}
},

// ### Production – настройки для запуска в режиме Production
//Для продакшн, настройки точно такие же, однако не забывайте их поменять
production: {
url: 'http://ghost.mysite.com',
mail: {},
database: {
client: 'sqlite3',
connection: {
filename: path.join(__dirname, '/content/data/ghost.db')
},
debug: false
},
server: {
// Host to be passed to node's `net.Server#listen()`
host: '0.0.0.0',
// Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
port: '80'
}
},

Настройка Ghost с использованием Nginx

При этом мы сохраняем дефолтные настройки Ghost и запускаем сервер на localhost на порту 2368.

Установка Nginx

Добавляем репозиторий Nginx

$ vim /etc/yum.repos.d/nginx.repo

В файл добавляем текст:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Сохраняем файл, устанавливаем Nginx, запускаем его и добавляем в автозагрузку, следующими командами:

$ yum install nginx -y
$ service nginx start
$ chkconfig nginx on

Далее создаем конфиг виртуального хоста для нашего Ghost сервера:

$ vim /etc/nginx/conf.d/ghost.mysite.com.conf

Со следующим содержимым:

server {
  listen 80;
  server_name yourdomain.com www.yourdomain.com;

  location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:2368;
  }
}

Для применения настроек выполняем команду:

$ service nginx reload

Вот и все, теперь ваш блог на движке Ghost доступен по адресу yourdomain.com на 80 порту.

Материалы по теме:

#Ghost #Linux #TechAndDev