Instalar Apache, PHP y WordPress en Ubuntu (Servidor Local)

Foro sobre el CMS WordPress
Responder
gbeltran
Mensajes: 328
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Instalar Apache, PHP y WordPress en Ubuntu (Servidor Local)

Mensaje por gbeltran »

Dejo aquí los pasos para instalar WordPress en un servidor local en Ubuntu (versión 22.04 LTS)

Pasos para instalar Apache, PHP y WordPress en un servidor local utilizando, por ejemplo, Ubuntu 22.04 LTS. Lo primero, asegúrate de tener acceso a la terminal y privilegios de administrador.

1. Verificar la versión de Ubuntu

Antes de comenzar, es útil saber qué versión de Ubuntu estás utilizando. Abre la terminal y ejecuta uno de los siguientes comandos:

Código: Seleccionar todo

lsb_release -a
o

Código: Seleccionar todo

cat /etc/os-release
2. Instalar Apache

2.1. Actualizar el sistema
Es recomendable actualizar tu sistema antes de instalar nuevos paquetes:

Código: Seleccionar todo

sudo apt update
sudo apt upgrade
2.2. Instalar Apache
Instala el servidor web Apache con el siguiente comando:

Código: Seleccionar todo

sudo apt install apache2
2.3. Iniciar y habilitar Apache
Inicia el servicio de Apache y habilítalo para que se inicie automáticamente al arrancar el sistema:

Código: Seleccionar todo

sudo systemctl start apache2
sudo systemctl enable apache2
2.4. Verificar el estado de Apache
Asegúrate de que Apache se esté ejecutando correctamente:

Código: Seleccionar todo

sudo systemctl status apache2
2.5. Probar la instalación
Abre un navegador y escribe `http://localhost`. Deberías ver la página de bienvenida de Apache.

3. Instalar PHP

3.1. Instalar PHP y módulos necesarios
Instala PHP y los módulos requeridos para WordPress:

Código: Seleccionar todo

sudo apt install php libapache2-mod-php php-mysql php-xml php-curl php-mbstring php-zip php-gd php-soap php-intl
3.2. Reiniciar Apache
Reinicia Apache para que reconozca los cambios:

Código: Seleccionar todo

sudo systemctl restart apache2
3.3. Verificar la instalación de PHP
Crea un archivo PHP para verificar que PHP está funcionando:

Código: Seleccionar todo

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Abre un navegador y ve a `http://localhost/info.php`. Deberías ver la información de PHP. Recuerda eliminar este archivo después de la verificación:

Código: Seleccionar todo

sudo rm /var/www/html/info.php
4. Instalar WordPress

4.1. Crear un directorio para WordPress
Crea un nuevo directorio llamado `wordpress` en `/var/www/html`:

Código: Seleccionar todo

sudo mkdir /var/www/html/wordpress
4.2. Descargar WordPress
Descarga la última versión de WordPress:

Código: Seleccionar todo

cd /tmp
wget https://wordpress.org/latest.tar.gz
4.3. Descomprimir WordPress
Descomprime el archivo descargado:

Código: Seleccionar todo

tar -xvzf latest.tar.gz
4.4. Mover los archivos a tu directorio de WordPress
Mueve los archivos descomprimidos al directorio que creaste:

Código: Seleccionar todo

