GNU/Linux >> Znalost Linux >  >> Ubuntu

Výukový program serveru Ubuntu 16.04 (LTS) LAMP s Apache, PHP 7 a MySQL

LAMP je zkratka pro L inux, A pache, M ySQL, P HP. Tento tutoriál ukazuje, jak můžete nainstalovat webový server Apache na server Ubuntu 16.04 LTS (Xenial Xerus) s podporou PHP 7 (mod_php) a MySQL / MariaDB a jak nastavit certifikát SSL pomocí Let's encrypt. Navíc nainstaluji PHPMyAdmin, abych si usnadnil správu MySQL. Nastavení LAMP je dokonalým základem pro oblíbené systémy CMS jako Joomla, Wordpress nebo Drupal.

Předběžná poznámka

V tomto tutoriálu budu používat název hostitele server1.example.com s IP adresou 192.168.1.100. Tato nastavení se pro vás mohou lišit, takže je v případě potřeby musíte nahradit.

Jako základ pro výukový program doporučuji použít minimální nastavení serveru Ubuntu, což může být obraz virtuálního nebo kořenového serveru s minimální instalací Ubuntu 16.04 od webhostingové společnosti, nebo můžete použít náš výukový program minimálního serveru k instalaci serveru od začátku.

Všechny kroky v tomto tutoriálu provádím s právy root, takže se ujistěte, že jste přihlášeni jako root:

sudo su

1. Instalace databáze MySQL nebo MariaDB

V současné době jsou k dispozici dva široce používané databázové systémy MySQL, klasický "MySQL" server, který je vyvinutý společností Oracle a je nyní k dispozici ve verzi 5.7, a vidlice MySQL s názvem MariaDB, kterou vyvinul původní vývojář MySQL Monty Widenius.

Níže vám ukážu, jak nainstalovat obě alternativy. Stačí se řídit buď kapitolou 1.1 nebo 1.2, ale ne oběma. Pro obraz virtuálního stroje použiji MySQL 5.7, který lze stáhnout z Howtoforge.

1.1 Instalace MySQL 5.7

Chcete-li nainstalovat MySQL 5.7, spusťte tento příkaz:

apt-get -y install mysql-server mysql-client

Balíčky mysql-server a mysql-client jsou tzv. 'meta-balíčky', instalují vždy nejnovější verzi MySQL, která je dostupná z Ubuntu. Poslední verzí je aktuálně MySQL 5.7.

Heslo uživatele root pro MySQL jsme nastavili již při instalaci, ale rád bych z bezpečnostních důvodů odstranil anonymního uživatele a testovací databázi. Spusťte níže uvedený příkaz mysql_secure_installation.

mysql_secure_installation

Budou vám položeny tyto otázky:

