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 .
- Previous Arch Linux Installation process – skip the last part with DHCP.
- 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 b >] clave para la contraseña actual de la cuenta raíz y responda con Sí 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/ b > (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/ b >) 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.