GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Installez ProjectSend sur Ubuntu 20.04 avec Nginx (pile LEMP)

Ce tutoriel vous montrera comment installer ProjectSend sur Ubuntu 20.04 LTS avec le serveur Web Nginx.

Qu'est-ce que ProjectSend ?

ProjectSend est une solution gratuite de partage de fichiers auto-hébergée open source. Fonctionnalités de ProjectSend :

  • Statistiques en temps réel
  • Créer des groupes de clients
  • auto-inscription et connexion sociale
  • Modèles d'e-mail personnalisés

Prérequis

ProjectSend est écrit en langage de programmation PHP. Pour suivre ce tutoriel, vous devez d'abord installer la pile LEMP sur Ubuntu 20.04 . Si vous ne l'avez pas déjà fait, veuillez consulter le didacticiel suivant.

  • Comment installer la pile LEMP (Nginx, MariaDB, PHP7.4-FPM) sur Ubuntu 20.04

Vous pouvez installer ProjectSend sur votre serveur domestique ou sur un VPS (serveur privé virtuel). Vous avez également besoin d'un nom de domaine, vous pourrez donc plus tard activer HTTPS pour chiffrer le trafic HTTP. J'ai enregistré mon nom de domaine auprès de NameCheap car le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie. ProjectSend peut être installé sans nom de domaine, mais cela n'a vraiment aucun sens si vous ne cryptez pas la connexion HTTP pour empêcher l'espionnage. Je recommande d'acheter un nom de domaine, si vous voulez vraiment bricoler avec un logiciel serveur et l'utiliser au maximum de son potentiel.

Installons maintenant ProjectSend.

Étape 1 :Téléchargez ProjectSend sur Ubuntu 20.04

Connectez-vous à votre serveur Ubuntu 20.04. Téléchargez ensuite l'archive zip ProjectSend sur votre serveur. La dernière version stable est r1295 au moment d'écrire ces lignes. Vous devrez peut-être modifier le numéro de version. Allez sur https://www.projectsend.org/#download pour voir la dernière version.

Vous pouvez exécuter la commande suivante pour le télécharger sur votre serveur.

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

Une fois téléchargé, extrayez l'archive avec unzip .

sudo apt install unzip

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

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

Le -d L'option spécifie le répertoire cible. Les fichiers Web ProjectSend seront extraits vers /usr/share/nginx/projectsend/ . Ensuite, nous devons changer le propriétaire de ce répertoire en www-data afin que le serveur Web (Nginx) puisse écrire dans ce répertoire.

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

Étape 2 :Créer une base de données et un utilisateur pour ProjectSend dans le serveur de base de données MariaDB

Connectez-vous au serveur de base de données MariaDB avec la commande suivante. Puisque MariaDB utilise maintenant unix_socket plugin pour authentifier la connexion de l'utilisateur, il n'est pas nécessaire d'entrer le mot de passe root MariaDB. Nous avons juste besoin de préfixer le mysql commande avec sudo .

sudo mysql

Créez ensuite une base de données pour ProjectSend. Ce tutoriel nomme la base de données projectsend. Vous pouvez utiliser le nom de votre choix.

create database projectsend;

Créez l'utilisateur de la base de données. Encore une fois, vous pouvez utiliser votre nom préféré pour cet utilisateur. Remplacez your-password avec votre mot de passe préféré.

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

Accordez à cet utilisateur tous les privilèges sur le projectsend base de données.

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

Vider les privilèges et quitter.

flush privileges;

exit;

Étape 3 :Configurer ProjectSend

Aller au includes répertoire.

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

Copiez l'exemple de fichier de configuration et renommez-le en sys.config.php .

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

Modifiez maintenant le nouveau fichier de configuration avec un éditeur de texte en ligne de commande comme Nano.

sudo nano sys.config.php

Recherchez les lignes suivantes et remplacez les textes rouges par le nom de la base de données, le nom d'utilisateur et le mot de passe que vous avez créés à l'étape 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');

Enregistrez et fermez le fichier. Pour enregistrer le fichier dans l'éditeur de texte Nano, appuyez sur Ctrl+O , puis appuyez sur Enter confirmer. Ensuite, appuyez sur Ctrl+X pour quitter.

Étape 4 :Créer un fichier de configuration Nginx pour ProjectSend

Créez un projectsend.conf fichier dans /etc/nginx/conf.d/ répertoire, avec un éditeur de texte en ligne de commande comme Nano.

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

