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