GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Instale ProjectSend en Ubuntu 20.04 con Nginx (LEMP Stack)

Este tutorial le mostrará cómo instalar ProjectSend en Ubuntu 20.04 LTS con el servidor web Nginx.

¿Qué es ProjectSend?

ProjectSend es una solución gratuita de código abierto para compartir archivos autoalojada. Características de ProjectSend:

  • Estadísticas en tiempo real
  • Crear grupos de clientes
  • registro automático e inicio de sesión social
  • Plantillas de correo electrónico personalizadas

Requisitos

ProjectSend está escrito en lenguaje de programación PHP. Para seguir este tutorial, primero debe instalar la pila LEMP en Ubuntu 20.04 . Si aún no lo ha hecho, consulte el siguiente tutorial.

  • Cómo instalar LEMP Stack (Nginx, MariaDB, PHP7.4-FPM) en Ubuntu 20.04

Puede instalar ProjectSend en su servidor doméstico o en un VPS (servidor privado virtual). También necesita un nombre de dominio, por lo que más adelante podrá habilitar HTTPS para cifrar el tráfico HTTP. Registré mi nombre de dominio de NameCheap porque el precio es bajo y brindan protección de privacidad whois gratis de por vida. ProjectSend se puede instalar sin un nombre de dominio, pero realmente no tiene sentido si no cifra la conexión HTTP para evitar la intrusión. Recomiendo comprar un nombre de dominio, si realmente desea experimentar con el software del servidor y utilizarlo al máximo de su potencial.

Ahora instalemos ProjectSend.

Paso 1:Descarga ProjectSend en Ubuntu 20.04

Inicie sesión en su servidor Ubuntu 20.04. Luego descargue el archivo zip de ProjectSend en su servidor. La última versión estable es r1295 al momento de escribir este artículo. Es posible que deba cambiar el número de versión. Vaya a https://www.projectsend.org/#download para ver la última versión.

Puede ejecutar el siguiente comando para descargarlo en su servidor.

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

Una vez descargado, extraiga el archivo con unzip .

sudo apt install unzip

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

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

El -d La opción especifica el directorio de destino. Los archivos web de ProjectSend se extraerán a /usr/share/nginx/projectsend/ . Luego, debemos cambiar el propietario de este directorio a www-data para que el servidor web (Nginx) pueda escribir en este directorio.

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

Paso 2:Cree una base de datos y un usuario para ProjectSend en el servidor de base de datos MariaDB

Inicie sesión en el servidor de la base de datos MariaDB con el siguiente comando. Dado que MariaDB ahora usa unix_socket complemento para el inicio de sesión del usuario de autenticación, no es necesario ingresar la contraseña raíz de MariaDB. Solo necesitamos prefijar el mysql comando con sudo .

sudo mysql

Luego cree una base de datos para ProjectSend. Este tutorial nombra la base de datos projectend. Puedes usar el nombre que quieras.

create database projectsend;

Cree el usuario de la base de datos. Nuevamente, puede usar su nombre preferido para este usuario. Reemplace your-password con su contraseña preferida.

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

Otorgue a este usuario todos los privilegios en projectsend base de datos.

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

Vacíe los privilegios y salga.

flush privileges;

exit;

Paso 3:configurar ProjectSend

Ir a includes directorio.

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

Copie el archivo de configuración de muestra y cámbiele el nombre a sys.config.php .

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

Ahora edite el nuevo archivo de configuración con un editor de texto de línea de comandos como Nano.

sudo nano sys.config.php

Busque las siguientes líneas y reemplace los textos en rojo con el nombre de la base de datos, el nombre de usuario y la contraseña que creó en el paso 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');

Guarde y cierre el archivo. Para guardar el archivo en el editor de texto Nano, presione Ctrl+O , luego presione Enter para confirmar. A continuación, presione Ctrl+X para salir.

Paso 4:Cree un archivo de configuración de Nginx para ProjectSend