Copiez et collez le texte suivant dans le fichier. Remplacez projectsend.example.com avec votre propre sous-domaine préféré. N'oubliez pas de créer un enregistrement DNS A pour ce sous-domaine dans votre éditeur de zone DNS. Si vous n'avez pas de vrai nom de domaine, je vous recommande d'aller sur NameCheap pour en acheter un. Le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.

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;
   }
}

Enregistrez et fermez le fichier. (Pour enregistrer un fichier dans l'éditeur de texte Nano, appuyez sur Ctrl+O , puis appuyez sur Enter confirmer. Pour quitter, appuyez sur Ctrl+X .)

Testez ensuite la configuration de Nginx.

sudo nginx -t

Si le test réussit, rechargez Nginx pour que les modifications prennent effet.

sudo systemctl reload nginx

Étape 5 :Installer et activer les modules PHP

Exécutez les commandes suivantes pour installer les modules PHP requis ou recommandés par 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

Étape 6 :Activer HTTPS

Vous pouvez désormais accéder à l'assistant d'installation Web de ProjectSend dans votre navigateur Web en saisissant le nom de domaine de votre installation ProjectSend.

projectsend.example.com/install/index.php

Si la page Web ne peut pas se charger, vous devez probablement ouvrir le port 80 dans le pare-feu.

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

Et le port 443 également.

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

Avant de saisir des informations sensibles, nous devons activer la connexion HTTPS sécurisée sur ProjectSend. Nous pouvons obtenir un certificat TLS gratuit auprès de Let's Encrypt. Installez le client Let's Encrypt (certbot) à partir du référentiel Ubuntu 20.04.

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx est le plugin Nginx. Ensuite, exécutez la commande suivante pour obtenir un certificat TLS gratuit à l'aide du plugin Nginx.

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

Où :

  • –nginx  :Utilisez l'authentificateur et le programme d'installation Nginx
  • –d'accord  :Acceptez les conditions d'utilisation de Let's Encrypt
  • –redirection  : appliquez HTTPS en ajoutant une redirection 301.
  • –hsts :activez la sécurité du transport strict HTTP. Cela protège contre les attaques de suppression SSL/TLS.
  • –agrafe-ocsp  :Activer l'agrafage OCSP.
  • –e-mail :E-mail utilisé pour l'enregistrement et le contact de récupération.
  • -d flag est suivi d'une liste de noms de domaine, séparés par une virgule. Vous pouvez ajouter jusqu'à 100 noms de domaine.

Il vous sera demandé si vous souhaitez recevoir des e-mails de l'EFF (Electronic Frontier Foundation). Après avoir choisi O ou N, votre certificat TLS sera automatiquement obtenu et configuré pour vous, ce qui est indiqué par le message ci-dessous.

Étape 7 :terminez l'installation dans votre navigateur Web

Vous pouvez désormais accéder à l'assistant d'installation Web de ProjectSend à l'aide d'une connexion HTTPS.

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

Pour terminer l'installation, vous devez lui donner un nom de site et créer un compte administrateur.

Cliquez sur Install bouton, vous pourrez vous connecter à l'interface Web de ProjectSend.

Comment configurer la notification par e-mail ProjectSend

Si votre instance ProjectSend sera utilisée par plusieurs personnes, il est important que votre serveur ProjectSend puisse envoyer des e-mails transactionnels, tels que des e-mails de réinitialisation de mot de passe. Allez dans Options -> Notifications par e-mail . Vous trouverez les paramètres du serveur de messagerie. Il existe quatre modes d'envoi :

  • Messagerie PHP (de base)
  • SMTP
  • Gmail
  • Envoyer un e-mail

Vous pouvez choisir le sendmail mode si votre hôte ProjectSend a un serveur SMTP en cours d'exécution. Laissez les autres champs vides.

Si vous souhaitez utiliser un serveur SMTP exécuté sur un autre hôte, choisissez SMTP mode et entrez l'adresse du serveur SMTP et les identifiants de connexion comme ci-dessous. Choisissez STARTTLS pour le chiffrement.

Pour savoir comment configurer un serveur de messagerie, veuillez consulter le didacticiel suivant. Remarque que je recommande fortement d'exécuter le serveur de messagerie iRedMail sur un nouveau système d'exploitation propre. L'installation d'iRedMail sur un système d'exploitation doté d'autres applications Web peut échouer et probablement casser les applications existantes.

  • Comment configurer facilement un serveur de messagerie complet sur Ubuntu 20.04 avec iRedMail

Étape 8 :Augmenter la limite de mémoire PHP

La limite de mémoire PHP par défaut est de 128 Mo. ProjectSend recommande 512 Mo pour de meilleures performances. Pour modifier la limite de mémoire PHP, modifiez le php.ini fichier.

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

Trouvez la ligne suivante. (ligne 409)

memory_limit = 128M

Modifiez la valeur.

memory_limit = 512M

Enregistrez et fermez le fichier. Vous pouvez également exécuter la commande suivante pour modifier la valeur sans ouvrir manuellement le fichier.

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

Rechargez ensuite PHP-FPM service pour que les modifications prennent effet.

sudo systemctl reload php7.4-fpm

Étape 9 :Augmentez la limite de taille du fichier de téléchargement

La limite de taille de fichier de téléchargement maximale par défaut définie par Nginx est de 1 Mo. Pour autoriser le téléchargement de fichiers volumineux sur votre serveur ProjectSend, modifiez le fichier de configuration Nginx pour ProjectSend.

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

Nous avons déjà défini la taille de fichier maximale dans ce fichier, comme indiqué par

client_max_body_size 512M;

Vous pouvez le changer si vous préférez, comme 1G.

client_max_body_size 1024M;

Enregistrez et fermez le fichier. Rechargez ensuite Nginx pour que les modifications prennent effet.

sudo systemctl reload nginx

PHP définit également une limite de taille de fichier de téléchargement. La taille de fichier maximale par défaut pour le téléchargement est de 2 Mo. Pour augmenter la taille limite de téléchargement, modifiez le fichier de configuration PHP.

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

Trouvez la ligne suivante (ligne 846).

upload_max_filesize = 2M

Modifiez la valeur comme ci-dessous :

upload_max_filesize = 1024M

Enregistrez et fermez le fichier. Vous pouvez également exécuter la commande suivante pour modifier la valeur sans ouvrir manuellement le fichier.

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

Redémarrez ensuite PHP-FPM.

sudo systemctl restart php7.4-fpm

Ajout d'une entrée DNS locale

Il est recommandé de modifier le /etc/hosts fichier sur votre serveur ProjectSend et ajoutez l'entrée suivante, afin que ProjectSend lui-même n'ait pas à interroger le DNS public, ce qui peut améliorer la stabilité globale. Si votre serveur ProjectSend ne peut pas résoudre le problème projectsend.example.com nom d'hôte, vous risquez de rencontrer un délai de passerelle 504 erreur.

127.0.0.1   localhost projectsend.example.com

Une adresse IP dans le /etc/hosts Le fichier peut avoir plusieurs noms d'hôte, donc si vous avez d'autres applications installées sur la même boîte, vous pouvez également ajouter d'autres noms d'hôte ou sous-domaines sur la même ligne comme ceci :

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

Conseils de dépannage

Si vous rencontrez des erreurs, vous pouvez consulter l'un des fichiers journaux suivants pour déterminer ce qui ne va pas.

  • Journal des erreurs Nginx :/var/log/nginx/error.log
  • Journal d'erreurs Nginx pour l'hôte virtuel ProjectSend :/var/log/nginx/projectsend.error

Ubuntu
  1. Comment installer Nginx avec PHP et MySQL (pile LEMP) sur Ubuntu 18.04

  2. Comment installer Nginx avec PHP et MySQL (pile LEMP) sur Ubuntu 20.04 LTS

  3. Comment installer le raccourcisseur d'URL Shlink avec Nginx sur Ubuntu 20.04

  4. Comment installer TYPO3 8.1 avec Nginx (LEMP) sur Ubuntu 16.04

  5. Installer WordPress avec LEMP Stack sur Ubuntu 20.04

Installer WordPress sur Ubuntu 20.04 avec Nginx, MariaDB, PHP7.4 (LEMP)

Comment installer la pile LEMP (Nginx, MariaDB, PHP7.1) sur Ubuntu 17.10

Comment installer phpMyAdmin avec Nginx (LEMP) sur Ubuntu 18.04 LTS

Comment installer la pile LEMP sur le serveur/bureau Ubuntu 20.04

Comment installer la pile LEMP avec PhpMyAdmin dans Ubuntu 20.04

Comment installer WordPress avec Nginx dans Ubuntu 20.04