Instalace LAMP na Ubuntu

(publikováno 27.01.2016) 2 PHP, Linux

Minule jsme si ukázali, jak na LAMP serveru ukládat emaily. Co když ale server na Linuxu vůbec nemáme? Dnešní krátký průvodce napoví jak nainstalovat, nastavit a zprovoznit LAMP server na Ubuntu/Debian.

Instalace LAMP na Ubuntu

Nebudeme se zdržovat a jdeme na to. K instalaci využijeme příkazy apt-get, které jsou na Ubuntu a Debianu základní příkazy pro instalaci balíčků.

AKTUALIZACE PHP 7 - 17.12.2018 - Článek je aktualizován, protože končí podpora PHP 5 a na nových Ubuntu se již PHP 5 stejně nedalo instalovat.

Instalujeme

Začneme instalací Apache2, MySQL a PHP a potřebných knihoven pro vzájemnou kompatibilitu. Budete v průběhu instalace dotázání na jméno a heslo do MySQL databáze pro root uživatele.

Dále nastavíme MySQL server instalací základních schémat a volitelně můžeme spustit zabezpečení databáze. Na závěr doinstalujeme balíčky do PHP, zde záleží na vás, které vyberete, mě tyto stačí.

# Stáhneme aktuální seznam balíčků z repozitářů
sudo apt-get update

# Nainstalujeme vše nezbytné a nejnovější PHP
sudo apt-get install apache2 mysql-server php

# Případně lze místo MySQL použít MariaDB
sudo apt-get install mariadb-server

# Zabezpečení MySQL serveru, na localhostu není nutné
sudo mysql_secure_installation

# Doinstalování PHP knihoven
sudo apt-get install php-curl php-gd php-imagick php-mysql php-sqlite3 php-dom php-mbstring php-xml

Nastavení

Při zadání adresy http://localhost/ uvidíte základní index s umístěním konfiguračních souborů. Hlavní adresář pro weby je /var/www/html. Stále to ale bude chtít nějaké úpravy

Povolení htaccess

Abychom mohli využívat soubor .htaccess, musíme jej povolit v souboru /etc/apache2/apache2.conf. Najdeme tento blok a přepíšeme AllowOverride z none na all

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

Instalace mod_rewrite

Asi nejčastější použití souboru .htaccess je právě kvůli možnost podsouvat URL adresy pomocí mod_rewrite. Povolení se provádí pomocí příkazu a2enmod

sudo a2enmod rewrite

Priorita PHP nad HTML

Pokud budete mít ve složce index.html i index.php, větší prioritu bude mít nyní HTML soubor. Toto chování lze změnit v souboru /etc/apache2/mods-enabled/dir.conf. Přesuneme index.php z prostřed druhého řádku na první pozici a uložíme.

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Nastavení PHP

Základní nastavení PHP je někdy ne příliš vyhovující. Následující hodnoty doporučuji změnit, nejčastěji zvýšit. Soubor naleznete na /etc/php/x.y/apache2/php.ini, kde x.y je aktuální verze PHP. V době opravy článku tedy 7.2

; V základu Off, pak nebude fungovat <? ... ale jen <?php ...
short_open_tag = On
; Nyní již limit je 128MB, můžete ale zvýšit v případě potřeby
memory_limit = 128M
; Chyby se vůbec nevypisují, což je při vývoji docela otravné
display_errors = On
; Výpis všech chyb kromě DEPRECATED a STRICT
; může se hodit vypisovat všechny
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
; V základu max 2M upload, zvyšte si alespoň na 20M
upload_max_filesize = 20M
; Nastavte si základní časové pásmo
date.timezone = Europe/Prague
; Viz minulý článek
sendmail_path = /usr/sbin/sendmail

Rozšíření se povolí automaticky po jejich nainstalování. Ve složce /etc/php/x.y/mods-available je souborů možných rozšíření a pro jejich povolení se ve složce /etc/php/x.y/mods-available/apache2/conf.d vytváří symbolický odkaz. Pro zakázání stačí tento odkaz smazat.

Rozšíření se v PHP 7.2 a dříve povolovaly v souboru php.ini odkomentováním řádků začínajících extension=

Restart Apache

Když jsme provedli všechny změny, je na čase restartovat Apache server pro aplikování změn. Apache2 je nainstalován také jako service, takže restart provedeme jednoduše

sudo service apache2 restart

Závěrem

Nastavení serveru je vhodné pro vývoj, nikoli ostrý provoz. Pokud chcete takto provozovat server veřejně, bylo by potřeba více nastavení a zabezpečení. Snad jsem nezapomněl na žádné doplňky ať už do PHP nebo Apache. Případně napište do komentářů a do článku je doplním

K tomuto článku již není možné přidávat další komentáře

Komentáře

after of
sudo mysqld --initialize

[ERROR] --initialize specified but the data directory has files in it. Aborting.

Dobrý den,
našel jsem LAMPdu a chtěl jsem podle Vás nainstalovat.
root@jd-desktop:/home/jd# sudo apt-get install apache2 mysql-server php5 libapache2-mod-php5
Načítají se seznamy balíků… Hotovo
Vytváří se strom závislostí
Načítají se stavové informace… Hotovo
Balík php5 není dostupný, ale jiný balík se na něj odkazuje.
To může znamenat že balík chybí, byl zastarán, nebo je dostupný
pouze z jiného zdroje

Balík libapache2-mod-php5 není dostupný, ale jiný balík se na něj odkazuje.
To může znamenat že balík chybí, byl zastarán, nebo je dostupný
pouze z jiného zdroje

E: Balík „php5“ nemá kandidáta pro instalaci
E: Balík „libapache2-mod-php5“ nemá kandidáta pro instalaci
root@jd-desktop:/home/jd#

můžete mi pomoct
Děkuji Dohnálek