Kërkesat
Perpara se te fillosh
Instaloni Certbot
Instaloni Node.js dhe NPM
Instaloni MySQL
Instaloni NGINX
Instaloni Ghost
Running Ghost si një shërbim sistemi
konkluzioni
Ghost është një platformë blogimi me burim të hapur që ka fituar popullaritet midis zhvilluesve dhe përdoruesve të zakonshëm që nga publikimi i saj në 2013. Ai e vë fokusin në përmbajtje dhe në blog. Gjëja më tërheqëse për Ghost është dizajni i tij i thjeshtë, i pastër dhe i përgjegjshëm. Ju mund të shkruani postimet tuaja në blog nga një telefon celular. Përmbajtja për Ghost është shkruar duke përdorur gjuhën Markdown. Ghost është i përshtatshëm për individë ose grupe të vogla shkrimtarësh.
Në këtë udhëzues ne do të konfigurojmë dhe vendosim një blog të sigurt Ghost v0.11.x LTS në një Ubuntu 16.04 LTS VPS duke përdorur Let's Encrypt , Certbot , Node.js , NPM , NGINX dhe MySQL .
Kërkesat
- Regjistroni (bleni) një emër domaini.
- Shembulli i serverit Ubuntu 16.04 me minimum 1 GB RAM .
- Përdorues Sudo.
Perpara se te fillosh
Krijo një llogari të re përdoruesi jo-root :
adduser johndoe --gecos "John Doe"
Bëjeni atë superpërdorues duke e shtuar në sudogrup:
usermod -aG sudo johndoe
Kalo te përdoruesi i ri:
su - johndoe
Përditësoni softuerin e sistemit tuaj operativ:
sudo apt update && sudo apt upgrade -y
Vendosni zonën kohore:
sudo dpkg-reconfigure tzdata
Instaloni mjetet e nevojshme:
sudo apt install -y build-essential zip unzip vim nano openssl wget curl git apt-transport-https
Rinisni sistemin nëse kërkohet:
sudo shutdown -r now
Instaloni Certbot
NOTE: Before starting this step, ensure that you have set DNS records for your domain.
Ne do të përdorim Let's Encrypt CA dhe klientin Certbot të EFF për të marrë certifikatën SSL/TLS për blogun tonë Ghost. Mos harroni të zëvendësoni të gjitha rastet e blog.domain.tldme emrin e domenit tuaj.
Instaloni softuerin e menaxhimit të certifikatave Certbot (më parë Let's Encrypt Client ) të krijuar me 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
Kontrolloni versionin Certbot:
certbot --version
# certbot 0.14.2
Merrni certifikatën RSA duke përdorur metodën e pavarur të vërtetimit (plugin):
sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email admin@domain.tld --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. . . .
# . . .
Pasi të keni kaluar hapat e mëparshëm, certifikata juaj dhe çelësi privat do të jenë në /etc/letsencrypt/live/blog.domain.tlddrejtori.
Instaloni Node.js dhe NPM
NOTE: Ghost currently supports Node.js versions 4.5+ and 6.9+ only.
Ghost është ndërtuar në Node.js. Ne do të instalojmë versionin e rekomanduar për Ghost i cili është v6 Boron LTSnë kohën e këtij shkrimi.
Shkarkoni dhe instaloni Node.js v6 LTS:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt install -y nodejs
Kontrolloni versionin Node.js dhe NPM:
node -v && npm -v
# v6.11.1
# 3.10.10
Instaloni MySQL
Si parazgjedhje, Ghost vjen i konfiguruar për të përdorur një bazë të dhënash SQLite, e cila nuk kërkon konfigurim.
Përndryshe, Ghost mund të përdoret gjithashtu me një bazë të dhënash MySQL duke ndryshuar konfigurimin e bazës së të dhënave. Së pari duhet të krijoni një bazë të dhënash dhe përdorues, pastaj mund të ndryshoni konfigurimin ekzistues sqlite3.
Shkarkoni dhe instaloni 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.
Kontrolloni versionin e MySQL:
mysql --version
# mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper
Kontrolloni nëse daemon MySQL ka filluar dhe po funksionon:
sudo systemctl status mysql.service
sudo systemctl is-enabled mysql.service
Drejtoni mysql_secure_installationskriptin për të siguruar pak bazën e të dhënave tuaja:
sudo mysql_secure_installation
Hyni në MySQL si përdoruesi kryesor:
mysql -u root -p
# Enter password:
Krijoni një bazë të dhënash dhe përdorues të ri MySQL:
create database dbname;
grant all on dbname.* to 'user' identified by 'password';
Dilni nga MySQL:
exit
Instaloni NGINX
Shkarkoni dhe instaloni versionin më të fundit kryesor të NGINX nga depoja zyrtare 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
Verifikoni që është instaluar duke kontrolluar versionin NGINX:
sudo nginx -v
# nginx version: nginx/1.13.3
Kontrolloni statusin, aktivizoni dhe filloni shërbimin NGINX (daemon):
sudo systemctl status nginx.service # inactive (dead)
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Krijoni /etc/nginx/ssldrejtorinë dhe krijoni një grup të ri Diffie-Hellman ( DH ):
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
Krijoni drejtorinë e regjistrave për blog.domain.tldhostin virtual:
sudo mkdir -p /var/log/nginx/blog.domain.tld
Konfiguro NGINX si një server proxy të kundërt HTTP ( S ):
sudo vim /etc/nginx/conf.d/ghost.conf
Ngjit sa vijon në /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 "";
}
}
Ruani dhe testoni konfigurimin NGINX për gabime sintaksore:
sudo nginx -t
Rifresko konfigurimin NGINX:
sudo systemctl reload nginx.service
Instaloni Ghost
NOTE: If you want to host multiple Ghost blogs on same VPS, each Ghost instance must be running on a separate port.
Krijo direktorinë rrënjë të dokumentit:
sudo mkdir -p /var/www/
Krijo një ghostpërdorues të ri :
sudo adduser --shell /bin/bash --gecos 'Ghost application' --disabled-password ghost
Shkarkoni Ghost:
curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.10/Ghost-0.11.10.zip -o ghost.zip
Zhzip Ghost në /var/www/ghostdrejtori (vendndodhja e rekomanduar e instalimit):
sudo unzip -uo ghost.zip -d /var/www/ghost
rm ghost.zip
Kaloni në drejtorinë e re ghost:
cd /var/www/ghost
Ndryshoni pronësinë e /var/www/ghostdrejtorisë:
sudo chown -R ghost:ghost .
Kalo te ghostpërdoruesi i ri :
sudo su - ghost
Navigoni në rrënjë të dokumentit /var/www/ghost:
cd /var/www/ghost
Instaloni Ghost vetëm me varësitë e prodhimit. Kur kjo të përfundojë, Ghost është instaluar:
npm install --production
Konfiguro Ghost duke ndryshuar url, maildhe databasevetinë e productionobjektit brenda config.jsskedarit:
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.
Start Ghost në mjedisin e prodhimit:
npm start --production
Ghost tani do të funksionojë. Si ndërfaqja e përparme e blogut ashtu edhe ndërfaqja e administratorit janë të siguruara me HTTPS dhe HTTP/2 po funksionon gjithashtu. Mund të hapni shfletuesin tuaj dhe të vizitoni sajtin në https://blog.domain.tld. Mos harroni të zëvendësoni blog.domain.tldme emrin e domain.
Mbyllni procesin Ghost duke shtypur CTRL+ Cdhe dilni nga përdoruesi fantazmë përsëri te përdoruesi rrënjë:
exit
Running Ghost si një shërbim sistemi
Nëse mbyllni seancën tuaj të terminalit me VPS-në tuaj, blogu juaj gjithashtu do të shkojë poshtë. Kjo nuk është mirë. Për të shmangur këtë, ne do të përdorim systemd. Ai do ta mbajë blogun tonë aktiv 24/7.
Krijoni ghost.serviceskedarin e njësisë së sistemit. Ekzekutoni sudo vim /etc/systemd/system/ghost.servicedhe kopjoni/ngjitni përmbajtjen e mëposhtme:
[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
Aktivizo dhe fillo ghost.service:
sudo systemctl enable ghost.service && sudo systemctl start ghost.service
Kontrolloni ghost.servicestatusin:
sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
Navigoni https://blog.domain.tld/ghost/dhe krijoni një përdorues administratori Ghost. Bëjeni këtë sa më shpejt të jetë e mundur!
konkluzioni
Kjo eshte. Tani kemi një blog Ghost plotësisht funksional. Serveri juaj po shpërndan përmbajtje nëpërmjet HTTP/2 kur mbështetet nga klienti. Nëse dëshironi të ndryshoni temën e paracaktuar të Ghost të quajtur Casper në një të personalizuar, thjesht mund ta shkarkoni dhe ta çzipni temën në /var/www/ghost/content/themesdosje dhe ta zgjidhni atë nëpërmjet ndërfaqes së administratorit Ghost, që ndodhet në https://blog.domain.tld/ghost.