Installera och Konfigurera Ghost CMS på Ubuntu, Debian, Fedora och openSUSE med Nginx och MySQL
Ghost är en öppen källkodsbloggplattform som hjälper dig att skapa en professionell blogg. Den lanserades 2013 som ett alternativ till WordPress och är skriven i JavaScript, drivs av Node.js-biblioteket. I denna artikel kommer vi att gå igenom hur man installerar Ghost CMS med hjälp av Nginx och MySQL på servrar som kör Ubuntu, Debian, Fedora och openSUSE, samt hur man säkrar installationen med ett Let’s Encrypt SSL-certifikat.
Förutsättningar
- En server som kör Ubuntu, Debian, Fedora eller openSUSE med minst 2GB RAM.
- En icke-root-användare med sudo-rättigheter.
- Ett Fullständigt Kvalificerat Domännamn (FQDN) som exempel.com pekar mot din server.
- Se till att allt är uppdaterat:
sudo apt update && sudo apt upgrade # För Ubuntu och Debian
sudo dnf update # För Fedora
sudo zypper refresh && sudo zypper update # För openSUSE
- Flera paket som ditt system behöver:
sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip -y # För Ubuntu och Debian
sudo dnf install wget curl nano firewall-config dnf-plugins-core gnupg2 ca-certificates lsb-release unzip -y # För Fedora
sudo zypper install wget curl nano firewalld software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip -y # För openSUSE
Steg 1 – Konfigurera Brandvägg
Det första steget är att konfigurera brandväggen. Alla nämnda distributioner kommer med en brandvägg som standard.
- Kontrollera om brandväggen är aktiv och tillåt nödvändiga portar: Ubuntu och Debian:
sudo ufw status
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status
Fedora:
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
openSUSE:
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Steg 2 – Installera Nginx
Installationen av Nginx kan variera något beroende på distribution.
- Installera Nginx: Ubuntu och Debian:
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo nginx -v
Fedora:
sudo dnf install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo nginx -v
openSUSE:
sudo zypper install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo nginx -v
Steg 3 – Installera Node.js
Ghost Installer behöver Nodejs för att fungera. Här är hur du installerar Node.js på olika distributioner.
- Installera Node.js: Ubuntu och Debian:
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
NODE_MAJOR=18
echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x focal main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
sudo apt install nodejs -y
node --version
Fedora:
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo dnf install nodejs -y
node --version
openSUSE:
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo zypper install nodejs -y
node --version
Steg 4 – Installera MySQL med Docker
Ghost stöder bara MySQL, så vi kommer att använda Docker för att installera MySQL.
- Installera Docker: Ubuntu och Debian:
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
newgrp docker
Fedora:
sudo dnf install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
newgrp docker
openSUSE:
sudo zypper install docker -y
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
newgrp docker
- Skapa en katalog för MySQL och en docker-compose.yml fil:
mkdir ~/mysql
nano ~/mysql/docker-compose.yml
- Klistra in följande kod i docker-compose.yml-filen:
services:
database:
image: container-registry.oracle.com/mysql/community-server:latest
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: ghost
MYSQL_PASSWORD: ghostpassword
MYSQL_DATABASE: ghostdb
ports:
- "3306:3306"
volumes:
- ./mysql:/var/lib/mysql
- Starta MySQL-containern:
cd ~/mysql
docker compose up -d
docker ps
Steg 5 – Installera Ghost
- Installera Ghost-CLI:
sudo npm install ghost-cli@latest -g
- Förbered Ghost-katalogen:
sudo mkdir -p /var/www/html/ghost
sudo chown $USER:$USER /var/www/html/ghost
sudo chmod 755 /var/www/html/ghost
cd /var/www/html/ghost
- Installera Ghost:
ghost install
Steg 6 – Installera SSL
- Installera Certbot: Ubuntu och Debian:
sudo apt install snapd -y
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot --version
Fedora:
sudo dnf install snapd -y
sudo ln -s /var/lib/snapd/snap /snap
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot --version
openSUSE:
sudo zypper install snapd -y
sudo systemctl enable snapd
sudo systemctl start snapd
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot --version
- Generera ett SSL-certifikat:
sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d example.com
- Generera ett Diffie-Hellman gruppcertifikat:
sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
- Kontrollera Certbot förnyelseschemaläggningstjänst:
sudo systemctl status certbot.timer
Steg 7 – Konfigurera Nginx
- Skapa och öppna filen /etc/nginx/conf.d/ghost.conf för redigering:
sudo nano /etc/nginx/conf.d/ghost.conf
- Klistra in följande kod i ghost.conf-filen:
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
access_log /var/log/nginx/ghost.access.log;
error_log /var/log/nginx/ghost.error.log;
client_max_body_size 20m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:2368;
}
}
- Spara filen genom att trycka på Ctrl + X och sedan Y när du uppmanas.
- Öppna filen /etc/nginx/nginx.conf för redigering:
sudo nano /etc/nginx/nginx.conf
- Lägg till följande rad före raden
include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
- Spara filen genom att trycka på Ctrl + X och sedan Y när du uppmanas.
- Verifiera din Nginx-konfiguration:
sudo nginx -t
- Om du inte ser några fel betyder det att allt är korrekt. Starta om Nginx-servern för att tillämpa konfigurationen:
sudo systemctl restart nginx
Steg 8 – Kör webbplatsen
Nu kan du verifiera din installation genom att öppna https://example.com i din webbläsare. Du kommer att få följande sida som indikerar en lyckad installation.
Steg 9 – Slutför installationen
För att slutföra inställningen av din Ghost-blogg, besök https://example.com/ghost i din webbläsare. Den extra /ghost i slutet av din bloggs domän omdirigerar dig till Ghosts Admin Panel eller i detta fall inställningssidan eftersom du öppnar den för första gången.
Här kommer du att bli ombedd att skapa ditt administratörskonto och välja en bloggtitel.
Innehållet ovan är delvis baserad på data ifrån
https://www.howtoforge.com/how-to-deploy-ghost-blog-with-nginx-on-debian-12