Instalacja serwera LAMP = Apache+MySQL+PHP+phpMyAdmin

Skrót LAMP odnosi się do zestawu oprogramowania o otwartym kodzie źródłowym, powszechnie odnoszącego się do platformy serwera dynamicznych stron WWW. Po Polsku LAMP oznacza dosłownie Linux Apache MySQL PHP. Jest to pełen pakiet aplikacji i oprogramowania potrzebnego do uruchomienia serwera WWW z bazą danych na naszej maszynie.

Instalacja jest dośc prosta i nie wymaga specjalnych umiejętności:

W przypadku systemów Ubuntu/Lubuntu Mint itp. :

sudo su 

A później: (w przypadku Debiana, logujemy się po prostu na konto root i efekt będzie ten sam)

aptitude install apache2 apache2-utils apache2-mpm-prefork php5 php5-common mysql-server mysql-common libapache2-mod-php5 php5-mysql phpmyadmin

Podczas instalacji zostajemy zapytani o kilka opcji m.in hasło do administratora bazy danych mysql.

Domyślnie serwer www nasłuchuje na katalog /var/www i tam należy wgrywać własną stronę WWW.

Serwer działa teraz pod adresem http://<IPSerwera>/ bądź http://localhost

 

Test PHP:

touch /var/www/test.php

echo "<?php phpinfo(); ?>" >> /var/www/test.php

I wczytujemy w przeglądarce http://<IPSerwera>/test.php lub http://localhost/test.php

Jeśli poprawnie nie działa to powinno pomóc przeładowanie serwera Apache

a2enmod php5
/etc/init.d/apache2 force-reload

Test MySQL

mysql -u root -p

Powinien pojawić się monit o hasło – podajemy je.

Tak wygląda odpowiedź serwera MySQL:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 859
Server version: 5.5.33-1 (Debian)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Strony możemy kopiować do katalogu

  • /var/www – jednak do tego wymagane są uprawnienia root’a
  • /public_html – katalog zakładamy w naszym katalogu, i nie musimy mieć uprawnień administracyjnych
  • By można było korzystać z katalogu public_html znajdującym się w naszym katalogu domowym

Musimy wykonać następujące kroki z poziomu użytkownika:

mkdir ~/public_html

Jednorazowe uaktywnienie modułu userdir

a2enmod userdir

Na taką stronę wchodzimy przez taki adres: http://localhost/~twoja-nazwa-uzytkownika np: http://localhost/~krzysztof lub http://localhost/~user3

 
Warto zaznaczyć że katalogi i pliki udostępniane przez serwer Apache2 powinny mieć odpowiednie uprawnienia (względy bezpieczeństwa)

  • katalogi 755
  • pliki 644
  • jeśli korzystamy z public_html to nasz katalog domowy powinien mieć uprawnienia 711

Do zmiany uprawnień używamy chmod.

 

Apache i moduł SSL czyli protokuł https

Generowanie certyfikatu:

mkdir /etc/apache2/ssl; cd /etc/apache2/ssl
openssl genrsa -out /etc/apache2/ssl/apache.key 1024
openssl req -new -x509 -days 365 -key /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Po tym poleceniu program zapyta nas o kilka informacji, które należy podać w celu dostarczenia niezbędnych informacji organowi wydającemu certyfikaty.

Aktywujemy port 443

echo "Listen 443" >> /etc/apache2/ports.conf

Instalacja certyfikatu: (instalacja modułu jeśli brak i jego uruchomienie)

apt-get install apache2 libapache-mod-ssl
a2enmod ssl
/etc/init.d/apache2 restart
cd /etc/apache2/sites-available
cp 000-default.conf default-ssl.conf

I edytujemy default-ssl.conf

nano default-ssl.conf

i wklejamy: ( a właściwie zamieniamy)

NameVirtualHost *:443
<virtualhost *:443>
 ServerAdmin webmaster@localhost

SSLEngine On
 SSLCertificateFile /etc/apache2/ssl/apache.crt
 SSLCertificateKeyFile /etc/apache2/ssl/apache.key
 DocumentRoot /var/www/

...

Na koniec:

a2ensite ssl
/etc/init.d/apache2 restart

 

Wystarczy teraz wczytać https://<ip-serwera> lub https://localhost

 

Reasumując:

  • Serwer WWW znajduje się w katalogu /var/www ale można włączyć moduł userdir
  • Adres do serwera to po prostu http://<ip-serwera>
  • Adres do phpmyadmina http://<ip-serwera>/phpmyadmin
  • Domyślny port http 80
  • Domyślny port mysql 3306
  • Domyślny port https 443