Come installare Strapi CMS su Ubuntu 22.04
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa e configura PostgreSQL
- Passaggio 3 - Installa Node.js
- Passaggio 4 - Installa Strapi
- Passaggio 5 - Installa e configura PM2
- Passaggio 6 - Installa Nginx
- Passaggio 7 - Installa SSL
- Passaggio 8 - Configura Nginx
- Passaggio 9 - Aggiorna Strapi
- Conclusione
Strapi è un sistema di gestione dei contenuti (CMS) open source e senza testa, creato con JavaScript. Come altri CMS senza testa, Strapi non viene fornito con un frontend pronto all'uso. Utilizza un'API per il suo frontend, che consente di creare il sito Web utilizzando framework popolari come React e Next.js. Basato su un sistema di plug-in, Strapi è un CMS flessibile il cui pannello di amministrazione e API sono estensibili e ogni parte è personalizzabile per adattarsi a qualsiasi caso d'uso. Strapi ha anche un sistema utente integrato per gestire in dettaglio ciò a cui hanno accesso gli amministratori e gli utenti finali.
In questo tutorial imparerai come installare la versione community di Strapi CMS su un server Ubuntu 22.04, insieme a Nginx come server proxy inverso.
Prerequisiti
-
A server running Ubuntu 22.04.
-
A non-root user with sudo privileges.
-
A fully qualified domain name (FQDN) like
strapi.example.com
. -
Make sure everything is updated.
$ sudo apt update $ sudo apt upgrade
-
Few packages that your system needs.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Some of these packages may already be installed on your system.
Passaggio 1: configurare il firewall
Il primo passo è configurare il firewall. Ubuntu viene fornito con ufw (Uncomplicated Firewall) per impostazione predefinita.
Controlla se il firewall è in esecuzione.
$ sudo ufw status
Dovresti ottenere il seguente output.
Status: inactive
Consenti porta SSH in modo che il firewall non interrompa la connessione corrente attivandola.
$ sudo ufw allow OpenSSH
Consenti anche porte HTTP e HTTPS.
$ sudo ufw allow http $ sudo ufw allow https
Abilita il firewall
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Controlla di nuovo lo stato del firewall.
$ sudo ufw status
Dovresti vedere un output simile.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Passaggio 2: installa e configura PostgreSQL
Strapi funziona con PostgreSQL 11 e versioni successive. Ubuntu 22.04 viene fornito con PostgreSQL 14 per impostazione predefinita. Useremo PostgreSQL 15 per il nostro tutorial.
Eseguire il comando seguente per aggiungere la chiave GPG PostgreSQL.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Aggiungi il repository APT all'elenco delle fonti.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Aggiorna il repository di sistema.
$ sudo apt update
Ora puoi installare PostgreSQL usando il comando seguente.
$ sudo apt install postgresql postgresql-contrib
Il pacchetto postgresql-contrib
contiene alcune utilità extra.
Controlla lo stato del servizio PostgreSQL.
$ sudo systemctl status postgresql ? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2022-12-28 18:03:03 UTC; 17s ago Main PID: 4119 (code=exited, status=0/SUCCESS) CPU: 2ms Dec 28 18:03:03 strapi systemd[1]: Starting PostgreSQL RDBMS... Dec 28 18:03:03 strapi systemd[1]: Finished PostgreSQL RDBMS.
Puoi vedere che il servizio è abilitato e in esecuzione per impostazione predefinita.
Avvia la shell PostgreSQL.
$ sudo -i -u postgres psql
Creare il database Strapi.
postgres=# CREATE DATABASE strapidb;
Crea l'utente Strapi e scegli una password sicura.
postgres-# CREATE USER strapiuser WITH PASSWORD 'Your_Password';
Modificare il proprietario del database in utente Strapi.
postgres-# ALTER DATABASE strapidb OWNER TO strapiuser;
Esci dal guscio.
postgres-# \q
Verifica che le tue credenziali funzionino.
$ psql --username strapiuser --password --host localhost strapidb Password: psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. strapidb=>
Uscire dalla shell digitando \q
.
Passaggio 3: installa Node.js
Ubuntu 22.04 viene fornito con Node v12 che è obsoleto. Installeremo l'ultima versione LTS di Node che è v18 al momento della stesura di questo tutorial.
Prendi il programma di installazione di Node v18 da Nodesource.
$ curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh
Esegui lo script di installazione.
$ sudo bash nodesource_setup.sh
Installa Node.js.
$ sudo apt install nodejs
Verifica la versione di Node.js.
$ node -v v18.12.1
Elimina il file di installazione.
$ rm nodesource_setup.sh
Passo 4 - Installa Strapi
Eseguire il seguente comando per installare Strapi.
$ npx howtoforge-project Need to install the following packages: Ok to proceed? (y) y
Inserisci y
per procedere con l'installazione. Successivamente, ti verrà chiesto di scegliere il tipo di installazione. Scegli Personalizzato per procedere e rispondi alle domande come segue.
? Choose your installation type Custom (manual settings) ? Choose your preferred language JavaScript ? Choose your default database client postgres ? Database name: strapidb ? Host: 127.0.0.1 ? Port: 5432 ? Username: strapiuser ? Password: Your_Password ? Enable SSL connection: No
A seconda delle tue esigenze, puoi scegliere Typescript o JavaScript come lingua per Strapi.
Una volta completata l'installazione, sei pronto per costruire il tuo progetto Strapi.
Passa alla directory del progetto.
$ cd howtoforge-project
Eseguire il comando seguente per creare il progetto, inclusa l'interfaccia utente di amministrazione di Strapi.
$ NODE_ENV=production npm run build
Avvia il server Strapi usando il seguente comando.
$ node ~/howtoforge-project/node_modules/.bin/strapi start
La tua applicazione dovrebbe essere visibile sull'URL http://
. Ma prima, apri la porta nel firewall.
$ sudo ufw allow 1337
Una volta aperto l'URL, dovresti ottenere la seguente schermata.
Premi Ctrl + C nel terminale per arrestare il server. Dovresti eliminare la regola del firewall perché non ne avremo bisogno.
$ sudo ufw delete allow 1337
Passo 5 - Installa e configura PM2
Invece di avviare il server manualmente, possiamo utilizzare PM2 (Process Manager 2) per gestire il processo e creare un servizio systemd per lo stesso.
Passa alla home directory.
$ cd ~
Installa PM2.
$ sudo npm install -g
Crea e apri il file di configurazione PM2 per la modifica.
$ sudo nano ecosystem.config.js
Incolla il seguente contenuto nel file. Assicurati di inserire il nome della directory corretto insieme alle credenziali di Postgres.
module.exports = { apps: [ { name: 'strapi', cwd: '/home/navjot/my-project', script: 'npm', args: 'start', env: { NODE_ENV: 'production', DATABASE_HOST: 'localhost', DATABASE_PORT: '5432', DATABASE_NAME: 'strapidb', DATABASE_USERNAME: 'strapiuser', DATABASE_PASSWORD: 'Your_Password', }, }, ], };
Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Esegui la tua istanza Strapi in background utilizzando PM2.
$ pm2 start ecosystem.config.js
Otterrai il seguente output.
------------- __/""""\____/"\____________/"\____/"""_____ _\/"/////////"_\/""________/""__/"///////"___ _\/"_______\/"_\/"//"____/"//"_\///______\//"__ _\/""""\/__\/"\///"/"/_\/"___________/"/___ _\/"/////////____\/"__\///"/___\/"________/"//_____ _\/"_____________\/"____\///_____\/"_____/"//________ _\/"_____________\/"_____________\/"___/"/___________ _\/"_____________\/"_____________\/"__/"""""_ _\///______________\///______________\///__\///////////////__ Runtime Edition PM2 is a Production Process Manager for Node.js applications with a built-in Load Balancer. Start and Daemonize any application: $ pm2 start app.js Load Balance 4 instances of api.js: $ pm2 start api.js -i 4 Monitor in production: $ pm2 monitor Make pm2 auto-boot at server restart: $ pm2 startup To go further checkout: http://pm2.io/ ------------- [PM2] Spawning PM2 daemon with pm2_home=/home/navjot/.pm2 [PM2] PM2 Successfully daemonized [PM2][WARN] Applications strapi not running, starting... [PM2] App [strapi] launched (1 instances) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? id ? name ? namespace ? version ? mode ? pid ? uptime ? ? ? status ? cpu ? mem ? user ? watching ? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? 0 ? strapi ? default ? N/A ? fork ? 4824 ? 0s ? 0 ? online ? 0% ? 31.9mb ? navjot ? disabled ? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Le applicazioni in esecuzione su PM2 si riavviano automaticamente se si arrestano in modo anomalo o vengono interrotte.
Crea uno script systemd di avvio utilizzando il seguente comando.
$ pm2 startup
Otterrai il seguente output.
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot
Copia il comando dall'output precedente ed eseguilo.
$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot
Salva l'elenco dei processi PM2.
$ pm2 save
Il tuo servizio Strapi è ora in esecuzione in background in modalità di produzione.
Passaggio 6: installa Nginx
Ubuntu 22.04 viene fornito con una versione precedente di Nginx. Per installare l'ultima versione, devi scaricare il repository Nginx ufficiale.
Importa la chiave di firma Nginxs.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Aggiungi il repository per la versione stabile di Nginxs.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Aggiorna i repository di sistema.
$ sudo apt update
Installa Nginx.
$ sudo apt install nginx
Verificare l'installazione.
$ nginx -v nginx version: nginx/1.22.1
Avvia il server Nginx.
$ sudo systemctl start nginx
Passaggio 7: installa SSL
Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot usando il repository Ubuntus o prendere l'ultima versione usando lo strumento Snapd. Useremo la versione Snapd.
Ubuntu 22.04 viene fornito con Snapd installato per impostazione predefinita. Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata. Assicurati che la tua versione di Snapd sia aggiornata.
$ sudo snap install core $ sudo snap refresh core
Installa Cerbot.
$ sudo snap install --classic certbot
Utilizzare il seguente comando per assicurarsi che il comando Certbot venga eseguito creando un collegamento simbolico alla directory /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Eseguire il seguente comando per generare un certificato SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d strapi.example.com
Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/strapi.example.com
sul tuo server.
Genera un certificato di gruppo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Esegui un'esecuzione a secco del processo per verificare se il rinnovo SSL funziona correttamente.
$ sudo certbot renew --dry-run
Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.
Passaggio 8: configurare Nginx
Apri il file /etc/nginx/nginx.conf
per la modifica.
$ sudo nano /etc/nginx/nginx.conf
Aggiungere la riga seguente prima della riga include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Crea e apri il file /etc/nginx/conf.d/strapi.conf
per la modifica.
$ sudo nano /etc/nginx/conf.d/strapi.conf
Incolla il seguente codice al suo interno.
server { # Redirect any http requests to https listen 80; listen [::]:80; server_name strapi.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name strapi.example.com; access_log /var/log/nginx/strapi.access.log; error_log /var/log/nginx/strapi.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/strapi.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/strapi.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/strapi.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:1337; } }
Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Verificare la sintassi del file di configurazione Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Riavvia il servizio Nginx.
$ sudo systemctl restart nginx
Ora puoi accedere a Strapi CMS tramite l'URL https://strapi.example.com
. Vedrai la pagina seguente che mostra che Strapi è in esecuzione in modalità di produzione.
Visita l'URL https://strapi.example.com/admin
per creare un utente amministratore.
Inserisci i dettagli dell'amministratore e fai clic sul pulsante Iniziamo per passare alla schermata del dashboard dell'amministratore.
Da qui in poi puoi iniziare a creare contenuti su Strapi.
Passaggio 9: aggiorna Strapi
Il primo passo per aggiornare Strapi è fermare il server.
$ cd ~ $ pm2 stop ecosystem.config.js
Passa alla directory del progetto e apri il file package.json
per la modifica.
$ cd howtoforge-project $ nano package.json
Aggiorna tutti i numeri di versione del pacchetto Strapi all'ultima versione stabile di Strapi. È possibile ottenere l'ultima versione disponibile dalla pagina dei rilasci di Strapis GitHub.
"devDependencies": {}, "dependencies": { "@strapi/strapi": "4.5.5", "@strapi/plugin-users-permissions": "4.5.5", "@strapi/plugin-i18n": "4.5.5", "pg": "8.6.0" },
Qui devi cambiare 4.5.5
all'ultima versione stabile. Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Installa la versione aggiornata.
$ npm install
Ricrea il pannello di amministrazione.
$ NODE_ENV=production npm run build
Riavvia il server.
$ cd ~ $ pm2 start ecosystem.config.js
L'installazione di Strapi è ora aggiornata e funzionante.
Conclusione
Questo conclude il nostro tutorial sull'installazione di Strapi CMS su un server Ubuntu 22.04 e Nginx come server proxy inverso. Se hai domande, pubblicale nei commenti qui sotto.