Installation af LAMP (Linux, Apache, MySQL/MariaDB og PHP/PhpMyAdmin) i Arch Linux


Arch Linux giver et fleksibelt system med miljøtilpasset aldring og er en stærk, bedst egnet løsning til udvikling af webapplikationer på små ikke-kritiske systemer, fordi det er en komplet Open Source og giver de sidste opdaterede udgivelser på kerner og websoftware til servere og databaser.

Dette hovedområde i denne vejledning er at guide dig gennem en komplet trinvis vejledning, der i sidste ende vil føre til installation af en af de mest anvendte softwarekombinationer i Webudvikling: LAMP (Linux, Apache, MySQL/MariaDB og PHP/PhpMyAdmin) og det vil præsentere dig nogle gode funktioner (hurtige og beskidte Bash-scripts), der ikke er til stede i et Arch Linux-system, men som kan lette jobbet med at oprette flere virtuelle værter , generer SSL-certifikater og nøgler , der er nødvendige for sikre HTTS -transaktioner.

  1. Forrige Arch Linux-installationsproces - spring den sidste del over med DHCP.
  2. Tidligere LEMP-installation på Arch Linux - kun den del, der konfigurerer Statisk IP-adresse og fjern SSH-adgang .

Trin 1: Installer Basic Software LAMP

1. Efter minimal systeminstallation med statisk IP-adresse og ekstern systemadgang ved hjælp af SSH skal du opgradere din Arch Linux-boks ved hjælp af hjælpeprogrammet pacman .

$ sudo pacman -Syu

2. Når opgraderingsprocessen er færdig med at installere LAMP fra stykker, skal du først installere Apache Web Server og starte/kontrollere hver serverprocesdemon.

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

3. Installer PHP dynamisk script-sprog på serversiden og dets Apache-modul.

$ sudo pacman -S php php-apache

4. På det sidste trin skal du installere MySQL -databasen, vælge 1 ( MariaDB ) community database fork derefter starte og kontrollere dæmonstatus.

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

Nu har du den grundlæggende LAMP-software installeret og startet med standardkonfigurationer indtil videre.

Trin 2: Sikker MySQL-database

5. Det næste trin er at sikre MySQL -databasen ved at indstille en adgangskode til root-konto, fjerne anonyme brugerkonti, fjerne testdatabase og ikke tillade fjernlogin til brugerrod (tryk på [ Enter ] -tasten til root-kontoens aktuelle adgangskode og svar med Ja på alle sikkerhedsspørgsmål).

$ sudo mysql_secure_installation

6. Bekræft MySQL-databaseforbindelse ved at køre følgende kommando, og lad derefter database shell med afslut eller afslut udsagn.

$ mysql -u root -p

Trin 3: Rediger Apache-hovedkonfigurationsfil

7. Følgende konfigurationer er de fleste af dem relateret til Apache Web Server for at give en dynamisk grænseflade til Virtual Hosting med PHP-scripting sprog, SSL eller ikke-SSL Virtual Hosts og kan gøres ved at ændre httpd-servicefilkonfigurationer.

Åbn først Apache-hovedkonfiguration med din foretrukne teksteditor.

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

Hent nederst i filen, tilføj følgende to linjer.

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

Rollen for Inkluder udsagn her er at fortælle Apache, at den fra nu af skal læse yderligere konfigurationer fra alle filer, der findes i /etc/httpd/conf/sites-enabled/ (til Virtual Hosting ) og /etc/httpd/conf/mods-enabled/ (for enabled server modules) systemstier, der ender på en .conf udvidelse.

8. Når Apache er blevet instrueret i disse to direktiver, skal du oprette de nødvendige systemmapper, der udsteder følgende kommandoer.

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

Stien tilgængelige sider indeholder alle konfigurationsfiler for virtuelle værter, der ikke er aktiveret på Apache, men det næste Bash-script bruger denne mappe til at linke og aktivere websteder, der er placeret der.

Trin 4: Opret a2eniste og a2diste Apache-kommandoer

9. Nu er det tid til at oprette a2ensite og a2dissite Apache-scripts, der fungerer som kommandoer til at aktivere eller deaktivere Virtual Host-konfigurationsfil. Skriv kommandoen cd for at vende tilbage til din $ HOME brugersti og oprette dine bash a2eniste og a2dissite scripts ved hjælp af din favoritredaktør.

$ sudo nano a2ensite

Tilføj følgende indhold i denne fil.

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

Opret nu a2dissite bash-scriptfil.

$ sudo nano a2dissite

Tilføj følgende indhold.

#!/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. Efter at filerne var oprettet, tildel udfør tilladelser og kopier dem til et $ PATH eksekverbart bibliotek for at gøre dem tilgængelige i hele systemet.

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

Trin 5: Opret virtuelle værter i Apache

11. Virtual Host-standardkonfigurationsfil til Apache-webserver på Arch Linux leveres af httpd-vhosts.conf -fil i /etc/httpd/conf/extra/ sti, men hvis du har et system, der bruger mange virtuelle værter, kan det være meget svært at holde styr på, hvilket websted der er aktiveret eller ej, og. Hvis du vil deaktivere et websted, skal du kommentere eller slette alle dets direktiver, og det kan være en vanskelig mission, hvis dit system leverer mange websteder, og dit websted har flere konfigurationsdirektiver.

Brug af websteder-tilgængelige og websteder-aktiverede stier forenkler i høj grad jobbet med aktivering eller deaktivering af websteder og bevarer også alle dine websteds konfigurationsfiler, selvom de er aktiveret eller ej.

På det næste trin skal vi konstruere den første virtuelle vært, der peger på standard localhost med standardstien DocumentRoot til servering af webstedsfiler (/srv/http .

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

Tilføj følgende Apache-direktiver her.

<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 vigtigste udsagn her er Port og Servernavn -direktiver, der beder Apache om at åbne en netværksforbindelse på port 80 og omdirigere alle forespørgsler med localhost-navn til serverfiler placeret i /srv/http/ sti.

12. Når localhost-filen er oprettet, skal du aktivere den og derefter genstarte httpd-dæmonen for at se ændringer.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Ret derefter din browser til http:/localhost , hvis du kører den fra Arch-systemet eller http:/Arch_IP , hvis du bruger et eksternt system.

Trin 6: Aktivér SSL med Virtual Hosting på LAMP

SSL ( Secure Sockets Layer ) er en protokol designet til at kryptere HTTP-forbindelser over netværk eller internet, som får datastrøm til at blive transmitteret over en sikker kanal ved hjælp af symmetriske/asymmetriske kryptografitaster og leveres i Arch Linux af OpenSSL -pakken.

14. Som standard er SSL-modul ikke aktiveret på Apache i Arch Linux og kan aktiveres ved at kommentere mod_ssl.so -modul fra hovedkonfigurationsfilen httpd.conf og Inkluder httpd-ssl.conf -fil placeret i ekstra httpd-sti.

Men for at forenkle ting skal vi oprette en ny modulfil til SSL i mods-aktiveret sti og lade hoved-Apache-konfigurationsfilen være uberørt. Opret følgende fil til SSL-modul, og tilføj nedenstående indhold.

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

Tilføj følgende indhold.

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. Opret nu en Virtual Host-fil, der peger på det samme localhost-navn, men bruger SSL-serverkonfigurationer denne gang, og skift navnet lidt for at minde dig om, at det står for localhost med SSL.

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

Tilføj følgende indhold i denne fil.

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

Udover direktiverne Port og Servernavn er andre vigtige direktiver her dem, der peger på SSL-certifikat -fil og SSL-nøgle -fil, som er endnu ikke oprettet, så genstart ikke Apache Web Server, ellers får du nogle fejl.

16. For at oprette krævet SSL-certifikatfil og nøgler skal du installere OpenSSL -pakke, der udsteder nedenstående kommando.

$ sudo pacman -S openssl

17. Opret derefter følgende Bash script, der automatisk opretter og gemmer alle dine Apache-certifikater og nøgler i /etc/httpd/conf/ssl/ systemsti.

$ sudo nano apache_gen_ssl

Tilføj følgende filindhold, gem det, og gør det eksekverbart.

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

Hvis du vil have scriptet til rådighed i hele systemet, skal du kopiere det til en eksekverbar $ PATH .

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

18. Generer nu dit certifikat og nøgler ved at køre scriptet. Angiv dine SSL-indstillinger, og glem ikke certifikatnavnet og Almindeligt navn for at matche dit officielle domæne ( FQDN ).

$ sudo ./apache_gen_ssl

Når certifikat og nøgler er oprettet, skal du ikke glemme at ændre dit SSL Virtual Host-certifikat og nøglekonfigurationer for at matche navnet på dette certifikat.

19. Det sidste trin er at aktivere ny SSL Virtual Host og genstarte din server for at anvende konfigurationer.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

Det er det! For at bekræfte det skal du åbne browseren og tilføje Arch IP på URL ved hjælp af HTTPS-protokol: https:/localhost eller https:/system_IP .

Trin 7: Aktivér PHP på Apache

20. Som standard serverer Apache kun HTML-statiske filindhold i Arch Linux uden understøttelse af dynamiske script-sprog. For at aktivere PHP skal du først åbne Apache-hovedkonfigurationsfilen og derefter søge efter og fjerne kommentar til følgende LoadModule -erklæring ( php-apache fungerer ikke med mod_mpm_event i Arch Linux ).

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

Brug [Ctrl] + [w] søg og kommenter følgende linje for at se sådan ud.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Opret derefter en ny fil til PHP-modul i mods-aktiveret sti med følgende indhold.

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

Tilføj det nøjagtigt følgende indhold (du skal bruge 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. For at bekræfte indstillingen skal du oprette PHP en fil med navnet info.php i din DocumnetRoot (/srv/http/), genstart Apache og peg din browser til info .php fil: https: //localhost/info.php .

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

Det er det! Hvis alt ser ud som billedet ovenfor, har du nu PHP-dynamisk serversidescriptingssprog aktiveret på Apache, og du kan nu udvikle websteder ved hjælp af Open Source CMS som f.eks. WordPress .

Hvis du vil kontrollere Apache-syntakskonfigurationer og se en liste over indlæste moduler uden at genstarte httpd-dæmonen, skal du køre følgende kommandoer.

$ sudo apachectl configtest
$ sudo apachectl -M

Trin 8: Installer og konfigurer PhpMyAdmin

23. Hvis du ikke mestrer MySQL-kommandolinjen og ønsker en simpel fjernadgang til MySQL-database, der leveres via webgrænsefladen, skal du have PhpMyAdmin -pakken installeret på din Arch-boks.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Efter at pakkerne var installeret, skal du aktivere nogle PHP-udvidelser ( mysqli.so , mcrypt.so - til intern godkendelse), og du kan også aktivere andre moduler til behov for fremtidige CMS-platforme som openssl.so , imap.so eller iconv.so osv.

$ sudo nano /etc/php/php.ini

Find og fjern kommentar til ovenstående udvidelser.

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

I samme fil skal du også søge efter og finde open_basedir -erklæringen og tilføje PhpMyAdmin-systemsti (/etc/webapps/ og /usr/share/webapps/) for at sikre, at PHP kan få adgang til og læse filer under disse mapper (Hvis du også skifter Virtual Hosts DocumentRoot-sti fra /srv/http/ til et andet sted, skal du også tilføje den nye sti her ).

25. Den sidste ting, du skal gøre for at få adgang til PhpMyAdmin Web Interface, er at tilføje PhpMyAdmin Apache-udsagn på virtuelle værter. Som en sikkerhedsforanstaltning vil du sikre dig, at PhpMyAdmin Web Interface kun kan være tilgængelig fra localhost (eller systemets IP-adresse) ved hjælp af HTTPS-protokol og ikke fra andre forskellige virtuelle værter. Så åbn din localhost-ssl.conf Apache-fil og i bunden, inden sidste erklæring tilføj følgende indhold.

$ 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. Genstart derefter Apache-dæmonen, og peg din browser til følgende adresse, og du skal være i stand til at få adgang til din PhpMyAdmin Web-grænseflade: https:/localhost/phpmyadmin eller https:/system_IP/phpmyadmin .

27. Hvis du efter en login til PhpMyAdmin ser en bundfejl vedrørende et blowfish_secret , skal du åbne og redigere /etc/webapps/phpmyadmin/config.inc.php fil og indsæt en tilfældig streng som den i følgende udsagn, og opdater siden derefter.

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

Trin 9: Aktivér LAMP-system bredt

28. Hvis du vil have, at LAMP-stak skal startes automatisk efter genstart af systemet, skal du køre følgende kommandoer.

$ sudo systemctl enable httpd mysqld

Dette er nogle af de vigtigste konfigurationsindstillinger på LAMP , der er nødvendige for at omdanne et Arch Linux -system til en enkel, men kraftfuld, hurtig og robust webplatform med skarealder-serversoftware til små ikke -kritiske miljøer, men hvis du bliver stædig og stadig vil bruge det i et stort produktionsmiljø, skal du bevæbne dig med masser af tålmodighed og være ekstra opmærksom på pakkeopdateringer og foretage regelmæssige systembackup-billeder til et hurtigt systemgendannelse i tilfælde af systemfejl.