Створення блогу Jekyll в Ubuntu 16.04
Використання іншої системи? Jekyll — чудова альтернатива WordPress для ведення блогів або обміну вмістом. Для цього не потрібні ніякі бази даних, і це дуже легко i
Ghost — це платформа для ведення блогів з відкритим кодом, яка набирає популярності серед розробників і звичайних користувачів з моменту її випуску в 2013 році. Він акцентує увагу на контенті та веденні блогів. Найпривабливішим у Ghost є його простий, чистий та чуйний дизайн. Ви можете писати свої дописи в блозі з мобільного телефону. Вміст для Ghost написаний мовою Markdown. Ghost ідеально підходить для окремих осіб або невеликих груп письменників.
У цьому посібнику ми збираємося налаштувати та розгорнути безпечний блог Ghost v0.11.x LTS на VPS Ubuntu 16.04 LTS за допомогою Let's Encrypt , Certbot , Node.js , NPM , NGINX і MySQL .
Створіть новий обліковий запис користувача без права root :
adduser johndoe --gecos "John Doe"
Зробіть його суперкористувачем, додавши його до sudo
групи:
usermod -aG sudo johndoe
Перейти до нового користувача:
su - johndoe
Оновіть програмне забезпечення операційної системи:
sudo apt update && sudo apt upgrade -y
Налаштуйте часовий пояс:
sudo dpkg-reconfigure tzdata
Встановіть необхідні інструменти:
sudo apt install -y build-essential zip unzip vim nano openssl wget curl git apt-transport-https
Перезавантажте систему, якщо потрібно:
sudo shutdown -r now
NOTE: Before starting this step, ensure that you have set DNS records for your domain.
Ми збираємося використовувати Let's Encrypt CA і клієнт Certbot EFF , щоб отримати сертифікат SSL/TLS для нашого блогу Ghost. Не забудьте замінити всі екземпляри на blog.domain.tld
ім’я вашого домену.
Встановіть програмне забезпечення для керування сертифікатами Certbot (раніше Let's Encrypt client ), створене за допомогою Python:
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:certbot/certbot
sudo apt update
sudo apt install -y certbot
Перевірте версію Certbot:
certbot --version
# certbot 0.14.2
Отримати сертифікат RSA за допомогою окремого методу аутентифікації (плагін):
sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email [email protected] --no-eff-email --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.
Ghost побудовано на Node.js. Ми збираємося встановити рекомендовану версію для Ghost, яка є v6 Boron LTS
на момент написання цієї статті.
Завантажте та встановіть Node.js v6 LTS:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt install -y nodejs
Перевірте версію Node.js і NPM:
node -v && npm -v
# v6.11.1
# 3.10.10
За замовчуванням Ghost налаштований на використання бази даних SQLite, яка не потребує налаштування.
Крім того, Ghost також можна використовувати з базою даних MySQL, змінивши конфігурацію бази даних. Спочатку потрібно створити базу даних і користувача, а потім змінити існуючу конфігурацію sqlite3.
Завантажте та встановіть MySQL:
sudo apt 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:
mysql --version
# mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper
Перевірте, чи запущено та працює демон MySQL:
sudo systemctl status mysql.service
sudo systemctl is-enabled mysql.service
Запустіть mysql_secure_installation
сценарій, щоб трохи захистити свою базу даних:
sudo mysql_secure_installation
Увійдіть в MySQL як користувач root:
mysql -u root -p
# Enter password:
Створіть нову базу даних MySQL і користувача:
create database dbname;
grant all on dbname.* to 'user' identified by 'password';
Вийти з MySQL:
exit
Завантажте та встановіть останню основну версію NGINX з офіційного репозиторію NGINX:
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/ubuntu/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
Переконайтеся, що він встановлений, перевіривши версію NGINX:
sudo nginx -v
# nginx version: nginx/1.13.3
Перевірте статус, увімкніть і запустіть службу NGINX (демон):
sudo systemctl status nginx.service # inactive (dead)
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Створіть /etc/nginx/ssl
каталог і згенеруйте нову групу Діффі-Хеллмана ( DH ):
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
Налаштуйте NGINX як зворотний проксі-сервер HTTP ( S ):
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;
root /var/www/ghost;
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 "";
}
}
Збережіть та перевірте конфігурацію NGINX на наявність синтаксичних помилок:
sudo nginx -t
Перезавантажте конфігурацію NGINX:
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
Завантажити Ghost:
curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.10/Ghost-0.11.10.zip -o ghost.zip
Розпакуйте Ghost в /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
Встановіть Ghost лише з виробничими залежностями. Коли це завершиться, Ghost буде встановлено:
npm install --production
Налаштуйте Ghost, змінивши url
, mail
і database
властивість production
об’єкта всередині 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
Запустіть Ghost у виробничому середовищі:
npm start --production
Тепер привид буде бігати. І інтерфейс блогу, і інтерфейс адміністратора захищені HTTPS, а також працює HTTP/2. Ви можете відкрити свій браузер і відвідати сайт за адресою https://blog.domain.tld
. Не забудьте замінити blog.domain.tld
на своє доменне ім’я.
Вимкніть процес Ghost, натиснувши CTRL
+, C
і вийдіть із користувача ghost назад до користувача root:
exit
Якщо ви закриєте термінальний сеанс за допомогою VPS, ваш блог також зникне. Це не добре. Щоб уникнути цього, ми збираємося використовувати systemd. Завдяки цьому наш блог буде працювати цілодобово.
Створіть ghost.service
файл модуля systemd. Запустіть sudo vim /etc/systemd/system/ghost.service
та скопіюйте/вставте наведений нижче вміст:
[Unit]
Description=Ghost - the professional publishing platform
Documentation=https://docs.ghost.org/v0.11.9
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/
та створіть користувача адміністратора Ghost. Зробіть це якомога швидше!
Це воно. Тепер у нас є повністю функціональний блог Ghost. Ваш сервер доставляє вміст через HTTP/2, якщо він підтримується клієнтом. Якщо ви хочете змінити тему Ghost за замовчуванням під назвою Casper на спеціальну, ви можете просто завантажити та розпакувати тему в /var/www/ghost/content/themes
папку та вибрати її через інтерфейс адміністратора Ghost, розташований за адресою https://blog.domain.tld/ghost
.
Використання іншої системи? Jekyll — чудова альтернатива WordPress для ведення блогів або обміну вмістом. Для цього не потрібні ніякі бази даних, і це дуже легко i
Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.
Використання іншої системи? Jekyll — хороша альтернатива WordPress. Він не вимагає жодних баз даних і працює з мовою, знайомою багатьом
Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.
Використання іншої системи? Fork — це CMS з відкритим кодом, написана на PHP. Вихідний код Forks розміщено на GitHub. Цей посібник покаже вам, як встановити Fork CM
Neos – це інноваційна система керування вмістом із відкритим кодом, яка чудово підходить для створення та редагування онлайн-контенту. Маючи на увазі авторів і редакторів, Neo
Використання іншої системи? Ghost — це платформа для ведення блогів з відкритим кодом, яка набирає популярності серед розробників і звичайних користувачів з 201 року.
Використання іншої системи? Ghost — це платформа для ведення блогів з відкритим кодом, яка набирає популярності серед розробників і звичайних користувачів з 201 року.
Поширеним використанням віртуального сервера Vultr є розміщення веб-сайтів Wordpress. У цьому посібнику показано, як автоматизувати налаштування віртуального сервера з нуля
Ghost — найновіша і найкраща вискочка, яка конкурує з WordPress. Розробка теми швидка та проста в освоєнні, тому що розробники Ghost вирішили використовувати обидва
Ghost — це сучасна видавнича платформа з відкритим вихідним кодом, побудована на Node.js з клієнтом адміністратора Ember.js, API JSON та API тем, що працює на основі Handlebars.js. Ghos
Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.
Використання іншої системи? Fork — це CMS з відкритим кодом, написана на PHP. Вихідний код Forks розміщено на GitHub. Цей посібник покаже вам, як встановити Fork CM
Використання іншої системи? Ghost – це платформа для ведення блогів з відкритим кодом, яка набирає популярності серед розробників і звичайних користувачів з моменту її випуску в 2013 році. я
Використання іншої системи? Fork — це CMS з відкритим кодом, написана на PHP. Вихідний код Forks розміщено на GitHub. Цей посібник покаже вам, як встановити Fork CM
Typesetter — це CMS з відкритим вихідним кодом, написана на PHP, зосереджена на простоті використання з редагуванням True WYSIWYG і зберіганням плоских файлів. У цій статті ми будемо встановлювати
Примірники Vultr – це чудовий спосіб вести свій блог WordPress, але більш помітним розширенням WordPress є WooCommerce, плагін електронної комерції, який розширює
Використання іншої системи? Fork — це CMS з відкритим кодом, написана на PHP. Вихідний код Forks розміщено на GitHub. Цей посібник покаже вам, як встановити Fork CM
Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.
Використання іншої системи? SilverStripe — це гнучка та розширювана безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом, написана на PHP. я
Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.
Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.
Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.
Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.
Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…
Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.
Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.
Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.
У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.
Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше