Създаване на блог на Jekyll в Ubuntu 16.04
Използване на различна система? Jekyll е чудесна алтернатива на WordPress за блогове или споделяне на съдържание. Не изисква никакви бази данни и е много лесно i
Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители след пускането си през 2013 г. Той поставя фокус върху съдържанието и блоговете. Най-привлекателното нещо при Ghost е неговият прост, изчистен и отзивчив дизайн. Можете да пишете публикациите си в блога от мобилен телефон. Съдържанието за Ghost е написано с помощта на езика Markdown. Ghost е идеално подходящ за отделни лица или малки групи писатели.
В това ръководство ще настроим и внедрим защитен блог Ghost v0.11.x LTS на CentOS 7.3 VPS, използвайки Let's Encrypt , Certbot , Node.js , NPM , NGINX и MySQL .
Проверете версията на CentOS:
cat /etc/centos-release
# CentOS Linux release 7.3.1611 (Core)
Създайте нов потребител без root :
useradd -c "John Doe" johndoe && passwd johndoe
Направете го суперпотребител, като го добавите към wheel
групата:
usermod -aG wheel johndoe
Превключете към нов потребител:
su - johndoe
Актуализирайте софтуера на вашата операционна система:
sudo yum check-update || sudo yum update -y
Настройте часовата зона:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Инсталирайте инструменти за разработка:
sudo yum groupinstall -y 'Development Tools'
Инсталирайте текстов редактор на Vim:
sudo yum install -y vim
Рестартирайте системата, ако е необходимо:
sudo shutdown -r now
NOTE: Before starting this step, ensure that you have set DNS records for your domain.
Ние ще използваме Encrypt Нека Калифорния и EFF е Certbot клиент да получи SSL / TLS сертификат за нашия Ghost блог. Не забравяйте да замените всички екземпляри на blog.domain.tld
с името на вашия домейн.
Активирайте хранилището за допълнителни пакети за Enterprise Linux (EPEL):
# Certbot is packaged in Extra Packages for Enterprise Linux (EPEL) repository. To use Certbot, you must first enable the EPEL repository.
sudo yum install -y epel-release
Инсталирайте Certbot (по-рано Let's Encrypt client ) софтуер за управление на сертификати, направен с Python:
sudo yum install -y certbot
Проверете версията на Certbot:
certbot --version
# certbot 0.14.1
Получете 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:
sudo curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
sudo yum install -y nodejs
Проверете версията на Node.js и NPM:
node -v && npm -v
# v6.11.2
# 3.10.10
По подразбиране Ghost е конфигуриран да използва SQLite база данни, която не изисква конфигурация.
Алтернативно Ghost може да се използва и с MySQL база данни чрез промяна на конфигурацията на базата данни. Първо трябва да създадете база данни и потребител, след което можете да промените съществуващата конфигурация на sqlite3.
Изтеглете и инсталирайте най-новата версия на MySQL (в момента 5.7 ) от официалното хранилище на MySQL Yum:
cd /tmp
# Adding the MySQL Yum Repository
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo yum localinstall -y mysql57-community-release-el7-11.noarch.rpm
# Installing MySQL
sudo yum install -y mysql-community-server
Проверете версията на MySQL:
mysql --version
# mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
Стартирайте MySQL Server и проверете състоянието му:
sudo systemctl start mysqld.service
sudo systemctl status mysqld.service
MySQL версия 5.7 или по-нова генерира временна произволна парола за root
потребител на MySQL след инсталиране и паролата се съхранява в регистрационния файл на MySQL грешки, намиращ се на /var/log/mysqld.log
. За да го разкриете, използвайте следната команда:
sudo grep 'temporary password' /var/log/mysqld.log
Изпълнете mysql_secure_installation
скрипта, за да защитите малко вашата база данни:
NOTE: Password Validation Plugin is installed and enabled, so your new password for
root
user needs to be strong (one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters). If you want to relax that or disable plugin completely (not recommended) consult the official MySQL documentation for how to do that.
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
Download and install the latest mainline version of NGINX from the official NGINX repository:
# Add the NGINX Yum Repository
sudo vim /etc/yum.repos.d/nginx_mainline.repo
# Copy/paste the following into /etc/yum.repos.d/nginx_mainline.repo
[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
wget https://nginx.org/keys/nginx_signing.key
sudo rpm --import nginx_signing.key
rm nginx_signing.key
sudo yum install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
Verify that it is installed by checking the NGINX version:
sudo nginx -v
# nginx version: nginx/1.13.3
Check status, enable and start NGINX service (daemon):
sudo systemctl status nginx.service # inactive (dead)
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Create /etc/nginx/ssl
directory and generate a new Diffie-Hellman (DH) parameters:
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
Create log directory for blog.domain.tld
virtual host:
sudo mkdir -p /var/log/nginx/blog.domain.tld
Configure NGINX as a HTTP(S) reverse proxy server:
sudo vim /etc/nginx/conf.d/ghost.conf
Paste the following in /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 "";
}
}
Save and test NGINX configuration for syntax errors:
sudo nginx -t
Reload NGINX configuration:
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.
Create document root directory:
sudo mkdir -p /var/www/
Create a new ghost user:
sudo useradd -c 'Ghost application' ghost
Download Ghost:
curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
Unzip Ghost into the /var/www/ghost
directory (recommended install location):
sudo unzip -uo ghost.zip -d /var/www/ghost
rm ghost.zip
Move to the new ghost directory:
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
свойството на производствения обект вътре във 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
Ghost сега ще бяга. И предния край на блога, и интерфейсът на администратора са защитени с HTTPS и HTTP/2 също работи. Можете да отворите браузъра си и да посетите сайта на адрес https://blog.domain.tld
. Не забравяйте да замените blog.domain.tld
с името на вашия домейн.
Изключете процеса на Ghost, като натиснете CTRL
+ C
и излезте от ghost потребител обратно към потребител без root , който сте създали в началото:
exit
Ако затворите терминалната си сесия с вашия VPS, вашият блог също ще падне. Това не е добре. За да избегнем това, ще използваме systemd. Това ще поддържа блога ни 24/7.
Създайте ghost.service
файл systemd unit. Стартирайте sudo 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=/bin/npm start --production
ExecStop=/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) от корпоративен клас, написана i
Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема система за управление на съдържанието (CMS) от корпоративен клас, написана на PHP. То и
Въведение WordPress е доминиращата система за управление на съдържанието в интернет. Той захранва всичко от блогове до сложни уебсайтове с динамично съдържание
Използване на различна система? Jekyll е добра алтернатива на WordPress. Не изисква никакви бази данни и работи с език, който мнозина познават
Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i
Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM
Neos е иновативна система за управление на съдържанието с отворен код, която е чудесна за създаване и редактиране на онлайн съдържание. Имайки предвид авторите и редакторите, Neo
Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители от 201 г.
Използване на различна система? SilverStripe е гъвкава и разширяема система за управление на съдържанието (CMS) с отворен код, написана на PHP. Това е лесно
Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители от 201 г.
Често срещано използване на виртуален сървър Vultr е за хостване на уебсайтове на Wordpress. Това ръководство ви показва как да автоматизирате конфигурацията на виртуален сървър от нулата
Ghost е най-новата и най-добрата нова, която да съперничи на WordPress. Разработването на теми е бързо и лесно за научаване, защото разработчиците на Ghost решиха да използват и двете
Ghost е модерна платформа за публикуване с отворен код, изградена на Node.js с администраторски клиент Ember.js, JSON API и API за тема, задвижван от Handlebars.js. Ghos
Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i
Използване на различна система? Dotclear е много прост двигател за блогове. Той е с отворен код и лесен за използване. Този урок ще премине през инсталацията
Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM
Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители след пускането си през 2013 г. аз
Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM
Typesetter е CMS с отворен код, написан на PHP, фокусиран върху лекотата на използване с True WYSIWYG редактиране и съхранение на плосък файл. В тази статия ще инсталираме
Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.
Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.
Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.
Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.
Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…
Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.
Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.
Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.
В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.
Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече