Instalación de LAMP (Linux, Apache, MySQL / MariaDB y PHP / PhpMyAdmin) en Arch Linux


Arch Linux proporciona un entorno de sistema de edad de corte flexible y es una potente solución más adecuada para desarrollar aplicaciones web en pequeños sistemas no críticos debido al hecho de que es un código abierto completo y proporciona las últimas versiones actualizadas de Kernels y software web para servidores y bases de datos.

El alcance principal de este tutorial es guiarlo a través de instrucciones completas paso a paso que al final lo llevarán a instalar una de las combinaciones de software más utilizadas en el desarrollo web: LAMP (Linux, Apache, MySQL/MariaDB y PHP/PhpMyAdmin) y le presentará algunas características agradables (scripts Bash rápidos y sucios) que no están presentes en un sistema Arch Linux, pero pueden facilitar el trabajo al crear múltiples Hosts virtuales , generar certificados SSL y claves necesarias para transacciones seguras HTTS .

  1. Previous Arch Linux Installation process – skip the last part with DHCP.
  2. Previous LEMP installation on Arch Linux – only the part with configuring Static IP Address and remote SSH access.

Paso 1: Instale el software básico LAMP

1. Después de una instalación mínima del sistema con una dirección IP estática y acceso remoto al sistema usando SSH , actualice su caja Arch Linux usando la utilidad pacman .

$ sudo pacman -Syu

2. Cuando finalice el proceso de actualización, instale LAMP por partes, primero instale Servidor web Apache e inicie/verifique cada demonio de proceso del servidor.

$ sudo pacman -S apache 
$ sudo systemctl start httpd 
$ sudo systemctl status httpd

3. Instale PHP lenguaje de scripting dinámico del lado del servidor y su módulo Apache.

$ sudo pacman -S php php-apache

4. En el último paso, instale la base de datos MySQL , elija 1 ( MariaDB ) bifurcación de la base de datos de la comunidad, luego inicie y verifique el estado del demonio.

$ sudo pacman -S mysql 
$ sudo systemctl start mysqld 
$ sudo systemctl status mysqld

Ahora tiene el software LAMP básico instalado y ha comenzado con las configuraciones predeterminadas hasta ahora.

Paso 2: base de datos MySQL segura

5. El siguiente paso es proteger la base de datos MySQL estableciendo una contraseña para la cuenta de root, eliminar las cuentas de usuarios anónimos, eliminar la base de datos de prueba y no permitir el inicio de sesión remoto para el usuario root (presione [ Enter ] clave para la contraseña actual de la cuenta raíz y responda con a todas las preguntas de seguridad).

$ sudo mysql_secure_installation

6. Verifique la conectividad de la base de datos MySQL ejecutando el siguiente comando y luego deje el shell de la base de datos con la instrucción salir o salir .

$ mysql -u root -p

Paso 3: modificar el archivo de configuración principal de Apache

7. Las siguientes configuraciones están relacionadas en su mayoría con Servidor web Apache para proporcionar una interfaz dinámica para Alojamiento virtual con lenguaje de scripting PHP, Hosts virtuales SSL o no SSL y pueden se puede hacer modificando las configuraciones del archivo de servicio httpd.

Primero abra la configuración del archivo Apache principal con su editor de texto favorito.

$ sudo nano /etc/httpd/conf/httpd.conf

En la parte inferior del archivo, agregue las siguientes dos líneas.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

El papel de las declaraciones Incluir aquí es decirle a Apache que de ahora en adelante, debería leer más configuraciones de todos los archivos que residen en /etc/httpd/conf/sites-enabled/ (para Alojamiento virtual ) y /etc/httpd/conf/mods-enabled/ (para módulos de servidor habilitado ) rutas del sistema que terminan en una extensión .conf .

8. Después de que Apache haya recibido instrucciones sobre estas dos directivas, cree los directorios del sistema necesarios emitiendo los siguientes comandos.

$ sudo mkdir /etc/httpd/conf/sites-available
$ sudo mkdir /etc/httpd/conf/sites-enabled
$ sudo mkdir /etc/httpd/conf/mods-enabled

La ruta de sitios disponibles contiene todos los archivos de configuración de hosts virtuales que no están activados en Apache, pero el siguiente script Bash utilizará este directorio para vincular y habilitar sitios web que se encuentran allí.

Paso 4: Cree los comandos Apache a2eniste y a2diste

9. Ahora es el momento de crear los scripts Apache a2ensite y a2dissite que servirán como comandos para habilitar o deshabilitar el archivo de configuración de Virtual Host. Escriba el comando cd para volver a su ruta de usuario /home/mial y cree sus scripts bash a2eniste y a2dissite usando su editor favorito.

$ sudo nano a2ensite

