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