Zoeken op website

LAMP installeren (Linux, Apache, MySQL/MariaDB en PHP/PhpMyAdmin) in Arch Linux


Arch Linux biedt een flexibele, moderne systeemomgeving en is een krachtige, meest geschikte oplossing voor het ontwikkelen van webapplicaties op kleine, niet-kritieke systemen, omdat het een volledige Open Source is en de laatste up-to-date releases biedt op Kernels en websoftware voor servers en databases.

Dit hoofddoel van deze tutorial is om u door een volledige stapsgewijze instructies te leiden die uiteindelijk zullen leiden tot het installeren van een van de meest gebruikte softwarecombinaties in webontwikkeling: LAMP (Linux, Apache, MySQL/MariaDB en PHP/PhpMyAdmin ) en het zal je een aantal leuke functies presenteren (snelle en vuile Bash-scripts) die niet aanwezig zijn in een Arch Linux-systeem, maar die het werk bij het maken van meerdere Virtuele Hosts kunnen vergemakkelijken , genereer SSL-certificaten en sleutels die nodig zijn voor veilige HTTS-transacties.

Vereisten

  1. Vorig Arch Linux-installatieproces – sla het laatste deel met DHCP over.
  2. Vorige LEMP-installatie op Arch Linux – alleen het gedeelte met het configureren van Statisch IP-adres en SSH-toegang op afstand.

Stap 1: Installeer de basissoftware LAMP

1. Na een minimale systeeminstallatie met een statisch IP-adres en externe systeemtoegang met SSH, upgrade je je Arch Linux-box met het hulpprogramma pacman.

sudo pacman -Syu

2. Wanneer het upgradeproces is voltooid, installeer dan LAMP uit stukjes, installeer eerst Apache Web Server en start/verifieer elke serverprocesdaemon.

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

3. Installeer de dynamische scripttaal PHP op de server en de bijbehorende Apache-module.

sudo pacman -S php php-apache

4. Installeer bij de laatste stap de MySQL-database, kies 1 (MariaDB) community-databasevork, start vervolgens en controleer de daemonstatus.

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

Nu heb je de standaard LAMP-software geïnstalleerd en ben je begonnen met de standaardconfiguraties tot nu toe.

Stap 2: Beveiligde MySQL-database

5. De volgende stap is het beveiligen van de MySQL-database door een wachtwoord in te stellen voor de root-account, anonieme gebruikersaccounts te verwijderen, de testdatabase te verwijderen en extern inloggen voor gebruiker root niet toe te staan (druk op [ Voer]-sleutel in voor het huidige wachtwoord van het root-account en antwoord met Ja op alle beveiligingsvragen).

sudo mysql_secure_installation

6. Controleer de MySQL-databaseconnectiviteit door de volgende opdracht uit te voeren en verlaat vervolgens de database-shell met de instructie quit of exit.

mysql -u root -p

Stap 3: Wijzig het Apache-hoofdconfiguratiebestand

7. De volgende configuraties hebben grotendeels betrekking op Apache Web Server om een dynamische interface te bieden voor Virtuele hosting met PHP-scripttaal, SSL of niet-SSL virtuele hosts en kan worden gedaan door de httpd-servicebestandsconfiguraties te wijzigen.

Open eerst de hoofd-Apache-bestandsconfiguratie met uw favoriete teksteditor.

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

Voeg helemaal onderaan het bestand de volgende twee regels toe.

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

De rol van Include-instructies hier is om Apache te vertellen dat het vanaf nu verdere configuraties moet lezen van alle bestanden die zich in /etc/httpd/conf/sites-enabled/ (voor virtuele hosting) en /etc/httpd/conf/mods-enabled/ (voor ingeschakelde server modules) systeempaden die eindigen op een .conf extensie.

8. Nadat Apache instructies heeft gekregen over deze twee richtlijnen, maakt u de benodigde systeemmappen aan en geeft u de volgende opdrachten.

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

Het sites-available pad bevat alle Virtual Hosts-configuratiebestanden die niet zijn geactiveerd op Apache, maar het volgende Bash-script zal deze map gebruiken om websites die zich daar bevinden te koppelen en in te schakelen.

Stap 4: Maak a2eniste en a2diste Apache-opdrachten

9. Nu is het tijd om a2ensite en a2dissite Apache-scripts te maken die zullen dienen als opdrachten om het Virtual Host-configuratiebestand in of uit te schakelen. Typ de opdracht cd om terug te keren naar uw $HOME gebruikerspad en maak uw bash a2eniste en a2dissite scripts met behulp van uw favoriete redacteur.

sudo nano a2ensite

Voeg de volgende inhoud toe aan dit bestand.

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

Maak nu een bash-scriptbestand van 2dissite.

sudo nano a2dissite

Voeg de volgende inhoud toe.

