GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Installa ProjectSend su Ubuntu 20.04 con Nginx (stack LEMP)

Questo tutorial ti mostrerà come installare ProjectSend su Ubuntu 20.04 LTS con il server web Nginx.

Cos'è ProjectSend?

ProjectSend è una soluzione di condivisione file self-hosted open source gratuita. Caratteristiche di ProjectSend:

  • Statistiche in tempo reale
  • Crea gruppi di clienti
  • autoregistrazione e accesso social
  • Modelli di posta elettronica personalizzati

Prerequisiti

ProjectSend è scritto nel linguaggio di programmazione PHP. Per seguire questo tutorial, devi prima installare lo stack LEMP su Ubuntu 20.04 . Se non l'hai già fatto, dai un'occhiata al seguente tutorial.

  • Come installare lo stack LEMP (Nginx, MariaDB, PHP7.4-FPM) su Ubuntu 20.04

Puoi installare ProjectSend sul tuo server di casa o su un VPS (server privato virtuale). Hai anche bisogno di un nome di dominio, quindi in seguito sarai in grado di abilitare HTTPS per crittografare il traffico HTTP. Ho registrato il mio nome di dominio da NameCheap perché il prezzo è basso e offrono protezione della privacy a whois gratuita per tutta la vita. ProjectSend può essere installato senza un nome di dominio, ma non ha davvero senso se non si crittografa la connessione HTTP per impedire lo snooping. Ti consiglio di acquistare un nome di dominio, se vuoi davvero armeggiare con il software del server e utilizzarlo al massimo delle potenzialità.

Ora installiamo ProjectSend.

Passaggio 1:scarica ProjectSend su Ubuntu 20.04

Accedi al tuo server Ubuntu 20.04. Quindi scarica l'archivio zip ProjectSend sul tuo server. L'ultima versione stabile è r1295 al momento della stesura di questo articolo. Potrebbe essere necessario modificare il numero di versione. Vai su https://www.projectsend.org/#download per vedere l'ultima versione.

Puoi eseguire il seguente comando per scaricarlo sul tuo server.

wget -O projectsend.zip https://www.projectsend.org/download/387/

Una volta scaricato, estrai l'archivio con unzip .

sudo apt install unzip

sudo mkdir -p /usr/share/nginx/projectsend/

sudo unzip projectsend.zip -d /usr/share/nginx/projectsend/

Il -d opzione specifica la directory di destinazione. I file web di ProjectSend verranno estratti in /usr/share/nginx/projectsend/ . Quindi dobbiamo cambiare il proprietario di questa directory in www-data in modo che il server web (Nginx) possa scrivere in questa directory.

sudo chown www-data:www-data /usr/share/nginx/projectsend/ -R

Fase 2:crea un database e un utente per ProjectSend in MariaDB Database Server

Accedi al server del database MariaDB con il seguente comando. Dal momento che MariaDB ora sta usando unix_socket plug-in per l'autenticazione dell'accesso utente, non è necessario inserire la password di root di MariaDB. Dobbiamo solo anteporre mysql comando con sudo .

sudo mysql

Quindi crea un database per ProjectSend. Questo tutorial nomina il database projectsend. Puoi usare il nome che preferisci.

create database projectsend;

Crea l'utente del database. Anche in questo caso, puoi utilizzare il tuo nome preferito per questo utente. Sostituisci your-password con la tua password preferita.

create user projectsenduser@localhost identified by 'your-password';

Concedi a questo utente tutti i privilegi su projectsend banca dati.

grant all privileges on projectsend.* to projectsenduser@localhost;

Elimina i privilegi ed esci.

flush privileges;

exit;

Fase 3:Configura ProjectSend

Vai a includes directory.

cd /usr/share/nginx/projectsend/includes/

Copia il file di configurazione di esempio e rinominalo in sys.config.php .

sudo cp sys.config.sample.php sys.config.php

Ora modifica il nuovo file di configurazione con un editor di testo da riga di comando come Nano.

sudo nano sys.config.php

Trova le seguenti righe e sostituisci i testi rossi con il nome del database, il nome utente e la password che hai creato nel passaggio 2.

/** Database name */
define('DB_NAME', 'database');

/** Database host (in most cases it's localhost) */
define('DB_HOST', 'localhost');

/** Database username (must be assigned to the database) */
define('DB_USER', 'username');

/** Database password */
define('DB_PASSWORD', 'password');

Salva e chiudi il file. Per salvare il file nell'editor di testo Nano, premi Ctrl+O , quindi premi Enter per confermare. Quindi, premi Ctrl+X per uscire.

