LEMP na VPSie
Poradnik został napisany pod Ubuntu 18.04 Jeżeli korzystasz z innej wersji, może coś przestać działać.
Ten poradnik pokaże Ci, jak zainstalować:
- serwer WWW z obsługą PHP 7.4
- serwer MySQL
- phpMyAdmin
Takie tam informacje...
Jeżeli instalujesz LEMP na koncie root
to nie musisz wpisywać sudo
przed każdą komendą.
Krok 1
Przydałoby się zaktualizować system i pakiety, więc...
sudo apt update
sudo apt upgrade
Krok 2
Przydałyby się pewne komendy, które ułatwią nam pracę.
Wpisz komendę sudo add-apt-repository
.
Jeżeli otrzymasz ten wynik: sudo: add-apt-repository: command not found
przejdź do kroku 2.1.
Jeżeli otrzymasz ten wynik: Error: need a repository as argument
przejdź do kroku 3.
Krok 2.1
Nie posiadasz komend, które ułatwią Ci pracę oraz umożliwią instalację wymaganych paczek. Aby zainstalować to ułatwienie, wpisz:
sudo apt install software-properties-common python-software-properties
Po instalacji wróć do kroku 2.
Krok 3
Posiadasz ułatwienie, które nam pomoże pracować. Możemy przejść do instalacji. Najpierw zainstalujemy nginx'a, czyli serwer WWW. Obecnie, PHP jeszcze nie będzie działać, musisz kontynuować instalację.
Najpierw dodajemy nieoficjalne, ale aktualizowane repozytoria nginx przy pomocy:
sudo add-apt-repository ppa:ondrej/nginx
W trakcie akceptacji klucza GPG będziemy musieli kliknąć ENTER
.
Po zaakceptowaniu i dodaniu repozytorium należy zaktualizować repozytoria przy pomocy:
sudo apt update
A następnie zainstalujemy nginx'a przy pomocy:
sudo apt install nginx
Potwierdzamy instalację i cierpliwie czekamy. Po instalacji przechodzimy dalej.
Krok 4
Nginx zainstalowany, teraz go początkowo skonfigurujemy.
Do edycji plików będę używał edytora vi
/vim
. Możesz użyć swojego ulubionego.
Najpierw edytujemy główną konfigurację nginx'a, czyli plik /etc/nginx/nginx.conf
.
Wpisujemy sudo vim /etc/nginx/nginx.conf
i przechodzimy do okna edytora.
Edytujemy podane linijki niżej:
# server_tokens off;
# server_name_in_redirect off;
Na te:
server_tokens off;
server_name_in_redirect off;
W skrócie - wystarczy odkomentować te linijki. Jest to najmniejsze zabezpieczenie nginx'a, ale zawsze jest. O tym w innym artykule, który może za pewien czas się pojawi.
Zapisujemy zmiany, klikamy ESC
i wpisujemy :wq
.
Robimy restart serwera WWW przy pomocy sudo service nginx restart
.
Idziemy dalej.
Krok 5
Serwer WWW z podstawową obsługą HTML już mamy, teraz przydałby się PHP.
PHP będzie w najnowszej wersji - 7.4. Możesz zainstalować inną zmieniając wersję w komendach, np. php7.4-cgi
na php7.0-cgi
.
Najpierw dodajemy nieoficjalne, ale aktualizowane repozytoria PHP przy pomocy:
sudo add-apt-repository ppa:ondrej/php
W trakcie akceptacji klucza GPG będziemy musieli kliknąć ENTER
.
Po zaakceptowaniu i dodaniu repozytorium należy zaktualizować repozytoria przy pomocy:
sudo apt update
A następnie zainstalujemy PHP przy pomocy:
sudo apt install php7.4 php7.4-mysql php7.4-fpm php7.4-mbstring php7.4-xml php7.4-curl
Potwierdzamy instalację i cierpliwie czekamy.
Po instalacji przechodzimy dalej.
Krok 6
Mamy PHP, teraz musimy skonfigurować nginx'a, aby mógł obsługiwać skrypty PHP.
Wpisujemy sudo vim /etc/nginx/sites-available/default
i przechodzimy do okna edytora.
Edytujemy podane linijki niżej:
index index.html index.htm index.nginx-debian.html;
Na te:
index index.php index.html index.htm;
Musimy jeszcze dodać integrację z interpreterem PHP, dodając to:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
Musimy to dodać w sekcji server
, nie możemy tego dać gdzie chcemy.
Plik powinien wyglądać tak (wersja bez komentarzy + blokuje dostęp do .htaccess, które i tak nie działa):
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Zapisujemy zmiany, klikamy ESC
i wpisujemy :wq
.
Robimy restart serwera WWW przy pomocy sudo service nginx restart
.
Idziemy dalej.
Krok 7
Mamy nginx'a z obsługą PHP, teraz instalujemy serwer MySQL, a dokładniej MariaDB. Najpierw dodajemy oficjalne repozytoria MariaDB przy pomocy:
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb http://mariadb.mirrors.ovh.net/MariaDB/repo/10.3/ubuntu bionic main'
W trakcie akceptacji klucza GPG będziemy musieli kliknąć ENTER
.
Po zaakceptowaniu i dodaniu repozytorium należy zaktualizować repozytoria przy pomocy:
sudo apt update
A następnie instalujemy serwer MySQL przy pomocy:
sudo apt install mariadb-server
Potwierdzamy instalację i cierpliwie czekamy do momentu, kiedy pokaże nam się to:
Wpisujemy tam swoje hasło i musimy je jeszcze później powtórzyć. Po zainstalowaniu idziemy dalej.
Krok 8
MySQL zainstalowany, teraz możemy go skonfigurować przy pomocy:
sudo mysql_secure_installation
Wpisujemy hasło i idziemy dalej. Następnymi krokami będzie odpowiadanie na pytania. Możesz sam odpowiedzieć, tutaj podam zalecane wartości.
Change the root password? [Y/n]
Pisząc Y
żądasz zmiany hasła.
Pisząc N
pomijasz ten krok.
Remove anonymous users? [Y/n]
Zalecam opcję Y
- usuwa anonimowych użytkowników.
Disallow root login remotely? [Y/n]
Tutaj zalecam Y
, aczkolwiek jeżeli jesteś osobą pracującą na roocie prawie wszędzie to możesz wpisać N
.
Remove test database and access to it? [Y/n]
Tutaj będzie usuwać testową bazę danych o nazwie test
, zalecam Y
.
Reload privilege tables now? [Y/n]
Zalecam Y
, wtedy przeładuje wszystkie tabele.
Koniec konfiguracji, przejdź do następnego kroku.
WAŻNE!
Domyślnie, konto root
jest zablokowane i dostęp z zewnątrz jest niemożliwy.
Teraz dodamy inne konto, które będzie posiadać prawie takie same uprawnienia co root
.
Wpisujemy mysql -u root -p
, wpisujemy hasło (jeżeli prosi nas) i wklepujemy to:
CREATE USER 'admin'@'%' IDENTIFIED BY 'HASLO';
GRANT ALL PRIVILEGES ON * . * TO 'admin'@'%';
FLUSH PRIVILEGES;
EXIT;
Pamiętaj! Podmień HASŁO
na hasło nowego konta! Najlepiej skorzystaj z generatora haseł.
Możemy iść dalej!
Krok 9
Mamy serwer WWW z obsługą PHP, mamy serwer MySQL, teraz przydałaby się aplikacja usprawniająca zarządzanie serwerem MySQL. Wybierzemy phpMyAdmin
.
Pobieramy najnowszą wersję phpMyAdmin przy pomocy:
sudo wget -O phpmyadmin.zip https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip
Do rozpakowania plików .zip zalecam zainstalować zip
przy pomocy:
sudo apt install zip
Aby rozpakować archiwum wpisz:
sudo unzip phpmyadmin.zip
Po rozpakowaniu, w obecnym folderze będziesz miał nowy folder o nazwie phpMyAdmin-4.9.0.1-all-languages
.
Możemy zmienić nazwę tego folderu na np. pma
. Zrobimy to za pomocą:
sudo mv phpMyAdmin-4.9.0.1-all-languages/ pma/
Następnie, po zmianie nazwy, przenosimy folder pma
do /var/www/html/
. Jest to domyślna ścieżka naszych plików, które będą odczytywane przez serwer WWW. Przenosimy przy pomocy:
sudo mv pma/ /var/www/html/
Po przeniesieniu idziemy dalej.
Krok 10
Prawie wszystko gotowe, teraz tylko konfiguracja phpMyAdmin.
Wchodzimy do folderu /var/www/html/pma
i tworzymy nowy plik przy użyciu:
sudo vim /var/www/html/pma/config.inc.php
Przykładowa treść konfiguracji:
tutaj uzupełniamy, jeżeli serwer MySQL stoi poza serwerem WWW/VPS
//$cfg['Servers'][$i]['port'] = 3306; --> tutaj uzupełniamy, jeżeli serwer MySQL stoi poza serwerem WWW/VPS (domyślnie 3306)
$cfg['Servers'][$i]['socket'] = '/var/run/mysqld/mysqld.sock'; //to musimy zakomentować, jeżeli uzupełnimy konfigurację dla ZEWNĘTRZENGO serwera (te dwie wyżej)
$cfg['Servers'][$i]['compress'] = true;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'HASLO_DO_ROOTA';
$cfg['ZipDump'] = false;
$cfg['GZipDump'] = false;
$cfg['BZipDump'] = false;
$cfg['CompressOnFly'] = false;
$cfg['blowfish_secret'] = 'NM68ta213@!A#@!S#A@3rd43r'; //zalecam zmianę tego, walnij kilka razy w klawiaturę =P
$cfg['VersionCheck'] = false;
$cfg['OBGzip'] = 0;
$cfg['ShowStats'] = true;
$cfg['ShowServerInfo'] = true;
$cfg['ShowPhpInfo'] = true;
$cfg['DefaultTransformations']['Substring'] = array (
0 => '0',
1 => 'all',
2 => '…',
);
$cfg['DefaultTransformations']['External'] = array (
0 => '0',
1 => '-f /dev/null -i -wrap -q',
2 => '1',
3 => '1',
);
$cfg['DefaultTransformations']['PreApPend'] = array (
);
$cfg['DefaultTransformations']['DateFormat'] = array (
0 => '0',
1 => 'local',
);
$cfg['DefaultTransformations']['Inline'] = array (
0 => '100',
1 => '100',
);
$cfg['DefaultTransformations']['TextImageLink'] = array (
0 => '100',
1 => '50',
);
$cfg['DefaultTransformations']['TextLink'] = array (
);
$cfg['DefaultLang'] = 'pl';
$cfg['ServerDefault'] = 1;
?>
Zapisujemy zmiany, klikamy ESC
i wpisujemy :wq
.
Teraz ważne, bez tego może nie działać.
Musimy przyznać wszystkie uprawnienia dla www-data
, czyli użytkownika, który będzie miał dostęp do tych plików. Z tego konta będzie korzystał serwer WWW. Zrobimy to przy pomocy:
sudo chown -R www-data:www-data /var/www/
Gotowe!
Właśnie zainstalowałeś serwer WWW z obsługą PHP, serwer MySQL i phpMyAdmin 😉
Pytania, uwagi, komentarze proszę pisać poniżej.