#!/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. Nadat de bestanden zijn gemaakt, wijst u uitvoeringsrechten toe en kopieert u ze naar een uitvoerbare map ` PATH om ze voor het hele systeem beschikbaar te maken.

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

Stap 5: Creëer virtuele hosts in Apache

11. Het standaardconfiguratiebestand van de Virtual Host voor de Apache-webserver op Arch Linux wordt geleverd door het httpd-vhosts.conf-bestand in /etc/httpd/conf/extra / pad, maar als je een systeem hebt dat veel virtuele hosts gebruikt, kan het erg moeilijk zijn om bij te houden welke website wel of niet is geactiveerd. Als u een website wilt uitschakelen, moet u alle richtlijnen ervan becommentariëren of verwijderen en dat kan een moeilijke missie zijn als uw systeem veel websites biedt en uw website meer configuratierichtlijnen heeft.

Door sites-beschikbare en sites-enabled paden te gebruiken, wordt de taak van het inschakelen of uitschakelen van websites aanzienlijk vereenvoudigd en worden ook de al uw websiteconfiguratiebestanden, ook al zijn ze geactiveerd of niet.

Bij de volgende stap gaan we de eerste virtuele host construeren die verwijst naar de standaard localhost met het standaard pad DocumentRoot voor het aanbieden van websitebestanden (/srv/http.

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

Voeg hier de volgende Apache-instructies toe.

<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>

De belangrijkste uitspraken hier zijn Poort en Servernaam richtlijnen die Apache instrueren om een netwerkverbinding te openen op poort 80 en alle queries met localhost-naam om te leiden naar serveer bestanden die zich in het pad /srv/http/ bevinden.

12. Nadat het localhost-bestand is gemaakt, activeert u het en start u de httpd-daemon opnieuw om de wijzigingen te bekijken.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Wijs vervolgens uw browser naar http://localhost, als u deze uitvoert vanaf het Arch-systeem of http://Arch_IP als u een systeem op afstand.

Stap 6: Schakel SSL in met virtuele hosting op LAMP

SSL (Secure Sockets Layer) is een protocol dat is ontworpen om HTTP-verbindingen via netwerken of internet te coderen, waardoor gegevensstromen via een beveiligd kanaal kunnen worden verzonden met behulp van symmetrische/asymmetrische cryptografiesleutels en wordt geleverd in Arch Linux via het OpenSSL-pakket.

14. Standaard is de SSL-module niet ingeschakeld op Apache in Arch Linux en kan worden geactiveerd door het verwijderen van commentaar op de mod_ssl.so-module uit de hoofd-httpd.conf configuratiebestand en het bestand Include httpd-ssl.conf in het extra httpd-pad.

Maar om de zaken te vereenvoudigen gaan we een nieuw modulebestand voor SSL maken in het mods-enabled pad en laten we het Apache-hoofdconfiguratiebestand ongemoeid. Maak het volgende bestand voor de SSL-module en voeg de onderstaande inhoud toe.

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

Voeg de volgende inhoud toe.

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. Maak nu een Virtueel Host-bestand dat naar dezelfde localhost-naam verwijst, maar deze keer gebruik maakt van SSL-serverconfiguraties, en wijzig de naam enigszins om u eraan te herinneren dat het staat voor localhost met SSL.

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

Voeg de volgende inhoud toe aan dit bestand.

<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>

Naast Poort en Servernaam richtlijnen zijn andere belangrijke richtlijnen hier die verwijzen naar het SSL Certificaat bestand en het SSL Sleutel bestand dat zijn nog niet gemaakt, dus start Apache Web Server niet opnieuw, anders krijgt u enkele fouten.

16. Om het vereiste SSL-certificaatbestand en de sleutels te maken, installeert u het OpenSSL-pakket en geeft u de onderstaande opdracht uit.

sudo pacman -S openssl

17. Maak vervolgens het volgende Bash-script dat automatisch al uw Apache-certificaten en sleutels in maakt en opslaat. >/etc/httpd/conf/ssl/ systeempad.

sudo nano apache_gen_ssl

Voeg de volgende bestandsinhoud toe, sla deze op en maak deze uitvoerbaar.

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

Als u wilt dat het script systeembreed beschikbaar is, kopieert u het naar een uitvoerbaar ` PATH.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Genereer nu uw Certificaat en Sleutels door het script uit te voeren. Geef uw SSL-opties op en vergeet de certificaatnaam en Common Name niet, zodat deze overeenkomen met uw officiële domein (FQDN).

sudo ./apache_gen_ssl

Nadat het certificaat en de sleutels zijn aangemaakt, vergeet dan niet om uw SSL Virtual Host-certificaat en sleutelconfiguraties aan te passen zodat deze overeenkomen met de naam van dit certificaat.

19. De laatste stap is het activeren van de nieuwe SSL Virtual Host en het opnieuw opstarten van uw server om configuraties toe te passen.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

Dat is het! Om dit te verifiëren, opent u de browser en voegt u Arch IP toe aan de URL met behulp van het HTTPS-protocol: https://localhost of https://system_IP.

Stap 7: Schakel PHP in op Apache

20. Standaard levert Apache alleen de inhoud van statische HTML-bestanden in Arch Linux zonder ondersteuning voor dynamische scripttalen. Om PHP te activeren, opent u eerst het Apache-hoofdconfiguratiebestand en zoekt u vervolgens de volgende LoadModule-instructie en verwijdert u de commentaar (php-apache werkt niet met mod_mpm_event in Arch Linux ).

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

Gebruik [Ctrl]+[w] om de volgende regel te doorzoeken en er commentaar op te geven, zodat deze er zo uitziet.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Maak vervolgens een nieuw bestand voor de PHP-module in het mods-enabled pad met de volgende inhoud.

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

Voeg precies de volgende inhoud toe (je moet mod_mpm_prefork gebruiken).

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

Include conf/extra/php5_module.conf

22. Om de instelling te verifiëren, maakt u voor PHP een bestand met de naam info.php in uw DocumnetRoot (/srv/http/), start u vervolgens Apache opnieuw en wijst u uw browser naar het info.php bestand: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

Dat is het! Als alles eruitziet zoals in de afbeelding hierboven, heb je nu de dynamische server-side scripttaal PHP ingeschakeld op Apache en kun je nu websites ontwikkelen met behulp van Open Source CMS, zoals bijvoorbeeld WordPress.

Als u de Apache-syntaxisconfiguraties wilt verifiëren en een lijst met geladen modules wilt zien zonder de httpd-daemon opnieuw te starten, voert u de volgende opdrachten uit.

sudo apachectl configtest
sudo apachectl -M

Stap 8: PhpMyAdmin installeren en configureren

23. Als u de MySQL-opdrachtregel niet beheerst en eenvoudige externe toegang tot de MySQL-database wilt via de webinterface, moet u het PhpMyAdmin-pakket op uw Arch-box installeren.

sudo pacman -S phpmyadmin php-mcrypt

24. Nadat de pakketten zijn geïnstalleerd, moet u enkele PHP-extensies inschakelen (mysqli.so, mcrypt.so – voor interne authenticatie) en je kunt ook andere modules inschakelen die nodig zijn voor toekomstige CMS-platforms zoals openssl.so, imap.so of iconv.so enz.

sudo nano /etc/php/php.ini

Zoek de bovenstaande extensies en verwijder de opmerkingen.

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

Zoek en lokaliseer in hetzelfde bestand ook de open_basedir-instructie en voeg het PhpMyAdmin-systeempad toe (/etc/webapps/ en /usr/share/webapps/) om ervoor te zorgen dat PHP bestanden onder die mappen kan openen en lezen (als u ook het Virtual Hosts DocumentRoot-pad wijzigt van /srv/http/ naar een andere locatie, moet u het nieuwe pad hier ook toevoegen ).

25. Het laatste wat u hoeft te doen om toegang te krijgen tot de PhpMyAdmin-webinterface is het toevoegen van PhpMyAdmin Apache-instructies op virtuele hosts. Als veiligheidsmaatregel zal ervoor worden gezorgd dat de PhpMyAdmin-webinterface alleen toegankelijk kan zijn vanaf localhost (of systeem-IP-adres) met behulp van het HTTPS-protocol en niet vanaf andere verschillende virtuele hosts. Open dus uw localhost-ssl.conf Apache-bestand en voeg onderaan, vóór de laatste -instructie de volgende inhoud toe.

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. Start daarna de Apache-daemon opnieuw op en wijs uw browser naar het volgende adres. U zou toegang moeten hebben tot uw PhpMyAdmin-webinterface: https://localhost/phpmyadmin of https://system_IP/phpmyadmin.

27. Als je, nadat je bent ingelogd bij PhpMyAdmin, een onderste foutmelding ziet met betrekking tot een blowfish_secret, open en bewerk /etc/webapps/phpmyadmin/config.inc. php-bestand en voeg een willekeurige tekenreeks in, zoals die in de volgende verklaring, en vernieuw vervolgens de pagina.

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

Stap 9: Schakel LAMP System Wide in

28. Als u wilt dat de LAMP-stack automatisch wordt gestart nadat het systeem opnieuw is opgestart, voert u de volgende opdrachten uit.

sudo systemctl enable httpd mysqld

Dit zijn enkele van de belangrijkste configuratie-instellingen op LAMP die nodig zijn om een Arch Linux-systeem te transformeren in een eenvoudig maar krachtig, snel en robuust webplatform met geavanceerde serversoftware voor kleine niet-gebruikers -kritieke omgevingen, maar als je koppig wordt en het toch in een grote productieomgeving wilt gebruiken, moet je jezelf met veel geduld bewapenen en extra aandacht besteden aan pakketupdates en regelmatig systeemback-upimages maken voor een snel systeemherstel in geval van systeemstoringen.