Crear un projectsend.conf archivo en /etc/nginx/conf.d/ directorio, con un editor de texto de línea de comandos como Nano.

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

Copie y pegue el siguiente texto en el archivo. Reemplace projectsend.example.com con su propio subdominio preferido. No olvide crear un registro DNS A para este subdominio en su editor de zona DNS. Si no tiene un nombre de dominio real, le recomiendo ir a NameCheap para comprar uno. El precio es bajo y brindan protección de privacidad whois gratis de por vida.

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

Guarde y cierre el archivo. (Para guardar un archivo en el editor de texto Nano, presione Ctrl+O , luego presione Enter para confirmar. Para salir, presiona Ctrl+X .)

Luego pruebe la configuración de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

Paso 5:Instalar y habilitar módulos PHP

Ejecute los siguientes comandos para instalar los módulos PHP requeridos o recomendados por 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

Paso 6:habilite HTTPS

Ahora puede acceder al asistente de instalación web de ProjectSend en su navegador web ingresando el nombre de dominio para su instalación de ProjectSend.

projectsend.example.com/install/index.php

Si la página web no se puede cargar, probablemente necesite abrir el puerto 80 en el firewall.

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

Y el puerto 443 también.

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

Antes de ingresar información confidencial, debemos habilitar la conexión HTTPS segura en ProjectSend. Podemos obtener un certificado TLS gratuito de Let’s Encrypt. Instale el cliente Let's Encrypt (certbot) desde el repositorio de Ubuntu 20.04.

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx es el complemento de Nginx. A continuación, ejecute el siguiente comando para obtener un certificado TLS gratuito mediante el complemento de Nginx.

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

donde:

  • –nginx :utilice el autenticador y el instalador de Nginx
  • –de acuerdo :Acepto los términos de servicio de Let's Encrypt
  • –redireccionar :Reforzar HTTPS agregando redirección 301.
  • –hsts :habilite la seguridad de transporte estricta de HTTP. Esto protege contra el ataque de eliminación de SSL/TLS.
  • –grapa-ocsp :habilite el grapado OCSP.
  • –correo electrónico :Correo electrónico utilizado para el registro y el contacto de recuperación.
  • -d va seguido de una lista de nombres de dominio, separados por comas. Puede agregar hasta 100 nombres de dominio.

Se le preguntará si desea recibir correos electrónicos de EFF (Electronic Frontier Foundation). Después de elegir S o N, su certificado TLS se obtendrá y configurará automáticamente para usted, lo cual se indica en el mensaje a continuación.

Paso 7:finalice la instalación en su navegador web

Ahora puede acceder al asistente de instalación web de ProjectSend mediante una conexión HTTPS.

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

Para completar la instalación, debe asignarle un nombre de sitio y crear una cuenta de administrador.

Haga clic en Install botón, podrá iniciar sesión en la interfaz web de ProjectSend.

Cómo configurar la notificación por correo electrónico de ProjectSend

Si su instancia de ProjectSend será utilizada por más de una persona, es importante que su servidor de ProjectSend pueda enviar correos electrónicos transaccionales, como el correo electrónico de restablecimiento de contraseña. Ve a Opciones -> Notificaciones por correo electrónico . Encontrará la configuración del servidor de correo electrónico. Hay cuatro modos de envío:

  • Correo PHP (básico)
  • SMTP
  • Gmail
  • Enviar correo

Puede elegir el sendmail modo si su host ProjectSend tiene un servidor SMTP en ejecución. Deje otros campos en blanco.

Si desea utilizar un servidor SMTP que se ejecuta en otro host, elija SMTP e ingrese la dirección del servidor SMTP y las credenciales de inicio de sesión como se muestra a continuación. Elija STARTTLS para el cifrado.

Para saber cómo configurar un servidor de correo electrónico, consulta el siguiente tutorial. Nota que recomiendo encarecidamente ejecutar el servidor de correo iRedMail en un sistema operativo nuevo y limpio. La instalación de iRedMail en un sistema operativo que tiene otras aplicaciones web puede fallar y es probable que rompa las aplicaciones existentes.

  • Cómo configurar fácilmente un servidor de correo con todas las funciones en Ubuntu 20.04 con iRedMail

