LAMP („Linux“, „Apache“, „MySQL/MariaDB“ ir „PHP/PhpMyAdmin“) diegimas „Arch Linux“


Arch Linux suteikia lanksčią senėjimo sistemos aplinką ir yra galingas geriausiai tinkantis sprendimas kuriant žiniatinklio programas mažose nekritinėse sistemose dėl to, kad yra pilnas atvirojo kodo šaltinis ir pateikia paskutinius naujausius branduolių ir žiniatinklio programinės įrangos leidimus. serveriai ir duomenų bazės.

Ši pagrindinė šios pamokos apimtis padės jums atlikti išsamias žingsnis po žingsnio instrukcijas, kurios galiausiai padės įdiegti vieną iš dažniausiai naudojamų programinės įrangos derinių žiniatinklio kūrime: LAMP („Linux“, „Apache“, „MySQL/MariaDB“ ir PHP/PhpMyAdmin ) ir pateiks jums keletą gražių funkcijų (greiti ir nešvarūs „Bash“ scenarijai), kurių nėra „Arch Linux“ sistemoje, tačiau kurios gali palengvinti kelių virtualių prieglobų kūrimo darbą. , generuoti SSL sertifikatus ir raktus, reikalingus saugioms HTTS operacijoms.

Reikalavimai

  1. Ankstesnis Arch Linux diegimo procesas – praleiskite paskutinę dalį naudodami DHCP.
  2. Ankstesnis LEMP diegimas „Arch Linux“ – tik dalis su konfigūravimu statiniu IP adresu ir nuotoline SSH prieiga.

1 veiksmas: įdiekite pagrindinės programinės įrangos LAMP

1. Po minimalaus sistemos įdiegimo su statiniu IP adresu ir nuotoline prieiga prie sistemos naudojant SSH, atnaujinkite savo Arch Linux dėžutę naudodami pacman programą.

sudo pacman -Syu

2. Kai atnaujinimo procesas baigsis, įdiekite LAMP iš dalių, pirmiausia įdiekite Apache žiniatinklio serverį ir paleiskite/patikrinkite kiekvieną serverio proceso demoną.

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

3. Įdiekite PHP dinaminę serverio pusės scenarijų kalbą ir jos Apache modulį.

sudo pacman -S php php-apache

4. Paskutiniame etape įdiekite MySQL duomenų bazę, pasirinkite 1 (MariaDB) bendruomenės duomenų bazės šakę, tada paleiskite ir patikrinkite demono būseną.

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

Dabar turite įdiegtą pagrindinę LAMP programinę įrangą ir iki šiol pradėjote naudoti numatytąsias konfigūracijas.

2 veiksmas: apsaugokite MySQL duomenų bazę

5. Kitas veiksmas yra apsaugoti MySQL duomenų bazę, nustatant root paskyros slaptažodį, pašalinti anonimines vartotojų paskyras, pašalinti bandomąją duomenų bazę ir neleisti nuotoliniu būdu prisijungti prie vartotojo root ( paspauskite [ Įveskite] raktą root paskyros dabartiniam slaptažodžiui ir atsakykite Taip į visus saugos klausimus).

sudo mysql_secure_installation

6. Patvirtinkite MySQL duomenų bazės ryšį paleisdami šią komandą, tada palikite duomenų bazės apvalkalą su sakiniu quit arba exit.

mysql -u root -p

3 veiksmas: pakeiskite pagrindinį „Apache“ konfigūracijos failą

7. Šios konfigūracijos dauguma jų yra susijusios su Apache žiniatinklio serveriu, kad būtų užtikrinta dinaminė virtualiojo prieglobos sąsaja su PHP scenarijų kalba, SSL arba ne SSL virtualios prieglobos ir tai galima padaryti modifikuojant httpd paslaugų failų konfigūracijas.

Pirmiausia atidarykite pagrindinę „Apache“ failo konfigūraciją naudodami mėgstamą teksto rengyklę.

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

Pačiame failo apačioje pridėkite šias dvi eilutes.

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

Teiginių Include vaidmuo yra nurodyti „Apache“, kad nuo šiol ji turėtų skaityti tolesnes konfigūracijas iš visų failų, esančių /etc/httpd/conf/sites-enabled/ (skirta virtualiam prieglobai) ir /etc/httpd/conf/mods-enabled/ (įgalintiems serverio moduliams) sistemos keliai, kurie baigiasi .conf plėtinys.

8. Kai „Apache“ gaus nurodymus dėl šių dviejų direktyvų, sukurkite reikiamus sistemos katalogus, išduodami šias komandas.

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

Kelias galimos svetainės turi visus virtualiųjų prieglobų konfigūracijos failus, kurie nėra suaktyvinti „Apache“, bet kitas „Bash“ scenarijus naudos šį katalogą, kad susietų ir įgalintų ten esančias svetaines.

4 veiksmas: sukurkite a2eniste ir a2diste Apache komandas

9. Dabar atėjo laikas sukurti a2ensite ir a2dissite „Apache“ scenarijus, kurie bus naudojami kaip komandos, leidžiančios įjungti arba išjungti „Virtual Host“ konfigūracijos failą. Įveskite komandą cd, kad grįžtumėte į savo $HOME vartotojo kelią ir sukurtumėte bash a2eniste ir a2dissite scenarijus naudodami savo mėgstamiausias redaktorius.

sudo nano a2ensite

Pridėkite šį turinį prie šio failo.

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

Dabar sukurkite a2dissite bash scenarijaus failą.

sudo nano a2dissite

Pridėkite toliau pateiktą turinį.

#!/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. Sukūrę failus, paskirkite vykdymo leidimus ir nukopijuokite juos į ` PATH vykdomąjį katalogą, kad jie būtų pasiekiami visoje sistemoje.

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

5 veiksmas: sukurkite virtualius pagrindinius kompiuterius „Apache“.

11. Virtualios prieglobos numatytosios konfigūracijos failas, skirtas „Apache“ žiniatinklio serveriui „Arch Linux“, pateikiamas httpd-vhosts.conf faile, esančiame /etc/httpd/conf/extra / kelią, bet jei turite sistemą, kuri naudoja daug virtualių prieglobų, gali būti labai sunku sekti, kuri svetainė suaktyvinta ar ne. Jei norite išjungti svetainę, turite pakomentuoti arba ištrinti visas jos direktyvas, o tai gali būti sudėtinga užduotis, jei sistemoje yra daug svetainių, o jūsų svetainė turi daugiau konfigūravimo direktyvų.

Naudodami kelius galimos svetainės ir svetainės įgalintos labai supaprastina svetainių įgalinimo arba išjungimo darbą ir taip pat išsaugo visi jūsų svetainių konfigūracijos failai, net jei jie suaktyvinti, ar ne.

