Ir al contenido principal

Cómo instalar en Ubuntu 18.04 — Linux, Apache, MySQL y PHP

 Resultado de imagen para lamp linux
Instala Apache usando el administrador de paquetes de Ubuntu, apt:
sudo apt update
       
sudo apt install apache2
       
Como éste es un comando sudo, estas operaciones son ejecutadas con los privilegios de superusuario. Te preguntará por la contraseña de tu cuenta regular para verificar tus intenciones.
Una vez hayas autenticado tu contraseña, apt te informará cuáles paquetes se instalarán y cuánto espacio en disco será requerido. Digita Y y después Enter para continuar, así, la instalación procederá.

Ajuste del cortafuegos para permitir el tráfico web

Asumiendo que seguiste las instrucciones de configuración inicial del servidor y que habilitaste el cortafuegos UFW, ahora podrás asegurarte que tu cortafuegos permite el tráfico HTTP y HTTPS. Para hacerlo, verifica que el UFW tiene un perfil de aplicación para Apache mediante el comando:
sudo ufw app list
       
Output
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Si solicitas la información del perfil Apache Full, se debería mostrar que el tráfico se encuentra habilitado para los puertos 80 y 443:
sudo ufw app info "Apache Full"
       
Output
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
  80,443/tcp

Para permitir el tráfico de entrada HTTP y HTTPS para este perfil, digita:
sudo ufw allow in "Apache Full"
       
Puedes hacer una comprobación instantánea de que todo ha ido según lo planeado visitando la dirección IP pública de tu servidor en un navegador (si aún no conoces la dirección IP pública de tu servidor en la siguiente sección encontrarás cómo hallarla):
http://your_server_ip

Cómo encontrar la dirección IP pública de tu servidor

Si no conoces la dirección IP pública de tu servidor, existen varias formas de encontrarla. Usualmente, es la dirección que usas para conectar tu servidor a través de SSH.
Hay diferentes formas de buscarla con la línea de comandos. En primer lugar, puedes usar la herramienta iproute2 para obtener tu IP, digitando lo siguiente:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
       
Esto retornará dos o tres líneas. Todas serán direcciones correctas, sin embargo, es posible que tu computador solo pueda usar una de ellas, entonces es recomendable que las pruebes todas.
Un método alternativo es el uso de la utilidad curl para contactar un servicio externo que te diga cómo él ve a tu servidor. Esto se hace preguntándole a un servidor específico cuál es tu dirección IP:
sudo apt install curl
       
curl http://icanhazip.com
       
Sin importar el método que uses para obtener tu dirección IP, escríbela en la barra de dirección de tu navegador web para ver la página predeterminada del Apache.

Paso 2 — Instalar MySQL

Ahora que tienes tu servidor web activo y funcional, es el momento de instalar MySQL. MySQL es un sistema de administración de bases de datos. Basicamente, él organizará y proveerá acceso a las bases de datos donde tu sitio podrá guardar información.
De nuevo, usa apt para adquirir e instalar este software:
sudo apt install mysql-server
       
Nota: En este caso, no es necesario que uses sudo apt update antes del comando. Ya que lo usaste recientemente cuando instalaste Apache, el índice de paquetes de tu computador debería encontrarse actualizado.
De nuevo se te desplegará una lista de paquetes a instalar, así como el espacio en disco que requerirá. Presiona Y para continuar.
Cuando la instalación esté completa, debes ejecutar un archivo de comandos de seguridad que viene preinstalado con MySQL, éste removerá algunos parámetros peligrosos, así como asegurará el acceso a tu base de datos. Ejecuta el archivo interactivo de comandos mediante:
sudo mysql_secure_installation
       