Agregue el siguiente contenido en este archivo.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Ahora cree un archivo de script bash a2dissite.

$ sudo nano a2dissite

Agregue el siguiente contenido.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. Una vez que se hayan creado los archivos, asigne los permisos de ejecución y cópielos en un /usr/local/bin:/usr/local/sbin:/usr/bin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl directorio ejecutable para que estén disponibles en todo el sistema.

$ sudo chmod +x a2ensite a2dissite
$ sudo cp a2ensite a2dissite /usr/local/bin/

Paso 5: crear hosts virtuales en Apache

11. El archivo de configuración predeterminado del host virtual para el servidor web Apache en Arch Linux es proporcionado por el archivo httpd-vhosts.conf ubicado en la ruta /etc/httpd/conf/extra/ pero Si tiene un sistema que usa muchos hosts virtuales, puede ser muy difícil hacer un seguimiento de qué sitio web está activado o no. Si desea deshabilitar un sitio web, debe comentar o eliminar todas sus directivas y esa puede ser una misión difícil si su sistema proporciona muchos sitios web y su sitio web tiene más directivas de configuración.

El uso de rutas de sitios disponibles y sitios habilitados simplifica enormemente el trabajo de habilitar o deshabilitar sitios web y también conserva todos los archivos de configuración de sus sitios web aunque estén activados o no.

