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


Arch Linux pruža fleksibilno sistemsko okruženje najnovije generacije i moćno je najprikladnije rješenje za razvoj web aplikacija na malim nekritičnim sistemima zbog činjenice da je potpuni Open Source i pruža posljednja ažurirana izdanja kernela i web softvera za servere i baze podataka.

Ovaj glavni opseg ovog tutorijala je da vas vodi kroz kompletna uputstva korak po korak koja će 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 lijepe karakteristike (brze i prljave Bash skripte) koje nisu prisutne u Arch Linux sistemu, ali mogu olakšati posao na kreiranju više Virtuelnih hostova , generirati SSL certifikate i Ključeve potrebne za sigurne HTTS transakcije.

Zahtjevi

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

Korak 1: Instalirajte osnovni softver LAMP

1. Nakon minimalne instalacije sistema sa statičkom IP adresom i udaljenim pristupom sistemu koristeći SSH, nadogradite svoj Arch Linux box koristeći pacman uslužni program.

sudo pacman -Syu

2. Kada se proces nadogradnje završi, instalirajte LAMP iz dijelova, prvo instalirajte Apache web server i pokrenite/provjerite svaki serverski procesni demon.

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

3. Instalirajte PHP dinamički skriptni jezik na strani servera i njegov Apache modul.

sudo pacman -S php php-apache

4. U posljednjem koraku instalirajte MySQL bazu podataka, odaberite 1 (MariaDB) zajednicu baze podataka, a zatim pokrenite i provjerite status demona.

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

Sada imate instaliran osnovni softver LAMP koji ste započeli sa zadanim konfiguracijama do sada.

Korak 2: Zaštitite 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 udaljene prijave za root korisnika ( pritisnite [ Unesite] ključ za trenutnu lozinku root naloga i odgovorite sa Da na sva sigurnosna pitanja).

sudo mysql_secure_installation

6. Provjerite povezanost MySQL baze podataka tako što ćete pokrenuti sljedeću naredbu, a zatim napustite ljusku baze podataka sa quit ili exit naredbom.

mysql -u root -p

Korak 3: Izmijenite Apache glavnu konfiguracijsku datoteku

7. Sljedeće konfiguracije se većinom odnose na Apache web server za pružanje dinamičkog sučelja za virtuelni hosting sa PHP skriptnim jezikom, SSL ili ne-SSL virtuelni hostovi i može se uraditi modifikovanjem konfiguracija httpd servisnih datoteka.

Prvo otvorite glavnu konfiguraciju Apache datoteke sa svojim omiljenim uređivačem teksta.

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

Na samom dnu datoteke dodajte sljedeća dva reda.

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

Uloga naredbi Include je da kaže Apacheu da će od sada nadalje čitati dalje konfiguracije iz svih datoteka koje se nalaze u /etc/httpd/conf/sites-enabled/ (za Virtualni hosting) i /etc/httpd/conf/mods-enabled/ (za omogućene serverske module) sistemske putanje koje završavaju na ekstenzija .conf.

8. Nakon što je Apache dobio instrukcije sa ove dvije direktive, kreirajte potrebne sistemske direktorije izdajući sljedeće naredbe.

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

Putanja sites-available sadrži sve konfiguracijske datoteke virtualnih hostova koje nisu aktivirane na Apache-u, ali će sljedeća Bash skripta koristiti ovaj direktorij za povezivanje i omogućavanje web lokacija koje se tamo nalaze.

Korak 4: Kreirajte a2eniste i a2diste Apache komande

