Instaliranje LAMP-a (Linux, Apache, MySQL/MariaDB i PHP/PhpMyAdmin) u Arch Linuxu


Arch Linux pruža fleksibilno najnovije okruženje sustava i moćno je najprikladnije rješenje za razvoj web aplikacija na malim nekritičnim sustavima zbog činjenice da je potpun Open Source i pruža najnovija izdanja kernela i web softvera za poslužitelji i baze podataka.

Ovaj glavni cilj ovog vodiča je da vas vodi kroz potpune upute korak po korak koje će vas na kraju dovesti do instaliranja jedne od najčešće korištenih kombinacija softvera u web razvoju: LAMP (Linux, Apache, MySQL/MariaDB i PHP/PhpMyAdmin ) i predstavit će vam neke zgodne značajke (brze i prljave Bash skripte) koje nisu prisutne u Arch Linux sustavu, ali mogu olakšati posao pri stvaranju više Virtualnih hostova , generirajte SSL certifikate i Ključeve potrebne za sigurne HTTS transakcije.

Zahtjevi

  1. Prethodni postupak instalacije Arch Linuxa – preskočite zadnji dio s DHCP-om.
  2. Prethodna instalacija LEMP-a na Arch Linuxu – samo dio s konfiguracijom Statičke IP adrese i udaljenog SSH pristupa.

Korak 1: Instalirajte osnovni softver LAMP

1. Nakon minimalne instalacije sustava sa statičkom IP adresom i daljinskim pristupom sustavu pomoću SSH, nadogradite svoj Arch Linux uređaj pomoću pacman uslužnog programa.

sudo pacman -Syu

2. Kada proces nadogradnje završi, instalirajte LAMP iz dijelova, prvo instalirajte Apache web poslužitelj i pokrenite/provjerite demone svakog poslužiteljskog procesa.

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

3. Instalirajte PHP dinamički skriptni jezik na strani poslužitelja i njegov Apache modul.

sudo pacman -S php php-apache

4. U zadnjem koraku instalirajte MySQL bazu podataka, odaberite 1 (MariaDB) fork baze podataka zajednice, zatim pokrenite i provjerite status demona.

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

Sada imate instaliran osnovni LAMP softver i započeli s dosadašnjim zadanim konfiguracijama.

Korak 2: Osigurajte MySQL bazu podataka

5. Sljedeći korak je osigurati MySQL bazu podataka postavljanjem lozinke za root račun, uklanjanjem anonimnih korisničkih računa, uklanjanjem testne baze podataka i onemogućavanjem daljinske prijave za root korisnika ( pritisnite [ Unesi] ključ za trenutnu lozinku root računa i odgovori s Da na sva sigurnosna pitanja).

sudo mysql_secure_installation

6. Provjerite povezanost MySQL baze podataka izvođenjem sljedeće naredbe, a zatim napustite ljusku baze podataka s naredbom quit ili exit.

mysql -u root -p

Korak 3: Izmijenite glavnu konfiguracijsku datoteku Apachea

7. Sljedeće konfiguracije se većinom odnose na Apache Web poslužitelj kako bi se osiguralo dinamičko sučelje za Virtualni hosting s PHP skriptnim jezikom, SSL ili non-SSL Virtual Hosts i može se izvršiti izmjenom konfiguracije httpd servisne datoteke.

Prvo otvorite glavnu konfiguraciju Apache datoteke u svom omiljenom uređivaču teksta.

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

Na samom dnu datoteke dodajte sljedeća dva retka.

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

Uloga naredbi Include ovdje je reći Apacheu da bi od sada trebao čitati daljnje konfiguracije iz svih datoteka koje se nalaze u /etc/httpd/conf/sites-enabled/ (za Virtualni hosting) i /etc/httpd/conf/mods-enabled/ (za module omogućenog poslužitelja) sistemske staze koje završavaju na proširenje .conf.

8. Nakon što Apache primi ove dvije direktive, kreirajte potrebne sistemske direktorije izdavanjem sljedećih naredbi.

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

Put dostupnih web-mjesta sadrži sve konfiguracijske datoteke virtualnih hostova koje nisu aktivirane na Apacheu, ali sljedeća Bash skripta koristit će ovaj direktorij za povezivanje i omogućavanje web-mjesta koja se tamo nalaze.

Korak 4: Stvorite a2eniste i a2diste Apache naredbe

9. Sada je vrijeme da stvorite a2ensite i a2dissite Apache skripte koje će služiti kao naredbe za omogućavanje ili onemogućavanje konfiguracijske datoteke virtualnog hosta. Upišite naredbu cd za povratak na svoju korisničku stazu $HOME i kreirajte svoje bash skripte a2eniste i a2dissite pomoću vašeg omiljeni urednik.

sudo nano a2ensite

Dodajte sljedeći sadržaj ovoj datoteci.

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

Sada stvorite datoteku bash skripte a2dissite.

sudo nano a2dissite

Dodajte sljedeći sadržaj.

#!/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. Nakon što su datoteke stvorene, dodijelite dopuštenja za izvršavanje i kopirajte ih u izvršni direktorij ` PATH kako bi bile dostupne cijelom sustavu.

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

Korak 5: Stvorite virtualne hostove u Apacheu

11. Zadana konfiguracijska datoteka virtualnog hosta za Apache web poslužitelj na Arch Linuxu pruža httpd-vhosts.conf datoteka koja se nalazi u /etc/httpd/conf/extra / put, ali ako imate sustav koji koristi puno virtualnih hostova, može biti vrlo teško pratiti koja je web stranica aktivirana ili ne. Ako želite onemogućiti web mjesto, morate komentirati ili izbrisati sve njegove direktive, a to može biti teška misija ako vaš sustav nudi mnogo web stranica i vaše web mjesto ima više konfiguracijskih direktiva.

Korištenje staza dostupnih web-mjesta i omogućenih web-mjesta uvelike pojednostavljuje posao omogućavanja ili onemogućavanja web-mjesta i također čuva sve konfiguracijske datoteke vaših web stranica čak i ako su aktivirane ili ne.

U sljedećem koraku ćemo konstruirati prvi virtualni host koji pokazuje na zadani lokalni host sa zadanom stazom DocumentRoot za posluživanje datoteka web stranica (/srv/http.

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

Ovdje dodajte sljedeće Apache direktive.

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

Najvažnije izjave ovdje su Port i ServerName direktive koje upućuju Apache da otvori mrežnu vezu na portu 80 i preusmjeri sve upite s nazivom lokalnog hosta na posluživati datoteke koje se nalaze na /srv/http/ stazi.

12. Nakon što je datoteka localhost stvorena, aktivirajte je i ponovno pokrenite httpd daemon da biste vidjeli promjene.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Zatim usmjerite svoj preglednik na http://localhost, ako ga pokrećete iz sustava Arch ili http://Arch_IP ako koristite daljinski sustav.

Korak 6: Omogućite SSL s virtualnim hostingom na LAMP-u

SSL (Secure Sockets Layer) je protokol dizajniran za šifriranje HTTP veza preko mreža ili interneta, što omogućuje prijenos podataka putem sigurnog kanala pomoću simetričnih/asimetričnih kriptografskih ključeva i pruža se u Arch Linuxu paketom OpenSSL.

14. Prema zadanim postavkama SSL modul nije omogućen na Apacheu u Arch Linuxu i može se aktivirati uklanjanjem komentara s mod_ssl.so modula iz glavnog httpd.conf konfiguracijsku datoteku i datoteku Include httpd-ssl.conf koja se nalazi u dodatnoj httpd stazi.

Ali da bismo pojednostavili stvari, stvorit ćemo novu datoteku modula za SSL u stazi mods-enabled i ostaviti glavnu Apache konfiguracijsku datoteku netaknutom. Stvorite sljedeću datoteku za SSL modul i dodajte donji sadržaj.

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

Dodajte sljedeći sadržaj.

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. Sada stvorite datoteku virtualnog hosta koja upućuje na isto ime lokalnog hosta, ali ovaj put koristeći konfiguracije SSL poslužitelja, i malo promijenite njeno ime da vas podsjeti da je to kratica za lokalni host sa SSL-om.

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

Dodajte sljedeći sadržaj ovoj datoteci.

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

Osim direktiva Port i Naziv poslužitelja, druge važne direktive ovdje su one koje upućuju na datoteku SSL certifikata i datoteku SSL ključa koji još nisu stvoreni pa nemojte ponovno pokretati Apache web poslužitelj ili ćete dobiti neke pogreške.

16. Za stvaranje potrebne datoteke SSL certifikata i ključeva instalirajte OpenSSL paket izdavanjem naredbe ispod.

sudo pacman -S openssl

17. Zatim izradite sljedeću Bash skriptu koja automatski stvara i pohranjuje sve vaše Apache certifikate i Ključeve u /etc/httpd/conf/ssl/ put sustava.

sudo nano apache_gen_ssl

Dodajte sljedeći sadržaj datoteke, zatim je spremite i učinite je izvršnom.

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

Ako želite da skripta bude dostupna cijelom sustavu, kopirajte je u izvršni ` PATH.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Sada generirajte svoj Certifikat i Ključeve pokretanjem skripte. Navedite svoje SSL opcije i ne zaboravite naziv certifikata i Common Name koji odgovaraju vašoj službenoj domeni (FQDN).

sudo ./apache_gen_ssl

Nakon što su certifikat i ključevi stvoreni, ne zaboravite izmijeniti svoj SSL Virtual Host certifikat i konfiguracije ključeva kako bi odgovarali nazivu ovog certifikata.

19. Zadnji korak je aktiviranje novog SSL virtualnog hosta i ponovno pokretanje vašeg poslužitelja za primjenu konfiguracija.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

To je to! Za provjeru otvorite preglednik i dodajte Arch IP na URL koristeći HTTPS protokol: https://localhost ili https://system_IP.

Korak 7: Omogućite PHP na Apacheu

20. Prema zadanim postavkama Apache poslužuje samo sadržaj HTML statičkih datoteka u Arch Linuxu bez podrške za dinamičke skriptne jezike. Za aktiviranje PHP-a prvo otvorite Apache glavnu konfiguracijsku datoteku, zatim pretražite i uklonite komentare iz sljedeće LoadModule izjave (php-apache ne radi s mod_mpm_event u Arch Linuxu ).

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

Koristeći [Ctrl]+[w] pretražite i komentirajte sljedeći redak da izgleda ovako.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Zatim stvorite novu datoteku za PHP modul u stazi mods-enabled sa sljedećim sadržajem.

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

Dodajte točno sljedeći sadržaj (morate koristiti 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. Za provjeru postavki kreirajte PHP datoteku pod nazivom info.php u vašem DocumnetRootu (/srv/http/), zatim ponovno pokrenite Apache i pokažite vaš preglednik u datoteku info.php: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

To je to! Ako sve izgleda kao na gornjoj slici, sada imate PHP dinamički skriptni jezik na strani poslužitelja omogućen na Apacheu i sada možete razvijati web stranice koristeći Open Source CMS kao što je WordPress na primjer.

Ako želite provjeriti konfiguracije Apache sintakse i vidjeti popis učitanih modula bez ponovnog pokretanja httpd demona, pokrenite sljedeće naredbe.

sudo apachectl configtest
sudo apachectl -M

Korak 8: Instalirajte i konfigurirajte PhpMyAdmin

23. Ako ne svladate MySQL naredbeni redak i želite jednostavan daljinski pristup MySQL bazi podataka putem web sučelja, trebate PhpMyAdmin paket instaliran na vaš Arch box.

sudo pacman -S phpmyadmin php-mcrypt

24. Nakon što su paketi instalirani, trebate omogućiti neka PHP proširenja (mysqli.so, mcrypt.so – za internu provjeru autentičnosti) i također možete omogućiti druge module potrebne za buduće CMS platforme kao što su openssl.so, imap.so ili iconv.so itd.

sudo nano /etc/php/php.ini

Pronađite gornja proširenja i uklonite komentare iz njih.

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

Također, u istoj datoteci pretražite i locirajte open_basedir izjavu i dodajte PhpMyAdmin sistemsku stazu (/etc/webapps/ i /usr/share/webapps/) kako biste bili sigurni da PHP može pristupiti i čitati datoteke u tim direktorijima (ako također promijenite stazu Virtual Hosts DocumentRoot iz /srv/http/ na drugu lokaciju, morate i ovdje dodati novu stazu ).

25. Posljednje što trebate učiniti kako biste pristupili web sučelju PhpMyAdmin je dodati PhpMyAdmin Apache izjave na virtualnim hostovima. Kao sigurnosna mjera pobrinut će se da web sučelje PhpMyAdmin može biti dostupno samo s lokalnog hosta (ili IP adrese sustava) koristeći HTTPS protokol, a ne s drugih različitih virtualnih hostova. Dakle, otvorite svoju localhost-ssl.conf Apache datoteku i na dnu, prije zadnje izjave dodajte sljedeći sadržaj.

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. Nakon toga ponovno pokrenite Apache demon i usmjerite svoj preglednik na sljedeću adresu i trebali biste moći pristupiti svom PhpMyAdmin web sučelju: https://localhost/phpmyadmin ili https://IP_sistema/phpmyadmin.

27. Ako, nakon što se prijavite na PhpMyAdmin, vidite donju pogrešku koja se odnosi na blowfish_secret, otvorite i uredite /etc/webapps/phpmyadmin/config.inc. php i umetnite nasumični niz poput onog u sljedećoj izjavi, a zatim osvježite stranicu.

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

Korak 9: Omogućite LAMP za cijeli sustav

28. Ako želite da se LAMP stack automatski pokrene nakon ponovnog pokretanja sustava, pokrenite sljedeće naredbe.

sudo systemctl enable httpd mysqld

Ovo su neke od glavnih konfiguracijskih postavki na LAMP potrebnih za transformaciju Arch Linux sustava u jednostavnu, ali moćnu, brzu i robusnu web platformu s najnovijim poslužiteljskim softverom za male ne -kritična okruženja, ali ako postanete tvrdoglavi i dalje ga želite koristiti u velikom produkcijskom okruženju, trebali biste se naoružati s puno strpljenja i obratiti dodatnu pozornost na ažuriranje paketa i redovito praviti sigurnosne kopije sustava za brzo vraćanje sustava u slučaju kvarovi sustava.