Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Software a Implementar:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
1. Instalación de Ubuntu 20.04 - Configuración de la Red.
1.1 En la Instalación:
Antes de iniciar debes saber cuál es la IP que le asignaras al servidor y haberlo Liberado en la
red (Firewall, Router, etc) y probar que tenga acceso a Internet.
Name Servers: son los DNS, o IP que usa el servidor para resolver las direcciones url.
cd /etc/netplan
sudo nano 01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
epn0s3:
dhcp4: no
dhcp6: no
addresses: [192.168.XXX.XXX/24]
gateway4: 192.168.X.X
nameservers:
addresses: [192.168.X.X]
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
C. Aplicamos la nueva configuración:
sudo ifconfig –a
sudo ping www.google.com
sudo networkctl status -a
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
2. Instalación de SSH por tasksel
A. Instalaremos el Paquete si no está aún:
Con esto el Servidor SSH ya debe estar instalado, una vez reiniciado podemos entrar por SSH
con por ejemplo PuTTY o Solar-PuTTY.
sudo reboot
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
3. Configuración de Firewall
Es importante cuidar el apartado de seguridad por eso procederemos a activar el firewall y
agregar los puertos que utilizaremos:
A. Habilitar:
B. Listado de puertos:
Nota: es muy probable que en la Medida que instalemos otras aplicaciones sea necesario abrir
puerto de conexión a dichas aplicaciones.
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
4. Instalación de Apache 2.
A. Ejecutaremos el comando de Instalación:
Para crear Host Virtuales en Ubuntu y Apache simplemente debemos seguir los siguientes
puntos:
/var/www/html/
Debemos crear los subdirectorios que vamos a utilizar como Host Virtuales:
cd test1
sudo nano index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to test1 Domain</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
C. Le damos los atributos los Permisos correcto para evitar futuros problemas:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
D. Una vez llegamos a este punto procedemos a crear el script de apache que hará que se
reconozca el Host Virtual correctamente:
cd /etc/apache2/sites-available
Nota: estoy utilizando “vm” como referencia a Virtual Machine; ya que en mi caso todo estoy
lo estoy ejecutando en dicho ambiente, ustedes pueden remplazar esto por algún sufijo
adecuado al ambiente en el que estén: “loc”: Local, “pro”: Producción (Intranet), “dev”:
desarrollo, “qua”: Calidad.
<VirtualHost *:80>
ServerName test1.vm
ServerAlias *.test1.vm
ServerAdmin tu-correo@dominio.com
DocumentRoot /var/www/html/test1
<Directory /var/www/html/test1>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/test1.vm-error.log
CustomLog ${APACHE_LOG_DIR}/test1.vm-access.log combined
</VirtualHost>
E. Una Vez que tenemos el archivo con su contenido debemos verificarlo y aplicar que es un
nuevo sitio:
Syntax OK
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
4.2 Acceso al Virtual Host desde Otro Equipo
Para brindar acceso a nuestro servidor en la intranet; lo más recomendado seria que el
Administrador de la red no brinde la opción de redireccionamiento a nuestra IP Local; en caso
de que no contemos con esta opción; debemos recurrir a editar el archivo host de cada equipo
que está ubicado en: C:\Windows\System32\drivers\etc y que queremos tenga este acceso:
Una vez que tenemos esto realizado podemos hacer una prueba de acceso:
http://test1.vm
Es importante tener cierto nivel de seguridad en nuestros Equipos incluso los de prueba.
A. Primero que nada debemos habilitar el Firewall el HTTPS y para eso ejecutaremos el
siguiente:
B. Reiniciamos Apache:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-
selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
En este paso nos pedirá la información relacionada al certificado:
cd /etc/apache2/sites-available
<VirtualHost *:443>
ServerName test1.vm
ServerAlias *.test1.vm
ServerAdmin tu-correo@dominio.com
DocumentRoot /var/www/html/test1
<Directory /var/www/html/test1>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
Allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
ErrorLog ${APACHE_LOG_DIR}/test1.vm-error.log
CustomLog ${APACHE_LOG_DIR}/test1.vm-access.log combined
</VirtualHost>
B. Aplicamos la configuración:
Nota: Debería existir un error. Esto es normal para un certificado autofirmado. El navegador le
advierte que no puede verificar la identidad del servidor, porque nuestro certificado no está
firmado por ninguna de sus autoridades de certificación conocidas. Para fines de prueba y uso
personal o de desarrollo, puede estar bien. Debería poder hacer clic en avanzado o más
información y elegir continuar.
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
Si requerimos un de Certificado autorizado podemos recurrir a estas páginas no las he usado
ya que no requiero de tal alcance en los desarrollos que he realizado:
https://makeawebsitehub.com/es/certificado-ssl-gratis/
https://certbot.eff.org/lets-encrypt/ubuntufocal-apache
C. Si Requerimos que los usuarios se Mantengan en la URL con certificado SSL solo debemos
agregar esto nuevamente al Virtual Host y reiniciamos el Apache; al final nuestro vhost debería
lucir así:
<VirtualHost *:80>
ServerName test1.vm
Redirect / https://test1.vm/
</VirtualHost>
<VirtualHost *:443>
ServerName test1.vm
ServerAlias *.test1.vm
ServerAdmin icarosnet@gmail.com
DocumentRoot /var/www/html/test1
<Directory /var/www/html/test1>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
Allow from all
UnsetEnv PHPRC
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
ErrorLog ${APACHE_LOG_DIR}/test1.vm-error.log
CustomLog ${APACHE_LOG_DIR}/test1.vm-access.log combined
</VirtualHost>
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
5. Instalación de MySQL
A. Instalamos la Aplicación:
B. Configuramos la Aplicación:
sudo mysql_secure_installation
B.1. Instrucciones:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
C. Una vez Finalizamos la configuración nos encargaremos de hacer un par de actualizaciones
a los usuarios de las bases de datos:
sudo mysql
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Nota: a continuación, donde dice ‘password’ colocan la contraseña deseada para el usuario de
mysql … cuidado se les olvida esta contraseña….
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Y Salimos:
mysql> exit
bind-address = 127.0.0.1
#bind-address = 127.0.0.1
E. Habilitar en el Firewall:
sudo ufw allow from any to any port 3306 proto tcp
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
6. Instalación de PHP
A. Ejecutamos el comando de instalación:
Nota: En este momento en adelante use la última versión estable de PHP 7 que es la 7.4,
asegúrese de utilizar la última versión estable y remplazar correctamente el numero en la Línea
comando.
D. Verificaremos que todo va bien creando un archivo php y ejecutando phpinfo verificamos
las versiones:
<?php
phpinfo();
Nota: Antes de Continuar debemos verificar que tanto el PHP Nativo para apache y el
PHP-CLI (Línea de comando son la misma versión):
sudo php -v
Debe ser la misma versión que la que muestra el servidor Web en la URL; en tal caso de no ser
iguales, verificamos que versiones alternativas tenemos:
Nos indicara las Versiones de PHP que tenemos en la lista de Alternativas, si no Vemos la Versión
7.4.X (hasta la fecha) debemos actualizarla:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
Una vez que ya actualizamos la lista hacemos una verificación general:
Es importante recordar que los módulos no cargados; deben hacerlo en archivo:php.ini con
“extension=mcrypt.so”
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
7. Instalación de PhpMyAdmin
A. Instalamos PHPMYADMIN:
Escogemos la versión del servidor que utilizamos, recomendamos apache ya que es el instalado
en este manual; Indicamos que debe instalar la base de datos por defecto: yes
B. Una vez Listo podemos entrar directamente a phpmyadmin con el usuario y contraseña
utilizado en mysql. Es posible que la versión Instalada sea la 4.9.5deb2 la cual nos puede traer
problemas, en el siguiente punto vamos a realizar la actualización y reconfiguración de todo el
servidor de desarrollo para evitar problemas.
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
8. Re-Configuración de Apache, Mysql, PHP y phpMyAdmin.
Para el Entorno de Desarrollo es importante que quitemos algunas limitantes que pueden tener
las aplicaciones que conforman el servidor Web de Desarrollo y en este punto procederemos a
reconfigurarlas para evitar tropiezos en los desarrollos.
8.1 Apache:
Timeout 6000
B. También hay que configurar el acceso para que nuestro .htaccess sean legibles por apache,
no es necesario si usas Virtual Host:
cd /etc/apache2/sites-available
sudo nano 000-default.conf
<Directory /var/www/html>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
Allow from all
</Directory>
C. Pasar http/1.1 a http/2 solo si Usamos SSL; en este punto deshabilitaremos la función de
módulos:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
8.2 PHP:
cd /etc/php/X.X/apache2/
cd /etc/php/X.X/fpm/
B. Y Editamos el archivo:
file_uploads = On
upload_max_filesize = 2G
max_file_uploads = 100
allow_url_fopen = On
memory_limit = 512M
post_max_size = 600M
max_execution_time = 5000
max_input_time = 5000
max_input_vars = 5000
date.timezone= America/Panama
error_reporting = E_ALL
display_errors = on
display_startup_errors = on
html_errors = On
session.gc_maxlifetime = 2592000 ;;30 días aproximadamente
session.cache_expire = 2592000 ;;30 días aproximadamente
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
D. Ejecutar Diferentes versiones de php: debemos instalar toda la paquetería de la versión que
deseamos usar tal cual lo hicimos en la instalación de php:
Habilitaremos fpm únicamente para la versión de php que vamos a ejecutar y el módulo de
proxyfcgi:
cd /etc/apache2/sites-available/
sudo nano test1.vm.conf
<VirtualHost *:80>
ServerName test1.vm
ServerAlias *.test1.vm
ServerAdmin tu-email@dominio.com
DocumentRoot /var/www/html/test1
<Directory /var/www/html/test1>
Options Indexes FollowSymLinks Includes ExecCGI MultiViews
AllowOverride All
Require all granted
Allow from all
</Directory>
<FilesMatch \.php$>
#From the Apache version 2.4.10 and above, use the SetHandler to run PHP as a fastCGI process server
SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/test1.vm-error.log
CustomLog ${APACHE_LOG_DIR}/test1.vm-access.log combined
</VirtualHost>
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
8.4 phpMyAdmin:
A. Lo primero que haremos será hacer un BackUp del phpMyAdmin; si, porque al tener un
comportamiento de aplicación basada en web/php podemos hacer migraciones en caliente
manteniendo los archivos de configuración a salvo.
cd /usr/share/phpmyadmin/
cp config.sample.inc.php config.inc.php
//agregamos al final
$cfg['LoginCookieValidity'] = 36000;
$cfg['ExecTimeLimit'] = 6000;
H. Reiniciamos:
sudo reboot
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
9. Instalación del Servidor FTP(VSFTP)
A. Instalamos la Aplicación:
B. Verificamos el estatus:
C. Creamos el usuario:
Nota: para restringir el directorio del proyecto solo basta con corregir el directorio home del
usuario:
write_enable=YES
chroot_local_user=YES
local_umask=022
force_dot_files=YES
pasv_min_port=30000
pasv_max_port=50000
allow_writeable_chroot=YES
Algunas ocasiones requerimos de tener a mano la conexión ftp a algún servidor externo esto
es posible con el link simbólico o también conocido como enlace FTP duro, en mi caso lo uso
para conexiones a sistema como UNIX.
B. Instalamos la herramienta
cd /etc/
sudo nano fstab
sudo reboot
Nota: Para verificarlo solo debemos navegar en los directorios que estas debajo de unix_ftp.
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
10. Instalación de Composer:
A. Para Instalar composer ejecutaremos los siguientes comandos:
cd /var/www/html/class/classext/phpMailer/
composer require phpmailer/phpmailer
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
11. Instalación y Configuración de Cron
A. Para configurar el Cron accederemos al directorio raiz:
usuario@computador:~$
cd ..
usuario@computador:/$
sudo crontab –e
Agregaremos las siguientes líneas para ejecutar los crons de nuestro sistema y reiniciar el
servidor los domingos a media noche:
* * * * * /var/www/html/cron/cron.sh
0 0 * * 0 /sbin/reboot >> /var/log/reboot.log 2>&1
#el comando de reinicio debe ser probado.
Comandos relacionados:
sudo crontab –e
sudo crontab –l
sudo crontab –r
Nota: Si el comando crontab –e no les funciona correctamente deben intentar acceder desde
otro usuario, luego intentar una reinstalación del mismo, ya que suele tener problemas de bind
file y les dirá que no existe… hasta que lleguen a esta pantalla:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
12. Instalación y Configuración de Incron
A diferencia del cron el incron detecta cambios en nuestro sistema relacionados principalmente
a actividades sobre archivos y directorio, en este caso buscaremos detectar cambios en un
directorio o cuando se coloca en este un archivo.
nano /etc/incron.allow
root
administrador
sudo incrontab -e
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
13. Instalación de Samba.
A. Instalamos y configuramos el directorio para compartir.
sudo vi /etc/samba/smb.conf
Nota: el número de línea puede variar, evite dejar los comentarios o provocara error en el
archivo de configuración.
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
14. Instalación de Entorno Grafico.
A. Pasamos el Frontend de Linux a su status no interactivo (no funciona con sudo):
export DEBIAN_FRONTED=noninteractive
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
15. Instalación/Configuración de Escritorio Remoto.
A. Agregamos el usuario Owner y lo agregamos al grupo sudoers:
max_bpp=128
use_compression=yes # esto lo debemos agregar después d max_bpp
xserverbpp=128
crypt_level=low
Como conectarse:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
16. Instalación/Configuración Impresoras de Punto/Matriz
(Ambientes Industriales).
Si queremos que nuestra aplicación web pueda usar recursos de impresión remota a equipos.
Agregamos lo siguiente:
Listen /var/run/cups/cups.sock
Port 631
Browsing On
ServerAdmin tucorreo@tudominio.com #al Final del archivo
D. Reiniciamos el servicio:
F. Reiniciamos el servicio:
sudo reboot
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
I. Una vez configurado podemos entra a https://xxx.xxx.xxx.xxx:631/admin
Nota: no olvides el puerto es el 631, desde esta URL podemos agregar cualquier impresora;
ya dependerá del modelo en mi caso use la Epson 9 pines. Y baje el driver formado PPD de
internet.
J. Una vez que todo está listo podemos probar con el comando de impresión:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
17. Actualización del Sistema Horario.
A. Ejecutamos los siguientes comandos:
Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15