Fase 4:crea un file di configurazione Nginx per ProjectSend

Crea un projectsend.conf file in /etc/nginx/conf.d/ directory, con un editor di testo a riga di comando come Nano.

sudo nano /etc/nginx/conf.d/projectsend.conf

Copia e incolla il seguente testo nel file. Sostituisci projectsend.example.com con il tuo sottodominio preferito. Non dimenticare di creare un record DNS A per questo sottodominio nell'editor di zona DNS. Se non hai un vero nome di dominio, ti consiglio di andare su NameCheap per acquistarne uno. Il prezzo è basso e offrono protezione della privacy a chi è gratuita per tutta la vita.

server {
    listen 80;
    listen [::]:80;
    server_name projectsend.example.com;

    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;

    # Path to the root of your installation
    root /usr/share/nginx/projectsend/;
    index index.php index.html;

    access_log /var/log/nginx/projectsend.access;
    error_log /var/log/nginx/projectsend.error;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ /.well-known/acme-challenge {
      allow all;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
      try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       try_files $fastcgi_script_name =404;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php7.4-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }

   location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

Salva e chiudi il file. (Per salvare un file nell'editor di testo Nano, premi Ctrl+O , quindi premi Enter per confermare. Per uscire, premi Ctrl+X .)

Quindi testa la configurazione di Nginx.

sudo nginx -t

Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.

sudo systemctl reload nginx

Fase 5:installa e abilita i moduli PHP

Esegui i seguenti comandi per installare i moduli PHP richiesti o consigliati da ProjectSend.

sudo apt install imagemagick php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl  php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp

Passaggio 6:abilita HTTPS

Ora puoi accedere alla procedura guidata di installazione web di ProjectSend nel tuo browser web inserendo il nome di dominio per la tua installazione di ProjectSend.

projectsend.example.com/install/index.php

Se la pagina web non può essere caricata, probabilmente devi aprire la porta 80 nel firewall.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

E anche la porta 443.

sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Prima di inserire qualsiasi informazione sensibile, dovremmo abilitare la connessione HTTPS sicura su ProjectSend. Possiamo ottenere un certificato TLS gratuito da Let's Encrypt. Installa il client Let's Encrypt (certbot) dal repository Ubuntu 20.04.

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx è il plugin Nginx. Quindi, esegui il comando seguente per ottenere un certificato TLS gratuito utilizzando il plug-in Nginx.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d projectsend.example.com

Dove:

  • –nginx :usa l'autenticatore e il programma di installazione Nginx
  • –accetto :Accetto i termini di servizio di Let's Encrypt
  • –reindirizzamento :applica HTTPS aggiungendo il reindirizzamento 301.
  • –hsts :Abilita la sicurezza del trasporto rigoroso HTTP. Questo protegge dagli attacchi di stripping SSL/TLS.
  • –staple-ocsp :Abilita la pinzatura OCSP.
  • –e-mail :Email utilizzata per la registrazione e il contatto di recupero.
  • -d flag è seguito da un elenco di nomi di dominio, separati da virgola. Puoi aggiungere fino a 100 nomi di dominio.

Ti verrà chiesto se desideri ricevere e-mail da EFF (Electronic Frontier Foundation). Dopo aver scelto S o N, il tuo certificato TLS verrà automaticamente ottenuto e configurato per te, come indicato dal messaggio sottostante.

Fase 7:Completa l'installazione nel tuo browser web

Ora puoi accedere alla procedura guidata di installazione Web di ProjectSend utilizzando la connessione HTTPS.

https://projectsend.example.com/install/index.php

Per completare l'installazione, devi assegnargli un nome per il sito e creare un account amministratore.

Fai clic su Install pulsante, sarai in grado di accedere all'interfaccia Web di ProjectSend.

Come impostare la notifica e-mail di ProjectSend

Se la tua istanza ProjectSend verrà utilizzata da più di una persona, è importante che il tuo server ProjectSend possa inviare e-mail transazionali, come e-mail di reimpostazione della password. Vai a Opzioni -> Notifiche e-mail . Troverai le impostazioni del server di posta elettronica. Sono disponibili quattro modalità di invio:

  • Posta PHP (base)
  • SMTP
  • Gmail
  • Invia email

Puoi scegliere il sendmail modalità se il tuo host ProjectSend ha un server SMTP in esecuzione. Lascia vuoti gli altri campi.

Se desideri utilizzare un server SMTP in esecuzione su un altro host, scegli SMTP modalità e inserisci l'indirizzo del server SMTP e le credenziali di accesso come di seguito. Scegli STARTTLS per la crittografia.

Per come configurare un server di posta elettronica, dai un'occhiata al seguente tutorial. Nota che consiglio vivamente di eseguire il server di posta iRedMail su un nuovo sistema operativo pulito. L'installazione di iRedMail su un sistema operativo che dispone di altre applicazioni Web può non riuscire e probabilmente interrompere le applicazioni esistenti.

  • Come configurare facilmente un server di posta completo su Ubuntu 20.04 con iRedMail

Fase 8:aumenta il limite di memoria PHP

Il limite di memoria PHP predefinito è 128 MB. ProjectSend consiglia 512 MB per prestazioni migliori. Per modificare il limite di memoria PHP, modifica il php.ini file.

sudo nano /etc/php/7.4/fpm/php.ini

Trova la riga seguente. (riga 409)

memory_limit = 128M

Modifica il valore.

memory_limit = 512M

Salva e chiudi il file. In alternativa, puoi eseguire il comando seguente per modificare il valore senza aprire manualmente il file.

sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/fpm/php.ini

Quindi ricarica PHP-FPM servizio per rendere effettive le modifiche.

sudo systemctl reload php7.4-fpm

Fase 9:aumenta il limite delle dimensioni del file di caricamento

Il limite di dimensione massima del file di caricamento predefinito impostato da Nginx è 1 MB. Per consentire il caricamento di file di grandi dimensioni sul tuo server ProjectSend, modifica il file di configurazione Nginx per ProjectSend.

sudo nano /etc/nginx/conf.d/projectsend.conf

Abbiamo già impostato la dimensione massima del file in questo file, come indicato da

client_max_body_size 512M;

Puoi cambiarlo se preferisci, come 1G.

client_max_body_size 1024M;

Salva e chiudi il file. Quindi ricarica Nginx per rendere effettive le modifiche.

sudo systemctl reload nginx

PHP imposta anche un limite per la dimensione del file di caricamento. La dimensione massima predefinita del file per il caricamento è 2 MB. Per aumentare il limite della dimensione del caricamento, modifica il file di configurazione PHP.

sudo nano /etc/php/7.4/fpm/php.ini

Trova la riga seguente (riga 846).

upload_max_filesize = 2M

Modifica il valore come di seguito:

upload_max_filesize = 1024M

Salva e chiudi il file. In alternativa, puoi eseguire il comando seguente per modificare il valore senza aprire manualmente il file.

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini

Quindi riavvia PHP-FPM.

sudo systemctl restart php7.4-fpm

Aggiunta di una voce DNS locale

Si consiglia di modificare il /etc/hosts sul tuo server ProjectSend e aggiungi la voce seguente, in modo che ProjectSend stesso non debba interrogare il DNS pubblico, il che può migliorare la stabilità generale. Se il tuo server ProjectSend non riesce a risolvere il projectsend.example.com hostname, potresti riscontrare un timeout del gateway 504 errore.

127.0.0.1   localhost projectsend.example.com

Un indirizzo IP in /etc/hosts il file può avere più nomi host, quindi se hai altre applicazioni installate sulla stessa casella, puoi anche aggiungere altri nomi host o sottodomini sulla stessa riga in questo modo:

127.0.0.1   localhost focal ubuntu projectsend.example.com nextcloud.example.com

Suggerimenti per la risoluzione dei problemi

Se riscontri errori, puoi controllare uno dei seguenti file di registro per scoprire cosa c'è che non va.

  • Registro errori Nginx:/var/log/nginx/error.log
  • Registro degli errori Nginx per l'host virtuale ProjectSend:/var/log/nginx/projectsend.error

Ubuntu
  1. Come installare Nginx con PHP e MySQL (stack LEMP) su Ubuntu 18.04

  2. Come installare Nginx con PHP e MySQL (LEMP Stack) su Ubuntu 20.04 LTS

  3. Come installare Shlink URL Shortener con Nginx su Ubuntu 20.04

  4. Come installare TYPO3 8.1 con Nginx (LEMP) su Ubuntu 16.04

  5. Installa WordPress con LEMP Stack su Ubuntu 20.04

Installa WordPress su Ubuntu 20.04 con Nginx, MariaDB, PHP7.4 (LEMP)

Come installare lo stack LEMP (Nginx, MariaDB, PHP7.1) su Ubuntu 17.10

Come installare phpMyAdmin con Nginx (LEMP) su Ubuntu 18.04 LTS

Come installare lo stack LEMP su Ubuntu 20.04 Server/Desktop

Come installare lo stack LEMP con PhpMyAdmin in Ubuntu 20.04

Come installare WordPress con Nginx in Ubuntu 20.04