En este artículo, le daremos instrucciones paso a paso sobre cómo configurar un entorno web en un servidor Linux. En primer lugar, debe comprender que un servidor web típico consta de varios componentes que interactúan entre sí:
- Servidor HTTP
- intérprete de lenguaje de programación
- sistema de gestión de bases de datos (DBMS)
Para administrar su sitio web, también necesitará configurar un sistema de gestión de contenido (CMS), una interfaz web para la gestión de bases de datos y acceso FTP.
Consideremos la configuración Apache-PHP-MySQL (MariaDB) en Linux. También instalaremos el servidor FTP vsftpd, phpMyAdmin (una interfaz web para la gestión de bases de datos) y el sistema de gestión de contenido WordPress.
Para comenzar, solicite un servidor VPS o un servidor dedicado . Por ejemplo, nosotros utilizamos un servidor virtual con dirección IP estática que ejecuta Ubuntu Server 18.04. Todos los comandos fueron ejecutados por el usuario root.
Configuración del servidor HTTP Apache
1. Instalación
apt install apache2
Cuando la instalación haya terminado, abra un navegador y compruebe “http://[dirección_ip_del_servidor]”.
Si ve una página de bienvenida como ésta en la captura de pantalla anterior, eso significa que su servidor HTTP está funcionando.
2. Crea una página de prueba
El directorio raíz predeterminado del sitio web es “/var/www/html” . Aquí es donde se encuentra la página de bienvenida que acaba de ver. Creemos un directorio aparte, “/var/www/sites”, para los hosts virtuales y una subcarpeta “/var/www/sites/site1” con la página de inicio de su sitio web de prueba.
cd /var/www/
mkdir -p sites/site1
echo "<H1>Welcome</H1>" > sites/site1/index.html
Como resultado, el archivo “/var/www/sites/site1/index.html” debería contener solo una línea de código HTML:
<H1>Welcome</H1>
3. Configuración del servidor Apache
Los archivos de configuración de los sitios web se encuentran en el directorio “/etc/apache2/sites-available/” . Vamos a crear un archivo de configuración para un nuevo host virtual tomando como base la configuración predeterminada del archivo “000-default.conf” .
cd /etc/apache2/sites-available/
cp 000-default.conf site1.conf
Abre el archivo “site1.conf” y modifica el atributo “DocumentRoot” . Introduce la ruta de tu sitio web como valor; en nuestro caso, sería “/var/www/sites/site1”.
En esta etapa, no necesitamos configurar el funcionamiento simultáneo de varios sitios web, por lo que podemos deshabilitar el sitio web predeterminado y habilitar el nuevo. Recargue la configuración del servidor para aplicar los cambios.
a2dissite 000-default
a2ensite site1
systemctl reload apache2
Vuelve a abrir el enlace “http://[dirección IP del servidor]” y asegúrate de que, en lugar de la página de bienvenida predeterminada, tenemos nuestra nueva página.
Terminamos de configurar nuestro servidor HTTP y podemos proceder al siguiente paso.
Configuración del servidor FTP
1. Instalación
Vamos a instalar nuestro servidor FTP y un paquete adicional llamado “db-util” , que necesitaremos para configurar usuarios virtuales.
apt install vsftpd db-util
2. Crear una cuenta local
El servidor vsftpd nos permite configurar los permisos de acceso de forma muy flexible. Para nuestras tareas, necesitamos proporcionar a los usuarios de FTP lo siguiente:
- acceso completo a los contenidos de “/var/www/sitios/”;
- Desactivar todo lo anterior “/var/www/”;
- conexión con una cuenta virtual;
Cree una cuenta local “virtual” sin permisos de inicio de sesión, pero con acceso a la carpeta personal “/var/www/” . Esta cuenta será utilizada por los usuarios de FTP para conectarse al servidor.
useradd -d /var/www virtual
“Root” será el propietario de la carpeta “/var/www” por defecto. Para permitir que los usuarios de ftp modifiquen el contenido de los sitios web, cambiemos el propietario de “/var/www/sites/”, incluidas las subcarpetas de “virtual”.
chown -R virtual:root /var/www/sites
Como resultado, el usuario “virtual” podrá ver el contenido de “/var/www/” y escribir en la subcarpeta “/var/www/sites/”.
3. Configuración
La configuración principal se encuentra en el archivo “/etc/vsftpd.conf” , así que vamos a abrirlo y editarlo de la siguiente manera:
#enable virtual users
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
#configure permission
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
anon_umask=0022
chroot_local_user=YES
#launch settings
listen=YES
pasv_min_port=30000
pasv_max_port=30999
4. Crear la base de datos
Necesitará una base de datos para almacenar datos de cuentas virtuales.
Primero, vamos a crear un archivo de texto simple llamado “users.txt” en la carpeta de inicio y guardar los detalles de acceso (nombre de usuario y contraseña) de los usuarios virtuales en líneas alternas. Por ejemplo, necesitaremos un usuario virtual con el nombre de usuario “ftp” y la contraseña “Qwe123” . Entonces, el archivo se verá así:
ftp
Qwe123
Vamos a crear la base de datos
db_load -T -t hash -f ~/users.txt /etc/vsftpd_login.db
Vamos a modificar el archivo PAM predeterminado “/etc/pam.d/vsftp” de la siguiente manera:
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
Tenga en cuenta que la ruta de la biblioteca “pam_userdb.so” puede ser diferente, pero puede cambiarla si es necesario.
Recargue el servidor vsftpd para aplicar los cambios.
systemctl restart vsftpd
Terminamos de configurar el servidor FTP.
Detalles de conexión:
- ftp://[dirección_ip_del_servidor]
- inicio de sesión: ftp
- contraseña: Qwe123
Configuración del servidor PHP
1. Instalación de PHP
Hoy, la última versión estable de PHP es PHP 7.4.5, que no está incluida en los repositorios oficiales de Ubuntu. Conectémonos a un repositorio externo e instalemos la última versión de PHP.
apt update
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install php7.4
2. Comprobar
Para que PHP se ejecute, el archivo de la página web debe tener la extensión “.php” . Cambiemos el nombre de nuestra página de prueba:
cd /var/www/sites/site1/
mv index.html index.php
Agregue la siguiente línea de PHP al archivo “/var/www/sites/site1/index.php” , de modo que el archivo debería verse así:
<H1>Welcome</H1>
<?php
phpinfo();
?>
Guarde los cambios y compruebe el resultado en el navegador.
Si ves el resultado de la función “phpinfo()” , el intérprete de PHP está funcionando correctamente. Ahora pasemos al siguiente paso.
Configuración de MySQL (MariaDB)
1. Instalación
Instalemos MariaDB y un módulo PHP para MySQL y luego recarguemos Apache.
apt install mariadb-server php-mysql
systemctl restart apache2
Actualiza la página de prueba y ve a la sección PDO en la tabla de configuración de PHP. Si encuentras la sección "PDO_mysql" , significa que el controlador de MySQL está instalado correctamente.
A continuación, tendremos que realizar la configuración de seguridad inicial de MariaDB y establecer la contraseña para el usuario "root" , deshabilitar el acceso remoto y eliminar todas las cuentas de invitado.
mysql_secure_installation
En el primer paso, debemos ingresar la contraseña del usuario "root" para acceder al DBMS o presionar Enter si no hay contraseña. Como no hay ninguna contraseña establecida para el usuario "root" después de la instalación, simplemente presione "Enter".
Tenga en cuenta que en MariaDB ya existen sus propias cuentas que no tienen nada que ver con las cuentas del sistema operativo. Por lo tanto, el único usuario con el que trabajamos en MariaDB es "root".
Después, el configurador nos pedirá que establezcamos la contraseña para el usuario root. Escribe “Y” para confirmar e introduce la nueva contraseña. En nuestro caso, es “Qwe123”.
Responda “Y” a todas las demás preguntas hasta el final.
¡La configuración está hecha!
Detalles de acceso a MariaDB:
- Iniciar sesión: raíz
- Contraseña: Qwe123
Configuración de phpMyAdmin
1. Instalación
Vamos a instalar la extensión necesaria para PHP: mbstring.
apt install php-mbstring
En el repositorio oficial sólo hay una versión desactualizada de phpMyAdmin, así que instalemos la nueva manualmente.
Abra el sitio web oficial del proyecto “ https://www.phpmyadmin.net/ ” y descargue el archivo más reciente.
Copie el archivo al servidor en la carpeta “/var/www/sites/” utilizando cualquier cliente FTP.
Descomprime la carpeta y cámbiale el nombre a “phpMyAdmin” . No olvides instalar la utilidad “unzip” . Puedes eliminar el archivo después de descomprimirlo.
apt install unzip
cd /var/www/sites/
unzip phpMyAdmin-5.0.2-all-languages.zip
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin
rm phpMyAdmin-5.0.2-all-languages.zip
Crea la carpeta “/var/www/sites/phpMyAdmin/tmp” para archivos temporales y habilita el acceso para todos. Si no lo haces, phpMyAdmin mostrará un mensaje de acceso denegado a la carpeta temporal.
cd /var/www/sites/phpMyAdmin/
mkdir tmp
chmod 777 tmp
2. Crea un alias
Dado que phpMyAdmin no es un host virtual separado y está ubicado fuera del directorio raíz, configuremos el alias.
Abra el archivo “/etc/apache2/mods-available/alias.conf” y agregue esta línea:
Alias /pma “/var/www/sites/phpMyAdmin"
Dentro de esta sección:
<IfModule alias_module>
</IfModule>
Recargue Apache para aplicar los cambios.
systemctl reload apache2
El alias está configurado, por lo que podemos acceder a phpMyAdmin aquí “http://[dirección_ip_del_servidor]/pma”.
3. Prepare la base de datos
Como restringimos el uso del usuario root durante la configuración inicial de MariaDB, tendremos que crear una nueva cuenta con todos los permisos que se utilizarán para acceder a phpMyAdmin.
Además, para habilitar características adicionales de phpMyAdmin necesitaremos una base de datos de servicio y una cuenta para acceder a ella.
Vamos a crear las cuentas
mariadb -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'pma'@'localhost' IDENTIFIED BY 'Qwe123' WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, DELETE ON `phpmyadmin`.* TO 'pmaservice'@'localhost' IDENTIFIED BY 'Qwe123' WITH grant option;
quit
Tenga en cuenta que el nombre de la base de datos en la segunda solicitud está en back sparks “… ON `phpmyadmin` .* TO 'pma'@'localhost' IDENTIFIED BY …”,
Como resultado, se crearán dos cuentas en MariaDB:
- Usuario: pma, Contraseña: Qwe123Acceso completo, se utilizará para iniciar sesión en phpMyAdmin
- Inicio de sesión: pmaservice, Contraseña: Qwe123La cuenta de servicio es necesaria para que funcionen funciones adicionales
En el siguiente paso, configuraremos estos detalles en el archivo de configuración “config.inc.php”.
Luego tendremos que importar la base de datos desde el archivo “phpMyAdmin/sql/create_tables.sql”.
Vamos a importarlo con la ayuda de phpMyAdmin.
Abra el enlace “http://[dirección_ip_del_servidor]/pma”
Ingrese el nombre de usuario “pma” y la contraseña “Qwe123”.
Ve a “Importar” , haz clic en “Seleccionar archivo” y selecciona el archivo “sql/create_tables.sql” en el directorio raíz de phpMyAdmin. Debería existir una carpeta llamada “phpMyAdmin” en tu PC con los archivos. Descomprímela si es necesario.
Haz clic en “Siguiente” para comenzar la importación.
4. Configuración
Copiemos el archivo de configuración de la plantilla
cd /var/www/sites/phpMyAdmin/
cp config.sample.inc.php config.inc.php
Abramos el archivo de configuración “/var/www/sites/phpMyAdmin/config.inc.php” y realicemos los siguientes cambios:
Establece un valor aleatorio de 32 caracteres para el atributo “$cfg['blowfish_secret']” . Utiliza cualquier generador de contraseñas para ello.
Elimine los comentarios de todas las líneas de la sección "Configuración de almacenamiento de phpMyAdmin" y establezca el nombre de usuario y la contraseña de la cuenta de servicio de MariaDB para los atributos "controluser" y "controlpass" según corresponda. En nuestro caso, son pmaservice y Qwe123.
Guarde los cambios.
Detalles de acceso para phpMyadmin:
- http://[server’s_ip_address]/pma/
- Iniciar sesión: pma
- Contraseña: Qwe123
Cómo instalar y configurar WordPress en un servidor Linux
1. Ubicación de paquetes y archivos de WordPress
Dirígete al sitio web oficial de WP “ https://ru.wordpress.org/ ” y descarga el archivo a tu PC.
Sube el archivo al servidor en la carpeta “/var/www/sites/” y descomprímelo en la carpeta “wordpress ”.
Copie el contenido de la carpeta raíz “/var/www/sites/wordpress/” del sitio web “/var/www/sites/site1/”.
Dado que copiamos los archivos mediante la consola con permisos de administrador, cambiemos el propietario de la carpeta “/var/www/sites/”, incluyendo el contenido de “virtual” . Esto es necesario para habilitar el acceso completo a la conexión FTP a través del cliente.
cd /var/www/sites/
tar -xzvf wordpress-5.4-ru_RU.tar.gz
cp -R wordpress/* site1/
chown -R virtual:root /var/www/sites
2. Crea una base de datos para WordPress
Inicie sesión en phpMyAdmin y haga clic en "Crear base de datos". Indique un nombre de base de datos arbitrario (en nuestro caso, "wordpress_db") y haga clic en el botón "Crear".
Seleccione la nueva base de datos en la sección izquierda y haga clic en “Privilegios”.
A continuación, haga clic en “Agregar cuenta de usuario”.
Introduzca el nombre de usuario y la contraseña ( wpservice / Qwe123 ) en la ventana que se abre, marque la casilla "Otorgar todos los privilegios en wordpress_db" y haga clic en "Siguiente".
En la página siguiente, haga clic en “Cancelar todo” para restablecer todos los privilegios a nivel de base de datos y haga clic en “Siguiente”.
3. Configuración de WordPress en un servidor Linux
Vaya al directorio raíz de su sitio web y copie el archivo de configuración de la plantilla
cd /var/www/sites/site1/
cp wp-config-sample.php wp-config.php
Abra el archivo “wp-config.php” , introduzca los parámetros de conexión a la base de datos que creamos en el paso anterior y guarde los cambios.
4. Instalar CMS WordPress
Abra el siguiente enlace en el navegador : “http://[dirección_ip_del_servidor]/wp-admin/install.php”.
Rellena todos los campos y haz clic en «Instalar WordPress» . Elige un nombre de usuario y una contraseña aleatorios. En nuestro caso, son wpadmin y Qwe123, respectivamente.
Estos detalles se utilizarán para acceder a WordPress.
Una vez finalizada la instalación, abre el enlace “http://[dirección_ip_del_servidor]/wp-login.php” , introduce los datos de acceso e inicia sesión en WordPress.
Deberías ver una de las plantillas de WordPress en la página principal.
La configuración ha finalizado.
Detalles de acceso a WordPress:
- http://[server’s_ip_address]/wp-login.php
- Iniciar sesión: wpadmin
- Contraseña: Qwe123