Weboldal keresés

A LAMP (Linux, Apache, MySQL/MariaDB és PHP/PhpMyAdmin) telepítése Arch Linux alatt


Az Arch Linux rugalmas vágáskorú rendszerkörnyezetet biztosít, és hatékony megoldást jelent a webalkalmazások fejlesztésére kis, nem kritikus rendszereken, mivel teljes nyílt forráskódú, és biztosítja a kernelek és webszoftverek legfrissebb verzióit. szerverek és adatbázisok.

Ennek az oktatóanyagnak ez a fő célja, hogy végigvezeti Önt egy teljes, lépésről lépésre szóló utasításon, amely végül a webfejlesztés egyik leggyakrabban használt szoftverkombinációjának telepítéséhez vezet: LAMP (Linux, Apache, MySQL/MariaDB és PHP/PhpMyAdmin ), és bemutat néhány szép funkciót (gyors és piszkos Bash szkriptek), amelyek nincsenek meg az Arch Linux rendszerben, de megkönnyíthetik a több virtuális gazdagép létrehozását. , létrehozza a biztonságos HTTS tranzakciókhoz szükséges SSL-tanúsítványokat és kulcsokat.

Követelmények

  1. Előző Arch Linux telepítési folyamat – hagyja ki az utolsó részt DHCP-vel.
  2. Korábbi LEMP-telepítés Arch Linuxon – csak az a rész, amelyben konfigurált statikus IP-cím és távoli SSH-hozzáférés.

1. lépés: Telepítse az alapszoftver LAMP-ot

1. Minimális rendszertelepítés után statikus IP-címmel és távoli rendszer-hozzáféréssel az SSH használatával, frissítse az Arch Linux boxot a pacman segédprogrammal.

sudo pacman -Syu

2. Amikor a frissítési folyamat befejeződik, telepítse a LAMP elemet, először telepítse az Apache webszervert, és indítsa el/ellenőrizze az összes szerverfolyamat démont.

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

3. Telepítse a PHP dinamikus szerveroldali szkriptnyelvet és annak Apache modulját.

sudo pacman -S php php-apache

4. A MySQL adatbázis telepítésének utolsó lépésében válasszon 1 (MariaDB) közösségi adatbázis-elágazást, majd indítsa el és ellenőrizze a démon állapotát.

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

Most már telepítve van az alapvető LAMP szoftver, és az eddigi alapértelmezett konfigurációkkal kezdte.

2. lépés: Biztonságos MySQL-adatbázis

5. A következő lépés a MySQL adatbázis biztonságossá tétele a root fiókhoz tartozó jelszó beállításával, az anonim felhasználói fiókok eltávolítása, a tesztadatbázis eltávolítása és a távoli bejelentkezés letiltása a root felhasználó számára ( nyomja meg a [ gombot Enter] kulcs a root fiók jelenlegi jelszavához, és válaszoljon Igen-vel minden biztonsági kérdésre).

sudo mysql_secure_installation

6. Ellenőrizze a MySQL-adatbázis-kapcsolatot a következő parancs futtatásával, majd hagyja el az adatbázishéjat quit vagy exit utasítással.

mysql -u root -p

3. lépés: Módosítsa az Apache fő konfigurációs fájlját

7. A következő konfigurációk többsége az Apache webszerverhez kapcsolódik, hogy dinamikus felületet biztosítson a virtuális tárhelyhez PHP szkriptnyelvvel, SSL-lel vagy nem SSL virtuális gazdagépek, és a httpd szolgáltatásfájl konfigurációjának módosításával tehető meg.

Először nyissa meg a fő Apache fájlkonfigurációt kedvenc szövegszerkesztőjével.

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

A fájl aljához fűzze hozzá a következő két sort.

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

Az Include utasítások szerepe itt az, hogy megmondják az Apache-nak, hogy mostantól be kell olvasnia a további konfigurációkat az /etc/httpd/conf/sites-enabled/ (a virtuális tárhelyhez) és az /etc/httpd/conf/mods-enabled/ (az engedélyezett szerver modulokhoz) rendszerútvonalak, amelyek a következővel végződnek: egy .conf kiterjesztést.

8. Miután az Apache utasította ezt a két direktívát, hozza létre a szükséges rendszerkönyvtárakat a következő parancsok kiadásával.

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

Az elérhető helyek elérési út az összes olyan Virtual Hosts konfigurációs fájlt tartalmazza, amely nincs aktiválva az Apache-on, de a következő Bash-szkript ezt a könyvtárat fogja használni az ott található webhelyek összekapcsolására és engedélyezésére.

4. lépés: Hozzon létre a2eniste és a2diste Apache parancsokat

9. Most itt az ideje létrehozni az a2ensite és a2dissite Apache-szkripteket, amelyek parancsként szolgálnak a Virtual Host konfigurációs fájljának engedélyezéséhez vagy letiltásához. Írja be a cd parancsot, hogy visszatérjen a $HOME felhasználói elérési útjára, és létrehozza a bash a2eniste és a2dissite szkripteket kedvenc szerkesztő.

sudo nano a2ensite

Adja hozzá a következő tartalmat ehhez a fájlhoz.

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

Most hozzon létre a2dissite bash script fájlt.

sudo nano a2dissite

Csatolja a következő tartalmat.

#!/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. A fájlok létrehozása után rendeljen végrehajtási engedélyeket, és másolja át őket egy ` PATH végrehajtható könyvtárba, hogy a rendszer egészében elérhetővé váljanak.

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

5. lépés: Hozzon létre virtuális gazdagépeket az Apache-ban

11. A Virtual Host alapértelmezett konfigurációs fájlja az Apache webszerverhez Arch Linux rendszeren a /etc/httpd/conf/extra címen található httpd-vhosts.conf fájlból származik. / elérési utat, de ha sok virtuális gazdagépet használó rendszere van, akkor nagyon nehéz nyomon követni, hogy melyik webhely van aktiválva vagy sem. Ha szeretne letiltani egy webhelyet, megjegyzést kell írnia vagy törölnie kell az összes direktívát, és ez nehéz feladat lehet, ha a rendszer sok webhelyet biztosít, és webhelye több konfigurációs direktívával rendelkezik.

A elérhető webhelyek és a webhelyek engedélyezése útvonalak használata nagymértékben leegyszerűsíti a webhelyek engedélyezését vagy letiltását, és megőrzi az összes webhely konfigurációs fájlja, függetlenül attól, hogy aktiválva vannak-e vagy sem.