Se te preguntará si quieres configurar el conector de validación de contraseña: VALIDATE PASSWORD PLUGIN.
Nota: Habilitar esta funcionalidad dependerá de juzgar las necesidades de tu servidor. Si está habilitada una contraseña que no cumpla con un criterio específico, será rechazada por MySQL y generará un error. Esto podría ser un problema si utilizas contraseñas débiles en conjunto con software que configura automáticamente credenciales de usuario de MySQl, como por ejemplo los paquetes de Ubuntu para phpMyAdmin. Es seguro dejar esta validación deshabilitada, pero recuerda siempre utilizar contraseñas únicas y fuertes para las credenciales de las bases de datos.
Responde Y si estás de acuerdo, cualquier otra respuesta continuará sin realizar la habilitación.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Si respondiste “yes”, se te solicitará que selecciones el nivel de validación de contraseña. Debes tener en cuenta que si digitas 2 representando el nivel más fuerte, recibirás errores al intentar utilizar una contraseña que no contenga números, letras mayúsculas y minúsculas, así como caracteres especiales; además la contraseña no podrá estar basada en palabras comunes en un diccionario.
There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Sin importar el nivel escogido para VALIDATE PASSWORD PLUGIN, tu servidor te solicitará, a continuación, seleccionar y confirmar la contraseña para el usuario root de MySQL. Ésta es una cuenta administrativa dentro MySQL con privilegios incrementados. Puede ser entendida de manera similar a la cuenta root del servidor mismo (Sin embargo, estarás configurando una cuenta específica para MySQL). Asegúrate de utilizar una contraseña fuerte y única, no debería dejarse en blanco.
Si habilitaste la validación de contraseña, se te mostrará qué tan fuerte es la contraseña para la cuenta root que acabas de introducir y tu servidor preguntará si quieres cambiarla. Si crees que es adecuado como está, digita N para seleccionar "no" en la línea de comandos:
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Para las siguientes preguntas, presiona Y y pulsa la tecla Enter en cada sugerencia. Esto removerá algunos usuarios anónimos y la base de datos de prueba, deshabilitará ingresos remotos del root, y cargará estas nuevas reglas, de tal modo que MySQL respete inmediatamente los cambios que se acaban de hacer.
En este punto, tu sistema de bases de datos se encuentra configurado y puedes seguir con la instalación de PHP, el componente final de la pila LAMP.

Paso 3 — Instalar PHP

PHP es el componente de tu configuración que procesa código para desplegar contenido dinámico. Puede ejecutar archivos, conectarse a tus bases de datos MySQL para obtener información, y manejar la visualización del contenido procesado sobre tu servidor web.
Una vez más usaremos el sistema apt para instalar PHP. Adicionalmente lo podemos configurar para que se ejecute sobre el servidor Apache y para que se comunique con la base de datos MySQL:
sudo apt install php libapache2-mod-php php-mysql
       
Esto debería instalar PHP sin problemas, sin embargo, probaremos esta instalación en este momento.
En la mayoría de los casos, desearás modificar la forma mediante la cual Apache sirve archivos cuando un directorio es solicitado. En este momento, si un usuario solicita un directorio del servidor, Apache buscará, en primera instancia, un archivo llamado index.html. Nosotros queremos que el servidor web le dé prelación a los archivos PHP sobre cualquier otro archivo. Para lo cual haremos que el Apache busque el archivo index.php en primer lugar.
Para lograrlo, digita el siguiente comando para abrir el archivo dir.conf en un editor de texto con privilegios de superusuario:
sudo nano /etc/apache2/mods-enabled/dir.conf
       
Debería verse semejante a esto:
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Mueve el archivo de índice de PHP (subrayado arriba) a la primera posición después de la especificación DirectoryIndex, debería verse similar a:
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Cuando termines, graba y cierra el archivo presionando las teclas Ctrl + X. Confirma los cambios presionando Y, y a continuación pulsa la tecla Enter para verificar el lugar de grabación del archivo.
A continuación, deberás reiniciar el servidor Apache para que tus cambios sean reconocidos, lo puedes hacer mediante el comando:
sudo systemctl restart apache2
       
También podrás verificar el estado del servicio apache2 utilizando systemctl:
sudo systemctl status apache2
       
Sample Output
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start

Para ampliar la funcionalidad de PHP, tienes la posibilidad de instalar algunos módulos adicionales. Para ver las opciones disponibles de módulos y librerías de PHP, envía los resultados de apt search a less, un paginador que te permitirá navegar dentro de la salida de otro comando:
apt search php- | less
       
Usa las flechas para moverte hacia arriba y abajo, y pulsa Q para salir.
Como resultado obtendrás todos los componentes opcionales que puedes instalar. El sistema te mostrará una descripción corta de cada uno de ellos:
bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n
:

Para indagar más sobre las funcionalidades de cada módulo, simplemente puedes buscar en la web su descripción, o alternativamente, puedes ver la descripción larga de cada paquete, digitando:
apt show package_name
       
La salida será extensiva, con un campo en particular llamado Description que tendrá una explicación más extensa acerca de la funcionalidad que el módulo provee.
Por ejemplo, para ver las funcionalidades del módulo php-cli, podrías digitar:
apt show php-cli
       
En compañía de mucha más información, verás algo como lo siguiente:
Output
Description: command-line interpreter for the PHP scripting language (default)
 This package provides the /usr/bin/php command interpreter, useful for
 testing PHP scripts from a shell or performing general shell scripting tasks.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Ubuntu's default
 PHP version (currently 7.2).

Si después de tu consulta decides instalar algún paquete, lo puedes hacer mediante el comando apt install, de la misma forma que lo has hecho para otro software.
Si te das cuenta que necesitas instalar php-cli, puedes escribir:
sudo apt install php-cli
       
Si deseas instalar más de un módulo, lo puedes hacer listándolos separados por espacio, después del comando apt install, semejante a lo siguiente:
sudo apt install package1 package2 ...
       
Para este punto, tu pila LAMP se encuentra instalada y configurada. Sin embargo, antes de hacer más cambios o de desplegar una aplicación, sería beneficioso hacer una prueba proactiva de la configuración de PHP, quizá haya alguna situación que merezca alguna atención en este momento.

Paso 4 — Evaluar el procesamiento de PHP sobre tu servidor web

Con el objetivo de evaluar si tu sistema está configurado de manera correcta para usar PHP, crea una archivo de comandos básico, llamado info.php. Para que Apache pueda encontrar y servir este archivo de manera correcta, debe ser alojado en un directorio muy específico, que es llamado "web root".
En Ubuntu 18.04, este directorio se encuentra localizado en /var/www/html/. Crea el archivo en ese lugar digitando:
sudo nano /var/www/html/info.php
       
Esto creará un archivo en blanco. Introduce el siguiente código PHP válido, dentro del archivo de texto:
info.php
<?php
phpinfo();
?>

Cuando termines, graba y cierra el archivo.

Comentarios

Post

Otorgar permisos en carpeta /var/www/html

  Si tenemos un servidor web apache sobre Linux que está recién instalado, es probable que al intentar guardar archivos en la carpeta /var/www/html (que es donde se alojan las páginas y aplicaciones web) tengamos problemas porque nuestra cuenta de usuario no cuenta con permisos de escritura. Una manera de solucionarlo es otorgar todos lo permisos sobre dicha carpeta con el comando chmod: sudo chmod 777 /var/www/html Sin embargo esta solución no es la mejor en términos de seguridad, ya que le estamos dando permisos de lectura y escritura a cualquier usuario del sistema, dando la posibilidad de que cualquiera pueda modificar los archivos de nuestras aplicaciones con o sin autorización. Una solución más segura es cambiar el propietario de la carpeta /var/www/html para que seamos nosotros mismos a través de nuestra cuenta de usuario. Suponiendo que nuestra cuenta es &quot;webmaster&quot;, usando el comando chown podemos cambiar el propietario así: sudo chown w

crear un usuario en mysql ubuntu server

Vamos empezando por crear un usuario nuevo desde la consola de MySQL: mysql - h localhost - u root - p   CREATE USER ' nombre_usuario '@'localhost' IDENTIFIED BY ' tu_contrasena '; Lamentablemente, a este punto el nuevo usuario no tiene permisos para hacer algo con las bases de datos. Por consecuencia si el usuario intenta identificarse (con la contraseña establecida), no será capaz de acceder a la consola de MySQL. Por ello, lo primero que debemos hacer es porporcionarle el acceso requerido al usuario con la información que requiere. GRANT ALL PRIVILEGES ON * . * TO ' nombre_usuario '@'localhost'; Los asteriscos en este comando hacen referencia a la base de datos y la tabla (respectivamente) a la cual el nuevo usuario tendrá acceso; específicamente este comando permite al usuario leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas. Una vez que has finalizado con los permi