Instal·lació de LAMP (Linux, Apache, MySQL/MariaDB i PHP/PhpMyAdmin) a Arch Linux


Arch Linux proporciona un entorn de sistema d'edat de tall flexible i és una potent solució més adequada per desenvolupar aplicacions web en petits sistemes no crítics a causa del fet que és un codi obert complet i proporciona les últimes versions actualitzades en nuclis i programari web per a servidors i bases de dades.

Aquest objectiu principal d'aquest tutorial és guiar-vos a través d'unes instruccions completes pas a pas que, al final, us portaran a instal·lar una de les combinacions de programari més utilitzades al desenvolupament web: LAMP (Linux, Apache, MySQL/MariaDB i PHP/PhpMyAdmin ) i us presentarà algunes funcions agradables (scripts Bash ràpids i bruts) que no estan presents en un sistema Arch Linux, però que poden facilitar la creació de múltiples amfitrions virtuals , genereu Certificats SSL i Claus necessaris per a transaccions HTTS segures.

  1. Procés d'instal·lació d'Arch Linux anterior: ometeu l'última part amb DHCP.
  2. Instal·lació de LEMP anterior a Arch Linux: només la part amb la configuració de l'Adreça IP estàtica i l'accés SSH remot.

Pas 1: instal·leu el programari bàsic LAMP

1. Després d'una instal·lació mínima del sistema amb adreça IP estàtica i accés remot al sistema mitjançant SSH, actualitzeu la vostra caixa d'Arch Linux mitjançant la utilitat pacman.

$ sudo pacman -Syu

2. Quan acabi el procés d'actualització, instal·leu LAMP a partir de peces, primer instal·leu Servidor web Apache i inicieu/verifiqueu tots els dimonis de procés del servidor.

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

3. Instal·leu el llenguatge de script dinàmic PHP i el seu mòdul Apache.

$ sudo pacman -S php php-apache

4. A l'últim pas instal·leu la base de dades MySQL, seleccioneu 1 forquilla de base de dades de la comunitat (MariaDB) i, a continuació, inicieu i comproveu l'estat del dimoni.

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

Ara teniu el programari LAMP bàsic instal·lat i començat amb les configuracions predeterminades fins ara.

Pas 2: base de dades MySQL segura

5. El següent pas és protegir la base de dades MySQL establint una contrasenya per al compte root, eliminar els comptes d'usuaris anònims, eliminar la base de dades de prova i no permetre l'inici de sessió remot per a l'usuari root ( premeu [Intro] per a la contrasenya actual del compte root i respon amb a totes les preguntes de seguretat).

$ sudo mysql_secure_installation

6. Verifiqueu la connectivitat de la base de dades MySQL executant l'ordre següent i després deixeu l'intèrpret d'ordres de la base de dades amb la instrucció quit o exit.

$ mysql -u root -p

Pas 3: modifiqueu el fitxer de configuració principal d'Apache

7. La majoria de les configuracions següents estan relacionades amb Servidor web Apache per proporcionar una interfície dinàmica per a Allotjament virtual amb llenguatge de script PHP, hosts virtuals SSL o no SSL i poden es pot fer modificant les configuracions del fitxer de servei httpd.

Primer obriu la configuració principal del fitxer Apache amb el vostre editor de text preferit.

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

A la part inferior del fitxer, afegiu les dues línies següents.

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

El paper de les declaracions Inclou aquí és dir a Apache que a partir d'ara, hauria de llegir més configuracions de tots els fitxers que resideixen a /etc/httpd/conf/sites-enabled/ (per a Allotjament virtual) i /etc/httpd/conf/mods-enabled/ (per a mòduls de servidor habilitat) que acaben en una extensió .conf.

8. Després que Apache hagi rebut instruccions sobre aquestes dues directives, creeu els directoris del sistema necessaris emetent les ordres següents.

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

La ruta llocs disponibles conté tots els fitxers de configuració d'amfitrions virtuals que no estan activats a Apache, però el següent script de Bash utilitzarà aquest directori per enllaçar i habilitar els llocs web que s'hi troben.

Pas 4: creeu les ordres Apache a2eniste i a2diste

9. Ara és el moment de crear scripts Apache a2ensite i a2dissite que serviran com a ordres per habilitar o desactivar el fitxer de configuració de l'amfitrió virtual. Escriviu l'ordre cd per tornar a la vostra ruta d'usuari $HOME i creeu els vostres scripts bash a2eniste i a2dissite amb el vostre editor preferit.

$ sudo nano a2ensite

Afegiu el contingut següent a aquest fitxer.

