Instale WordPress 5 con Apache en Debian 9

Eliminar el complemento del usuario raíz de MySQL

Este tutorial le mostrar√° c√≥mo instalar y configurar la √ļltima versi√≥n de WordPress 5 sobre una pila LAMP en Debian 9 – Stretch. WordPress, sin duda, es uno de los sistemas de administraci√≥n de contenido o CMS de c√≥digo abierto m√°s populares que se utilizan en estos d√≠as para la publicaci√≥n en Internet, que impulsa a m√°s de 60 millones de sitios web en todo el mundo, ya sean peque√Īos sitios de blogs o grandes marcas notables. Basado en el motor PHP y MySQL, WordPress a menudo se asocia con la colecci√≥n LAMP, ya sea instalada en servidores dedicados o servidores privados virtuales o en proveedores de alojamiento web compartido. El acr√≥nimo LAMP describe una colecci√≥n de software, tambi√©n conocido como paquete de software, que generalmente consta de linux Kernel de c√≥digo abierto, independientemente de la distribuci√≥n elegida, apache Servidor HTTP, que es uno de los servidores web de c√≥digo abierto m√°s populares en Internet debido a su estabilidad, flexibilidad y rendimiento. PHP lenguaje de programaci√≥n interpretado del lado del servidor y MariaDB sistema de gesti√≥n de base de datos relacional (RDBMS), que es uno de los software de base de datos m√°s populares, bifurcado y desarrollado simult√°neamente por la comunidad de c√≥digo abierto de MySQL original.

Requisitos

  • Una instalaci√≥n limpia del sistema operativo Debian 9 en un servidor privado virtual o una m√°quina virtual o directamente en una m√°quina completa dedicada.
  • Acceso remoto SSH en caso de un VPS o un servidor remoto o acceso directo a la consola
  • Al menos una direcci√≥n IP est√°tica para una interfaz de red configurada en el servidor
  • En caso de que la p√°gina web est√© disponible p√ļblicamente en Internet, necesitar√° un nombre de dominio p√ļblico registrado con los registros DNS adecuados configurados. Durante este tutorial, usaremos el ejemplo.com como dominio de ejemplo y una direcci√≥n IP est√°tica desde un espacio privado, en NAT, detr√°s del enrutador principal. Se podr√° acceder al dominio desde Internet mediante el reenv√≠o de puertos Apache 80 y 443 desde el lado del enrutador a la LAN interna de la m√°quina virtual autohospedada.

Instalar el paquete de software LAMP

Lo primero que debe hacer antes de comenzar a instalar todos los componentes LAMP es iniciar sesión en el servidor Debian 9 y realizar un procedimiento actualizado para todos los componentes del sistema, como actualizaciones del kernel, actualizaciones de paquetes o parches de seguridad, emitiendo el siguientes comandos con privilegios de root.

apt-get update
apt-get upgrade
apt-get dist-upgrade

En el siguiente paso, debe configurar el nombre de su m√°quina reemplazando la variable de nombre de host con su propio nombre descriptivo ejecutando el siguiente comando. Tenga en cuenta que es posible que deba reiniciar el sistema para aplicar el nuevo nombre de host en consecuencia.

hostnamectl set-hostname hostname.yourdomain.com

Tambi√©n debe instalar las siguientes utilidades que ser√°n √ļtiles m√°s adelante para varios problemas de soluci√≥n de problemas.

apt install net-tools sudo wget curl bash-completion

Después de que se haya aplicado el nombre de host de la máquina, vuelva a iniciar sesión con privilegios de raíz e instale el servidor Apache HTTP, que, de forma predeterminada, está precompilado en un paquete binario y lo proporcionan los repositorios de Debian 9.

apt install apache2

A continuaci√≥n, instale la √ļltima versi√≥n del int√©rprete de lenguaje PHP y todos los m√≥dulos necesarios para el servidor web Apache para implementar WordPress CMS emitiendo el siguiente comando.

apt install libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-xml php7.0-curl php7.0-mbstring php7.0-mcrypt php7.0-xmlrpc

El √ļltimo componente que falta ahora para que la pila LAMP est√© completa es el servidor de base de datos MariaDB. Ejecute el siguiente comando para instalar el servidor MariaDB junto con el m√≥dulo PHP necesario para acceder a la base de datos desde el servidor Apache HTTP.

apt install php7.0-mysql mariadb-server mariadb-client

Despu√©s de instalar la base de datos MariaDB, inicie el demonio y asegure la base de datos en ejecuci√≥n. mysql_secure_installation gui√≥n como se ilustra en el siguiente extracto. responde principalmente con s√≠ en todas las preguntas que le pide el gui√≥n. Adem√°s, aseg√ļrese de elegir una contrase√Īa segura para la cuenta ra√≠z. Tenga en cuenta que la cuenta ra√≠z de MySQL no es id√©ntica a la cuenta ra√≠z de Linux. El primero se usa solo para administrar la base de datos MariaDB y el segundo es la cuenta de superusuario en todos los sistemas Linux. Estas cuentas nunca se superponen en un sistema.

systemctl start mariadb
mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