sudo mv wordpress/* /var/www/html/wordpress/
4.5. Dar permisos adecuados
Cambia la propiedad del directorio y sus archivos:

Código: Seleccionar todo

sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
4.6. Configurar Apache para WordPress
Crea un archivo de configuración para WordPress:

Código: Seleccionar todo

sudo nano /etc/apache2/sites-available/wordpress.conf
Agrega el siguiente contenido:

Código: Seleccionar todo

<VirtualHost *:80>
    ServerAdmin admin@localhost
    DocumentRoot /var/www/html/wordpress
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html/wordpress>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
Guarda y cierra el archivo. Luego, habilita el nuevo sitio y el módulo de reescritura:

Código: Seleccionar todo

sudo a2ensite wordpress.conf
sudo a2enmod rewrite
4.7. Reiniciar Apache
Reinicia Apache para aplicar los cambios:

Código: Seleccionar todo

sudo systemctl restart apache2
5. Instalar MySQL o MariaDB

5.1. Instalar MySQL
Si prefieres usar MySQL, instálalo con:

Código: Seleccionar todo

sudo apt install mysql-server
4.8. Opción B: Instalar MariaDB
Si prefieres usar MariaDB (que es un fork de MySQL y es completamente compatible), puedes instalarlo con:

Código: Seleccionar todo

sudo apt install mariadb-server
4.9. Asegurar la instalación de MySQL/MariaDB
Después de instalar el servidor de base de datos, es recomendable ejecutar un script de seguridad que te ayudará a configurar algunas opciones de seguridad:

Código: Seleccionar todo

sudo mysql_secure_installation
Sigue las instrucciones en pantalla para establecer una contraseña de root, eliminar usuarios anónimos, deshabilitar el inicio de sesión remoto para el usuario root, y eliminar la base de datos de prueba.

5. Instalar phpMyAdmin
Una vez que tengas MySQL o MariaDB instalado y configurado, puedes proceder a instalar phpMyAdmin. Ejecuta el siguiente comando:

Código: Seleccionar todo

sudo apt install phpmyadmin
Durante la instalación, se te pedirá que elijas el servidor web que deseas configurar. Selecciona Apache y presiona Enter. Luego, se te preguntará si deseas usar dbconfig-common para configurar la base de datos. Selecciona Sí y proporciona la contraseña de la base de datos que configuraste anteriormente.

5.1. Configurar Apache para phpMyAdmin
Después de la instalación, es posible que necesites habilitar el acceso a phpMyAdmin en Apache. Puedes hacerlo creando un enlace simbólico en el directorio de configuración de Apache:

Código: Seleccionar todo

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
5.2. Reiniciar Apache
Reinicia Apache para aplicar los cambios:

Código: Seleccionar todo

sudo systemctl restart apache2
5.3. Acceder a phpMyAdmin
Ahora puedes acceder a phpMyAdmin abriendo un navegador y yendo a: http://localhost/phpmyadmin

Inicia sesión con el usuario root y la contraseña que configuraste durante la instalación.

Cuando tengas todo listo, inicia la instalación de WordPress en local accediendo a : http://localhost/wordpress, donde wordpress es el directorio que hemos creado en /var/www/html y en donde están alojados los archivos de instalación del CMS.

NOTA: Es posible que te aparezca un error durante el proceso de instalación, el error "Unable to write to wp-config.php file". Esto indica que WordPress no tiene permisos para crear o escribir en el archivo `wp-config.php`. Para solucionar este problema, puedes seguir estos pasos:

1. Crear el archivo `wp-config.php` manualmente

1.Navegar al directorio de WordPress**:

Código: Seleccionar todo

   cd /var/www/html/wordpress
2. Copiar el archivo de configuración de ejemplo**:
WordPress incluye un archivo de configuración de ejemplo llamado `wp-config-sample.php`. Puedes copiarlo y renombrarlo a `wp-config.php`:

Código: Seleccionar todo

   sudo cp wp-config-sample.php wp-config.php
3. Editar el archivo `wp-config.php`**:
Abre el archivo `wp-config.php` en un editor de texto:

Código: Seleccionar todo

   sudo nano wp-config.php

Tras esto, podrás continuar con la instalación sin problemas.

Iré anotando en respuestas a este post algunos posibles errores más que pudieran surgir...
Guillermo
Site Admin
Mensajes: 362
Registrado: 13 May 2023, 00:32
Ubicación: Valencia - España
Contactar:

Re: Instalar Apache, PHP y WordPress en Ubuntu (Servidor Local)

Mensaje por Guillermo »

Problema con la instalación de plugins en WordPress en modo local: se debe a los permisos de archivos y directorios. Cuando WordPress no puede escribir en el sistema de archivos, te pide que ingreses credenciales FTP o SFTP.

Para resolver esto, puedes seguir estos pasos:

1. Cambiar la propiedad de los archivos y directorios**: Asegúrate de que los archivos y directorios de tu instalación de WordPress sean propiedad del usuario que está ejecutando el servidor web (en tu caso, probablemente `www-data`). Puedes hacer esto con el siguiente comando:

Código: Seleccionar todo

 sudo chown -R www-data:www-data /ruta/a/tu/wordpress
Reemplaza `/ruta/a/tu/wordpress` con la ruta real a tu instalación de WordPress.

2. Ajustar los permisos: Los permisos 755 para directorios y 644 para archivos son generalmente adecuados. Puedes establecer los permisos de la siguiente manera:

Código: Seleccionar todo

   find /ruta/a/tu/wordpress -type d -exec chmod 755 {} \;  # Para directorios
   find /ruta/a/tu/wordpress -type f -exec chmod 644 {} \;  # Para archivos
3. Desactivar la opción de FTP en WordPress: Si prefieres que WordPress no te pida las credenciales de FTP, puedes agregar la siguiente línea en el archivo `wp-config.php` de tu instalación de WordPress:

Código: Seleccionar todo

   define('FS_METHOD', 'direct');
Esto le indica a WordPress que use el método directo para las actualizaciones y la instalación de plugins, en lugar de intentar usar FTP.

Después de realizar estos cambios, deberías poder instalar y actualizar plugins directamente desde el panel de administración de WordPress sin que te pida las credenciales de FTP.

NOTA: Eso no me ha funcionado. Pruebo lo siguiente:

Sí funciona!! Agregar tu usuario al grupo www-data
Si deseas que tu usuario local tenga acceso a los archivos de WordPress, puedes agregar tu usuario al grupo www-data. Esto te permitirá tener permisos de escritura sin cambiar los permisos de los archivos a 777, lo cual no es seguro. Para hacerlo, ejecuta:

Código: Seleccionar todo

sudo usermod -aG www-data $USER
Después de ejecutar este comando, cierra la sesión y vuelve a iniciarla para que los cambios surtan efecto.

2. Cambiar la propiedad de los archivos
Si prefieres que tu usuario tenga acceso total a los archivos de WordPress, puedes cambiar la propiedad de los archivos a tu usuario. Sin embargo, esto no es recomendable en un entorno de producción. Si decides hacerlo, puedes ejecutar:
sudo chown -R $USER:$USER /var/www/html/wordpress
3. Verificar permisos de wp-content
Asegúrate de que el directorio wp-content y sus subdirectorios tengan los permisos correctos. Puedes establecer permisos más restrictivos que 777, como 755 para directorios y 644 para archivos, y asegurarte de que tu usuario tenga acceso:

Código: Seleccionar todo

sudo find /var/www/html/wordpress/wp-content -type d -exec chmod 755 {} \;  # Para directorios
sudo find /var/www/html/wordpress/wp-content -type f -exec chmod 644 {} \;  # Para archivos
4. Verificar la configuración de PHP
Asegúrate de que la configuración de PHP no esté restringiendo el acceso a los directorios. Revisa el archivo php.ini y verifica la directiva open_basedir. Si está habilitada, asegúrate de que incluya la ruta a tu instalación de WordPress.

5. Reiniciar el servidor web
Después de realizar cambios en los permisos o la propiedad, asegúrate de reiniciar el servidor web:

Código: Seleccionar todo

sudo systemctl restart apache2
6. Probar la instalación de plugins
Después de realizar estos cambios, intenta nuevamente instalar un plugin o realizar una actualización en WordPress.

AHORA YA FUNCIONA LA INSTALACIÓN DE PLUGINS!
Guillermo
Site Admin
Mensajes: 362
Registrado: 13 May 2023, 00:32
Ubicación: Valencia - España
Contactar:

Re: Instalar Apache, PHP y WordPress en Ubuntu (Servidor Local)

Mensaje por Guillermo »

TEMA ESTRUCTURA PERMALINKS: Crear el archivo .htaccess:

Pasos para crear el archivo .htaccess
Crear el archivo .htaccess: Puedes crear el archivo manualmente en el directorio raíz de tu instalación de WordPress. Abre una terminal y navega a la carpeta de tu instalación de WordPress:

Código: Seleccionar todo

cd /var/www/html/wordpress
Luego, crea el archivo .htaccess:

Código: Seleccionar todo

sudo touch .htaccess
Configurar el archivo .htaccess: Abre el archivo .htaccess en un editor de texto. Puedes usar nano o cualquier otro editor que prefieras.

Código: Seleccionar todo

sudo nano .htaccess
Agrega el siguiente contenido básico para WordPress:

Código: Seleccionar todo

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Guardar y salir: Si estás usando nano, guarda los cambios presionando CTRL + O, luego presiona Enter, y sal del editor presionando CTRL + X.
Ajustar permisos: Asegúrate de que el archivo .htaccess tenga los permisos correctos. Generalmente, los permisos 644 son adecuados:

Código: Seleccionar todo

sudo chmod 644 .htaccess
Verificar la configuración de Apache: Asegúrate de que el módulo mod_rewrite esté habilitado en Apache, ya que es necesario para que las reglas de reescritura funcionen. Puedes habilitarlo con el siguiente comando:

Código: Seleccionar todo

sudo a2enmod rewrite
Luego, reinicia Apache:

Código: Seleccionar todo

sudo systemctl restart apache2
Probar los enlaces permanentes: Después de crear y configurar el archivo .htaccess, vuelve a la configuración de enlaces permanentes en el panel de administración de WordPress y guarda los cambios. Esto debería actualizar las reglas de reescritura y permitir que tus enlaces permanentes funcionen correctamente.

Si no funciona, cambiar el archivo de configuración del directorio de Apache:

Código: Seleccionar todo

cd /etc/apache2/sites-available/wordpress.conf

sudo nano /etc/apache2/sites-available/wordpress.conf
Y escribir en el mismo:

Código: Seleccionar todo

<Directory /var/www/html/wordpress>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
Guillermo
Site Admin
Mensajes: 362
Registrado: 13 May 2023, 00:32
Ubicación: Valencia - España
Contactar:

Re: Instalar Apache, PHP y WordPress en Ubuntu (Servidor Local)

Mensaje por Guillermo »

Problema con los enlaces permanentes (SEO Friendly):

Agregar al archivo general de configuración de Apache (etc/apache2/sites-available/000-default.conf ) lo siguiente:

Código: Seleccionar todo

<Directory /var/www/html>
    AllowOverride All
</Directory>
Sería así (si utilizas nano como editor):

Código: Seleccionar todo

usuario@maquina:~$ sudo nano /etc/apache2/sites-available/000-default.conf
El archivo de configuración quedará así:

Código: Seleccionar todo

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf


<Directory /var/www/html>
    AllowOverride All
</Directory>
</VirtualHost>
Si no está configurado como All, cámbialo y guarda el archivo.

Ahora ya podrás cambiar la opción de enlaces permanentes a tu gusto en WordPress.

Con esto último, ya lo tengo todo listo!
Guillermo
Site Admin
Mensajes: 362
Registrado: 13 May 2023, 00:32
Ubicación: Valencia - España
Contactar:

Re: Instalar Apache, PHP y WordPress en Ubuntu (Servidor Local)

Mensaje por Guillermo »

Preparando un serie de posts en Indaga.net sobre el tema.... https://indaga.net/instalar-un-servidor ... myadmin-i/
Volviendo al cross-blogging, aunque esea entre mí mismo...
El término "cross-blogging" se refiere a la práctica de colaborar entre diferentes blogs o bloggers para crear contenido conjunto, compartir publicaciones o promocionar el trabajo de otros. Esta colaboración puede tomar varias formas, como:

1. Publicaciones de invitados: Un blogger escribe un artículo para ser publicado en el blog de otro. Esto permite que ambos bloggers lleguen a nuevas audiencias y compartan su experiencia.

2. Entrevistas: Un blogger puede entrevistar a otro blogger y publicar la conversación en su propio blog, lo que ayuda a ambos a ganar visibilidad.

3. Series de publicaciones: Varios bloggers pueden colaborar en una serie de publicaciones sobre un tema específico, donde cada uno contribuye con su perspectiva o experiencia.

4. Menciones y enlaces: Los bloggers pueden mencionar y enlazar a otros blogs en sus publicaciones, lo que puede ayudar a aumentar el tráfico y la visibilidad de ambos.

5. Eventos y webinars: Los bloggers pueden organizar eventos en línea o webinars juntos, donde comparten conocimientos y atraen a sus respectivas audiencias.

Beneficios del cross-blogging:
- Aumento de la audiencia: Al colaborar con otros bloggers, puedes llegar a nuevas audiencias que de otro modo no te conocerían.
- Mejora del SEO: Los enlaces entre blogs pueden mejorar el posicionamiento en motores de búsqueda, ya que los motores de búsqueda valoran los enlaces de calidad.
- Diversificación del contenido: La colaboración puede aportar nuevas ideas y perspectivas, enriqueciendo el contenido de ambos blogs.
- Construcción de relaciones: Fomenta la creación de redes y relaciones dentro de la comunidad de bloggers.

Así, el cross-blogging es una estrategia efectiva para aumentar la visibilidad, mejorar el contenido y construir relaciones dentro de la comunidad de blogs.
Guillermo
Site Admin
Mensajes: 362
Registrado: 13 May 2023, 00:32
Ubicación: Valencia - España
Contactar:

Re: Instalar Apache, PHP y WordPress en Ubuntu (Servidor Local)

Mensaje por Guillermo »

Módulos PHP necesarios para funcionar con WordPress, phpMyadmin y NextCloud instalados en un servidor local Apache en Ubuntu (Linux):

Para utilizar phpMyAdmin, WordPress y Nextcloud en Ubuntu Mate, necesitarás instalar varios módulos de PHP. A continuación, te detallo los módulos recomendados para cada uno de estos servicios:


Módulos de PHP necesarios:


phpMyAdmin:

php-mbstring
php-zip
php-gd
php-json
php-xml
php-mysql (o php-mysqli)

WordPress:
php-mbstring
php-zip
php-gd
php-json
php-xml
php-mysql (o php-mysqli)
php-curl (opcional, pero recomendado para algunas funcionalidades)

Nextcloud:
php-mbstring
php-zip
php-gd
php-json
php-xml
php-mysql (o php-mysqli)
php-curl
php-intl (recomendado para soporte de internacionalización)
php-bcmath (recomendado para algunas funciones de Nextcloud)
php-gmp (opcional, pero recomendado para algunas funcionalidades)

Instalación de los módulos
Puedes instalar todos estos módulos utilizando el siguiente comando en la terminal:

Código: Seleccionar todo

sudo apt update
sudo apt install php-mbstring php-zip php-gd php-json php-xml php-mysql php-curl php-intl php-bcmath php-gmp
Reiniciar el servidor web

Después de instalar los módulos, asegúrate de reiniciar tu servidor web (Apache o Nginx) para que los cambios surtan efecto:

Para Apache:

Código: Seleccionar todo

sudo systemctl restart apache2
Para Nginx:

Código: Seleccionar todo

    sudo systemctl restart nginx
Con estos módulos instalados, deberías poder utilizar phpMyAdmin, WordPress y Nextcloud sin problemas.

Ejemplo:

Código: Seleccionar todo

Obj:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Obj:2 https://ppa.launchpadcontent.net/openshot.developers/ppa/ubuntu jammy InRelease       
Obj:3 http://es.archive.ubuntu.com/ubuntu jammy InRelease                       
Obj:4 https://repo.librewolf.net librewolf InRelease  
Obj:5 http://es.archive.ubuntu.com/ubuntu jammy-updates InRelease
Obj:6 http://es.archive.ubuntu.com/ubuntu jammy-backports InRelease
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Se pueden actualizar 3 paquetes. Ejecute «apt list --upgradable» para verlos.
Sistema actualizado. Ahora vamos a hacer un upgrade
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Calculando la actualización... Hecho
Get more security updates through Ubuntu Pro with 'esm-apps' enabled:
  vlc-plugin-qt libvlc5 libpodofo0.9.7 libzvbi-common vlc-data libvlccore9
  libheif1 vlc imagemagick vlc-bin libjs-jquery-ui libpathplan4 vlc-l10n
  graphviz libavdevice58 libgvpr2 libgvc6 ffmpeg libopenexr25 python3-scipy
  libpostproc55 libcgraph6 libmagickcore-6.q16-6-extra vlc-plugin-samba
  libcdt5 libavcodec58 libmagickwand-6.q16-6 vlc-plugin-notify libavutil56
  imagemagick-6.q16 libswscale5 libmagickcore-6.q16-6 vlc-plugin-access-extra
  vlc-plugin-skins2 libgsl27 vlc-plugin-video-splitter liblab-gamut1
  libswresample3 imagemagick-6-common vlc-plugin-video-output libavformat58
  libzvbi0 libgslcblas0 libde265-0 libvlc-bin vlc-plugin-base
  vlc-plugin-visualization libavfilter7
Learn more about Ubuntu Pro at https://ubuntu.com/pro
Los siguientes paquetes se han retenido:
  distro-info-data grub-efi-amd64-bin grub-efi-amd64-signed
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 3 no actualizados.
Sistema listo. Ahora vamos a limpiar con autoremove
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 3 no actualizados.
guillermo@guillermo-HP-EliteDesk-800-G1-SFF:~$ 
Responder