En el siguiente paso, vamos a construir el primer host virtual que apunte al host local predeterminado con la ruta predeterminada DocumentRoot para servir archivos de sitios web (/srv/http .

$ sudo nano /etc/httpd/conf/sites-available/localhost.conf

Agregue las siguientes directivas de Apache aquí.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Las declaraciones más importantes aquí son las directivas Port y ServerName que le indican a Apache que abra una conexión de red en el puerto 80 y redirija todas las consultas con el nombre de localhost a servir archivos ubicados en la ruta /srv/http/.

12. Una vez creado el archivo localhost, actívelo y luego reinicie el demonio httpd para ver los cambios.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Luego, apunte su navegador a http:/localhost , si lo ejecuta desde el sistema Arch o http:/Arch_IP si usa un sistema remoto.

Paso 6: habilite SSL con alojamiento virtual en LAMP

SSL ( Capa de conexión segura ) es un protocolo diseñado para cifrar conexiones HTTP a través de redes o Internet, que hacen que el flujo de datos se transmita a través de un canal seguro utilizando claves de criptografía simétricas/asimétricas. y se proporciona en Arch Linux mediante el paquete OpenSSL .

14. Por defecto, el módulo SSL no está habilitado en Apache en Arch Linux y se puede activar descomentando el módulo mod_ssl.so del archivo de configuración principal httpd.conf y Incluir httpd-ssl.conf archivo ubicado en una ruta httpd adicional.

Pero para simplificar las cosas, vamos a crear un nuevo archivo de módulo para SSL en la ruta habilitada para mods y dejar intacto el archivo de configuración principal de Apache. Cree el siguiente archivo para el módulo SSL y agregue el contenido a continuación.

$ sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Agregue el siguiente contenido.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. Ahora cree un archivo de host virtual que apunte al mismo nombre de localhost pero usando configuraciones de servidor SSL esta vez, y cambie ligeramente su nombre para recordarle que significa localhost con SSL.

$ sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Agregue el siguiente contenido en este archivo.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Además de las directivas Puerto y ServerName , otras directivas importantes aquí son las que apuntan al archivo Certificado SSL y al archivo Clave SSL que aún no se han creado, así que no reinicie el servidor web Apache o obtendrá algunos errores.

16. Para crear el archivo de certificado SSL y las claves necesarias, instale el paquete OpenSSL emitiendo el siguiente comando.

$ sudo pacman -S openssl

17. Luego cree el siguiente script Bash que crea y almacena automáticamente todos sus Certificados Apache y Claves en /etc/httpd/conf./ssl/ ruta del sistema.

$ sudo nano apache_gen_ssl

Agregue el siguiente contenido de archivo, luego guárdelo y hágalo ejecutable.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0
$ sudo chmod +x apache_gen_ssl

Si desea que el script esté disponible en todo el sistema, cópielo en un ejecutable /usr/local/bin:/usr/local/sbin:/usr/bin:/opt/cuda/bin:/usr/lib/jvm/predeterminado/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl .

$ sudo cp /apache_gen_ssl  /usr/local/bin/

18. Ahora genere su Certificado y Claves ejecutando el script. Proporcione sus opciones de SSL y no olvide el nombre del certificado y el Nombre común para que coincida con su dominio oficial ( FQDN ).

$ sudo ./apache_gen_ssl

Una vez que se hayan creado el certificado y las claves, no olvide modificar su certificado de host virtual SSL y las configuraciones de claves para que coincidan con el nombre de este certificado.

19. El último paso es activar el nuevo host virtual SSL y reiniciar su servidor para aplicar las configuraciones.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

¡Eso es! Para verificarlo, abra el navegador y agregue Arch IP en la URL usando el protocolo HTTPS: https:/localhost o https:/system_IP .

Paso 7: habilite PHP en Apache

20. De forma predeterminada, Apache solo ofrece contenido de archivos estáticos HTML en Arch Linux sin compatibilidad con lenguajes de scripts dinámicos. Para activar PHP, primero abra el archivo de configuración principal de Apache, luego busque y descomente la siguiente instrucción LoadModule ( php-apache no funciona con mod_mpm_event en Arch Linux ).

$ sudo nano /etc/httpd/conf/httpd.conf

Usando [Ctrl] + [w] busque y comente la siguiente línea para que se vea así.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Luego, cree un nuevo archivo para el módulo PHP en la ruta habilitada para mods con el siguiente contenido.

$ sudo nano /etc/httpd/conf/mods-enabled/php.conf

Agregue exactamente el siguiente contenido (debe usar mod_mpm_prefork ).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. Para verificar la configuración, cree un archivo PHP llamado info.php en su DocumnetRoot (/srv/http/), luego reinicie Apache y apunte su navegador a info Archivo .php : https: //localhost/info.php .

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

¡Eso es! Si todo se ve como la imagen de arriba, ahora tiene el lenguaje de script PHP dinámico del lado del servidor habilitado en Apache y ahora puede desarrollar sitios web usando CMS de código abierto como WordPress por ejemplo.

Si desea verificar las configuraciones de sintaxis de Apache y ver una lista de módulos cargados sin reiniciar el demonio httpd, ejecute los siguientes comandos.

$ sudo apachectl configtest
$ sudo apachectl -M

Paso 8: Instalar y configurar PhpMyAdmin

23. Si no domina la línea de comandos MySQL y desea un acceso remoto simple a la base de datos MySQL proporcionada a través de la interfaz web, entonces necesita el paquete PhpMyAdmin instalado en su caja Arch.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Una vez instalados los paquetes, debe habilitar algunas extensiones PHP ( mysqli.so , mcrypt.so - para la autenticación interna) y también puede habilitar otras módulos necesarios para futuras plataformas CMS como openssl.so , imap.so o iconv.so , etc.

$ sudo nano /etc/php/php.ini

Busque y descomente las extensiones anteriores.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

Además, en el mismo archivo, busque y ubique la declaración open_basedir y agregue la ruta del sistema PhpMyAdmin (/etc/webapps/ y /usr/share/webapps/) para asegurarse de que PHP pueda acceder y leer archivos en esos directorios (si, también, cambia la ruta de DocumentRoot de Virtual Hosts de /srv/http/ a otra ubicación, también debe agregar la nueva ruta aquí ).

25. Lo último que debe hacer para acceder a la interfaz web de PhpMyAdmin es agregar declaraciones de Apache de PhpMyAdmin en hosts virtuales. Como medida de seguridad, se asegurará de que la interfaz web de PhpMyAdmin sea accesible solo desde el host local (o la dirección IP del sistema) utilizando el protocolo HTTPS y no desde otros hosts virtuales diferentes. Entonces, abra su archivo Apache localhost-ssl.conf y en la parte inferior, antes de la última instrucción agregue el siguiente contenido.

$ sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. Luego, reinicie el demonio Apache y apunte su navegador a la siguiente dirección y debería poder acceder a su interfaz web PhpMyAdmin: https:/localhost/phpmyadmin o https:/system_IP/phpmyadmin .

27. Si, después de iniciar sesión en PhpMyAdmin, ve un error inferior relacionado con un blowfish_secret , abra y edite el archivo /etc/webapps/phpmyadmin/config.inc.php y inserte una cadena aleatoria como la de la siguiente declaración, luego actualice la página.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Paso 9: Habilite LAMP en todo el sistema

28. Si desea que la pila LAMP se inicie automáticamente después de reiniciar el sistema, ejecute los siguientes comandos.

$ sudo systemctl enable httpd mysqld

Estos son algunos de los ajustes de configuración principales en LAMP necesarios para transformar un sistema Arch Linux en una plataforma web simple pero potente, rápida y robusta con software de servidor de última generación para pequeños no entornos críticos, pero si se vuelve obstinado y aún desea usarlo en un entorno de producción grande, debe armarse con mucha paciencia y prestar atención adicional a las actualizaciones de paquetes y hacer imágenes de respaldo del sistema regulares para una restauración rápida del sistema en caso de fallas del sistema.

Todos los derechos reservados © Linux-Console.net • 2019-2021