Paso 8:Aumente el límite de memoria de PHP

El límite de memoria predeterminado de PHP es de 128 MB. ProjectSend recomienda 512 MB para un mejor rendimiento. Para cambiar el límite de memoria de PHP, edite el php.ini archivo.

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

Encuentra la siguiente línea. (línea 409)

memory_limit = 128M

Cambia el valor.

memory_limit = 512M

Guarde y cierre el archivo. Alternativamente, puede ejecutar el siguiente comando para cambiar el valor sin abrir manualmente el archivo.

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

Luego recarga PHP-FPM servicio para que los cambios surtan efecto.

sudo systemctl reload php7.4-fpm

Paso 9:Aumente el límite de tamaño del archivo de carga

El límite de tamaño de archivo de carga máximo predeterminado establecido por Nginx es 1 MB. Para permitir la carga de archivos grandes en su servidor ProjectSend, edite el archivo de configuración de Nginx para ProjectSend.

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

Ya hemos establecido el tamaño máximo de archivo en este archivo, como lo indica

client_max_body_size 512M;

Puedes cambiarlo si lo prefieres, como 1G.

client_max_body_size 1024M;

Guarde y cierre el archivo. Luego, vuelva a cargar Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

PHP también establece un límite de tamaño de archivo de carga. El tamaño de archivo máximo predeterminado para cargar es de 2 MB. Para aumentar el límite de tamaño de carga, edite el archivo de configuración de PHP.

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

Busque la siguiente línea (línea 846).

upload_max_filesize = 2M

Cambie el valor como a continuación:

upload_max_filesize = 1024M

Guarde y cierre el archivo. Alternativamente, puede ejecutar el siguiente comando para cambiar el valor sin abrir manualmente el archivo.

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

Luego reinicie PHP-FPM.

sudo systemctl restart php7.4-fpm

Agregar entrada de DNS local

Se recomienda editar el /etc/hosts archivo en su servidor ProjectSend y agregue la siguiente entrada, para que ProjectSend no tenga que consultar el DNS público, lo que puede mejorar la estabilidad general. Si su servidor ProjectSend no puede resolver el projectsend.example.com nombre de host, es posible que encuentre un tiempo de espera de puerta de enlace 504 error.

127.0.0.1   localhost projectsend.example.com

Una dirección IP en /etc/hosts El archivo puede tener varios nombres de host, por lo que si tiene otras aplicaciones instaladas en el mismo cuadro, también puede agregar otros nombres de host o subdominios en la misma línea de esta manera:

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

Consejos para solucionar problemas

Si encuentra errores, puede consultar uno de los siguientes archivos de registro para averiguar qué está mal.

  • Registro de errores de Nginx:/var/log/nginx/error.log
  • Registro de errores de Nginx para el host virtual de ProjectSend:/var/log/nginx/projectsend.error

Ubuntu
  1. Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en Ubuntu 18.04

  2. Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en Ubuntu 20.04 LTS

  3. Cómo instalar el acortador de URL Shlink con Nginx en Ubuntu 20.04

  4. Cómo instalar TYPO3 8.1 con Nginx (LEMP) en Ubuntu 16.04

  5. Instale WordPress con LEMP Stack en Ubuntu 20.04

Instale WordPress en Ubuntu 20.04 con Nginx, MariaDB, PHP7.4 (LEMP)

Cómo instalar LEMP Stack (Nginx, MariaDB, PHP7.1) en Ubuntu 17.10

Cómo instalar phpMyAdmin con Nginx (LEMP) en Ubuntu 18.04 LTS

Cómo instalar LEMP Stack en servidor/escritorio Ubuntu 20.04

Cómo instalar LEMP Stack con PhpMyAdmin en Ubuntu 20.04

Cómo instalar WordPress con Nginx en Ubuntu 20.04