Przejdź do głównej zawartości

WordPress

Instalacja

Apache

sudo apt install apache2

PHP i rozszerzenia

sudo apt install php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip php-soap

MySQL lub MariaDB

sudo apt install mysql-server

phpMyAdmin

sudo apt install phpmyadmin

Podczas instalacji wybierz Apache2 jako serwer i skonfiguruj bazę danych phpMyAdmin (jeśli pojawi się takie pytanie).

Dodatkowo przydatne narzędzia

sudo apt install unzip wget curl

Konfiguracja MySQL/MariaDB

sudo mysql_secure_installation

Bez hasła

Enter current password for root (enter for none): 
Switch to unix_socket authentication [Y/n] n
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Zmiana hasła

Zaloguj się do MySQL jako root

sudo mysql

Ustaw nowe hasło dla root

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TwojeNoweHaslo';
FLUSH PRIVILEGES;

Wyjdź z MySQL

exit

Założenie bazy danych i użytkownika w phpMyAdmin

Instalacja WordPress

cd /var/www/html
sudo wget https://wordpress.org/latest.zip
sudo unzip latest.zip
sudo chown -R www-data:www-data wordpress

Zaloguj się do MySQL jako root

sudo mysql

Ustaw nowe hasło dla root

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TwojeNoweHaslo';
FLUSH PRIVILEGES;

Wyjdź z MySQL

exit

Przetestuj logowanie

mysql -u root -p

Certyfikat ssl

Wygeneruj certyfikat SSL i klucz prywatny

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/apache-selfsigned.key \
-out /etc/ssl/certs/apache-selfsigned.crt

Podczas generowania system zapyta Cię o dane, np.:

Country Name (PL)

Common Name (CN) – wpisz adres lokalny serwera (np. serwer.local lub 192.168.1.10) Stwórz plik konfiguracyjny dla SSL (jeśli nie istnieje)

sudo nano /etc/apache2/sites-available/default-ssl.conf

Przykładowa konfiguracja:

<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName serwer.local

DocumentRoot /var/www/html

SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

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

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Włącz SSL i stronę w Apache

sudo a2enmod ssl
sudo a2ensite default-ssl.conf
sudo systemctl reload apache2

Dodaj wyjątek w przeglądarce (bo certyfikat jest samopodpisany)

Na Windows: Otwórz plik .crt i kliknij "Zainstaluj certyfikat"

Wybierz „Zaufane główne urzędy certyfikacji” jako miejsce instalacji

Po ponownym uruchomieniu przeglądarki, wyjątek nie powinien już być wymagany.

Strony domowe użytkowników

Zainstaluj moduł userdir

sudo a2enmod userdir
sudo systemctl restart apache2

Utwórz katalog public_html w katalogu domowym każdego użytkownika

mkdir /home/jan/public_html
chmod 755 /home/jan
chmod 755 /home/jan/public_html

Wrzucaj pliki HTML (np. index.html) do katalogu public_html. (Opcjonalnie) Dostosuj konfigurację userdir

/etc/apache2/mods-enabled/userdir.conf

Upewnij się, że zawiera coś takiego:

<IfModule mod_userdir.c>
UserDir public_html
UserDir enabled jan
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
</IfModule>

Zamień jan na all, jeśli chcesz włączyć strony domowe dla wszystkich użytkowników:

sudo systemctl restart apache2

Sprawdź w przeglądarce http://localhost/~jan/

Przykładowa strona html

<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Strona domowa użytkownika</title>
</head>
<body>
<h1>Witaj na mojej stronie!</h1>
<p>To jest przykładowa strona domowa użytkownika na serwerze Apache.</p>
</body>
</html>

Włączanie php dla usera:

Upewnij się, że mod_userdir i PHP są włączone

sudo nano /etc/apache2/mods-enabled/php8.1.conf

Znajdź ten fragment:

<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>

I zmień Off na On:

<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine On
</Directory>
</IfModule>

Restart Apache

sudo systemctl restart apache2

/etc/skel

Stwórz katalog public_html w /etc/skel

sudo mkdir -p /etc/skel/public_html

Dodaj przykładową stronę index.htm

sudo nano /etc/skel/public_html/index.htm

Wklej np.:

<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Strona domowa</title>
</head>
<body>
<h1>Witaj na swojej stronie!</h1>
<p>To jest domyślny plik index.htm dla nowego użytkownika.</p>
</body>
</html>

Ustaw uprawnienia

sudo chmod 755 /etc/skel
sudo chmod 755 /etc/skel/public_html
sudo chmod 644 /etc/skel/public_html/index.htm

Tworzenie nowego użytkownika

sudo adduser janek

to automatycznie dostanie: /home/janek/public_html/index.htm