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


Arch Linux gir et fleksibelt systemmiljø for skjærende alder og er en kraftig best egnet løsning for å utvikle webapplikasjoner på små ikke-kritiske systemer på grunn av det faktum at det er en komplett åpen kildekode og gir de siste oppdaterte utgivelsene på kjerner og webprogramvare for servere og databaser.

Dette hovedomfanget av denne opplæringen er å veilede deg gjennom en komplett trinnvis instruksjon som til slutt vil føre til installasjon av en av de mest brukte programvarekombinasjonene i webutvikling: LAMP (Linux, Apache, MySQL/MariaDB og PHP/PhpMyAdmin ) og det vil presentere deg noen fine funksjoner (raske og skitne Bash-skript) som ikke finnes i et Arch Linux-system, men som kan lette jobben med å lage flere virtuelle verter , generer SSL-sertifikater og nøkler som trengs for sikre HTTS-transaksjoner.

  1. Forrige Arch Linux-installasjonsprosess – hopp over den siste delen med DHCP.
  2. Tidligere LEMP-installasjon på Arch Linux – bare delen med konfigurering av Statisk IP-adresse og ekstern SSH-tilgang.

Trinn 1: Installer Basic Software LAMP

1. Etter minimal systeminstallasjon med statisk IP-adresse og ekstern systemtilgang ved å bruke SSH, oppgrader din Arch Linux-boks med pacman-verktøyet.

$ sudo pacman -Syu

2. Når oppgraderingsprosessen er ferdig, installer LAMP fra pieces, installer først Apache Web Server og start/verifiser hver serverprosessdemon.

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

3. Installer PHP dynamisk skriptspråk på serversiden og dets Apache-modul.

$ sudo pacman -S php php-apache

4. På det siste trinnet, installer MySQL-databasen, velg 1 (MariaDB) fellesskapsdatabasegaffel, og start deretter og kontroller daemonstatus.

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

Nå har du den grunnleggende LAMP-programvaren installert og startet med standardkonfigurasjoner så langt.

Trinn 2: Sikker MySQL-database

5. Neste trinn er å sikre MySQL-databasen ved å angi et passord for root-kontoen, fjerne anonyme brukerkontoer, fjerne testdatabasen og ikke tillate ekstern pålogging for brukerrot ( trykk [Enter] nøkkel for root-konto gjeldende passord og svar med Ja på alle sikkerhetsspørsmål).

$ sudo mysql_secure_installation

6. Bekreft MySQL-databasetilkoblingen ved å kjøre følgende kommando og forlat databaseskallet med quit eller exit-setning.

$ mysql -u root -p

Trinn 3: Endre Apache hovedkonfigurasjonsfil

7. Følgende konfigurasjoner er de fleste relatert til Apache Web Server for å gi et dynamisk grensesnitt for Virtual Hosting med PHP-skriptspråk, SSL eller ikke-SSL Virtual Hosts og kan gjøres ved å endre httpd-tjenestefilkonfigurasjonene.

Åpne først hovedkonfigurasjonen av Apache-filen med din favoritt tekstredigerer.

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

Helt nederst i filen legger du til følgende to linjer.

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

Rollen til Inkluder-setninger her er å fortelle Apache at fra nå av skal den lese ytterligere konfigurasjoner fra alle filer som ligger i /etc/httpd/conf/sites-enabled/ (for Virtual Hosting) og /etc/httpd/conf/mods-enabled/ (for aktiverte server-moduler) systembaner som ender på en .conf-utvidelse.

8. Etter at Apache har blitt instruert med disse to direktivene, oppretter du de nødvendige systemkatalogene ved å utstede følgende kommandoer.

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

sites-available-banen inneholder alle Virtual Hosts-konfigurasjonsfiler som ikke er aktivert på Apache, men det neste Bash-skriptet vil bruke denne katalogen til å koble til og aktivere nettsteder som ligger der.

Trinn 4: Lag a2eniste og a2diste Apache-kommandoer

9. Nå er det på tide å lage a2ensite og a2dissite Apache-skript som vil fungere som kommandoer for å aktivere eller deaktivere Virtual Host-konfigurasjonsfilen. Skriv inn cd-kommandoen for å gå tilbake til $HOME-brukerbanen og lag bash-a2eniste- og a2dissite-skriptene dine ved å bruke favorittredaktør.

$ sudo nano a2ensite

Legg til følgende innhold på denne filen.

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

Lag nå a2dissite bash-skriptfil.

$ sudo nano a2dissite

Legg til følgende innhold.

#!/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. Etter at filene er opprettet, tildel kjøringstillatelser og kopier dem til en PATH kjørbar katalog for å gjøre dem tilgjengelig for hele systemet.

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

Trinn 5: Lag virtuelle verter i Apache

11. Virtual Host standard konfigurasjonsfil for Apache Web-server på Arch Linux leveres av httpd-vhosts.conf fil som ligger i /etc/httpd/conf/extra/ banen, men hvis du har et system som bruker mange virtuelle verter kan det være svært vanskelig å holde styr på hvilken nettside som er aktivert eller ikke og. Hvis du ønsker å deaktivere et nettsted, må du kommentere eller slette alle dets direktiver, og det kan være et vanskelig oppdrag hvis systemet ditt tilbyr mange nettsteder og nettstedet ditt har flere konfigurasjonsdirektiver.

Ved å bruke nettsteder-tilgjengelige- og nettsteder-aktiverte-baner, forenkler det i stor grad jobben med å aktivere eller deaktivere nettsteder og bevarer også alle konfigurasjonsfilene til nettstedet ditt selv om de er aktivert eller ikke.

På neste trinn skal vi konstruere den første virtuelle verten som peker til standard lokalvert med standard DocumentRoot-bane for visning av nettstedsfiler (/srv/http.

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

Legg til 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 viktigste setningene her er Port- og ServerName-direktiver som instruerer Apache om å åpne en nettverkstilkobling på port 80 og omdirigere alle spørringer med lokalt vertsnavn til server filer som ligger i /srv/http/ banen.

12. Etter at localhost-filen er opprettet, aktiver den og start httpd daemon på nytt for å se endringene.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Pek deretter nettleseren til http://localhost, hvis du kjører den fra Arch-systemet eller http://Arch_IP hvis du bruker et eksternt system.

Trinn 6: Aktiver SSL med Virtual Hosting på LAMP

SSL (Secure Sockets Layer) er en protokoll utviklet for å kryptere HTTP-tilkoblinger over nettverk eller Internett, som gjør at dataflyten skal overføres over en sikker kanal ved hjelp av symmetriske/asymmetriske kryptografinøkler og leveres i Arch Linux av pakken OpenSSL.

14. Som standard er ikke SSL-modulen aktivert på Apache i Arch Linux og kan aktiveres ved å fjerne kommentarene til mod_ssl.so-modulen fra hovedkonfigurasjonsfilen for httpd.conf og Inkluder httpd-ssl.conf-filen ligger i ekstra httpd-bane.

Men for å forenkle ting skal vi lage en ny modulfil for SSL i mods-aktivert bane og la hovedkonfigurasjonsfilen for Apache være urørt. Opprett følgende fil for SSL-modulen og legg til innholdet nedenfor.

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

Legg til følgende innhold.

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. Lag nå en Virtual Host-fil som peker til det samme lokale vertsnavnet, men bruk SSL-serverkonfigurasjoner denne gangen, og endre navnet litt for å minne deg på at det står for localhost med SSL.

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

Legg til følgende innhold på denne filen.

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

I tillegg til Port- og ServerName-direktiver, er andre viktige direktiver her de som peker på SSL-sertifikat-fil og SSL-nøkkel-fil som er ikke opprettet ennå, så ikke start Apache Web Server på nytt, ellers vil du få noen feil.

16. For å lage nødvendig SSL-sertifikatfil og -nøkler installer OpenSSL-pakken ved å gi kommandoen nedenfor.

$ sudo pacman -S openssl

17. Lag deretter følgende Bash-skript som automatisk oppretter og lagrer alle dine Apache-sertifikater og nøkler i /etc/httpd/conf /ssl/ systembane.

$ sudo nano apache_gen_ssl

Legg til følgende filinnhold og lagre det og gjør det kjørbart.

#!/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 at skriptet skal være tilgjengelig for hele systemet, kopier det til en kjørbar PATH.

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

18. Generer nå sertifikatet og nøkler ved å kjøre skriptet. Oppgi SSL-alternativene dine, og ikke glem sertifikatnavnet og Fellesnavnet som samsvarer med det offisielle domenet ditt (FQDN).

$ sudo ./apache_gen_ssl

Etter at sertifikatet og nøkler er opprettet, ikke glem å endre SSL Virtual Host-sertifikatet og nøklerkonfigurasjonene slik at de samsvarer med navnet på dette sertifikatet.

19. Det siste trinnet er å aktivere nylig SSL Virtual Host og starte serveren på nytt for å bruke konfigurasjoner.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

Det er det! For å bekrefte det, åpne nettleseren og legg til Arch IP på URL ved hjelp av HTTPS-protokollen: https://localhost eller https://system_IP.

Trinn 7: Aktiver PHP på Apache

20. Som standard serverer Apache kun HTML statisk filinnhold i Arch Linux uten støtte for dynamiske skriptspråk. For å aktivere PHP åpner du først Apache-hovedkonfigurasjonsfilen, søk og fjern kommentarene i følgende LoadModule-setning (php-apache fungerer ikke med mod_mpm_event i Arch Linux ).

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

Bruk [Ctrl]+[w], søk og kommenter følgende linje for å se slik ut.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Opprett deretter en ny fil for PHP-modulen i mods-aktivert bane med følgende innhold.

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

Legg til nøyaktig følgende innhold (du må bruke 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 å bekrefte innstillingen, lag PHP en fil kalt info.php i DocumnetRoot (/srv/http/), start deretter Apache på nytt og pek nettleseren til info .php-fil: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

Det er det! Hvis alt ser ut som bildet ovenfor, har du nå PHP dynamisk server-side skriptspråk aktivert på Apache, og du kan nå utvikle nettsteder ved å bruke åpen kildekode CMS som for eksempel WordPress.

Hvis du vil verifisere Apache-syntakskonfigurasjoner og se en liste over innlastede moduler uten å starte httpd daemon på nytt, kjør følgende kommandoer.

$ sudo apachectl configtest
$ sudo apachectl -M

Trinn 8: Installer og konfigurer PhpMyAdmin

23. Hvis du ikke behersker MySQL-kommandolinjen og vil ha en enkel ekstern tilgang til MySQL-databasen via webgrensesnitt, må du ha PhpMyAdmin-pakken installert på Arch-boksen.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Etter at pakkene er installert må du aktivere noen PHP-utvidelser (mysqli.so, mcrypt.so – for intern autentisering), og du kan også aktivere andre moduler for nødvendige for fremtidige CMS-plattformer som openssl.so, imap.so eller iconv.so osv.

$ sudo nano /etc/php/php.ini

Finn og fjern kommentarene til utvidelsene ovenfor.

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, søk og finn open_basedir-setningen og legg til PhpMyAdmin-systembanen (/etc/webapps/ og /usr/share/webapps/) for å sikre at PHP kan få tilgang til og lese filer under disse katalogene (Hvis du også endrer Virtual Hosts DocumentRoot-sti fra /srv/http/ til en annen plassering, må du legge til den nye banen her også ).

25. Det siste du trenger å gjøre for å få tilgang til PhpMyAdmin Web Interface er å legge til PhpMyAdmin Apache-setninger på virtuelle verter. Som et sikkerhetstiltak vil det sørge for at PhpMyAdmin webgrensesnitt bare kan være tilgjengelig fra localhost (eller system-IP-adresse) ved bruk av HTTPS-protokoll og ikke fra andre forskjellige virtuelle verter. Så åpne localhost-ssl.conf Apache-filen din og legg til følgende innhold nederst før siste -setning.

$ 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 deretter Apache daemon på nytt og pek nettleseren til følgende adresse, og du skal kunne få tilgang til PhpMyAdmin-nettgrensesnittet ditt: https://localhost/phpmyadmin eller https://system_IP/ phpmyadmin.

27. Hvis du, etter at du har logget på PhpMyAdmin, ser en bunnfeil angående en blowfish_secret, åpne og rediger /etc/webapps/phpmyadmin/config.inc.php fil og sett inn en tilfeldig streng som den i følgende setning, og oppdater deretter siden.

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

Trinn 9: Aktiver LAMP System Wide

28. Hvis du vil at LAMP-stakken skal startes automatisk etter omstart av systemet, kjør følgende kommandoer.

$ sudo systemctl enable httpd mysqld

Dette er noen av hovedkonfigurasjonsinnstillingene på LAMP som er nødvendige for å transformere et Arch Linux-system til en enkel, men kraftig, rask og robust nettplattform med gammel serverprogramvare for små ikke- -kritiske miljøer, men hvis du blir sta og fortsatt ønsker å bruke den i et stort produksjonsmiljø bør du væpne deg med mye tålmodighet og være ekstra oppmerksom på pakkeoppdateringer og lage vanlige system backup-bilder for en rask systemgjenoppretting i tilfelle systemfeil.