LAMPi (Linux, Apache, MySQL/MariaDB ja PHP/PhpMyAdmin) installimine Arch Linuxi


Arch Linux pakub paindlikku vanuseastmesüsteemi keskkonda ja on võimas kõige sobivam lahendus veebirakenduste arendamiseks väikestes mitte-kriitilistes süsteemides, kuna see on täielik avatud lähtekoodiga ning pakub viimaseid ajakohaseid väljaandeid tuumade ja veebitarkvara jaoks serverid ja andmebaasid.

Selle õpetuse peamine ulatus on juhendada teid täielike sammhaaval juhiste kaudu, mis lõpuks viivad ühe veebiarenduses enimkasutatava tarkvarakombinatsiooni installimisse: LAMP (Linux, Apache, MySQL/MariaDB ja PHP/PhpMyAdmin) ja see pakub teile mõningaid toredaid funktsioone (kiired ja määrdunud Bashi skriptid), mida Arch Linuxi süsteemis pole, kuid mis võivad hõlbustada mitme virtuaalse hosti loomist. , genereerige SSL-sertifikaadid ja võtmed , mis on vajalikud turvaliste HTTS -tehingute jaoks.

  1. Eelmine Arch Linuxi installiprotsess - jätke viimane osa DHCP-ga vahele.
  2. Eelmine LEMP-i installimine Arch Linuxi - ainult see osa, kus on konfigureeritud staatiline IP-aadress ja kaug- SSH-juurdepääs .

1. samm: installige põhitarkvara LAMP

1. Pärast minimaalset süsteemi installimist staatilise IP-aadressi ja kaugjuurdepääsuga süsteemile SSH abil värskendage oma Arch Linuxi kasti, kasutades utiliiti pacman .

$ sudo pacman -Syu

2. Kui uuendusprotsess on lõpetanud rakenduse LAMP installimise tükkideks, installige kõigepealt Apache veebiserver ja käivitage/kontrollige kõiki serveri protsesside deemonit.

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

3. Installige PHP dünaamiline serveripoolne skriptikeel ja selle Apache moodul.

$ sudo pacman -S php php-apache

4. Valige viimasel sammul andmebaasi MySQL installimiseks 1 ( MariaDB ) kogukonna andmebaasi kahvli, seejärel käivitage ja kontrollige deemoni olekut.

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

Nüüd on teil installitud LAMPi põhitarkvara ja alustati seni vaikekonfiguratsioonidega.

2. samm: turvaline MySQL-i andmebaas

5. Järgmine samm on MySQL andmebaasi turvalisus, määrates juurkonto parooli, eemaldades anonüümsed kasutajakontod, eemaldades testandmebaasi ja keelates kasutajajuurdepääsu kaugsisselogimise (vajutage [ Enter ] võti juurkonto praeguse parooli jaoks ja vastake kõigi turvaküsimuste korral vastusega Jah

$ sudo mysql_secure_installation

6. Kontrollige MySQL-i andmebaaside ühenduvust, käivitades järgmise käsu, seejärel jätke andmebaasi kest välja quit või exit .

$ mysql -u root -p

3. samm: muutke Apache'i peamist konfiguratsioonifaili

7. Järgmised konfiguratsioonid on enamasti seotud Apache veebiserveriga , et pakkuda dünaamilist liidest virtuaalsele hostimisele koos PHP skriptikeele, SSL-i või muude kui SSL-i virtuaalsete hostidega ja teenuse faili konfiguratsiooni muutmisega.

Esmalt avage oma lemmiktekstiredaktoriga Apache'i failide põhikonfiguratsioon.

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

Lisage faili kõige lõppu kaks järgmist rida.

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

Lause Kaasa roll on siin öelda Apache'ile, et nüüdsest peaks see lugema täiendavaid seadistusi kõigist failidest, mis asuvad saidil /etc/httpd/conf/saidid-lubatud/ ( virtuaalse hostimise jaoks) ja /etc/httpd/conf/mods-enabled/ ( lubatud server moodulite jaoks) süsteemitee, mis lõpeb .conf laiendus.

8. Kui Apache on selle kahe direktiiviga juhendatud, looge vajalikud süsteemikataloogid, väljastades järgmised käsud.

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

Tee saidid saadaval hoiab kõiki virtuaalsete hostide konfiguratsioonifaile, mis pole Apache'is aktiveeritud, kuid järgmine Bashi skript kasutab seda kataloogi seal asuvate veebisaitide linkimiseks ja lubamiseks.

4. samm: looge a2eniste ja a2diste Apache käsud

9. Nüüd on aeg luua a2ensite ja a2dissite Apache skriptid, mis toimivad käsklustena virtuaalse hosti konfiguratsioonifaili lubamiseks või keelamiseks. Sisestage $HOME kasutajate juurde naasmiseks käsk cd ja looge oma skriptid a2eniste ja a2dissite oma lemmiktoimetaja.

$ sudo nano a2ensite

Lisage sellele failile järgmine sisu.

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

Nüüd looge a2dissite bash skriptifail.

$ sudo nano a2dissite

Lisage järgmine sisu.

#!/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. Pärast failide loomist eraldage täitmisõigused ja kopeerige need käivitatavasse kataloogi $PATH , et need oleksid kogu süsteemis kättesaadavad.

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

5. samm: looge Apache'is virtuaalsed hostid

11. Vir Linuxi vaikimisi konfiguratsioonifaili Apache veebiserveri jaoks Arch Linuxis pakub fail httpd-vhosts.conf , mis asub asukohas /etc/httpd/conf/extra/, kuid Kui teil on süsteem, mis kasutab palju virtuaalseid hoste, võib olla väga raske jälgida, milline veebisait on aktiveeritud või mitte. Kui soovite veebisaidi keelata , peate kommenteerima või kustutama kõik selle direktiivid ja see võib olla keeruline ülesanne, kui teie süsteem pakub palju veebisaite ja teie veebisaidil on rohkem seadistamisdirektiive.

Saidid saadaval ja saitidel lubatud teede kasutamine lihtsustab oluliselt veebisaitide lubamise või keelamist ja säilitab ka kõik teie veebisaitide konfiguratsioonifailid, isegi kui need on aktiveeritud või mitte.

Järgmisel etapil ehitame esimese virtuaalse hosti, mis osutab vaikimisi localhostile, millel on vaikimisi DocumentRoot tee veebisaitide failide teenindamiseks (/srv/http .

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

Lisage siia järgmised Apache direktiivid.

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

Siin on kõige olulisemad avaldused Pordi ja ServerName direktiivid, mis käskivad Apache'il avada porti 80 võrguühendus ja suunata kõik localhost'i nimega päringud aadressile serveri failid, mis asuvad asukohas /srv/http/.

12. Kui localhosti fail on loodud, aktiveerige see ja taaskäivitage muudatuste vaatamiseks teenus httpd.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Seejärel suunake brauser aadressile http:// localhost , kui käivitate selle Arch-süsteemist, või http:// Arch_IP , kui kasutate kaugsüsteemi.

6. samm: lubage LAMP-is virtuaalse hostimisega SSL

SSL ( Secure Sockets Layer ) on protokoll, mis on ette nähtud HTTP-ühenduste krüptimiseks võrkude või Interneti kaudu, mis muudab andmete voo edastamise turvalise kanali kaudu sümmeetriliste/asümmeetriliste krüptograafiavõtmete abil ja selle pakub Arch Linuxis pakett OpenSSL .

14. Vaikimisi pole SSL-moodul Arch Linuxis Apache'is lubatud ja selle saab aktiveerida, märkimata mooduli mod_ssl.so kommentaare peamisest konfiguratsioonifailist httpd.conf ja Lisa httpd-ssl.conf fail, mis asub httpd lisateel.

Kuid asjade lihtsustamiseks loome uue moodulifaili SSL-i jaoks mod-toega teele ja jätame peamise Apache'i konfiguratsioonifaili puutumata. Looge järgmine fail SSL-mooduli jaoks ja lisage allpool olev sisu.

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

Lisage järgmine sisu.

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. Nüüd looge virtuaalse hostifail, mis osutab samale kohaliku hosti nimele, kuid kasutab seekord SSL-serveri konfiguratsioone, ja muutke oma nime veidi, et tuletada meelde, et see tähistab SSL-iga localhostit.

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

Lisage sellele failile järgmine sisu.

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

Lisaks direktiividele Port ja ServerName on siin muud olulised direktiivid, mis osutavad failile SSL-sertifikaat ja SSL-võti , pole veel loodud, nii et ärge taaskäivitage Apache veebiserverit, muidu saate mõne tõrke.

16. Nõutava SSL-sertifikaadifaili loomiseks ja võtmed installige OpenSSL pakett, väljastades alltoodud käsu.

$ sudo pacman -S openssl

17. Seejärel looge järgmine Bash skript, mis loob ja salvestab automaatselt kõik teie Apache-sertifikaadid ja võtmed kausta /etc/httpd/conf/ssl/ süsteemitee.

$ sudo nano apache_gen_ssl

Lisage järgmine faili sisu, seejärel salvestage see ja tehke see käivitatavaks.

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

Kui soovite, et skript oleks kogu süsteemis saadaval, kopeerige see käivitatavasse faili $PATH .

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

18. Looge nüüd skript käivitades oma sertifikaat ja võtmed . Andke oma SSL-valikud ja ärge unustage sertifikaadi nime ja tavalist nime , mis vastavad teie ametlikule domeenile ( FQDN ).

$ sudo ./apache_gen_ssl

Pärast sertifikaadi ja võtmete loomist ärge unustage oma SSL-i virtuaalse hosti sertifikaati ja võtmete konfiguratsioone selle sertifikaadi nimega vastavusse viimiseks.

19. Viimane samm on äsja SSL Virtual Host aktiveerimine ja konfiguratsiooni rakendamiseks taaskäivitage oma server.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

See on kõik! Selle kinnitamiseks avage brauser ja lisage URL-ile Arch IP HTTPS-protokolli abil: https:/localhost või https:/system_IP .

7. samm: lubage Apache'is PHP

20. Vaikimisi teenib Apache HTML-i staatiliste failide sisu Arch Linuxis ainult dünaamiliste skriptikeelte toeta. PHP-i aktiveerimiseks avage esmalt Apache'i põhikonfiguratsioonifail ja otsige järgmine kommentaar LoadModule ja eemaldage kommentaar ( php-apache ei tööta Arch Linuxis rakendusega mod_mpm_event ).

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

Kasutades [Ctrl] + [w] , otsige ja kommenteerige järgmist rida, et selline välja näha.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Seejärel looge mods-toega teele PHP mooduli jaoks uus fail järgmise sisuga.

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

Lisage täpselt järgmine sisu (peate kasutama 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. Seadistuse kontrollimiseks looge PHP-s fail DocumnetRoot'is (/srv/http/) nimega info.php , seejärel taaskäivitage Apache ja suunake brauser teabele .php fail: https: //localhost/info.php .

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

See on kõik! Kui kõik näeb välja nagu ülaltoodud pilt, on nüüd Apache'is lubatud PHP dünaamiline serveripoolne skriptikeel ja saate nüüd veebisaite arendada, kasutades näiteks avatud lähtekoodiga CMS-i, näiteks WordPress .

Kui soovite kontrollida Apache'i süntaksikonfiguratsioone ja vaadata laaditud moodulite loendit ilma httpd-deemoni taaskäivitamata, käivitage järgmised käsud.

$ sudo apachectl configtest
$ sudo apachectl -M

8. samm: installige ja seadistage PhpMyAdmin

23. Kui te ei hallata MySQL-i käsurida ja soovite veebiliidese kaudu pakutavat lihtsat kaugjuurdepääsu MySQL-i andmebaasile, peate oma Archi kasti installima PhpMyAdmin paketi.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Pärast pakettide installimist peate lubama mõned PHP laiendused ( mysqli.so , mcrypt.so - sisemiseks autentimiseks) ja saate lubada ka teisi tulevaste CMS-i platvormide jaoks vajalikud moodulid, näiteks openssl.so , imap.so või iconv.so jne.

$ sudo nano /etc/php/php.ini

Leidke ülaltoodud laiendused ja eemaldage kommentaarid.

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

Samuti otsige ja leidke samast failist lause open_basedir ja lisage süsteemi tee PhpMyAdmin (/etc/webapps/ ja /usr/share/webapps/) veendumaks, et PHP saab nendes kataloogides olevatele failidele juurde pääseda ja neid lugeda (kui muudate ka Virtual Hosts DocumentRoot tee /srv/http/ teisele asukohale, peate ka uue tee lisama siia ).

25. Viimane asi, mida peate tegema, et pääseda juurde PhpMyAdmini veebiliidesele, on lisada PhpMyAdmin Apache'i avaldused virtuaalsetele hostidele. Turvameetmena tagab see, et PhpMyAdmini veebiliidesele saab juurde pääseda ainult HTTPS-protokolli kasutava kohaliku hosti (või süsteemi IP-aadressi) kaudu, mitte teiste erinevate virtuaalsete hostide kaudu. Niisiis, avage oma localhost-ssl.conf Apache-fail ja lisage enne viimast avaldist allpool järgmine sisu.

$ 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. Seejärel taaskäivitage Apache deemon ja suunake oma brauser järgmisele aadressile ning peaksite pääsema juurde oma PhpMyAdmini veebiliidesele: https:/localhost/phpmyadmin või https:/system_IP/phpmyadmin .

27. Kui pärast PhpMyAdmini sisselogimist näete blowfish_secret alumist viga, avage ja muutke fail /etc/webapps/phpmyadmin/config.inc.php ja sisestage juhuslik string nagu järgmine lause, seejärel värskendage lehte.

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

9. samm: lubage LAMP System Wide

28. Kui soovite, et LAMP-i virn käivitataks pärast süsteemi taaskäivitamist automaatselt, käivitage järgmised käsud.

$ sudo systemctl enable httpd mysqld

Need on mõned LAMPi peamistest seadistusseadetest, mis on vajalikud Arch Linux süsteemi muutmiseks lihtsaks, kuid võimsaks, kiireks ja jõuliseks veebiplatvormiks koos vanuses kasutatava serveritarkvaraga väikestele mitte -kriitilised keskkonnad, kuid kui jääte jonnakaks ja soovite seda siiski suures tootmiskeskkonnas kasutada, peaksite end varuma suure kannatlikkusega ja pöörama lisatähelepanu pakettide värskendustele ning tegema süsteemi kiireks taastamiseks regulaarselt süsteemi varukoopiad süsteemi tõrked.