Kitame žingsnyje ketiname sukurti pirmąjį virtualųjį pagrindinį kompiuterį, kuris nukreipia į numatytąjį vietinį pagrindinį kompiuterį su numatytuoju DocumentRoot keliu, skirtu svetainių failams aptarnauti (/srv/http.

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

Čia pridėkite šias „Apache“ direktyvas.

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

Svarbiausi teiginiai čia yra Port ir ServerName direktyvos, kurios nurodo Apache atidaryti tinklo ryšį per prievadą 80 ir nukreipti visas užklausas su localhost pavadinimu į aptarnauti failus, esančius /srv/http/ kelyje.

12. Sukūrę localhost failą, suaktyvinkite jį, tada iš naujo paleiskite httpd demoną, kad peržiūrėtumėte pakeitimus.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Tada nukreipkite naršyklę į http://localhost, jei paleisite ją iš Arch sistemos, arba http://Arch_IP, jei naudojate nuotolinė sistema.

6 veiksmas: įgalinkite SSL naudodami virtualų prieglobą LAMP

SSL (Secure Sockets Layer) – tai protokolas, skirtas HTTP ryšiams užšifruoti tinkluose arba internetu, todėl duomenų srautas perduodamas saugiu kanalu naudojant simetrinius/asimetrinius kriptografijos raktus. ir Arch Linux yra pateiktas OpenSSL paketu.

14. Pagal numatytuosius nustatymus SSL modulis nėra įjungtas „Apache“ sistemoje „Arch Linux“ ir jį galima suaktyvinti iš pagrindinio httpd.conf panaikinus mod_ssl.so modulio komentarą. konfigūracijos failą ir Įtraukti httpd-ssl.conf failą, esantį papildomame httpd kelyje.

Tačiau norėdami supaprastinti dalykus, sukursime naują SSL modulio failą kelyje įgalinti modifikacijos ir paliksime pagrindinį „Apache“ konfigūracijos failą nepaliestą. Sukurkite šį failą SSL moduliui ir pridėkite toliau pateiktą turinį.

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

Pridėkite toliau pateiktą turinį.

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. Dabar sukurkite virtualiosios prieglobos failą, nurodantį tą patį vietinės prieglobos pavadinimą, bet šį kartą naudojant SSL serverio konfigūracijas, ir šiek tiek pakeiskite pavadinimą, kad primintų, jog jis reiškia localhost su SSL.

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

Pridėkite šį turinį prie šio failo.

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

Be direktyvų Port ir ServerName, kitos svarbios direktyvos yra tos, kurios nurodo SSL sertifikato ir SSL rakto failą, kuris dar nesukurti, todėl iš naujo nepaleiskite „Apache“ žiniatinklio serverio, nes kitaip gausite klaidų.

16. Norėdami sukurti reikiamą SSL sertifikato failą ir raktus, įdiekite OpenSSL paketą, išduodami toliau pateiktą komandą.

sudo pacman -S openssl

17. Tada sukurkite šį Bash scenarijų, kuris automatiškai sukuria ir saugo visus Apache sertifikatus ir raktus >/etc/httpd/conf/ssl/ sistemos kelią.

sudo nano apache_gen_ssl

Pridėkite šį failo turinį, tada išsaugokite jį ir padarykite jį vykdomąjį.

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

Jei norite, kad scenarijus būtų pasiekiamas visoje sistemoje, nukopijuokite jį į vykdomąjį ` PATH.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Dabar sukurkite sertifikatą ir raktus paleisdami scenarijų. Pateikite savo SSL parinktis ir nepamirškite sertifikato pavadinimo ir bendrinio pavadinimo, kad atitiktų jūsų oficialų domeną (FQDN).

sudo ./apache_gen_ssl

Sukūrę sertifikatą ir raktus nepamirškite pakeisti savo SSL virtualiojo pagrindinio kompiuterio sertifikato ir raktų konfigūracijų, kad atitiktų šio sertifikato pavadinimą.

19. Paskutinis veiksmas yra suaktyvinti naujai SSL virtualųjį pagrindinį kompiuterį ir iš naujo paleisti serverį, kad būtų pritaikytos konfigūracijos.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

Viskas! Norėdami tai patikrinti, atidarykite naršyklę ir URL pridėkite Arch IP naudodami HTTPS protokolą: https://localhost arba https://system_IP.

7 veiksmas: įgalinkite PHP „Apache“.

20. Pagal numatytuosius nustatymus „Apache“ aptarnauja tik statinių HTML failų turinį „Arch Linux“, nepalaikydamas dinaminių scenarijų kalbų. Norėdami suaktyvinti PHP, pirmiausia atidarykite pagrindinį „Apache“ konfigūracijos failą, tada ieškokite šio LoadModule teiginio ir panaikinkite komentarą (php-apache neveikia su mod_mpm_event „Arch Linux“ ).

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

Naudodami [Ctrl]+[w] ieškokite ir komentuokite šią eilutę, kad atrodytų taip.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Tada sukurkite naują PHP modulio failą įgalintos modifikacijos kelyje su tokiu turiniu.

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

Pridėkite tiksliai šį turinį (turite naudoti 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. Norėdami patvirtinti nustatymą, savo DocumnetRoot (/srv/http/) sukurkite PHP failą pavadinimu info.php, tada iš naujo paleiskite Apache ir nurodykite naršyklėje į info.php failą: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

Viskas! Jei viskas atrodo kaip paveikslėlyje aukščiau, dabar „Apache“ įgalinta PHP dinaminė serverio scenarijų kalba ir dabar galite kurti svetaines naudodami atvirojo kodo TVS, pvz., WordPress.

Jei norite patikrinti Apache sintaksės konfigūracijas ir pamatyti įkeltų modulių sąrašą iš naujo nepaleidę httpd demono, paleiskite šias komandas.

sudo apachectl configtest
sudo apachectl -M

8 veiksmas: įdiekite ir sukonfigūruokite „PhpMyAdmin“.

23. Jei nevaldote MySQL komandinės eilutės ir norite paprastos nuotolinės prieigos prie MySQL duomenų bazės, teikiamos per žiniatinklio sąsają, jūsų Arch laukelyje turite įdiegti PhpMyAdmin paketą.

sudo pacman -S phpmyadmin php-mcrypt

24. Įdiegę paketus turite įjungti kai kuriuos PHP plėtinius (mysqli.so, mcrypt.so – vidiniam autentifikavimui) ir taip pat galite įgalinti kitus modulius, reikalingus būsimoms TVS platformoms, pvz., openssl.so, imap.so arba iconv.so ir kt.

sudo nano /etc/php/php.ini

Raskite pirmiau nurodytus plėtinius ir panaikinkite jų komentarus.

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

Be to, tame pačiame faile ieškokite ir suraskite sakinį open_basedir ir pridėkite PhpMyAdmin sistemos kelią (/etc/webapps/ ir /usr/share/webapps/ >) kad įsitikintumėte, jog PHP gali pasiekti ir skaityti failus tuose kataloguose (jei taip pat pakeisite Virtual Hosts DocumentRoot kelią iš /srv/http/ į kitą vietą, čia taip pat turite pridėti naują kelią ).

25. Paskutinis dalykas, kurį turite padaryti, kad galėtumėte pasiekti „PhpMyAdmin“ žiniatinklio sąsają, yra pridėti „PhpMyAdmin Apache“ teiginius prie virtualių kompiuterių. Saugumo sumetimais bus užtikrinta, kad „PhpMyAdmin“ žiniatinklio sąsaja būtų pasiekiama tik iš „localhost“ (arba sistemos IP adreso), naudojant HTTPS protokolą, o ne iš kitų skirtingų virtualių kompiuterių. Taigi atidarykite localhost-ssl.conf Apache failą ir apačioje, prieš paskutinį teiginį, pridėkite šį turinį.

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. Po to iš naujo paleiskite „Apache“ demoną ir nukreipkite naršyklę toliau nurodytu adresu ir turėtumėte turėti prieigą prie savo „PhpMyAdmin“ žiniatinklio sąsajos: https://localhost/phpmyadmin arba https://system_IP/phpmyadmin.

27. Jei prisijungę prie PhpMyAdmin matote apatinę klaidą, susijusią su blowfish_secret, atidarykite ir redaguokite /etc/webapps/phpmyadmin/config.inc. php failą ir įterpkite atsitiktinę eilutę, kaip nurodyta kitame teiginyje, tada atnaujinkite puslapį.

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

9 veiksmas: įjunkite LAMP System Wide

28. Jei norite, kad LAMP dėklas būtų automatiškai paleistas paleidus sistemą iš naujo, vykdykite šias komandas.

sudo systemctl enable httpd mysqld

Tai yra keletas pagrindinių LAMP konfigūracijos nustatymų, reikalingų norint transformuoti Arch Linux sistemą į paprastą, bet galingą, greitą ir patikimą žiniatinklio platformą su naujausia serverio programine įranga, skirta mažiems ne -kritinėse aplinkose, tačiau jei esate užsispyręs ir vis tiek norite jį naudoti didelėje gamybinėje aplinkoje, turėtumėte apsišarvuoti kantrybe ir skirti daugiau dėmesio paketų atnaujinimams bei reguliariai kurti atsargines sistemos atvaizdų kopijas, kad sistema greitai atkurtų sistemos gedimai.