Krijimi i një Blog Jekyll në Ubuntu 16.04
Përdorimi i një sistemi të ndryshëm? Jekyll është një alternativë e shkëlqyeshme për WordPress për blogimin ose ndarjen e përmbajtjes. Nuk kërkon ndonjë bazë të dhënash dhe është shumë e lehtë i
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ë CentOS 7.3 VPS duke përdorur Let's Encrypt , Certbot , Node.js , NPM , NGINX dhe MySQL .
Kontrolloni versionin CentOS:
cat /etc/centos-release
# CentOS Linux release 7.3.1611 (Core)
Krijo një përdorues të ri jo-root :
useradd -c "John Doe" johndoe && passwd johndoe
Bëjeni atë superpërdorues duke e shtuar në wheel
grup:
usermod -aG wheel johndoe
Kalo te përdoruesi i ri:
su - johndoe
Përditësoni softuerin e sistemit tuaj operativ:
sudo yum check-update || sudo yum update -y
Vendosni zonën kohore:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Instaloni mjetet e zhvillimit:
sudo yum groupinstall -y 'Development Tools'
Instaloni redaktuesin e tekstit Vim:
sudo yum install -y vim
Rinisni sistemin nëse kërkohet:
sudo shutdown -r now
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.tld
me emrin e domenit tuaj.
Aktivizo depon e Paketave Shtesë për 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
Instaloni softuerin e menaxhimit të certifikatave Certbot (më parë Let's Encrypt Client ) të krijuar me Python:
sudo yum install -y certbot
Kontrolloni versionin Certbot:
certbot --version
# certbot 0.14.1
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 [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. . . .
# . . .
Pasi të keni kaluar hapat e mëparshëm, certifikata juaj dhe çelësi privat do të jenë në /etc/letsencrypt/live/blog.domain.tld
drejtori.
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 LTS
në kohën e këtij shkrimi.
Shkarkoni dhe instaloni Node.js v6 LTS:
sudo curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
sudo yum install -y nodejs
Kontrolloni versionin Node.js dhe NPM:
node -v && npm -v
# v6.11.2
# 3.10.10
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 versionin më të fundit të MySQL (aktualisht 5.7 ) nga depoja zyrtare e 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
Kontrolloni versionin e MySQL:
mysql --version
# mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
Nisni MySQL Server dhe kontrolloni statusin e tij:
sudo systemctl start mysqld.service
sudo systemctl status mysqld.service
Versioni 5.7 i MySQL ose më i lartë gjeneron një fjalëkalim të përkohshëm të rastësishëm për root
përdoruesin e MySQL pas instalimit dhe fjalëkalimi ruhet në skedarin e regjistrit të gabimeve MySQL, i vendosur në /var/log/mysqld.log
. Për ta zbuluar atë, përdorni komandën e mëposhtme:
sudo grep 'temporary password' /var/log/mysqld.log
Drejtoni mysql_secure_installation
skriptin për të siguruar pak bazën e të dhënave tuaja:
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
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
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
Ndryshoni pronësinë e /var/www/ghost
drejtorisë:
sudo chown -R ghost:ghost .
Kalo te ghost
pë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
, mail
dhe database
vetinë e objektit të prodhimit brenda config.js
skedarit:
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
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.tld
me emrin e domain.
Mbyllni procesin Ghost duke shtypur CTRL
+ C
dhe dilni nga përdoruesi fantazmë përsëri te përdoruesi jo-root që keni krijuar në fillim:
exit
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.service
skedarin e njësisë së sistemit. Ekzekutoni sudo sudo vim /etc/systemd/system/ghost.service
dhe kopjoni/ngjitni përmbajtjen e mëposhtme:
[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
Aktivizo dhe fillo ghost.service
:
sudo systemctl enable ghost.service && sudo systemctl start ghost.service
Kontrolloni ghost.service
statusin:
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!
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/themes
dosje dhe ta zgjidhni atë nëpërmjet ndërfaqes së administratorit Ghost, që ndodhet në https://blog.domain.tld/ghost
.
Përdorimi i një sistemi të ndryshëm? Jekyll është një alternativë e shkëlqyeshme për WordPress për blogimin ose ndarjen e përmbajtjes. Nuk kërkon ndonjë bazë të dhënash dhe është shumë e lehtë i
Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, i lirë dhe me burim të hapur, i shkallës së ndërmarrjes.
Përdorimi i një sistemi të ndryshëm? Jekyll është një alternativë e mirë për WordPress. Nuk kërkon ndonjë bazë të dhënash dhe funksionon me një gjuhë që shumë e njohin mendjen
Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, i lirë dhe me burim të hapur, i shkallës së ndërmarrjes.
Përdorimi i një sistemi të ndryshëm? Fork është një CMS me burim të hapur i shkruar në PHP. Kodi burimor i Forks është pritur në GitHub. Ky udhëzues do t'ju tregojë se si të instaloni Fork CM
Neos është një sistem inovativ i menaxhimit të përmbajtjes me burim të hapur i cili është i shkëlqyeshëm për krijimin dhe redaktimin e përmbajtjes në internet. Me autorë dhe redaktorë në mendje, Neo
Përdorimi i një sistemi të ndryshëm? Ghost është një platformë blogimi me burim të hapur që ka fituar popullaritet midis zhvilluesve dhe përdoruesve të zakonshëm që nga viti 201.
Përdorimi i një sistemi të ndryshëm? Ghost është një platformë blogimi me burim të hapur që ka fituar popullaritet midis zhvilluesve dhe përdoruesve të zakonshëm që nga viti 201.
Ghost është një platformë botuese moderne me burim të hapur e ndërtuar në Node.js me një klient administratori Ember.js, një API JSON dhe një API me temë të mundësuar nga Handlebars.js. Ghos
Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, i lirë dhe me burim të hapur, i shkallës së ndërmarrjes.
Përdorimi i një sistemi të ndryshëm? Fork është një CMS me burim të hapur i shkruar në PHP. Kodi burimor i Forks është pritur në GitHub. Ky udhëzues do t'ju tregojë se si të instaloni Fork CM
Përdorimi i një sistemi të ndryshëm? Ghost është një platformë blogimi me burim të hapur që po fiton popullaritet midis zhvilluesve dhe përdoruesve të zakonshëm që nga publikimi i tij në 2013. Unë
Përdorimi i një sistemi të ndryshëm? Fork është një CMS me burim të hapur i shkruar në PHP. Kodi burimor i Forks është pritur në GitHub. Ky udhëzues do t'ju tregojë se si të instaloni Fork CM
Typesetter është një CMS me burim të hapur i shkruar në PHP, i fokusuar në lehtësinë e përdorimit me redaktimin True WYSIWYG dhe ruajtjen e skedarëve të sheshtë. Në këtë artikull, ne do të instalojmë
Instancat Vultr janë një mënyrë e shkëlqyeshme për të drejtuar blogun tuaj të WordPress, por një shtesë më e dukshme për WordPress është WooCommerce, një shtojcë eCommerce që shtrihet
Përdorimi i një sistemi të ndryshëm? Fork është një CMS me burim të hapur i shkruar në PHP. Kodi burimor i Forks është pritur në GitHub. Ky udhëzues do t'ju tregojë se si të instaloni Fork CM
Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, i lirë dhe me burim të hapur, i shkallës së ndërmarrjes.
Përdorimi i një sistemi të ndryshëm? Dotclear është një motor blogu shumë i thjeshtë i cili është ndërtuar në krye të PHP. Në këtë tutorial, ne do të instalojmë Dotclear në Ubunt
Përdorimi i një sistemi të ndryshëm? Ghost është një platformë blogimi me burim të hapur që ka fituar popullaritet midis zhvilluesve dhe përdoruesve të zakonshëm që nga viti 201.
Përdorimi i një sistemi të ndryshëm? Ghost është një platformë blogimi me burim të hapur që po fiton popullaritet midis zhvilluesve dhe përdoruesve të zakonshëm që nga publikimi i tij në 2013. Unë
Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.
A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.
Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.
Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.
Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…
Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.
Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.
Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.
Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.
Së fundmi Apple lëshoi macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë