Захтеви
Пре него што почнете
Инсталирајте Цертбот
Инсталирајте Ноде.јс и НПМ
Инсталирајте МиСКЛ
Инсталирајте НГИНКС
Инсталирајте Гхост
Покретање Гхост-а као системске услуге
Закључак
Гхост је платформа за блогове отвореног кода која постаје све популарнија међу програмерима и обичним корисницима од свог издања 2013. године. Фокусира се на садржај и блоговање. Најпривлачнија ствар код Гхост-а је његов једноставан, чист и прилагодљив дизајн. Своје постове на блогу можете писати са мобилног телефона. Садржај за Гхост је написан користећи Маркдовн језик. Гхост је савршен за појединце или мале групе писаца.
У овом упутству, идемо да успоставе и примене сигурну Гхост в0.11.к Оцелот блог на Дебиан 8 ВПС користећи Лет је Шифруј , Цертбот , Ноде.јс , НПМ , Апацхе и МиСКЛ .
Захтеви
- Региструјте (купите) име домена.
- Дебиан 8 серверска инстанца са најмање 1 ГБ РАМ-а .
- Судо корисник.
Пре него што почнете
Проверите верзију Дебиан-а:
lsb_release -ds
# Debian GNU/Linux 8.9 (jessie)
Креирајте нови не-роот кориснички налог:
adduser johndoe --gecos "John Doe"
Учините га суперкорисником додавањем у sudoгрупу:
usermod -aG sudo johndoe
Пређите на новог корисника:
su - johndoe
Ажурирајте софтвер свог оперативног система:
sudo apt-get update && sudo apt-get upgrade -y
Подесите временску зону:
sudo dpkg-reconfigure tzdata
Инсталирајте потребне алате:
sudo apt-get install -y build-essential zip unzip git apt-transport-https
Поново покрените систем ако је потребно:
sudo shutdown -r now
Инсталирајте Цертбот
NOTE: Before starting this step, ensure that you have set DNS records for your domain.
Користићемо Лет'с Енцрипт ЦА и ЕФФ Цертбот клијент да добијемо ССЛ/ТЛС сертификат за наш Гхост блог. Не заборавите да замените све инстанце blog.domain.tldса именом вашег домена.
Инсталирајте Цертбот (раније Лет'с Енцрипт цлиент ) софтвер за управљање сертификатима направљен са Питхон-ом:
sudo -s
printf "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list.d/jessie-backports.list
exit
sudo apt-get update
sudo apt-get install -y certbot -t jessie-backports
Проверите верзију Цертбота:
certbot --version
# certbot 0.10.2
Набавите РСА сертификат користећи самосталну методу аутентификације (додатак):
sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email admin@domain.tld --agree-tos
# IMPORTANT NOTES:
# - Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/blog.domain.tld/fullchain.pem.
# Your cert will expire on YYYY-MM-DD. . . .
# . . .
Након проласка кроз претходне кораке, ваш сертификат и приватни кључ ће бити у /etc/letsencrypt/live/blog.domain.tldдиректоријуму.
Инсталирајте Ноде.јс и НПМ
NOTE: Ghost currently supports Node.js versions 4.5+ and 6.9+ only.
Гхост је изграђен на Ноде.јс. Инсталираћемо препоручену верзију за Гхост која је v6 Boron LTSу време писања овог текста .
Преузмите и инсталирајте Ноде.јс в6 ЛТС:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
Проверите Ноде.јс и НПМ верзију:
node -v && npm -v
# v6.11.2
# 3.10.10
Инсталирајте МиСКЛ
Гхост подразумевано долази конфигурисан да користи СКЛите базу података, која не захтева никакву конфигурацију.
Алтернативно, Гхост се такође може користити са МиСКЛ базом података променом конфигурације базе података. Прво морате да креирате базу података и корисника, а затим можете да промените постојећу склите3 конфигурацију.
Преузмите и инсталирајте МиСКЛ:
sudo apt-get install -y mysql-server
NOTE: During the installation, you will be prompted for MySQL "root" user password. You should set a secure password for the MySQL "root" user.
Проверите верзију МиСКЛ-а:
mysql --version
# mysql Ver 14.14 Distrib 5.5.57, for debian-linux-gnu (x86_64) using readline 6.3
Проверите да ли је МиСКЛ демон покренут и ради:
sudo systemctl status mysql.service
sudo systemctl is-enabled mysql.service
Покрените mysql_secure_installationскрипту да бисте мало заштитили своју базу података:
sudo mysql_secure_installation
Пријавите се на МиСКЛ као роот корисник:
mysql -u root -p
# Enter password:
Креирајте нову МиСКЛ базу података и корисника:
create database dbname;
grant all on dbname.* to 'user' identified by 'password';
Изађи из МиСКЛ-а:
exit
Инсталирајте НГИНКС
Преузмите и инсталирајте најновију главну верзију НГИНКС-а из званичног НГИНКС спремишта:
wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/debian/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/debian/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt-get update
sudo apt-get install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
Проверите да ли је инсталиран тако што ћете проверити верзију НГИНКС-а:
sudo nginx -v
# nginx version: nginx/1.13.4
Проверите статус, омогућите и покрените НГИНКС услугу (демон):
sudo systemctl status nginx.service # inactive (dead)
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Креирајте /etc/nginx/sslдиректоријум и генеришите нову Диффие-Хеллман ( ДХ ) групу:
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
Креирајте директоријум дневника за blog.domain.tldвиртуелни хост:
sudo mkdir -p /var/log/nginx/blog.domain.tld
Конфигуришите НГИНКС као ХТТП ( С ) реверзни прокси сервер:
sudo vim /etc/nginx/conf.d/ghost.conf
Налепите следеће у /etc/nginx/conf.d/ghost.conf:
# domain: blog.domain.tld
# public: /var/www/ghost
upstream ghost_app {
server 127.0.0.1:2368;
keepalive 32;
}
server {
listen [::]:80 default_server;
listen 80 default_server;
listen [::]:443 ssl http2 default_server;
listen 443 ssl http2 default_server;
server_name blog.domain.tld; # Change to your domain/hostname
root /var/www/ghost; # Change to the path where Ghost is
error_log /var/log/nginx/blog.domain.tld/error.log;
access_log /var/log/nginx/blog.domain.tld/access.log;
client_max_body_size 100M;
ssl_certificate /etc/letsencrypt/live/blog.domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.domain.tld/privkey.pem;
ssl_dhparam ssl/dhparams-2048.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_buffer_size 4K;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50M;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/blog.domain.tld/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
location / {
proxy_pass http://ghost_app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_hide_header X-Powered-By;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
Сачувајте и тестирајте НГИНКС конфигурацију за синтаксичке грешке:
sudo nginx -t
Поново учитај НГИНКС конфигурацију:
sudo systemctl reload nginx.service
Инсталирајте Гхост
NOTE: If you want to host multiple Ghost blogs on same VPS, each Ghost instance must be running on a separate port.
Креирајте основни директоријум документа:
sudo mkdir -p /var/www/
Креирајте новог ghostкорисника:
sudo adduser --shell /bin/bash --gecos 'Ghost application' --disabled-password ghost
Преузмите Гхост:
curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
Распакујте Гхост у /var/www/ghostдиректоријум (препоручена локација за инсталацију):
sudo unzip -uo ghost.zip -d /var/www/ghost
rm ghost.zip
Идите до новог ghostдиректоријума:
cd /var/www/ghost
Промените власништво над /var/www/ghostдиректоријумом:
sudo chown -R ghost:ghost .
Пређи на новог ghostкорисника:
sudo su - ghost
Идите до корена документа /var/www/ghost:
cd /var/www/ghost
Инсталирајте Гхост само са производним зависностима. Када се ово заврши, Гхост је инсталиран:
npm install --production
Цонфигуре Дух променом url, mailа databaseимовина производног објекта унутрашњости config.jsфајла:
cp config.example.js config.js
vim /var/www/ghost/config.js
var path = require('path'),
config;
config = {
// ### Production
// When running Ghost in the wild, use the production environment.
// Configure your URL and mail settings here
production: {
url: 'https://blog.domain.tld',
mail: {
transport: 'SMTP',
options: {
service: 'Mailgun',
auth: {
user: '',
pass: ''
}
}
},
database: {
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'your_database_user',
password: 'your_database_password',
database: 'your_database_name',
charset: 'utf8'
},
debug: false
},
// . . .
// . . .
NOTE: You should configure mail settings also. Consult the official Ghost documentation on how to do that.
Покрените Гхост у производном окружењу:
npm start --production
Дух ће сада трчати. И фронт-енд блога и интерфејс администратора су заштићени ХТТПС-ом, а ХТТП/2 такође ради. Можете да отворите свој претраживач и посетите сајт на адреси https://blog.domain.tld. Не заборавите да замените blog.domain.tldсвојим именом домена.
Искључите Гхост процес притиском на CTRL+ Cи изађите из ghostкорисника назад на роот корисника:
exit
Покретање Гхост-а као системске услуге
Ако затворите своју терминалску сесију са својим ВПС-ом, ваш блог ће такође бити угашен. То није добро. Да бисмо ово избегли, користићемо Системд. То ће одржавати наш блог 24/7.
Креирајте ghost.serviceСистемд јединичну датотеку. Покрените sudo vim /etc/systemd/system/ghost.serviceи копирајте/налепите следећи садржај:
[Unit]
Description=Ghost - the professional publishing platform
Documentation=https://docs.ghost.org/v0.11.11/docs
After=network.target
[Service]
Type=simple
# Edit WorkingDirectory, User and Group as needed
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.service:
sudo systemctl enable ghost.service && sudo systemctl start ghost.service
Проверите ghost.serviceстатус:
sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
Идите до https://blog.domain.tld/ghost/и креирајте Гхост администраторског корисника. Урадите ово што је пре могуће!
Закључак
То је то. Сада имамо потпуно функционалан Гхост блог. Ваш сервер испоручује садржај преко ХТТП/2 када га клијент подржава. Ако желите да промените подразумевану Гхост тему под називом Цаспер у прилагођену, можете само да преузмете и распакујете тему у /var/www/ghost/content/themesфасциклу и изаберете је преко Гхост администраторског интерфејса, који се налази на https://blog.domain.tld/ghost.