A√ļn no hemos terminado de asegurar la base de datos MariaDB. De forma predeterminada, puede iniciar sesi√≥n en MariaDB desde localhost con la cuenta ra√≠z de la base de datos sin que se le solicite una contrase√Īa. Para evitar posibles problemas de seguridad, inicie sesi√≥n en la base de datos con el usuario ra√≠z y emita los siguientes comandos.

mysql -u root -p
MariaDB> use mysql;
MariaDB> update user set plugin='' where User='root';
MariaDB> flush privileges;
MariaDB> quit

Eliminar el complemento del usuario raíz de MySQL

Ahora, pruebe la base de datos intentando iniciar sesi√≥n con la cuenta ra√≠z sin la contrase√Īa. Se le debe negar el acceso a la base de datos MariaDB.

En el siguiente paso, habilitaremos y configuraremos TLS y reescribiremos los módulos para el servidor web Apache, que por defecto están deshabilitados. Ejecute los siguientes comandos para habilitar ambos módulos.

a2enmod rewrite ssl
a2ensite default-ssl.conf

Luego, abra los archivos de configuración de Apache para ambos sitios habilitados y agregue el siguiente bloque debajo del Raiz del documento directiva como se ilustra en la siguiente captura de pantalla.

nano /etc/apache2/sites-enabled/000-default.conf
nano /etc/apache2/sites-enabled/default-ssl.conf

En ambos archivos de configuración agregue el siguiente bloque de código:

    <Directory /var/www/html>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Require all granted
    </Directory>

Otorgar acceso al directorio /var/www/html y permitir anulaciones

en apache predeterminado-ssl.conf Archivo de configuración TLS, también puede agregar el siguiente contenido, si no existe, para mejorar la seguridad del protocolo Apache SSL. Estas líneas de código deberían solucionar las vulnerabilidades comunes de SSL.

SSLProtocol all -SSLv2 -SSLv3
# Add SSL Cipher in one long line
SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder     on
SSLOptions +StrictRequire
 
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

Establezca configuraciones estrictas de SSL en apache2

Si las l√≠neas ilustradas en el extracto anterior ya existen en el archivo de configuraci√≥n de Apache SSL, aseg√ļrese de modificarlas para que se vean como se describe arriba. Para aplicar esta configuraci√≥n, habilite Apache encabezados module y reinicie el servicio ejecutando los siguientes comandos:

a2enmod headers
systemctl restart apache2.service

Para un sitio web de producción, debería ser obligatorio habilitar el módulo Apache TLS porque WordPress CMS genera principalmente contenido dinámico a través de la puerta de enlace PHP y también maneja el proceso de autenticación para sus usuarios internos. El uso de la tecnología TLS garantiza que la información transferida esté encriptada en ambos extremos y que la conexión sea segura. Un tercero o un man-in-the-middle puede interceptar el tráfico pero no puede descifrar el contenido, porque la información no se entrega en texto sin formato.

Después de realizar todos los cambios anteriores, pruebe la configuración de Apache para detectar posibles errores de sintaxis y, si todo está bien, reinicie los demonios LAMP para reflejar todos los cambios realizados hasta el momento y habilite los servicios en todo el sistema emitiendo los siguientes comandos. .

apache2ctl -t
systemctl restart apache2.service mariadb.service
systemctl enable apache2.service mariadb.service

Finalmente, verifique si los servicios Apache y MariaDB han abierto puertos en estado de escucha emitiendo netstat comando y filtrar la salida usando egrep Por ahora, el servidor web Apache debería tener los puertos 80 y 443 (correspondientes a los protocolos HTTP y https) generalmente expuestos y MariaDB solo debería ser vinculante en servidor local: 3306 enchufe. Utilizar el -norte bandera contra netstat Comando para suprimir la visualización de nombres de servicios.

netstat -tlp| egrep 'http|mysql'

Comprobar si se ha iniciado MariaDB

Para asegurarse de que su servidor web sea accesible desde Internet a través de los protocolos HTTP y HTTPS, abra un navegador y navegue hasta su nombre de dominio. Navegando a través del protocolo HTTPS, se mostrará un error de certificado en el navegador. Esto se debe a que el archivo de configuración TLS predeterminado de Apache está configurado para usar certificados autofirmados. Debe aceptar el error de TLS y continuar navegando a la página web predeterminada como se ilustra a continuación.

http://www.tudominio.com

p√°gina de prueba de apache2

https://www.tudominio.com

P√°gina de prueba de Apache 2 en modo SSL

En caso de que no pueda visitar la página web predeterminada de su dominio desde Internet, primero debe verificar si algunas reglas de firewall en el sistema están bloqueando las solicitudes o asegurarse de que los puertos adecuados en el enrutador se reenvíen a su LAN interna en caso de que el servidor se encuentre detrás de un red NAT-ed. También es posible que desee verificar los registros DNS en el panel de registro de su dominio y asegurarse de que apunten a su IP WAN y si los registros terminaron de propagarse en Internet.

