Está en la página 1de 30

Guía para la Instalación de Servidor Web

para el Área de Desarrollo.

Software a Implementar:

• Ubuntu Server 20.04.1 (Como sistema Operativo)


• Tasksel
• OpenSSH
• Uncomplicated Firewall
• Apache 2
o Virtual Host
o Acceso al Virtual Host desde Otro Equipo
o SSL para VH
▪ Crear Certificado SSL Auto-Firmado
▪ Usar Certificado SSL Auto-Firmado
• MySQL
• PHP (7.4.XX)
• phpMyAdmin
• Re-Configuración de Apache, MySQL, PHP y phpMyAdmin
o Apache
o PHP
o phpMyAdmin
• FTP (VSFTP)
o Crear Link Simbólico (Directorio) a Servidor FTP
• Composer
• Cron jobs
• Incron
• Samba
• Entorno Grafico
• Escritorio Remoto
• Instalación de Impresoras de Punto (Ambientes Industriales)
• Actualización del Sistema Horario

Nota: esta es una instalación de Desarrollo ya que incluye algunas


personalizaciones.

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.

Subnet: se refiere a la IP Base de la red en la que estará instalada nuestro servidor:


192.168.0.71 -> 192.168.0.0/24
192.168.1.12 -> 192.168.1.0/24
192.168.10.54 -> 192.168.10.0/24

Adrress: la IP que elegiste para el servidor.

Gateway: es la puerta de enlace normalmente similar a la IP pero termina en 1 o puede ser


diferente dependiendo de lo que indique el Administrador de la Red.

Name Servers: son los DNS, o IP que usa el servidor para resolver las direcciones url.

Search domain: pues no lo uso… lo dejo en blanco.

1.2 Por Comandos:

A. Nos ubicamos en la sección de netplan (nuevo sistema de configuración de Ubuntu server


para las redes).

cd /etc/netplan
sudo nano 01-netcfg.yaml

B. Agregamos el siguiente Contenido al archivo:

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 netplan apply

D. Podemos comprobar que todo vaya bien utilizando comandos como:

sudo ifconfig –a
sudo ping www.google.com
sudo networkctl status -a

E. Si tenemos acceso a la red debemos dejar el sistema operativo inicialmente actualizado,


update actualiza la lista de versiones de paquetes, upgrade instala las nuevas versiones de los
paquetes.

sudo apt update


sudo apt upgrade -y

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:

sudo apt install tasksel -y

B. Instalaremos el Open SSH:

sudo tasksel install openssh-server

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:

sudo ufw enable

B. Listado de puertos:

sudo ufw allow ssh


sudo ufw allow http
sudo ufw allow ftp
sudo ufw allow 113
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 20
sudo ufw allow 21
sudo ufw allow 22
sudo ufw allow 3389:3392
sudo ufw allow 30000:50000/tcp
sudo ufw allow 30000:50000/udp
sudo ufw allow OpenSSH

C. Reiniciamos el firewall y Verificamos su estatus:

sudo ufw reload


sudo ufw status
sudo reboot

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:

sudo apt install apache2

B. Es importante liberar la aplicación en firewall:

sudo ufw allow Apache

C. Una vez terminamos verificamos el status:

sudo systemctl status apache2


sudo reboot

4.1 Virtual Host:

Para crear Host Virtuales en Ubuntu y Apache simplemente debemos seguir los siguientes
puntos:

A. Si nuestro Root Document de Apache es un directorio como la siguiente:

/var/www/html/

Debemos crear los subdirectorios que vamos a utilizar como Host Virtuales:

sudo mkdir -p /var/www/html/test1

B. Una vez creado el directorio, ahora crearemos un archivo index.html

cd test1
sudo nano index.html

Con el siguiente contenido:

<!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:

sudo chown -R www-data: /var/www/html/test1

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:

Nos ubicamos en el directorio sites-available:

cd /etc/apache2/sites-available