9. Sada je vrijeme da kreirate 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 da se vratite na svoj $HOME korisnički put i kreirate svoje bash a2eniste i a2dissite skripte koristeći svoje 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 kreirajte datoteku skripte a2dissite bash.

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 kreirane, dodijelite dozvole za izvršavanje i kopirajte ih u ` PATH izvršni direktorij kako bi bili dostupni širom sistema.

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

Korak 5: Kreirajte virtuelne hostove u Apacheu

11. Podrazumevana konfiguraciona datoteka virtuelnog hosta za Apache Web server na Arch Linux-u je obezbeđena od datoteke httpd-vhosts.conf koja se nalazi u /etc/httpd/conf/extra / ali ako imate sistem koji koristi mnogo virtuelnih hostova može biti veoma teško pratiti koja je veb lokacija aktivirana ili ne. Ako želite onemogućiti web stranicu, morate komentirati ili izbrisati sve njene direktive, a to može biti teška misija ako vaš sistem nudi mnogo web stranica i vaša web stranica ima više konfiguracijskih direktiva.

Korištenje putanja dostupnih web lokacija i omogućenih web lokacija uvelike pojednostavljuje posao omogućavanja ili onemogućavanja web lokacija i također čuva sve konfiguracijske datoteke vaših web stranica iako su aktivirane ili ne.

U sljedećem koraku ćemo konstruirati prvi virtualni host koji ukazuje na default localhost sa zadanom DocumentRoot stazom 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 Apacheu da otvori mrežnu vezu na portu 80 i preusmjeri sve upite s imenom lokalnog hosta na posluživati fajlove koji se nalaze na /srv/http/ stazi.

12. Nakon što je lokalni host fajl kreiran, aktivirajte ga, a zatim ponovo pokrenite httpd demon da vidite promene.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Zatim usmjerite svoj preglednik na http://localhost, ako ga pokrenete sa Arch sistema ili http://Arch_IP ako koristite udaljeni sistem.

Korak 6: Omogućite SSL sa virtuelnim hostingom na LAMP-u

SSL (Secure Sockets Layer) je protokol dizajniran za šifriranje HTTP veza preko mreža ili Interneta, koji omogućava da se protok podataka prenosi preko sigurnog kanala koristeći simetrične/asimetrične kriptografske ključeve i dostupan je u Arch Linuxu od OpenSSL paketa.

14. Prema zadanim postavkama SSL modul nije omogućen na Apacheu u Arch Linuxu i može se aktivirati dekomentiranjem mod_ssl.so modula iz glavnog httpd.conf konfiguracionu datoteku i Uključi httpd-ssl.conf datoteku koja se nalazi na dodatnoj httpd putanji.

Ali da bismo pojednostavili stvari, kreiraćemo novu datoteku modula za SSL na mods-enabled putanji i ostaviti glavni Apache konfiguracioni fajl netaknut. Kreirajte sljedeću datoteku za SSL modul i dodajte sadržaj ispod.

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 kreirajte virtuelni host fajl koji ukazuje na isto ime lokalnog hosta, ali ovaj put koristeći konfiguracije SSL servera, i malo promenite njegovo ime da vas podseti da je skraćenica za localhost sa SSL.

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 Port i ServerName direktiva, druge važne direktive ovdje su one koje upućuju na datoteku SSL Certificate i SSL Key fajl koji još nisu kreirani pa nemojte ponovo pokretati Apache Web Server ili ćete dobiti neke greške.

16. Da kreirate potrebnu datoteku SSL certifikata i ključeve, instalirajte OpenSSL paket izdavanjem naredbe ispod.

sudo pacman -S openssl

17. Zatim kreirajte sljedeću Bash skriptu koja automatski kreira i pohranjuje sve vaše Apache certifikate i Ključeve u >/etc/httpd/conf/ssl/ sistemska putanja.

sudo nano apache_gen_ssl

Dodajte sadržaj sljedeće datoteke, a zatim je sačuvajte i učinite 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 širom sistema, 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 kreiranja certifikata i ključeva, ne zaboravite izmijeniti svoj SSL Virtual Host certifikat i konfiguracije ključeva tako da odgovaraju nazivu ovog certifikata.

19. Posljednji korak je aktiviranje novog SSL virtuelnog hosta i ponovno pokretanje vašeg servera za primjenu konfiguracija.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

To je to! Da biste to potvrdili, otvorite pretraživač i dodajte Arch IP na URL koristeći HTTPS protokol: https://localhost ili https://system_IP.

Korak 7: Omogućite PHP na Apache-u

20. Prema zadanim postavkama Apache služi samo sadržaj HTML statičkih datoteka u Arch Linuxu bez podrške za dinamičke skriptne jezike. Da biste aktivirali PHP, prvo otvorite glavnu konfiguracijsku datoteku Apachea, a zatim pretražite i dekomentirajte sljedeću LoadModule naredbu (php-apache ne radi sa mod_mpm_event u Arch Linuxu ).

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

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

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Zatim kreirajte novu datoteku za PHP modul na mods-enabled putanji sa sljedećim sadržajem.

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

Dodajte tač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. Da biste potvrdili postavku, kreirajte PHP datoteku pod nazivom info.php u vašem DocumnetRoot-u (/srv/http/), zatim ponovo pokrenite Apache i pokažite Vaš pretraživač u datoteku info.php: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

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

Ako želite da provjerite konfiguracije Apache sintakse i vidite listu 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 vladate MySQL komandnom linijom i želite jednostavan daljinski pristup MySQL bazi podataka preko web interfejsa onda vam je potreban paket PhpMyAdmin instaliran na vašem Arch boxu.

sudo pacman -S phpmyadmin php-mcrypt

24. Nakon što su paketi instalirani potrebno je da omogućite neke PHP ekstenzije (mysqli.so, mcrypt.so – za internu autentifikaciju) i možete, također, 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 i skinite komentare gore navedenih ekstenzija.

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, na istoj datoteci pretražite i locirajte naredbu open_basedir i dodajte PhpMyAdmin sistemsku putanju (/etc/webapps/ i /usr/share/webapps/) da 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 dodati i novu putanju ovdje ).

25. Posljednja stvar koju trebate učiniti da biste pristupili PhpMyAdmin web interfejsu je da dodate PhpMyAdmin Apache izjave na virtuelne hostove. Kao sigurnosna mjera osigurat će se da PhpMyAdmin web interfejs može biti dostupan samo sa lokalnog hosta (ili sistemske IP adrese) koristeći HTTPS protokol, a ne sa drugih različitih virtuelnih hostova. Dakle, otvorite svoj localhost-ssl.conf Apache fajl i na dnu, prije posljednje naredbe 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 ponovo pokrenite Apache demon i usmjerite svoj pretraživač na sljedeću adresu i trebali biste moći pristupiti svom PhpMyAdmin web sučelju: https://localhost/phpmyadmin ili https://system_IP/phpmyadmin.

27. Ako, nakon što se prijavite na PhpMyAdmin, vidite donju grešku u vezi sa blowfish_secret, otvorite i uredite /etc/webapps/phpmyadmin/config.inc. php datoteku 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 širom sistema

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

sudo systemctl enable httpd mysqld

Ovo su neke od glavnih konfiguracijskih postavki na LAMP-u koje su potrebne za transformaciju Arch Linux sistema u jednostavnu, ali moćnu, brzu i robusnu web platformu sa najnovijim serverskim softverom za male ne -kritična okruženja, ali ako postanete tvrdoglavi i još uvijek želite da ga koristite u velikom proizvodnom okruženju, trebali biste se naoružati sa dosta strpljenja i obratiti dodatnu pažnju na ažuriranja paketa i praviti redovne sigurnosne kopije sistema za brzo obnavljanje sistema u slučaju sistemski kvarovi.