Para probar si PHP está funcionando como se esperaba en el lado del servidor, cree un PHP php en /var/www/html/ ruta del sistema, que es la ruta raíz predeterminada del documento web del servidor web Apache, emita el siguiente comando y navegue hasta el siguiente URI desde el navegador para obtener el resultado: http://www.sudominio.com/info.php

echo '<?php phpinfo(); ?>' > /var/www/html/info.php

Página de prueba de información de PHP

Instalar WordPress 5.0

Ahora que la pila LAMP est√° completamente configurada, la instalaci√≥n de WordPress CMS es relativamente sencilla. Primero, inicie sesi√≥n en la base de datos MariaDB y cree una base de datos de instalaci√≥n para WordPress y un usuario con la contrase√Īa adecuada para instalar y administrar WordPress CMS, emitiendo los siguientes comandos. Si√©ntase libre de reemplazar el nombre de la base de datos y las credenciales de la base de datos para que coincidan con sus propios requisitos.

mysql -u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress-user'@'localhost' IDENTIFIED BY 'wordpress-pass';
FLUSH PRIVILEGES;

Crear base de datos MySQL de WordPress y usuario de base de datos

A continuaci√≥n, descargue el √ļltimo tarball de WordPress del sitio web oficial usando wget utilidad y extraer el archivo comprimido con alquitr√°n utilidad. Copie los archivos de instalaci√≥n en la ruta ra√≠z del documento del servidor web Apache emitiendo los siguientes comandos. Adem√°s, aseg√ļrese de eliminar la p√°gina web index.html predeterminada.

cd /tmp
wget http://wordpress.org/latest.tar.gz
tar xfz latest.tar.gz
cp -rf wordpress/* /var/www/html/
rm /var/www/html/index.html

Descarga y descomprime WordPress en tu servidor

Modifique los permisos de la ruta webroot de Apache como se describe a continuación para otorgar el servidor web www-datos permisos completos de escritura del grupo en el directorio de instalación. Esta configuración permitirá que el servidor web Apache cree o modifique archivos y directorios en esta ruta específica del sistema. Los más importantes serían los cargas directorio y .htaccess archivo, que se puede utilizar para controlar y ampliar la funcionalidad de Apache.

chmod -R 775 /var/www/html/
chgrp -R www-data /var/www/html/
ls -al /var/www/html

archivos de WordPress

Ahora que todo está en su lugar, comencemos a instalar WordPress. El proceso de instalación se realizará desde el navegador. Abra un navegador y visite su dominio a través del protocolo HTTPS. En la primera pantalla de la instalación pulse sobre Vamos botón para iniciar la instalación.

Instalador web de WordPress

En la siguiente pantalla de instalación, agregue el nombre de la base de datos, las credenciales de acceso a la base de datos y el host de la base de datos que creó anteriormente para la instalación de WordPress y presione el botón Enviar botón para continuar. La configuración de la base de datos se guardará en /var/www/html/wp-config.php Puede modificar manualmente el archivo en una fecha posterior para fines especiales de WordPress.

Configuración de la base de datos

En la siguiente pantalla haga clic en Ejecutar la instalaci√≥n y complete el t√≠tulo de su sitio web, las credenciales de administrador del sitio web y la direcci√≥n de correo electr√≥nico. Los scripts de instalaci√≥n deben generar autom√°ticamente una contrase√Īa segura. Puede optar por guardar esta contrase√Īa o proporcionar su propia contrase√Īa segura. Cuando hayas terminado, pulsa Instalar WordPress bot√≥n para completar el proceso de instalaci√≥n.

Ejecutar instalación

Información del sitio de WordPress

Finalmente, después de que la instalación se complete con éxito, iniciar sesión al panel de WordPress con las credenciales creadas durante el proceso de instalación y comience a administrar su propio sitio web.

√Čxito en la instalaci√≥n de WordPress

Inicio de sesión de administrador de WordPress

Inicie sesión en el backend de WordPress.

Back-end de WordPress

Panel de administración de WordPress.

Edición de una publicación en el nuevo editor Gutenberg de WordPress.

WordPress 5.0 Frontend con el nuevo tema TwentyNineteen.

¬°Felicidades! Ha instalado con √©xito la √ļltima versi√≥n de WordPress CMS sobre el paquete de software LAMP en Debian 9, nombre en clave Stretch.

Descarga de imagen de m√°quina virtual de este tutorial

Este tutorial está disponible como una imagen de máquina virtual lista para usar en formato ovf/ova que es compatible con VMWare y Virtualbox. La imagen de la máquina virtual utiliza los siguientes detalles de inicio de sesión:

Inicio de sesión SSH/Shell

Nombre de usuario: admin
Contrase√Īa: howtoforge

Este usuario tiene sus derechos.

Nombre de usuario: root
Contrase√Īa: howtoforge

Inicio de sesión de WordPress

Nombre de usuario: admin
Contrase√Īa: howtoforge

Inicio de sesión MySQL

Nombre de usuario: root
Contrase√Īa: howtoforge

La IP de la VM es 192.168.1.100, se puede cambiar en el archivo /etc/network/interfaces. Cambie todas las contrase√Īas anteriores para proteger la m√°quina virtual.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *