Vyhledávání na webu

Instalace LAMP (Linux, Apache, MySQL/MariaDB a PHP/PhpMyAdmin) v Arch Linuxu


Arch Linux poskytuje flexibilní systémové prostředí pro snížení věku a je výkonným nejvhodnějším řešením pro vývoj webových aplikací na malých nekritických systémech díky skutečnosti, že jde o kompletní Open Source a poskytuje nejnovější verze na jádrech a webovém softwaru pro servery a databáze.

Hlavním cílem tohoto tutoriálu je provést vás úplnými pokyny krok za krokem, které nakonec povedou k instalaci jedné z nejpoužívanějších kombinací softwaru ve vývoji webu: LAMP (Linux, Apache, MySQL/MariaDB a PHP/PhpMyAdmin ) a představí vám některé pěkné funkce (rychlé a nečisté skripty Bash), které v systému Arch Linux nejsou, ale mohou usnadnit práci při vytváření více virtuálních hostitelů , vygenerujte certifikáty SSL a klíče potřebné pro zabezpečené transakce HTTS.

Požadavky

  1. Předchozí proces instalace Arch Linuxu – přeskočte poslední část s DHCP.
  2. Předchozí instalace LEMP na Arch Linuxu – pouze část s konfigurací Statické IP adresy a vzdáleného SSH přístupu.

Krok 1: Nainstalujte základní software LAMP

1. Po minimální instalaci systému se statickou IP adresou a vzdáleným přístupem k systému pomocí SSH upgradujte svůj box Arch Linux pomocí nástroje pacman.

sudo pacman -Syu

2. Když proces upgradu dokončí instalaci LAMP po částech, nejprve nainstalujte Webový server Apache a spusťte/ověřte všechny démony procesu serveru.

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

3. Nainstalujte PHP dynamický skriptovací jazyk na straně serveru a jeho modul Apache.

sudo pacman -S php php-apache

4. V posledním kroku instalace databáze MySQL vyberte 1 (MariaDB) komunitní rozvětvení databáze, poté spusťte a zkontrolujte stav démona.

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

Nyní máte nainstalovaný základní software LAMP a můžete začít s výchozími konfiguracemi.

Krok 2: Zabezpečení databáze MySQL

5. Dalším krokem je zabezpečení databáze MySQL nastavením hesla pro účet root, odstranění účtů anonymních uživatelů, odstranění testovací databáze a zákaz vzdáleného přihlášení pro uživatele root ( stiskněte [ Klávesa Enter] pro aktuální heslo účtu root a na všechny bezpečnostní otázky odpovězte Ano).

sudo mysql_secure_installation

6. Ověřte připojení k databázi MySQL spuštěním následujícího příkazu a poté opusťte prostředí databáze příkazem quit nebo exit.

mysql -u root -p

Krok 3: Upravte hlavní konfigurační soubor Apache

7. Následující konfigurace se většinou týkají webového serveru Apache a poskytují dynamické rozhraní pro virtuální hostování se skriptovacím jazykem PHP, SSL nebo Virtuální hostitelé bez SSL a lze to provést úpravou konfigurace souboru služby httpd.

Nejprve otevřete hlavní konfiguraci souboru Apache pomocí vašeho oblíbeného textového editoru.

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

Na samém konci souboru připojte následující dva řádky.

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

Úlohou příkazů Include zde je říci Apache, že od této chvíle by měl číst další konfigurace ze všech souborů, které jsou umístěny v /etc/httpd/conf/sites-enabled/ (pro Virtuální hostování) a /etc/httpd/conf/mods-enabled/ (pro moduly povolený server) systémové cesty, které končí rozšíření .conf.

8. Poté, co byl Apache instruován těmito dvěma direktivami, vytvořte potřebné systémové adresáře a zadávejte následující příkazy.

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

Cesta sites-available obsahuje všechny konfigurační soubory virtuálních hostitelů, které nejsou aktivovány na Apache, ale další skript Bash použije tento adresář k propojení a povolení webových stránek, které se tam nacházejí.

Krok 4: Vytvořte příkazy a2eniste a a2diste Apache

9. Nyní je čas vytvořit skripty a2ensite a a2dissite Apache, které budou sloužit jako příkazy pro povolení nebo zakázání konfiguračního souboru virtuálního hostitele. Zadáním příkazu cd se vraťte do své uživatelské cesty $HOME a vytvořte si skripty bash a2eniste a a2dissite pomocí oblíbený editor.

sudo nano a2ensite

Přidejte do tohoto souboru následující obsah.

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

Nyní vytvořte soubor skriptu a2dissite bash.

sudo nano a2dissite

Připojte následující obsah.

#!/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 vytvoření souborů přidělte oprávnění ke spuštění a zkopírujte je do spustitelného adresáře ` PATH, aby byly dostupné pro celý systém.

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

Krok 5: Vytvořte virtuální hostitele v Apache

11. Výchozí konfigurační soubor virtuálního hostitele pro webový server Apache na Arch Linuxu poskytuje soubor httpd-vhosts.conf umístěný v /etc/httpd/conf/extra / cesta, ale pokud máte systém, který používá mnoho virtuálních hostitelů, může být velmi obtížné sledovat, která webová stránka je aktivována nebo ne. Pokud chcete deaktivovat webovou stránku, musíte okomentovat nebo smazat všechny její direktivy a to může být obtížná mise, pokud váš systém poskytuje mnoho webů a váš web má více konfiguračních direktiv.

Použití cest sites-available a sites-enabled značně zjednodušuje práci s povolením nebo deaktivací webů a také zachovává všechny konfigurační soubory vašich webových stránek, i když jsou aktivované nebo ne.

V dalším kroku vytvoříme prvního virtuálního hostitele, který ukazuje na výchozí localhost s výchozí cestou DocumentRoot pro obsluhu souborů webových stránek (/srv/http.

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

Sem přidejte následující direktivy 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>

Nejdůležitějšími příkazy jsou zde direktivy Port a ServerName, které instruují Apache, aby otevřel síťové připojení na portu 80 a přesměroval všechny dotazy s názvem localhost na obsluhovat soubory umístěné v cestě /srv/http/.

12. Po vytvoření souboru localhost jej aktivujte a poté restartujte démona httpd, abyste viděli změny.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Poté nasměrujte svůj prohlížeč na http://localhost, pokud jej spouštíte ze systému Arch, nebo na http://Arch_IP, pokud používáte vzdálený systém.

Krok 6: Povolte SSL s virtuálním hostingem na LAMP

SSL (Secure Sockets Layer) je protokol navržený pro šifrování připojení HTTP přes sítě nebo internet, který umožňuje přenos dat přes zabezpečený kanál pomocí symetrických/asymetrických kryptografických klíčů. a je poskytován v Arch Linuxu pomocí balíčku OpenSSL.

14. Ve výchozím nastavení není modul SSL na Apache v Arch Linuxu povolen a lze jej aktivovat zrušením komentáře modulu mod_ssl.so z hlavního httpd.conf konfigurační soubor a Zahrnout httpd-ssl.conf soubor umístěný v extra cestě httpd.

Ale pro zjednodušení vytvoříme nový soubor modulu pro SSL v cestě mods-enabled a ponecháme hlavní konfigurační soubor Apache nedotčený. Vytvořte následující soubor pro modul SSL a přidejte níže uvedený obsah.

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

Připojte následující obsah.

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. Nyní vytvořte soubor virtuálního hostitele, který ukazuje na stejný název localhost, ale tentokrát použije konfiguraci serveru SSL, a mírně změňte jeho název, aby vám připomněl, že znamená localhost s SSL.

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

Přidejte do tohoto souboru následující obsah.

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

Kromě direktiv Port a ServerName jsou zde další důležité direktivy ty, které ukazují na soubor SSL Certificate a SSL Key, které ještě nejsou vytvořeny, takže nerestartujte webový server Apache, jinak se objeví nějaké chyby.

16. Chcete-li vytvořit požadovaný soubor certifikátu SSL a klíče, nainstalujte balíček OpenSSL s následujícím příkazem.

sudo pacman -S openssl

17. Poté vytvořte následující skript Bash, který automaticky vytvoří a uloží všechny vaše Certifikáty Apache a Klíče v /etc/httpd/conf/ssl/ systémovou cestu.

sudo nano apache_gen_ssl

Přidejte následující obsah souboru, uložte jej a udělejte jej spustitelný.

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

Pokud chcete, aby byl skript dostupný v celém systému, zkopírujte jej do spustitelného souboru ` PATH.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Nyní vygenerujte svůj Certifikát a Klíče spuštěním skriptu. Zadejte možnosti SSL a nezapomeňte na název certifikátu a Obvyklý název, aby odpovídal vaší oficiální doméně (FQDN).

sudo ./apache_gen_ssl

Po vytvoření certifikátu a klíčů nezapomeňte upravit konfiguraci certifikátu a klíčů virtuálního hostitele SSL tak, aby odpovídala názvu tohoto certifikátu.

19. Posledním krokem je aktivace nového virtuálního hostitele SSL a restartování serveru pro použití konfigurací.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

A je to! Chcete-li to ověřit, otevřete prohlížeč a přidejte Arch IP na adresu URL pomocí protokolu HTTPS: https://localhost nebo https://system_IP.

Krok 7: Povolte PHP na Apache

20. Ve výchozím nastavení poskytuje Apache pouze obsah statických HTML souborů v Arch Linuxu bez podpory dynamických skriptovacích jazyků. Chcete-li aktivovat PHP, nejprve otevřete hlavní konfigurační soubor Apache a poté vyhledejte a odkomentujte následující příkaz LoadModule (php-apache nefunguje s mod_mpm_event v Arch Linuxu ).

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

Pomocí [Ctrl]+[w] vyhledejte a okomentujte následující řádek, aby vypadal takto.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Poté vytvořte nový soubor pro modul PHP v cestě mods-enabled s následujícím obsahem.

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

Přidejte přesně následující obsah (musíte použít 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. Pro ověření nastavení vytvořte PHP soubor s názvem info.php ve vašem DocumnetRoot (/srv/http/), poté restartujte Apache a přejděte vašeho prohlížeče do souboru info.php: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

A je to! Pokud vše vypadá jako na obrázku výše, máte nyní na Apache povolen dynamický skriptovací jazyk PHP na straně serveru a nyní můžete vyvíjet webové stránky pomocí Open Source CMS, jako je například WordPress.

Pokud chcete ověřit konfigurace syntaxe Apache a zobrazit seznam načtených modulů bez restartování démona httpd, spusťte následující příkazy.

sudo apachectl configtest
sudo apachectl -M

Krok 8: Instalace a konfigurace PhpMyAdmin

23. Pokud neovládáte příkazový řádek MySQL a chcete jednoduchý vzdálený přístup k databázi MySQL poskytovaný prostřednictvím webového rozhraní, potřebujete balíček PhpMyAdmin nainstalovaný na vašem Arch boxu.

sudo pacman -S phpmyadmin php-mcrypt

24. Po instalaci balíčků musíte povolit některá rozšíření PHP (mysqli.so, mcrypt.so – pro interní ověřování) a můžete také povolit další moduly potřebné pro budoucí platformy CMS jako openssl.so, imap.so nebo iconv.so atd.

sudo nano /etc/php/php.ini

Vyhledejte výše uvedená rozšíření a zrušte jejich komentáře.

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

Ve stejném souboru také vyhledejte a najděte příkaz open_basedir a přidejte systémovou cestu PhpMyAdmin (/etc/webapps/ a /usr/share/webapps/), abyste se ujistili, že PHP může přistupovat k souborům v těchto adresářích a číst je (Pokud také změníte cestu Virtual Hosts DocumentRoot z /srv/http/ na jiné umístění, musíte sem také připojit novou cestu ).

25. Poslední věcí, kterou musíte udělat pro přístup k webovému rozhraní PhpMyAdmin, je přidat příkazy PhpMyAdmin Apache na virtuální hostitele. Jako bezpečnostní opatření zajistí, že webové rozhraní PhpMyAdmin může být přístupné pouze z localhost (nebo systémové IP adresy) pomocí protokolu HTTPS a ne z jiných různých virtuálních hostitelů. Otevřete tedy svůj soubor localhost-ssl.conf Apache a na konec, před poslední příkaz přidejte následující obsah.

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. Poté restartujte démona Apache a nasměrujte svůj prohlížeč na následující adresu a měli byste mít přístup k webovému rozhraní PhpMyAdmin: https://localhost/phpmyadmin nebo https://system_IP/phpmyadmin.

27. Pokud po přihlášení do PhpMyAdmin uvidíte dole chybu týkající se blowfish_secret, otevřete a upravte /etc/webapps/phpmyadmin/config.inc. php a vložte náhodný řetězec, jako je ten v následujícím příkazu, poté obnovte stránku.

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

Krok 9: Povolte LAMP System Wide

28. Pokud chcete, aby se zásobník LAMP automaticky spustil po restartu systému, spusťte následující příkazy.

sudo systemctl enable httpd mysqld

Toto jsou některá z hlavních konfiguračních nastavení na LAMP potřebná k transformaci systému Arch Linux na jednoduchou, ale výkonnou, rychlou a robustní webovou platformu se špičkovým serverovým softwarem pro malé -kritická prostředí, ale pokud jste tvrdohlaví a přesto to chcete používat ve velkém produkčním prostředí, měli byste se vyzbrojit spoustou trpělivosti a věnovat zvýšenou pozornost aktualizacím balíčků a vytvářet pravidelné zálohy systému pro rychlou obnovu systému v případě systémové poruchy.