Y procedemos a crear un archivo de configuración de la siguiente manera:

sudo nano test1.vm.conf

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.

Con el siguiente contenido:

<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:

sudo a2ensite test1.vm


sudo apachectl configtest

Debemos tener un output al final:

Syntax OK

F. Ultimo paso Reiniciamos el Apache:

sudo systemctl restart apache2

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

4.3 SSL para Virtual Host

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:

sudo ufw allow "Apache Full"

4.3.1 Como Crear un Certificado SSL Auto Firmado

A. Primero debemos habilitar mod_ssl:

sudo a2enmod ssl

B. Reiniciamos Apache:

sudo systemctl restart apache2

C. Crearemos un Certificado SSL con la siguiente instrucción:

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:

Country Name (2 letter code) [XX]: US


State or Province Name (full name) []: Example
Locality Name (eg, city) [Default City]: Example
Organization Name (eg, company) [Default Company Ltd]: Example Inc
Organizational Unit Name (eg, section) []: Example Dept
Common Name (eg, your name or your server's hostname) []: your_domain_or_ip
Email Address []: webmaster@example.com

4.3.2 Configurar Apache para Usar el SSL

A. Nos dirigimos al directorio de los VHost

cd /etc/apache2/sites-available

Y Editamos el archivo del Vhost que queremos que use el certificado:

sudo nano test1.vm.conf

Y Agregamos las letras en negrita:

<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:

sudo a2ensite test1.vm


sudo apachectl configtest

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:

sudo apt install mysql-server

B. Configuramos la Aplicación:

sudo mysql_secure_installation

B.1. Instrucciones:

Para el entorno de desarrollo podemos utilizar la forma nativa.


No Instalar el plugin de no ser necesario para desarrollo.
Podemos hacer reload o flush a los privilegios de usuario y las tablas existentes:

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….

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1qazxsw2';


mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

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

D. Habilitar Conexiones Externas:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Modificamos el parámetro, Lo comentamos:

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:

sudo apt -y install php

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.

B. Luego de esto deberemos hacer una actualización del sistema y reiniciar:

sudo add-apt-repository ppa:ondrej/php


sudo apt update && sudo apt upgrade -y
sudo reboot

C. Luego instalaremos los módulos a utilizar.

sudo apt -y install php-pear libapache2-mod-php libmcrypt-dev php7.4-sqlite3 php7.4-curl


php7.4-fpm php7.4-dev php7.4-curl php7.4-xmlrpc php7.4-gd php7.4-mysql php7.4-mbstring
php7.4-xml php7.4-soap php7.4-cli php7.4-zip php7.4-bz2 php7.4-dba php7.4-imap php7.4-intl
php7.4-ldap php7.4-json
sudo reboot

D. Verificaremos que todo va bien creando un archivo php y ejecutando phpinfo verificamos
las versiones:

sudo nano /var/www/html/info.php

<?php
phpinfo();

Entramos a nuestra dirección IP para verificar el archivo: http://xxx.xxx.xxx.xxx/info.php

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:

sudo ls -al /etc/alternatives/php*

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:

sudo update-alternatives --list php

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:

sudo ls -al /usr/bin/php*

lrwxrwxrwx 1 root root 21 sep 26 21:22 /usr/bin/php -> /etc/alternatives/php


-rwxr-xr-x 1 root root 4903960 sep 2 12:54 /usr/bin/php7.2
-rwxr-xr-x 1 root root 4683512 sep 2 12:54 /usr/bin/php7.3
lrwxrwxrwx 1 root root 28 sep 26 21:28 /usr/bin/php-config -> /etc/alternatives/php-config
-rwxr-xr-x 1 root root 4272 sep 2 12:54 /usr/bin/php-config7.2
-rwxr-xr-x 1 root root 4235 sep 2 12:54 /usr/bin/php-config7.3
lrwxrwxrwx 1 root root 24 sep 26 21:28 /usr/bin/phpize -> /etc/alternatives/phpize
-rwxr-xr-x 1 root root 4674 sep 2 12:54 /usr/bin/phpize7.2
-rwxr-xr-x 1 root root 4699 sep 2 12:54 /usr/bin/phpize7.3

En este punto si vemos la Versión de PHP 7.4 debemos Aplicarla:

sudo update-alternatives --set php /usr/bin/php7.4

E. Vamos a instalar mcrypt-1.0.1 o la versión más reciente de mcrypt.

sudo add-apt-repository universe


sudo apt -y install gcc make autoconf libc-dev pkg-config
sudo pecl install mcrypt-1.0.3
sudo bash -c "echo extension=/usr/lib/php/20190902/mcrypt.so >
/etc/php/7.4/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20190902/mcrypt.so >
/etc/php/7.4/apache2/conf.d/mcrypt.ini"

Dejamos el prefijo de mcrypt por defecto, damos enter (siguiente página).

Es importante recordar que los módulos no cargados; deben hacerlo en archivo:php.ini con
“extension=mcrypt.so”

sudo systemctl restart apache2


sudo reboot

Entramos a nuestra dirección IP para verificar el archivo: http://xxx.xxx.xxx.xxx/info.php

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:

sudo apt -y install 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.

C. Después de este punto es importante recordarles a los implementadores que deben


Administrar en PhpMyAdmin o por consola los Accesos de los usuarios, si desean dar acceso
remoto o por Base de Datos específicas.

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:

A. Procederemos a editar el tiempo límite de ejecución establecido por defecto en Apache:

sudo nano /etc/apache2/apache2.conf

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

Y agregamos esto después de CustomLog:

<Directory /var/www/html>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
Allow from all
</Directory>

sudo systemctl restart apache2

C. Pasar http/1.1 a http/2 solo si Usamos SSL; en este punto deshabilitaremos la función de
módulos:

sudo a2dismod php7.4


sudo a2dismod mpm_prefork

Habilitaremos el módulo FCGI, instalamos la versión FPM, la inicializaremos y aplicamos:

sudo a2enmod mpm_event proxy_fcgi setenvif


sudo apt-get -y install php7.4-fpm
sudo systemctl restart apache2
sudo systemctl start php7.4-fpm
sudo systemctl enable php7.4-fpm
sudo a2enconf php7.4-fpm
sudo systemctl restart apache2
sudo a2enmod http2
sudo systemctl restart apache2

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:

A. Procederemos a identificar el archivo php.ini, ya que varía si estamos en la versión FPM o


CGI:

Tendremos las opciones:

cd /etc/php/X.X/apache2/

cd /etc/php/X.X/fpm/

B. Y Editamos el archivo:

sudo nano php.ini

Buscamos y actualizamos los siguientes parámetros:

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

C. También debemos actualizar los permisos de nuestro directorio web:

sudo find /var/www/html/ -type d -exec chmod 777 {} ";"


sudo find /var/www/html/ -type f -exec chmod 777 {} ";"

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:

sudo apt -y install php7.2


sudo apt -y install php-pear libapache2-mod-php libmcrypt-dev php7.2-sqlite3 php7.2-curl
php7.2-fpm php7.2-dev php7.2-curl php7.2-xmlrpc php7.2-gd php7.2-mysql php7.2-mbstring
php7.2-xml php7.2-soap php7.2-cli php7.2-zip php7.2-bz2 php7.2-dba php7.2-imap php7.2-intl
php7.2-ldap php7.2-json
sudo reboot

Habilitaremos fpm únicamente para la versión de php que vamos a ejecutar y el módulo de
proxyfcgi:

sudo systemctl start php7.2-fpm


sudo systemctl status php7.2-fpm
sudo a2enmod actions fcgid alias proxy_fcgi
sudo systemctl restart apache2

Debemos habilitar la política en nuestro sitio:

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>

sudo a2ensite test1.vm


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
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.

sudo mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.bak

B. Luego crearemos el directorio de Trabajo:

sudo mkdir /usr/share/phpmyadmin/

C. Y nos vamos a ubicar en el:

cd /usr/share/phpmyadmin/

D. Descargamos la última versión estable de phpMyAdmin (esta url se pude conseguir en el


repositorio de los reléase); luego la descomprimimos y la movemos:

sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-


languages.tar.gz
sudo tar xzf phpMyAdmin-5.0.2-all-languages.tar.gz
sudo mv phpMyAdmin-5.0.2-all-languages/* /usr/share/phpmyadmin

E. Generamos el archivo de configuración:

cp config.sample.inc.php config.inc.php

F. Importante aplicar los permisos y luego actualizarlos:

sudo find /usr/share/phpmyadmin/ -type d -exec chmod 777 {} ";"


sudo find /usr/share/phpmyadmin/ -type f -exec chmod 777 {} ";"
chmod 0755 config.inc.php

G. Entramos a editar el archivo de configuración de phpMyAdmin

sudo nano config.inc.php

$cfg['blowfish_secret'] = '1465beta1qazxsw2yotpacincltd2020'; //Debe tener 32


Caracteres

//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:

sudo apt update && sudo apt -y install vsftpd

B. Verificamos el estatus:

sudo service vsftpd status

C. Creamos el usuario:

sudo adduser ftpuser

D. Quitamos el permiso de usuario de acceder por SSH

sudo nano /etc/ssh/sshd_config


DenyUsers ftpuser

E. Asignamos el directorio de Desarrollo:

sudo chown ftpuser:ftpuser /var/www/


sudo usermod -d /var/www/html/ ftpuser

Nota: para restringir el directorio del proyecto solo basta con corregir el directorio home del
usuario:

sudo usermod -d /var/www/html/test1 ftpuser

F. Haremos otros cambios al FTP antes de comenzar a usarlo, Haremos un backup de la


configuración predeterminada:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Luego editaremos el documento con nano:

sudo nano /etc/vsftpd.conf


Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15
Luego buscaremos con Ctrl+W y editaremos o agregaremos las siguientes líneas:

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

G. y probaremos que conecte; es importante también indicar que la trasferencia de archivo


sea Binaria o en su defecto UTF-8 en el cliente FTP (opciones avanzadas si está disponible):

9.1 Crear Link Simbólico (Directorio) a Servidor FTP (enlace duro)

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.

A. Creamos un directorio de montaje:

sudo mkdir /mnt/unix_ftp/

B. Instalamos la herramienta

sudo apt install curlftpfs -y

E. Establecemos el link simbólico

sudo curlftpfs -o allow_other usuario:contraseña@direcionftp /mnt/unix_ftp

D. Establecemos el punto de montaje al final del archivo fstab

cd /etc/
sudo nano fstab

curlftpfs#user:pass@ipftp /mnt/unix_ftp fuse auto,user,uid=1000,allow_other,_netdev


0 0

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:

sudo apt -y install curl git unzip

Hacemos la Instalación desde la página y la documentación oficial:


https://getcomposer.org/download/

/* Instructivo composer si no tenemos la librería */

B. Instalamos creamos el directorio de cada librería externa, navegamos y ejecutamos en cada


una la Instalación de la misma (recordar que la librería debe tener permisos de escritura y
ejecución):

cd /var/www/html/class/classext/phpMailer/
composer require phpmailer/phpmailer

/* Instructivo composer si no tenemos la librerí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
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

# Ejemplo de Definición de trabajo:


# .---------------- Minutos exactos (0 – 59) o Repetitivo */## cada cuanto
# | .------------- Horas exactas (0 – 59) o Repetitivo */## cada cuanto
# | | .---------- día del mes exacto (1 - 31) o Repetitivo */## cada cuanto
# | | | .------- mes exacto (1 - 12) o iniciales jan,feb,mar,apr
# | | | | .---- día de la semana (0 - 6) o iniciales sun,mon,tue,wed
# | | | | |
# * * * * * Usuario comando a ejecutar

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.

A. Instalación, verificación y reinicio del incron

sudo apt install -y incron


sudo systemctl status incron
sudo reboot

B. habilitamos el acceso desde sudo, agregando los usuarios:

nano /etc/incron.allow

root
administrador

C. editamos la tabla agregando nuestra sentencia:

sudo incrontab -e

/var/www/html/directorio/ IN_CLOSE_WRITE /bin/bash /var/www/html/master.sh

Nota: es importante que el archivo .sh tengas los permisos de ejecución.

sudo chmod +x master.sh

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 apt -y install samba


sudo mkdir /home/share
sudo chmod 777 /home/share

B. Habilitamos la aplicación samba en el firewall:

sudo ufw allow samba

C. Configuramos la aplicación samba

sudo vi /etc/samba/smb.conf

unix charset = UTF-8 # línea 25: agregamos


workgroup = ADMINISTRACION # línea 29: cambiamos al grupo del trabajo
interfaces = eno1 # línea 39: asignamos la interface de red
bind interfaces only = yes # línea 46: quitamos los comentario
map to guest = Bad User # línea 47: agregamos el map to guest
# al final del documento agregamos la configuración del directorio de trabajo
[Share]
path = /home/share # Directorio compartido
writable = yes # Permiso de escritura
guest ok = yes # permitir guest OK
guest only = yes # Solo permitir acceso guest
create mode = 0777 # permisos total de crear
directory mode = 0777 # permisos total de directorio
share modes = yes # Advertir si algunas personas acceden a un archivo

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

B. Instalamos el escritorio de Ubuntu:

sudo apt install -y ubuntu-desktop xfce4 xrdp xfce4-goodies

C. Verificamos si Xfce es archivo:

sudo echo xfce4-session > /etc/skel

D. Reiniciamos el servicio de XRDP

sudo systemctl restart xrdp

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:

sudo adduser xrdpuser


sudo gpasswd -a xrdpuser

B. Aumentaremos el rendimiento editando el archivo de inicio de XRDP, hagan backup:

sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bck


sudo vi /etc/xrdp/xrdp.ini

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.

A. Debemos instalar cups:

sudo apt install -y cups printer-driver-gutenprint

B. Procedemos a crear el back up y configurarlo:

sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original


sudo chmod a-w /etc/cups/cupsd.conf.originalsudo
nano /etc/cups/cupsd.conf

Agregamos lo siguiente:

Listen /var/run/cups/cups.sock
Port 631
Browsing On
ServerAdmin tucorreo@tudominio.com #al Final del archivo

C. habilitamos cups en el firewall:

sudo ufw allow 631

D. Reiniciamos el servicio:

sudo systemctl restart cups.service

E. Agregamos las posibles colas:

sudo cupsctl --remote-admin --remote-any --share-printers

F. Reiniciamos el servicio:

sudo systemctl restart cups.service

G. Agregamos nuestro usuario al grupo de lp:

sudo usermod -G administrador lpadmin,sudo

H. en este punto debemos reiniciar

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:

sudo lp -o raw -d nombredelaimpresora /pathdelarchivo/archivo.txt

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:

sudo hwclock --show


timedatectl
ls -l /etc/localtime
timedatectl list-timezones | grep -i america
sudo unlink /etc/localtime
sudo ln -s /usr/share/zoneinfo/America/Panama /etc/localtime
timedatectl
ls -l /etc/localtime
sudo reboot
timedatectl

Local time: Fri 2020-09-18 14:40:49 EST


Universal time: Fri 2020-09-18 19:40:49 UTC
RTC time: Fri 2020-09-18 19:40:49
Time zone: America/Panama (EST, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Configuración de Servidores Web - Ubuntu - Área de Desarrollo. Icaros Net S.A & Last-Hammer
Ing. Walter Núñez | Donaciones Aquí | 2020-09-15

También podría gustarte