Ten przewodnik opisuje instalację WordPress na VPS z Linuxem. WordPress to najpopularniejszy na świecie system CMS, używany przez miliony stron.
⚠️ Ważna uwaga
📋 Wymagania wstępne
- VPS z Linuxem z dostępem root lub sudo
- Co najmniej 1 GB RAM (dla WordPress zalecane 2 GB)
- Co najmniej 10 GB wolnego miejsca na dysku
- Domena wskazująca na IP VPS
- Porty 80 (HTTP) i 443 (HTTPS) otwarte w zaporze
💡 Rekomendacja infrastruktury
Dla dobrej wydajności WordPress polecamy VPS NVMe przy umiarkowanym ruchu lub VPS Performance przy dużym obciążeniu i potrzebie CPU. Dyski NVMe przyspieszają ładowanie stron i operacje bazy.
🔧 Metoda 1: Instalacja z LAMP (Apache)
Krok 1: Aktualizacja systemu
Bash1# Lista pakietów 2sudo apt update 3 4# Aktualizacja zainstalowanych pakietów 5sudo apt upgrade -y
Krok 2: Instalacja Apache
Bash1# Instalacja Apache 2sudo apt install -y apache2 3 4# Start Apache 5sudo systemctl start apache2 6 7# Apache przy starcie systemu 8sudo systemctl enable apache2 9 10# Status 11sudo systemctl status apache2
Krok 3: Instalacja MySQL
Bash1# MySQL Server 2sudo apt install -y mysql-server 3 4# Start MySQL 5sudo systemctl start mysql 6 7# MySQL przy starcie 8sudo systemctl enable mysql 9 10# Zabezpieczenie instalacji MySQL 11sudo mysql_secure_installation
Podczas zabezpieczania:
- Ustaw hasło root dla MySQL
- Usuń anonimowych użytkowników
- Wyłącz zdalne logowanie root
- Usuń bazę testową
- Przeładuj uprawnienia
Krok 4: Utworzenie bazy WordPress
Bash# Połączenie z MySQL sudo mysql -u root -p
W MySQL wykonaj:
SQL1-- Utwórz bazę 2CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 3 4-- Użytkownik WordPress 5CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'YourSecurePassword123!'; 6 7-- Uprawnienia 8GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost'; 9 10-- Zastosuj zmiany 11FLUSH PRIVILEGES; 12 13-- Wyjście 14EXIT;
Krok 5: PHP i wymagane rozszerzenia
Bash1# PHP i rozszerzenia dla WordPress 2sudo apt install -y php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip libapache2-mod-php 3 4# Wersja PHP 5php -v
WordPress wymaga PHP 7.4 lub nowszego. Konkretna wersja:
Bash# PHP 8.1 (zalecane) sudo apt install -y php8.1 php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-xmlrpc php8.1-soap php8.1-intl php8.1-zip libapache2-mod-php8.1
Krok 6: Pobranie WordPress
Bash1cd /tmp 2 3curl -O https://wordpress.org/latest.tar.gz 4 5tar xzf latest.tar.gz 6 7sudo cp -r wordpress/* /var/www/html/ 8 9sudo chown -R www-data:www-data /var/www/html 10sudo chmod -R 755 /var/www/html
Krok 7: Konfiguracja WordPress
Bashcd /var/www/html sudo cp wp-config-sample.php wp-config.php sudo nano wp-config.php
Zmień linie z danymi bazy:
PHPdefine( 'DB_NAME', 'wordpress_db' ); define( 'DB_USER', 'wordpress_user' ); define( 'DB_PASSWORD', 'YourSecurePassword123!' ); define( 'DB_HOST', 'localhost' );
Dodaj linie bezpieczeństwa (unikalne klucze):
PHP1define('AUTH_KEY', 'generate-unique-key-here'); 2define('SECURE_AUTH_KEY', 'generate-unique-key-here'); 3define('LOGGED_IN_KEY', 'generate-unique-key-here'); 4define('NONCE_KEY', 'generate-unique-key-here'); 5define('AUTH_SALT', 'generate-unique-key-here'); 6define('SECURE_AUTH_SALT', 'generate-unique-key-here'); 7define('LOGGED_IN_SALT', 'generate-unique-key-here'); 8define('NONCE_SALT', 'generate-unique-key-here');
Unikalne klucze: https://api.wordpress.org/secret-key/1.1/salt/
Krok 8: Apache pod WordPress
Bashsudo a2enmod rewrite sudo nano /etc/apache2/sites-available/000-default.conf
Sekcja <Directory /var/www/html>:
Apache1<Directory /var/www/html> 2 Options Indexes FollowSymLinks 3 AllowOverride All 4 Require all granted 5</Directory>
Restart Apache:
Bashsudo systemctl restart apache2
Krok 9: Dokończenie w przeglądarce
- Otwórz przeglądarkę
- Wejdź na:
http://TWOJE_IPlubhttp://twoja-domena.com - Kreator instalacji WordPress:
- wybór języka
- tytuł witryny, administrator, e-mail, hasło
- Zainstaluj WordPress
🔧 Metoda 2: Instalacja z LEMP (Nginx)
Krok 1: Instalacja Nginx
Bash1sudo apt install -y nginx 2 3sudo systemctl start nginx 4 5sudo systemctl enable nginx
Krok 2: MySQL (jak w LAMP)
Wykonaj kroki 3 i 4 z metody LAMP (MySQL + baza).
Krok 3: PHP-FPM
Bashsudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip # PHP 8.1 sudo apt install -y php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-xmlrpc php8.1-soap php8.1-intl php8.1-zip
Krok 4: Pobranie WordPress
Jak krok 6 w metodzie LAMP.
Krok 5: Nginx pod WordPress
Bashsudo nano /etc/nginx/sites-available/wordpress
Konfiguracja (zamień yourdomain.com na swoją domenę):
Nginx1server { 2 listen 80; 3 listen [::]:80; 4 server_name yourdomain.com www.yourdomain.com; 5 root /var/www/html; 6 index index.php index.html index.htm; 7 8 location / { 9 try_files $uri $uri/ /index.php?$args; 10 } 11 12 location ~ \.php$ { 13 include snippets/fastcgi-php.conf; 14 fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; 15 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 16 include fastcgi_params; 17 } 18 19 location ~ /\.ht { 20 deny all; 21 } 22}
Włączenie witryny:
Bash1sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ 2 3sudo nginx -t 4 5sudo systemctl restart nginx
Krok 6: Konfiguracja WordPress
Jak kroki 7 i 9 z metody LAMP.
🔒 Zabezpieczenie WordPress
1. Uprawnienia plików
Bash1sudo find /var/www/html -type f -exec chmod 644 {} \; 2 3sudo find /var/www/html -type d -exec chmod 755 {} \; 4 5sudo chmod 600 /var/www/html/wp-config.php
2. Certyfikat SSL (Let's Encrypt)
Bash1sudo apt install -y certbot python3-certbot-apache 2# Nginx: sudo apt install -y certbot python3-certbot-nginx 3 4sudo certbot --apache -d yourdomain.com -d www.yourdomain.com 5# Nginx: sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com 6 7sudo certbot renew --dry-run
3. Zapora
Bash1sudo ufw allow 'Apache Full' 2# Nginx: sudo ufw allow 'Nginx Full' 3 4sudo ufw allow 80/tcp 5sudo ufw allow 443/tcp
4. Ograniczenie prób logowania
Wtyczki bezpieczeństwa, np.:
- Wordfence Security
- iThemes Security
- Sucuri Security
5. Wyłączenie edycji plików z panelu
W wp-config.php:
PHPdefine('DISALLOW_FILE_EDIT', true);
🔄 Aktualizacje WordPress
Z poziomu panelu
- Zaloguj się do administracji
- Kokpit → Aktualizacje
- Zaktualizuj teraz
Przez WP-CLI
Bash1curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar 2chmod +x wp-cli.phar 3sudo mv wp-cli.phar /usr/local/bin/wp 4 5cd /var/www/html 6sudo -u www-data wp core update 7sudo -u www-data wp plugin update --all 8sudo -u www-data wp theme update --all
📦 Polecane wtyczki
- Yoast SEO — SEO
- Wordfence Security — bezpieczeństwo
- UpdraftPlus — kopie zapasowe
- W3 Total Cache — cache
- Contact Form 7 — formularze kontaktowe
❓ Typowe problemy
Błąd „Error establishing a database connection”
Rozwiązania:
- Sprawdź dane w
wp-config.php - Czy MySQL działa:
sudo systemctl status mysql - Test połączenia:
mysql -u wordpress_user -p wordpress_db
404 na permalinkach
Apache:
Bashsudo a2enmod rewrite sudo systemctl restart apache2
Nginx: Sprawdź konfigurację try_files.
Problemy z uprawnieniami
Bashsudo chown -R www-data:www-data /var/www/html sudo find /var/www/html -type d -exec chmod 755 {} \; sudo find /var/www/html -type f -exec chmod 644 {} \;
📝 Przydatne polecenia
Bash1sudo systemctl status apache2 # lub nginx 2sudo systemctl status mysql 3 4sudo systemctl restart apache2 # lub nginx 5sudo systemctl restart mysql 6 7sudo tail -f /var/log/apache2/error.log 8 9sudo tail -f /var/log/nginx/error.log 10 11sudo tail -f /var/log/php8.1-fpm.log
📞 Potrzebujesz pomocy?
W razie problemów z instalacją skontaktuj się z pomocą techniczną Infrawire. Jesteśmy dostępni, aby pomóc.
Uwaga: Dla wygodniejszej obsługi WordPress z dedykowanym wsparciem, automatycznymi kopiami i optymalizacją rozważ hosting WWW dedykowany pod WordPress.