#!/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

Ara creeu un fitxer d'script bash a2dissite.

$ sudo nano a2dissite

Afegiu el contingut següent.

#!/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. Un cop creats els fitxers, assigneu permisos d'execució i copieu-los a un directori executable PATH perquè estiguin disponibles a tot el sistema.

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

Pas 5: creeu amfitrions virtuals a Apache

11. El fitxer de configuració predeterminat de l'amfitrió virtual per al servidor web Apache a Arch Linux el proporciona el fitxer httpd-vhosts.conf situat a la ruta /etc/httpd/conf/extra/ però si teniu un sistema que utilitza molts hosts virtuals pot ser molt difícil fer un seguiment de quin lloc web està activat o no i. Si voleu desactivar un lloc web, heu de comentar o eliminar totes les seves directives i això pot ser una missió difícil si el vostre sistema proporciona molts llocs web i el vostre lloc web té més directives de configuració.

L'ús de camins llocs disponibles i llocs habilitats simplifica molt la feina d'activar o desactivar llocs web i també conserva tots els fitxers de configuració dels vostres llocs web encara que estiguin activats o no.

En el següent pas, construirem el primer amfitrió virtual que apunta al localhost predeterminat amb la ruta predeterminada DocumentRoot per servir fitxers de llocs web (/srv/http.

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

Afegiu les següents directives d'Apache aquí.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        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>

Les declaracions més importants aquí són les directives Port i ServerName que indiquen a Apache que obri una connexió de xarxa al port 80 i redirigeixi totes les consultes amb el nom d'host local a servir fitxers situats a la ruta /srv/http/.

12. Un cop creat el fitxer localhost, activeu-lo i reinicieu el dimoni httpd per veure els canvis.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Aleshores, apunteu el vostre navegador a http://localhost, si l'executeu des del sistema Arch o http://Arch_IP si utilitzeu un sistema remot.

Pas 6: habiliteu SSL amb allotjament virtual a LAMP

SSL (Secure Sockets Layer) és un protocol dissenyat per xifrar connexions HTTP a través de xarxes o Internet, que fan que el flux de dades es transmeti a través d'un canal segur mitjançant claus de criptografia simètriques/asimètriques. i es proporciona al paquet OpenSSL d'Arch Linux.

14. Per defecte, el mòdul SSL no està habilitat a Apache a Arch Linux i es pot activar eliminant el comentari del mòdul mod_ssl.so del fitxer de configuració principal httpd.conf i Inclou Fitxer httpd-ssl.conf situat al camí httpd addicional.

Però per simplificar les coses, crearem un fitxer de mòdul nou per a SSL a la ruta mods habilitats i deixarem el fitxer de configuració principal d'Apache intac. Creeu el fitxer següent per al mòdul SSL i afegiu el contingut següent.

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

Afegiu el contingut següent.

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. Ara creeu un fitxer d'amfitrió virtual que apunti al mateix nom d'host local però aquesta vegada utilitzant configuracions del servidor SSL i canvieu-ne lleugerament el nom per recordar-vos que significa localhost amb SSL.

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

Afegiu el contingut següent a aquest fitxer.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        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>

A més de les directives Port i Nom del servidor, altres directives importants aquí són les que apunten al fitxer Certificat SSL i al fitxer Clau SSL que encara no s'han creat, així que no reinicieu el servidor web Apache o obtindreu alguns errors.

16. Per crear el fitxer de certificat SSL i les claus necessaris, instal·leu el paquet OpenSSL emetent l'ordre següent.

$ sudo pacman -S openssl

17. A continuació, creeu el següent script Bash que crea i emmagatzema automàticament tots els vostres Certificats Apache i Claus a /etc/httpd/conf /ssl/ ruta del sistema.

$ sudo nano apache_gen_ssl

Afegiu el contingut del fitxer següent, deseu-lo i feu-lo executable.

#!/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 voleu que l'script estigui disponible a tot el sistema, copieu-lo a un PATH executable.

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

18. Ara genereu el vostre Certificat i Claus executant l'script. Proporcioneu les vostres opcions SSL i no oblideu el nom del certificat i el Nom comú perquè coincideixin amb el vostre domini oficial (FQDN).

$ sudo ./apache_gen_ssl

Un cop creats el certificat i les claus, no oblideu modificar el vostre certificat d'amfitrió virtual SSL i la configuració de les claus perquè coincideixi amb el nom d'aquest certificat.

19. L'últim pas és activar el nou host virtual SSL i reiniciar el servidor per aplicar configuracions.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

Això és! Per verificar-ho, obriu el navegador i afegiu Arch IP a l'URL mitjançant el protocol HTTPS: https://localhost o https://system_IP.

Pas 7: habiliteu PHP a Apache

20. Per defecte, Apache només ofereix contingut de fitxers estàtics HTML a Arch Linux sense suport de llenguatges de script dinàmic. Per activar PHP, obriu primer el fitxer de configuració principal d'Apache i, a continuació, cerqueu i descomenteu la següent instrucció LoadModule (php-apache no funciona amb mod_mpm_event a Arch Linux ).

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

Amb [Ctrl]+[w] cerqueu i comenteu la línia següent perquè es vegi així.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. A continuació, creeu un fitxer nou per al mòdul PHP a la ruta mods habilitats amb el contingut següent.

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

Afegiu el contingut exactament següent (heu d'utilitzar 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. Per verificar la configuració, creeu PHP un fitxer anomenat info.php al vostre DocumnetRoot (/srv/http/), després reinicieu Apache i dirigiu el vostre navegador a info .php: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

Això és! Si tot s'assembla a la imatge de dalt, ara teniu activat el llenguatge de script PHP dinàmic del costat del servidor a Apache i ara podeu desenvolupar llocs web utilitzant CMS de codi obert com WordPress, per exemple.

Si voleu verificar les configuracions de sintaxi d'Apache i veure una llista de mòduls carregats sense reiniciar el dimoni httpd, executeu les ordres següents.

$ sudo apachectl configtest
$ sudo apachectl -M

Pas 8: instal·lar i configurar PhpMyAdmin

23. Si no domineu la línia d'ordres de MySQL i voleu un accés remot senzill a la base de dades MySQL mitjançant la interfície web, necessiteu el paquet PhpMyAdmin instal·lat a la vostra caixa d'Arch.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Un cop instal·lats els paquets, heu d'habilitar algunes extensions PHP (mysqli.so, mcrypt.so – per a l'autenticació interna) i també podeu habilitar altres mòduls necessaris per a futures plataformes CMS com openssl.so, imap.so o iconv.so, etc.

$ sudo nano /etc/php/php.ini

Localitzeu i descomenteu les extensions anteriors.

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

A més, al mateix fitxer, cerqueu i localitzeu la instrucció open_basedir i afegiu la ruta del sistema PhpMyAdmin (/etc/webapps/ i /usr/share/webapps/ >) per assegurar-vos que PHP pot accedir i llegir els fitxers d'aquests directoris (si també canvieu el camí de l'arrel del document d'amfitrions virtuals de /srv/http/ a una altra ubicació, també haureu d'afegir el camí nou aquí). ).