Zabezpečení nasazení serveru MySQL.
Zadejte heslo pro root uživatele:<-- Zadejte heslo pro root MySQL
VALIDATE PASSWORD PLUGIN lze použít k testování hesel
a zlepšení zabezpečení. Kontroluje sílu hesla
a umožňuje uživatelům nastavit pouze ta hesla, která jsou
dostatečně bezpečná. Chcete nastavit plugin VALIDATE PASSWORD?
Stiskněte y|Y pro Ano, libovolnou jinou klávesu pro Ne:
Používá se stávající heslo pro uživatele root.
Změnit heslo pro uživatele root? ((Stiskněte y|Y pro Ano, libovolnou jinou klávesu pro Ne) : <-- Zde vyberte 'y', pokud chcete povolit ověření hesla, tuto funkci nepotřebuji, takže zde volím 'n'.
... přeskakování.
Ve výchozím nastavení má instalace MySQL anonymního uživatele,
umožňuje komukoli přihlásit se do MySQL, aniž by pro něj musel mít
vytvořený uživatelský účet. Toto je určeno pouze pro
testování a pro usnadnění instalace.
Před přechodem do produkčního
prostředí byste je měli odstranit.
Odebrat anonymní uživatele? (Stiskněte y|Y pro Ano, jakoukoli jinou klávesu pro Ne) :<-- y
Úspěch.

Normálně by měl mít root povoleno připojení pouze z
'localhost'. To zajišťuje, že nikdo nemůže uhodnout
heslo uživatele root ze sítě.
Zakázat vzdálené přihlášení root? (Stiskněte y|Y pro Ano, jakoukoli jinou klávesu pro Ne) :<-- y
Úspěch.
Ve výchozím nastavení je MySQL dodávána s databází s názvem 'test', ke které má
kdokoli přístup. Toto je také určeno pouze pro testování
a před přesunem do produkčního
prostředí by mělo být odstraněno.

Odebrat testovací databázi a získat k ní přístup? (Stiskněte y|Y pro Ano, jakoukoli jinou klávesu pro Ne) :<-- y
- Ruší testovací databáze...
Úspěch.
- Odebírání oprávnění k testovací databázi...
Úspěch.
Opětovné načtení tabulek oprávnění zajistí, že všechny změny
dosud provedené se okamžitě projeví.
Obnovit nyní tabulky oprávnění? (Stiskněte y|Y pro Ano, jakoukoli jinou klávesu pro Ne) :<-- y
Úspěch.
Vše hotovo!

Nastavení MySQL je nyní zabezpečeno.

1.2 Instalace MariaDB 10

Spusťte následující příkaz k instalaci serveru MariaDB a klienta:

apt-get -y install mariadb-server mariadb-client

Nyní nastavíme heslo root pro MariaDB.

mysql_secure_installation

Budou vám položeny tyto otázky:

Zadejte aktuální heslo pro root (zadejte pro žádné):<-- stiskněte enter
Nastavit heslo root? [A/n] <-- y
Nové heslo:<-- Zde zadejte nové root heslo MariaDB
Znovu zadejte nové heslo:<-- Opakujte heslo
Odebrat anonymní uživatele? [A/n] <-- y
Zakázat vzdálené přihlášení root? [A/n] <-- y
Načíst nyní tabulky oprávnění? [A/n] <-- y

Otestujte přihlášení do MariaDB pomocí "mysql command"

mysql -u root -p

a zadejte root heslo MariaDB, které jste nastavili výše. Výsledek by měl být podobný snímku obrazovky níže:

Chcete-li opustit prostředí MariaDB, zadejte příkaz „quit“ a stiskněte enter.

2. Nainstalujte webový server Apache

Apache 2 je k dispozici jako balíček Ubuntu, takže jej můžeme nainstalovat takto:

apt-get -y install apache2

Nyní nasměrujte svůj prohlížeč na http://192.168.1.100 a měli byste vidět výchozí stránku Apache2 (funguje to!):

Kořen dokumentu výchozího vhost Apache je /var/www/html na Ubuntu a hlavní konfigurační soubor je /etc/apache2/apache2.conf. Konfigurační systém je plně zdokumentován v /usr/share/doc/apache2/README.Debian.gz .

3. Nainstalujte PHP 7

PHP 7 a modul Apache PHP můžeme nainstalovat následovně:

apt-get -y install php7.0 libapache2-mod-php7.0

Poté restartujte Apache:

systemctl restartujte apache2

4. Otestujte PHP a získejte podrobnosti o své instalaci PHP

Kořen dokumentu výchozí webové stránky je /var/www/html. Nyní v tomto adresáři vytvoříme malý PHP soubor (info.php) a zavoláme jej v prohlížeči. Soubor zobrazí spoustu užitečných podrobností o naší instalaci PHP, jako je nainstalovaná verze PHP.

nano /var/www/html/info.php
phpinfo();
?>

Poté změňte vlastníka souboru info.php na uživatele a skupinu www-data.

chown www-data:www-data /var/www/html/info.php

Nyní tento soubor nazýváme v prohlížeči (např. http://192.168.1.100/info.php):

Jak vidíte, PHP 7.0 funguje a funguje přes Apache 2.0 Handler, jak je znázorněno na řádku Server API. Pokud se posunete dále dolů, uvidíte všechny moduly, které jsou již povoleny v PHP5. MySQL tam není uveden, což znamená, že zatím v PHP nemáme podporu MySQL / MariaDB.

5. Získejte podporu MySQL / MariaDB v PHP

Chcete-li získat podporu MySQL v PHP, můžeme nainstalovat balíček php7.0-mysql. Je dobré nainstalovat některé další moduly PHP, stejně jako je můžete potřebovat pro své aplikace. Dostupné moduly PHP můžete vyhledat takto:

apt-cache search php7.0

Vyberte ty, které potřebujete, a nainstalujte je takto:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7. 0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

Nyní restartujte Apache2:

systemctl restartujte apache2

PHP 7 má nyní podporu MySQL / MariaDB, jak je uvedeno v phpinfo() výše.

6. Nainstalujte mezipaměť PHP Opcache + APCu pro urychlení PHP

PHP 7 se dodává s vestavěným mezipamětí opcode pro ukládání a optimalizaci přechodného kódu PHP, má název 'opcache' a je k dispozici v balíčku php7.0-opcache. Důrazně se doporučuje mít nainstalovanou Opcache pro urychlení vaší PHP stránky. Kromě opcache nainstaluji APCu, což je obal kompatibility pro opcache, který poskytuje funkce mezipaměti APC, často používaného mezipaměti ve verzích PHP 5.x a mnoho systémů CMS jej stále používá.

Opcache a APCu lze nainstalovat následovně:

apt-get -y install php7.0-opcache php-apcu

Nedělejte si starosti, pokud to ukazuje, že Opcache je již nainstalována.

Nyní restartujte Apache:

systemctl restartujte apache2

Nyní znovu načtěte http://192.168.1.100/info.php ve svém prohlížeči a znovu přejděte dolů do sekce moduly. Nyní byste tam měli najít spoustu nových modulů:

Prosím, nezapomeňte smazat soubor info.php, když jej již nepotřebujete, protože poskytuje citlivé údaje o vašem serveru. Spusťte následující příkaz pro odstranění souboru.

rm -f /var/www/html/info.php

7. Povolte web SSL v Apache

SSL/TLS je bezpečnostní vrstva pro šifrování spojení mezi webovým prohlížečem a vaším serverem. Většina webových prohlížečů dnes začíná zobrazovat stránky jako nezabezpečené, když spojení mezi serverem a webovým prohlížečem není šifrováno pomocí SSL. V této kapitole vám ukážu, jak zabezpečit svůj web pomocí SSL.

Pro aktivaci podpory SSL (https://) spusťte na svém serveru následující příkazy. Spustit:

a2enmod ssl
a2ensite default-ssl

který povolí modul SSL a přidá symbolický odkaz ve složce /etc/apache2/sites-enabled do souboru /etc/apache2/sites-available/default-ssl.conf, aby jej zahrnul do aktivní konfigurace Apache. Poté restartujte apache, abyste povolili novou konfiguraci:

systemctl restartujte apache2

Nyní otestujte připojení SSL otevřením https://192.168.1.100 ve webovém prohlížeči.

Obdržíte varování SSL, protože SSL certifikát serveru je "self-signed" SSL certifikát, to znamená, že prohlížeč tomuto certifikátu ve výchozím nastavení nedůvěřuje a musíte nejprve přijmout bezpečnostní varování. Po přijetí varování se zobrazí výchozí stránka Apache.

Zavřený „Zelený zámek“ před adresou URL v prohlížeči ukazuje, že připojení je šifrované.

Varování SSL se můžete zbavit dvěma způsoby:buď nahraďte certifikát SSL s vlastním podpisem /etc/ssl/certs/ssl-cert-snakeoil.pem oficiálně podepsaným certifikátem SSL, který si zakoupíte od autority SSL, nebo získáte bezplatný SSL certifikát od Let's encrypt, který popíšu v kapitole 8.

8. Získejte zdarma certifikát SSL od Let's Encrypt

Prvním krokem k zabezpečení webu pomocí certifikátu Let's Encrypt SSL je instalace balíčku python-letsencrypt-apache. Spusťte následující příkaz:

apt-get -y install python-letsencrypt-apache

V dalším kroku si od Let's Encrypt vyžádáme certifikát SSL, během tohoto procesu se server Let's Encrypt pokusí připojit k vašemu serveru prostřednictvím názvu domény, který zadáte příkazu letsencrypt. Je důležité, aby toto doménové jméno již ukazovalo na váš server v DNS, aby byl web již dosažitelný podle názvu domény na portu 80 (http). Pokud web není dostupný z internetu, vytvoření certifikátu Let's Encrypt SSL se nezdaří.

Než budeme moci začít vytvářet certifikát SSL, nastavte název domény v konfiguračním souboru vhost. Otevřete výchozí soubor vhost pomocí editoru:

nano /etc/apache2/sites-available/000-default.conf

a přidejte řádek:

ServerName example.com

Přímo pod řádkem 'DocumentRoot'. Nahraďte example.com názvem domény svého vlastního webu.

Poté vytvořte certifikát SSL pomocí tohoto příkazu:

letsencrypt --apache -d example.com

Zde znovu nahraďte example.com názvem vaší domény. Příkaz spustí průvodce, který vám položí několik otázek.

Zadejte e-mailovou adresu, na které lze zastihnout správce, který je odpovědný za tento web.

Přijměte podmínky autority Let's Encrypt SSL.

Vyberte, zda chcete automaticky přesměrovat požadavky bez protokolu SSL na https://. Zde vyberu ano, aby se předešlo problémům s duplicitním obsahem, když je web dostupný ve verzi http:// a https://.

Certifikát SSL byl úspěšně vydán.

Když nyní vstoupíte na webovou stránku pomocí prohlížeče, budete automaticky přesměrováni na SSL a zelený zámek před adresou URL v prohlížeči ukazuje, že nyní používáme důvěryhodný certifikát SSL.

8.1 Pojďme zašifrovat automatické obnovení

Let's Encrypt SSL certifikáty jsou platné pouze po krátkou dobu 80 dnů. Proto nyní nastavíme cronjob, abychom v případě potřeby automaticky obnovili certifikát SSL. Příkaz je 'letsencrypt renew'.

Nastavte cronjob pro automatické obnovení LE. Spustit:

crontab -e

otevřete kořenový crontab v editoru. Na konec souboru vložte následující řádek:

0 1 * * * /usr/bin/letsencrypt obnovit &> /dev/null

uložte soubor, tím se cronjob aktivuje. Tento cronjob bude každou noc v 1:00 volat příkaz pro obnovení Let's Encrypt. Příkaz obnoví certifikát SSL pouze v případě potřeby (30 dní před vypršením jeho platnosti), není problém jej spouštět každou noc.

9. Nainstalujte phpMyAdmin

phpMyAdmin je webové rozhraní, přes které můžete spravovat své databáze MySQL. Je to dobrý nápad nainstalovat:

apt-get -y install phpmyadmin

DŮLEŽITÉ:Instalační program apt vám nyní položí několik otázek, jednou z nich je výběr typu webového serveru. Častou chybou je, že typ webového serveru je pouze zvýrazněn, ale není vybrán. Chcete-li vybrat položku v nabídce apt, musíte po přechodu na položku pomocí tabulátoru nebo kurzorových kláves stisknout mezerník na klávesnici. Pouhé zvýraznění nestačí!

Uvidíte následující otázky:

Automatická konfigurace webového serveru: <-- Vyberte možnost:apache2
Konfigurovat databázi pro phpmyadmin pomocí dbconfig-common? <-- Ano
Heslo aplikace MySQL pro phpmyadmin:<-- Stiskněte enter, apt automaticky vytvoří náhodné heslo.

9.1 Přístup uživatele root k PHPMyAdmin s MariaDB

Následující krok je vyžadován pouze pro instalace MariaDB, pokud používáte MySQL 5.7, pak tento krok přeskočte.

MariaDB ve výchozím nastavení povoluje zásuvný modul nazvaný „unix_socket“ pro uživatele root, tento plugin zabraňuje tomu, aby se uživatel root mohl přihlásit do PHPMyAdmin a aby pro uživatele root fungovala připojení TCP k MySQL. Abych získal uživatele s oprávněními k vytváření dalších uživatelů a databází v PHPMyAdmin, vytvořím nového uživatele MySQL se jménem "admin" se stejnými oprávněními, jako má uživatel root.

Přihlaste se do databáze MySQL jako uživatel root v shellu:

mysql -u root

Vytvořte nového uživatele se jménem "admin" a heslem "howtoforge". Nahraďte heslo „howtoforge“ bezpečným heslem v příkazech níže!

VYTVOŘTE UŽIVATELE 'admin'@'localhost' IDENTIFIKOVANÉHO PODLE 'howtoforge';
UDĚLEJTE VŠECHNA PRIVILEGIA NA *.* 'admin'@'localhost' S MOŽNOSTÍ UDĚLENÍ;
FLUSH PRIVILEGES;
ukončit

Poté můžete přistupovat k phpMyAdmin pod http://192.168.1.100/phpmyadmin/:

10 stažení bitové kopie virtuálního počítače tohoto tutoriálu

Tento tutoriál je k dispozici jako obraz virtuálního stroje připravený k použití ve formátu ovf/ova, který je kompatibilní s VMWare a Virtualbox. Obraz virtuálního počítače používá následující přihlašovací údaje:

Přihlášení SSH / Shell

Uživatelské jméno:správce
Heslo:howtoforge

Tento uživatel má práva sudo.

Přihlášení k MySQL

Uživatelské jméno:root
Heslo:howtoforge

IP VM je 192.168.1.100, lze ji změnit v souboru /etc/network/interfaces. Změňte prosím všechna výše uvedená hesla pro zabezpečení virtuálního počítače.

  • Apache:http://httpd.apache.org/
  • PHP:http://www.php.net/
  • MySQL:http://www.mysql.com/
  • MariaDB:https://mariadb.com/
  • Ubuntu:http://www.ubuntu.com/
  • phpMyAdmin:http://www.phpmyadmin.net/

Ubuntu
  1. Instalace WordPressu na Ubuntu Linux s Apache a MySQL

  2. Jak nainstalovat Apache, MySQL, PHP (LAMP) na Ubuntu 16.04 LTS

  3. Jak nastavit Opencart s LAMP (PHP, Apache, Mariadb) na Ubuntu 20.04

  1. Výukový program serveru Ubuntu 14.10 LAMP s Apache 2, PHP 5 a MySQL (MariaDB)

  2. Výukový program serveru Ubuntu 15.04 LAMP s Apache 2, PHP 5 a MariaDB (místo MySQL)

  3. Výukový program serveru Ubuntu 15.10 LAMP s Apache 2.4, PHP 5 a MariaDB (místo MySQL)

  1. Jak nainstalovat Drupal 8 s Apache, MySQL a SSL na Ubuntu 15.10

  2. Jak nainstalovat Nginx s PHP a MySQL (LEMP Stack) na Ubuntu 20.04 LTS

  3. Jak nainstalovat Lighttpd s PHP-FPM a MySQL na Ubuntu 20.04 LTS