Απαιτήσεις
Πριν ξεκινήσεις
Εγκαταστήστε το Certbot
Εγκαταστήστε το Node.js και το NPM
Εγκαταστήστε MySQL
Εγκαταστήστε το NGINX
Εγκαταστήστε το Ghost
Το Running Ghost ως υπηρεσία συστήματος
συμπέρασμα
Το Ghost είναι μια πλατφόρμα blogging ανοιχτού κώδικα που κερδίζει δημοτικότητα μεταξύ των προγραμματιστών και των απλών χρηστών από την κυκλοφορία της το 2013. Δίνει έμφαση στο περιεχόμενο και το blogging. Το πιο ελκυστικό πράγμα για το Ghost είναι ο απλός, καθαρός και ανταποκρινόμενος σχεδιασμός του. Μπορείτε να γράψετε τις αναρτήσεις του ιστολογίου σας από ένα κινητό τηλέφωνο. Το περιεχόμενο για το Ghost γράφεται χρησιμοποιώντας τη γλώσσα Markdown. Το Ghost είναι ιδανικό για άτομα ή μικρές ομάδες συγγραφέων.
Σε αυτόν τον οδηγό, πρόκειται να ρυθμίσουμε και να αναπτύξουμε ένα ασφαλές ιστολόγιο Ghost v0.11.x LTS σε ένα Debian 8 VPS χρησιμοποιώντας Let's Encrypt , Certbot , Node.js , NPM , NGINX και MySQL .
Απαιτήσεις
- Καταχώρηση (αγορά) ονόματος τομέα.
- Παρουσίαση διακομιστή Debian 8 με ελάχιστη μνήμη RAM 1 GB .
- χρήστης Sudo.
Πριν ξεκινήσεις
Ελέγξτε την έκδοση του Debian:
lsb_release -ds
# Debian GNU/Linux 8.9 (jessie)
Δημιουργήστε έναν νέο λογαριασμό χρήστη χωρίς root :
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
Εγκαταστήστε το Certbot
NOTE: Before starting this step, ensure that you have set DNS records for your domain.
Θα χρησιμοποιήσετε Κρυπτογράφηση Ας CA και ΕΤΑ «s πελάτη Certbot για την απόκτηση SSL / TLS πιστοποιητικό για Ghost blog μας. Μην ξεχάσετε να αντικαταστήσετε όλες τις εμφανίσεις του blog.domain.tldμε το όνομα τομέα σας.
Εγκαταστήστε το λογισμικό διαχείρισης πιστοποιητικών Certbot (πρώην Let's Encrypt client ) κατασκευασμένο με Python:
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:
certbot --version
# certbot 0.10.2
Λάβετε πιστοποιητικό RSA χρησιμοποιώντας αυτόνομη μέθοδο ελέγχου ταυτότητας (πρόσθετο):
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κατάλογο.
Εγκαταστήστε το Node.js και το NPM
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-get install -y nodejs
Ελέγξτε την έκδοση Node.js και NPM:
node -v && npm -v
# v6.11.2
# 3.10.10
Εγκαταστήστε MySQL
Από προεπιλογή, το Ghost έχει ρυθμιστεί ώστε να χρησιμοποιεί μια βάση δεδομένων SQLite, η οποία δεν απαιτεί διαμόρφωση.
Εναλλακτικά, το Ghost μπορεί επίσης να χρησιμοποιηθεί με μια βάση δεδομένων MySQL αλλάζοντας τη διαμόρφωση της βάσης δεδομένων. Πρέπει πρώτα να δημιουργήσετε μια βάση δεδομένων και έναν χρήστη και στη συνέχεια μπορείτε να αλλάξετε την υπάρχουσα διαμόρφωση sqlite3.
Λήψη και εγκατάσταση MySQL:
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:
mysql --version
# mysql Ver 14.14 Distrib 5.5.57, for debian-linux-gnu (x86_64) using readline 6.3
Ελέγξτε εάν ο δαίμονας 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 από το επίσημο αποθετήριο 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/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
Επαληθεύστε ότι έχει εγκατασταθεί ελέγχοντας την έκδοση NGINX:
sudo nginx -v
# nginx version: nginx/1.13.4
Ελέγξτε την κατάσταση, ενεργοποιήστε και ξεκινήστε την υπηρεσία NGINX (daemon):
sudo systemctl status nginx.service # inactive (dead)
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Δημιουργήστε /etc/nginx/sslκατάλογο και δημιουργήστε μια νέα ομάδα Diffie-Hellman ( 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; # 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 "";
}
}
Αποθηκεύστε και δοκιμάστε τη διαμόρφωση NGINX για συντακτικά σφάλματα:
sudo nginx -t
Επαναφόρτωση διαμόρφωσης NGINX:
sudo systemctl reload nginx.service
Εγκαταστήστε το Ghost
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.11/Ghost-0.11.11.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
Πλοηγηθείτε στο αρχείο root /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 mail settings also. Consult the official Ghost documentation on how to do that.
Start Ghost στο περιβάλλον παραγωγής:
npm start --production
Το Ghost θα τρέχει τώρα. Τόσο το front-end ιστολογίου όσο και η διεπαφή διαχειριστή είναι ασφαλισμένα με HTTPS και το HTTP/2 λειτουργεί επίσης. Μπορείτε να ανοίξετε το πρόγραμμα περιήγησής σας και να επισκεφτείτε τον ιστότοπο στη διεύθυνση https://blog.domain.tld. Μην ξεχάσετε να αντικαταστήσετε blog.domain.tldμε το όνομα τομέα σας.
Τερματίστε τη διαδικασία Ghost πατώντας CTRL+ Cκαι πραγματοποιήστε έξοδο από τον ghostχρήστη πίσω στον χρήστη root:
exit
Το Running Ghost ως υπηρεσία συστήματος
Εάν κλείσετε την περίοδο λειτουργίας του τερματικού σας με το VPS σας, το ιστολόγιό σας θα σβήσει επίσης. Αυτό δεν είναι καλό. Για να αποφευχθεί αυτό, θα χρησιμοποιήσουμε το Systemd. Θα κρατήσει το blog μας ανοιχτό 24/7.
Δημιουργία ghost.serviceαρχείου μονάδας Systemd. Εκτελέστε 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/και δημιουργήστε έναν χρήστη διαχειριστή Ghost. Κάντε αυτό το συντομότερο δυνατό!
συμπέρασμα
Αυτό είναι. Τώρα έχουμε ένα πλήρως λειτουργικό ιστολόγιο Ghost. Ο διακομιστής σας παραδίδει περιεχόμενο μέσω HTTP/2 όταν υποστηρίζεται από τον πελάτη. Εάν θέλετε να αλλάξετε το προεπιλεγμένο θέμα Ghost που ονομάζεται Casper σε προσαρμοσμένο, μπορείτε απλώς να κάνετε λήψη και να αποσυμπιέσετε το θέμα στο /var/www/ghost/content/themesφάκελο και να το επιλέξετε μέσω της διεπαφής διαχειριστή Ghost, που βρίσκεται στη διεύθυνση https://blog.domain.tld/ghost.