25. L'últim que heu de fer per accedir a la interfície web PhpMyAdmin és afegir declaracions d'Apache PhpMyAdmin als hosts virtuals. Com a mesura de seguretat, s'assegurarà que la interfície web de PhpMyAdmin només sigui accessible des de localhost (o adreça IP del sistema) mitjançant el protocol HTTPS i no des d'altres hosts virtuals diferents. Per tant, obriu el vostre fitxer Apache localhost-ssl.conf i a la part inferior, abans de l'última declaració , afegiu el contingut següent.

$ 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. Després, reinicieu el dimoni Apache i apunteu el vostre navegador a l'adreça següent i hauríeu de poder accedir a la vostra interfície web de PhpMyAdmin: https://localhost/phpmyadmin o https://system_IP/ phpmyadmin.

27. Si, després d'iniciar sessió a PhpMyAdmin, veus un error inferior relacionat amb un blowfish_secret, obriu i editeu el fitxer /etc/webapps/phpmyadmin/config.inc.php i inseriu una cadena aleatòria com la de la declaració següent i, a continuació, actualitzeu la pàgina.

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

Pas 9: habiliteu LAMP a tot el sistema

28. Si voleu que la pila LAMP s'iniciï automàticament després de reiniciar el sistema, executeu les ordres següents.

$ sudo systemctl enable httpd mysqld

Aquests són alguns dels paràmetres de configuració principals a LAMP necessaris per transformar un sistema Arch Linux en una plataforma web senzilla, però potent, ràpida i robusta amb un programari de servidor d'última generació per a petits no. -entorns crítics, però si us poseu tossut i encara voleu utilitzar-lo en un entorn de producció gran, hauríeu d'armar-vos amb molta paciència i prestar una atenció addicional a les actualitzacions de paquets i fer imatges de còpia de seguretat del sistema periòdicament per a una restauració ràpida del sistema en cas de fallades del sistema.