A következő lépésben meg fogjuk építeni az első virtuális gazdagépet, amely az alapértelmezett localhost-ra mutat a webhelyfájlok kiszolgálására szolgáló alapértelmezett DocumentRoot útvonallal (/srv/http.

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

Adja hozzá a következő Apache direktívákat.

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

A legfontosabb utasítások itt a Port és a ServerName direktívák, amelyek arra utasítják az Apache-t, hogy nyisson hálózati kapcsolatot a 80 porton, és irányítsa át az összes localhost nevű lekérdezést a következőre. a /srv/http/ útvonalon található fájlok kiszolgálása.

12. A localhost fájl létrehozása után aktiválja, majd indítsa újra a httpd démont a változások megtekintéséhez.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Ezután mutasson böngészőjében a http://localhost címre, ha Arch rendszerről futtatja, vagy a http://Arch_IP címre, ha használja távoli rendszer.

6. lépés: Engedélyezze az SSL-t virtuális tárhellyel a LAMP-on

Az SSL (Secure Sockets Layer) egy protokoll, amelyet a HTTP-kapcsolatok titkosítására terveztek hálózaton vagy interneten keresztül, amely lehetővé teszi az adatáramlás biztonságos csatornán történő továbbítását szimmetrikus/aszimmetrikus kriptográfiai kulcsok segítségével. és az Arch Linuxban az OpenSSL csomag biztosítja.

14. Alapértelmezés szerint az SSL-modul nincs engedélyezve az Apache-on Arch Linuxban, és aktiválható a mod_ssl.so modul megjegyzésének törlésével a fő httpd.conf webhelyről. konfigurációs fájl és Include httpd-ssl.conf fájl, amely az extra httpd útvonalon található.

De az egyszerűsítés érdekében létrehozunk egy új modulfájlt az SSL-hez a mods-enabled útvonalon, és érintetlenül hagyjuk a fő Apache konfigurációs fájlt. Hozza létre a következő fájlt az SSL modulhoz, és adja hozzá az alábbi tartalmat.

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

Csatolja a következő tartalmat.

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. Most hozzon létre egy Virtual Host fájlt, amely ugyanarra a localhost névre mutat, de ezúttal SSL-kiszolgálókonfigurációt használ, és módosítsa kissé a nevét, hogy emlékeztessen arra, hogy az SSL-t használó localhost rövidítése.

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

Adja hozzá a következő tartalmat ehhez a fájlhoz.

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

A Port és a ServerName direktívák mellett további fontos direktívák az SSL Certificate fájlra és az SSL Key fájlra mutatnak, amelyek még nincsenek létrehozva, ezért ne indítsa újra az Apache Web Servert, különben hibákat fog kapni.

16. A szükséges SSL-tanúsítványfájl és kulcsok létrehozásához telepítse az alábbi parancsot kiadó OpenSSL csomagot.

sudo pacman -S openssl

17. Ezután hozza létre a következő Bash szkriptet, amely automatikusan létrehozza és tárolja az összes Apache-tanúsítványt és kulcsot itt: /etc/httpd/conf/ssl/ rendszerútvonalat.

sudo nano apache_gen_ssl

Adja hozzá a következő fájl tartalmát, majd mentse el, és tegye végrehajthatóvá.

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

Ha azt szeretné, hogy a szkript elérhető legyen a rendszerben, másolja át egy végrehajtható ` PATH-ra.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Most hozza létre a tanúsítványt és a kulcsokat a szkript futtatásával. Adja meg SSL-beállításait, és ne felejtse el a tanúsítvány nevét és a hivatalos domainjének (FQDN) megfelelő általános nevet.

sudo ./apache_gen_ssl

A tanúsítvány és a kulcsok létrehozása után ne felejtse el módosítani az SSL Virtual Host tanúsítványt és a kulcsok konfigurációját, hogy megfeleljenek ennek a tanúsítványnak.

19. Az utolsó lépés az új SSL Virtual Host aktiválása, és a kiszolgáló újraindítása a konfigurációk alkalmazásához.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

Ez az! Az ellenőrzéshez nyissa meg a böngészőt, és adja hozzá az Arch IP-címet az URL-hez a HTTPS protokoll használatával: https://localhost vagy https://system_IP.

7. lépés: Engedélyezze a PHP-t az Apache-on

20. Alapértelmezés szerint az Apache csak a statikus HTML-fájlok tartalmát szolgálja ki az Arch Linuxban, dinamikus szkriptnyelvek támogatása nélkül. A PHP aktiválásához először nyissa meg az Apache fő konfigurációs fájlját, majd keresse meg a következő LoadModule utasítást, és törölje a megjegyzéseket (a php-apache nem működik a mod_mpm_event mellett Arch Linuxban ).

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

A [Ctrl]+[w] használatával keressen, és kommentálja a következő sort, hogy így nézzen ki.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Ezután hozzon létre egy új fájlt a PHP modulhoz a mods-enabled útvonalon a következő tartalommal.

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

Adja hozzá pontosan a következő tartalmat (a mod_mpm_prefork parancsot kell használnia).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. A beállítás ellenőrzéséhez hozzon létre a PHP-ben egy info.php nevű fájlt a DocumnetRootban (/srv/http/), majd indítsa újra az Apache-ot, és mutasson rá böngészőjében az info.php fájlba: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

Ez az! Ha minden úgy néz ki, mint a fenti képen, akkor most már engedélyezve van a PHP dinamikus szerveroldali szkriptnyelve az Apache-on, és mostantól webhelyeket fejleszthet nyílt forráskódú CMS-ekkel, mint például a WordPress.

Ha ellenőrizni szeretné az Apache szintaktikai konfigurációit, és meg szeretné tekinteni a betöltött modulok listáját a httpd démon újraindítása nélkül, futtassa a következő parancsokat.

sudo apachectl configtest
sudo apachectl -M

8. lépés: A PhpMyAdmin telepítése és konfigurálása

23. Ha nem uralja a MySQL parancssort, és egyszerű távoli hozzáférést szeretne a MySQL adatbázishoz webes felületen keresztül, akkor telepítenie kell a PhpMyAdmin csomagot az Arch boxra.

sudo pacman -S phpmyadmin php-mcrypt

24. A csomagok telepítése után engedélyeznie kell néhány PHP-bővítményt (mysqli.so, mcrypt.so – belső hitelesítéshez) és más modulokat is engedélyezhet a jövőbeni CMS-platformokhoz, például az openssl.so, az imap.so vagy az iconv.so stb.

sudo nano /etc/php/php.ini

Keresse meg a fenti bővítményeket, és törölje a megjegyzéseket.

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

Ugyanabban a fájlban keresse meg és keresse meg az open_basedir utasítást, és adja hozzá a PhpMyAdmin rendszerútvonalat (/etc/webapps/ és /usr/share/webapps/ >) annak érdekében, hogy a PHP hozzáférjen és olvashasson az ezekben a könyvtárakban található fájlokhoz (ha Ön is módosítja a Virtual Hosts DocumentRoot elérési útját a /srv/http/ helyről egy másik helyre, ide is hozzá kell fűznie az új elérési utat ).

25. Az utolsó dolog, amit a PhpMyAdmin webes felület eléréséhez meg kell tennie, az, hogy PhpMyAdmin Apache utasításokat ad hozzá a virtuális gazdagépekhez. Biztonsági intézkedésként gondoskodni kell arról, hogy a PhpMyAdmin webes felület csak a HTTPS protokollt használó localhost-ról (vagy a rendszer IP-címéről) legyen elérhető, más virtuális gépekről ne. Tehát nyissa meg a localhost-ssl.conf Apache fájlt, és az utolsó utasítás előtti alján adja hozzá a következő tartalmat.

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. Ezt követően indítsa újra az Apache démont, és mutasson böngészőjében a következő címre, és el kell tudnia érni a PhpMyAdmin webes felületét: https://localhost/phpmyadmin vagy https://system_IP/phpmyadmin.

27. Ha a PhpMyAdminba való bejelentkezés után egy blowfish_secret hibaüzenetet lát, nyissa meg és szerkessze a következőt: /etc/webapps/phpmyadmin/config.inc. php fájlt, és szúrjon be egy véletlenszerű karakterláncot, mint a következő utasításban, majd frissítse az oldalt.

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

9. lépés: A LAMP System Wide engedélyezése

28. Ha azt szeretné, hogy a LAMP verem automatikusan elinduljon a rendszer újraindítása után, futtassa a következő parancsokat.

sudo systemctl enable httpd mysqld

Ezek a LAMP fő konfigurációs beállításai, amelyek szükségesek ahhoz, hogy egy Arch Linux rendszert egyszerű, de hatékony, gyors és robusztus webes platformmá alakíthassunk át korszerű szerverszoftverrel a kisméretű, nem. - kritikus környezetekben, de ha makacskodik, és továbbra is nagy termelési környezetben szeretné használni, akkor kell sok türelemmel felvérteznie magát, és fokozott figyelmet kell fordítania a csomagfrissítésekre, és rendszeres rendszeres biztonsági mentéseket kell készítenie a gyors rendszer-visszaállítás érdekében. rendszerhibák.