Namestitev LAMP (Linux, Apache, MySQL/MariaDB in PHP/PhpMyAdmin) v Arch Linux


Arch Linux ponuja prilagodljivo sistemsko okolje za rezanje in je najprimernejša rešitev za razvoj spletnih aplikacij na majhnih nekritičnih sistemih, ker je popoln odprtokodni in ponuja zadnje posodobljene različice jeder in spletne programske opreme za strežniki in podatkovne baze.

Ta glavni namen te vadnice je voditi vas skozi celotna navodila po korakih, ki bodo na koncu vodila do namestitve ene najpogosteje uporabljenih kombinacij programske opreme pri spletnem razvoju: LAMP (Linux, Apache, MySQL/MariaDB in PHP/PhpMyAdmin) in predstavil vam bo nekaj lepih funkcij (hitri in umazani skripti Bash), ki jih v sistemu Arch Linux ni, lahko pa olajša delo pri ustvarjanju več navideznih gostiteljev , ustvari SSL potrdila in ključe , potrebne za varne transakcije HTTS .

  1. Prejšnji postopek namestitve Arch Linux - preskočite zadnji del z DHCP.
  2. Prejšnja namestitev LEMP v Arch Linux - le del s konfiguracijo statičnega naslova IP in oddaljenim dostopom SSH .

1. korak: Namestite osnovno programsko opremo LAMP

1. Po minimalni namestitvi sistema s statičnim naslovom IP in oddaljenim sistemskim dostopom z uporabo SSH nadgradite polje Arch Linux s pripomočkom pacman .

$ sudo pacman -Syu

2. Ko postopek nadgradnje konča namestitev LAMP iz kosov, najprej namestite spletni strežnik Apache in zaženite/preverite vsak demon procesa strežnika.

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

3. Namestite PHP dinamični skriptni jezik na strani strežnika in njegov modul Apache.

$ sudo pacman -S php php-apache

4. V zadnjem koraku namestite zbirko podatkov MySQL , izberite 1 ( MariaDB ) vilica baze podatkov skupnosti, nato zaženite in preverite stanje demona.

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

Zdaj imate nameščeno osnovno programsko opremo LAMP in jo do zdaj začeli uporabljati s privzetimi konfiguracijami.

2. korak: Zavarujte bazo podatkov MySQL

5. Naslednji korak je zaščita baze podatkov MySQL z nastavitvijo gesla za korenski račun, odstranjevanje anonimnih uporabniških računov, odstranitev testne baze podatkov in onemogočanje oddaljene prijave za uporabniški koren (pritisnite [ Enter ] za trenutno geslo korenskega računa in odgovorite z Da na vsa varnostna vprašanja).

$ sudo mysql_secure_installation

6. Preverite povezavo z bazo podatkov MySQL, tako da zaženete naslednji ukaz, nato lupino baze podatkov pustite z izjavo quit ali exit .

$ mysql -u root -p

3. korak: Spremenite glavno konfiguracijsko datoteko Apache

7. Naslednje konfiguracije so večinoma povezane s spletnim strežnikom Apache za zagotavljanje dinamičnega vmesnika za navidezno gostovanje s skriptnim jezikom PHP, navideznimi gostitelji SSL ali ne-SSL in lahko spremenite konfiguracije datotek storitve httpd.

Najprej odprite glavno konfiguracijo datoteke Apache z vašim najljubšim urejevalnikom besedil.

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

Čisto na dnu datoteke dodajte naslednji dve vrstici.

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

Vloga stavkov Vključi je povedati Apacheju, da mora odslej prebrati nadaljnje konfiguracije iz vseh datotek, ki se nahajajo v /etc/httpd/conf/sites-enabled/ (za navidezno gostovanje ) in /etc/httpd/conf/mods-enabled/ (za omogočene strežniške module) sistemske poti, ki se konča v razširitev .conf .

8. Potem ko je Apache poučen s tema dvema direktivama, ustvarite potrebne sistemske imenike, ki izdajajo naslednje ukaze.

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

Pot dostopna spletna mesta vsebuje vse datoteke s konfiguracijami navideznih gostiteljev, ki niso aktivirane v Apacheju, vendar bo naslednji skript Bash uporabil ta imenik za povezovanje in omogočanje spletnih mest, ki se tam nahajajo.

4. korak: Ustvarite ukaza a2eniste in a2diste Apache

9. Zdaj je čas, da ustvarite skripti a2ensite in a2dissite Apache, ki bodo služili kot ukazi za omogočanje ali onemogočanje konfiguracijske datoteke Virtual Host. Vnesite ukaz cd , da se vrnete na uporabniško pot $HOME , in ustvarite skripti bash a2eniste in a2dissite z uporabo najljubši urednik.

$ sudo nano a2ensite

V to datoteko dodajte naslednjo vsebino.

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

Zdaj ustvarite datoteko skripta a2dissite bash.

$ sudo nano a2dissite

Dodajte naslednjo vsebino.

#!/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. Po ustvarjanju datotek dodelite dovoljenja za izvrševanje in jih kopirajte v izvršni imenik $PATH , da bodo na voljo v celotnem sistemu.

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

5. korak: v Apacheju ustvarite navidezne gostitelje

11. Privzeto konfiguracijsko datoteko navideznega gostitelja za spletni strežnik Apache v Arch Linuxu zagotavlja datoteka httpd-vhosts.conf , ki se nahaja v poti /etc/httpd/conf/extra/, vendar če imate sistem, ki uporablja veliko navideznih gostiteljev, je zelo težko slediti, katero spletno mesto je aktivirano ali ne in. Če želite onemogočiti spletno mesto, morate komentirati ali izbrisati vse njegove direktive, kar je lahko težka naloga, če sistem ponuja veliko spletnih mest in ima vaše spletno mesto več konfiguracijskih smernic.

Uporaba poti dostopnih spletnih mest in omogočenih spletnih mest močno poenostavi omogočanje ali onemogočanje spletnih mest in tudi ohranja vse konfiguracijske datoteke vaših spletnih mest, čeprav so aktivirane ali ne.

V naslednjem koraku bomo izdelali prvi navidezni gostitelj, ki kaže na privzeti localhost s privzeto potjo DocumentRoot za strežbo datotek spletnih mest (/srv/http .

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

Sem dodajte naslednje smernice Apache.

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

Najpomembnejši izjavi tukaj sta direktivi Port in ServerName , ki Apacheu nalaga, da odpre omrežno povezavo na vratih 80 in vse poizvedbe z imenom localhost preusmeri na služijo datotekam, ki se nahajajo na poti /srv/http/.

12. Ko je datoteka localhost ustvarjena, jo aktivirajte in znova zaženite demon httpd, da si ogledate spremembe.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Nato usmerite brskalnik na http:// localhost , če ga zaženete iz sistema Arch ali na http:// Arch_IP , če uporabljate oddaljeni sistem.

6. korak: Omogočite SSL z navideznim gostovanjem na LAMP

SSL ( Secure Sockets Layer ) je protokol, zasnovan za šifriranje povezav HTTP prek omrežij ali interneta, ki omogočajo prenos podatkov po varnem kanalu s pomočjo simetričnih/asimetričnih kriptografskih ključev in je v Arch Linuxu na voljo v paketu OpenSSL .

14. SSL modul privzeto ni omogočen v Apacheju v Arch Linuxu in ga je mogoče aktivirati tako, da iz glavne konfiguracijske datoteke httpd.conf izklopite komentar modula mod_ssl.so in Vključi Datoteka httpd-ssl.conf , ki se nahaja na dodatni poti httpd.

Toda za poenostavitev bomo ustvarili novo modulno datoteko za SSL v poti z omogočenim modsom in glavno konfiguracijsko datoteko Apache pustili nedotaknjeno. Ustvarite naslednjo datoteko za modul SSL in dodajte spodnjo vsebino.

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

Dodajte naslednjo vsebino.

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. Zdaj ustvarite datoteko navideznega gostitelja, ki kaže na isto ime lokalnega gostitelja, vendar tokrat uporablja konfiguracije strežnika SSL, in nekoliko spremenite njegovo ime, da vas opomni, da pomeni localhost s SSL.

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

V to datoteko dodajte naslednjo vsebino.

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

Poleg direktiv Port in ServerName so tukaj še druge pomembne direktive, ki kažejo na datoteko SSL Certificate in SSL Key , ki še niso ustvarjeni, zato ne zaženite spletnega strežnika Apache v nasprotnem primeru boste dobili nekaj napak.

16. Če želite ustvariti zahtevano datoteko s potrdilom SSL in ključi, namestite paket OpenSSL z izdajo spodnjega ukaza.

$ sudo pacman -S openssl

17. Nato ustvarite naslednji skript Bash , ki samodejno ustvari in shrani vsa vaša potrdila Apache in tipke v /etc/httpd/conf/ssl/ sistemska pot.

$ sudo nano apache_gen_ssl

Dodajte naslednjo vsebino datoteke, nato jo shranite in naredite izvedljivo.

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

Če želite, da je skript na voljo v celotnem sistemu, ga kopirajte v izvršljiv $PATH .

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

18. Zdaj ustvarite svoje potrdilo in ključe , tako da zaženete skript. Navedite možnosti SSL in ne pozabite imena potrdila in Splošno ime , da se ujemata z vašo uradno domeno ( FQDN ).

$ sudo ./apache_gen_ssl

Potem ko ste ustvarili potrdilo in ključe, ne pozabite spremeniti svojega potrdila SSL in konfiguracije ključev, da se ujemajo z imenom tega potrdila.

19. Zadnji korak je aktiviranje novega SSL Virtual Host in ponovni zagon strežnika za uporabo konfiguracij.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

To je to! Če ga želite preveriti, odprite brskalnik in dodajte Arch IP na URL s protokolom HTTPS: https:/localhost ali https:/system_IP .

7. korak: Omogočite PHP v Apache

20. Apache privzeto ponuja samo vsebino statičnih datotek HTML v Arch Linuxu brez podpore za dinamične skriptne jezike. Če želite aktivirati PHP, najprej odprite glavno konfiguracijsko datoteko Apache, nato poiščite in razkomentirajte naslednjo izjavo LoadModule ( php-apache ne deluje z mod_mpm_event v Arch Linuxu ).

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

S [Ctrl] + [w] poiščite in komentirajte naslednjo vrstico, da bo videti tako.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Nato ustvarite novo datoteko za modul PHP v poti z omogočenim modsom z naslednjo vsebino.

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

Dodajte natančno naslednjo vsebino (uporabiti morate 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. Če želite preveriti nastavitev, v svojem DocumnetRoot (/srv/http/) ustvarite datoteko z imenom info.php , nato znova zaženite Apache in usmerite brskalnik na info .php datoteka: https: //localhost/info.php .

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

To je to! Če je vse videti kot na zgornji sliki, imate zdaj v Apacheju omogočen PHP dinamični skriptni jezik na strežniku in zdaj lahko razvijate spletna mesta z uporabo odprtokodnega CMS-a, na primer WordPress .

Če želite preveriti sintaksne konfiguracije Apacheja in si ogledati seznam naloženih modulov brez ponovnega zagona demona httpd, zaženite naslednje ukaze.

$ sudo apachectl configtest
$ sudo apachectl -M

8. korak: Namestite in konfigurirajte PhpMyAdmin

23. Če ne obvladate ukazne vrstice MySQL in želite preprost oddaljen dostop do zbirke podatkov MySQL, ki je na voljo prek spletnega vmesnika, potem potrebujete paket PhpMyAdmin , nameščen na vašem polju Arch.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Po namestitvi paketov morate omogočiti nekatere razširitve PHP ( mysqli.so , mcrypt.so - za notranjo overitev), lahko pa omogočite tudi druge moduli, potrebni za prihodnje platforme CMS, kot so openssl.so , imap.so ali iconv.so itd.

$ sudo nano /etc/php/php.ini

Poiščite in razkomentirajte zgornje razširitve.

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

V isti datoteki poiščite in poiščite izjavo open_basedir in dodajte sistemsko pot PhpMyAdmin (/etc/webapps/ in /usr/share/webapps/), da zagotovite, da lahko PHP dostopa do datotek v teh imenikih in jih bere (če tudi spremenite pot Virtual Hosts DocumentRoot iz /srv/http/ na drugo mesto, morate novo pot dodati tudi tukaj ).

25. Zadnja stvar, ki jo morate storiti za dostop do spletnega vmesnika PhpMyAdmin, je, da na virtualne gostitelje dodate izjave PhpMyAdmin Apache Kot varnostni ukrep bomo zagotovili, da je do spletnega vmesnika PhpMyAdmin mogoče dostopati samo z lokalnega gostitelja (ali sistemskega naslova IP) s protokolom HTTPS, ne pa tudi z drugih različnih navideznih gostiteljev. Torej, odprite datoteko localhost-ssl.conf Apache in na dnu, pred zadnjim stavkom dodajte naslednjo vsebino.

$ 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. Nato znova zaženite demon Apache in usmerite brskalnik na naslednji naslov, zato bi morali imeti dostop do spletnega vmesnika PhpMyAdmin: https:/localhost/phpmyadmin ali https:/system_IP/phpmyadmin .

27. Če po prijavi v PhpMyAdmin vidite spodnjo napako v zvezi s skrivnim pihom , odprite in uredite datoteko /etc/webapps/phpmyadmin/config.inc.php in vstavite naključni niz, kot je tisti v naslednjem stavku, nato osvežite stran.

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

9. korak: Omogočite sistem LAMP Wide

28. Če želite, da se sklad LAMP samodejno zažene po ponovnem zagonu sistema, zaženite naslednje ukaze.

$ sudo systemctl enable httpd mysqld

To je nekaj glavnih nastavitvenih nastavitev na LAMP , ki so potrebne za pretvorbo sistema Arch Linux v preprosto, a zmogljivo, hitro in robustno spletno platformo z najnižjo strežniško programsko opremo za majhne -kritična okolja, če pa ste trmasti in ga še vedno želite uporabljati v velikem proizvodnem okolju, se oborožite z dovolj potrpljenja in bodite še posebej pozorni na posodobitve paketov ter naredite redne varnostne kopije sistema za hitro obnovo sistema v primeru sistemske okvare.