Ręczne aktualizowanie plików przez FTP to już przeszłość. Nowoczesne środowiska programistyczne stawiają na automatyzację wdrożeń (CI/CD) , która pozwala błyskawicznie publikować zmiany z repozytorium Git na serwerze.
W tym poradniku pokażę, jak:
skonfigurować repozytorium WordPressa w GitHubie,
przygotować serwer do odbierania wdrożeń,
użyć GitHub Actions do automatycznego wdrażania zmian.
To rozwiązanie jest w pełni darmowe, bez zewnętrznych narzędzi – wystarczy GitHub i dostęp SSH do serwera.
1. Dlaczego warto wdrożyć automatyzację?
Automatyczne wdrożenia mają kilka kluczowych zalet:
🔁 Spójność środowisk – każda zmiana w kodzie przechodzi przez ten sam proces,
🚀 Szybkość – commit na GitHubie = automatyczne wdrożenie,
🔒 Bezpieczeństwo – brak ryzyka pomyłek przy ręcznym kopiowaniu plików,
🧩 Wersjonowanie – możliwość powrotu do dowolnej wersji strony.
Dzięki temu Twój WordPress staje się łatwiejszy w utrzymaniu i bardziej odporny na błędy ludzkie.
2. Przygotowanie środowiska Git
a) Inicjalizacja repozytorium
W katalogu WordPressa (np. lokalnie):
git init
git add .
git commit -m "Initial commit WordPress project"
Zaleca się nie dodawać katalogu wp-content/uploads (z plikami użytkowników). W pliku .gitignore dodaj:
wp-content/uploads/
wp-config.php
node_modules/
vendor/
b) Dodanie zdalnego repozytorium
git remote add origin git@github.com:twoj-login/twoja-strona.git
git push -u origin main
Repozytorium jest gotowe — teraz czas na automatyzację wdrożeń.
3. Przygotowanie serwera produkcyjnego
Najwygodniej, jeśli masz dostęp SSH do serwera. Utwórz tam katalog projektu:
cd /var/www/
mkdir wordpress-prod
cd wordpress-prod
git init
Dodaj klucz publiczny GitHuba (z konta GitHub Actions) do pliku:
~/.ssh/authorized_keys
Dzięki temu GitHub Actions będzie mógł połączyć się z serwerem bez hasła.
4. Konfiguracja GitHub Actions
W repozytorium utwórz katalog:.github/workflows/deploy.yml
A w nim dodaj poniższą konfigurację:
name: Deploy WordPress via SSH
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Copy files to server via SSH
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
source: "."
target: "/var/www/wordpress-prod"
- name: Run remote post-deploy script
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
cd /var/www/wordpress-prod
composer install --no-dev
php artisan cache:clear || true
5. Konfiguracja sekretów w GitHubie
Przejdź do:Repozytorium → Settings → Secrets → Actions i dodaj następujące zmienne:
SERVER_HOST → adres IP lub domena serwera
SERVER_USER → użytkownik SSH (np. deploy)
SERVER_SSH_KEY → klucz prywatny (z dopasowanym publicznym na serwerze)
To one pozwalają GitHubowi bezpiecznie połączyć się z Twoim serwerem i przesłać pliki.
6. Dodatkowe opcje – wdrożenia tylko dla określonych katalogów
Jeśli chcesz wdrażać tylko np. motyw lub wtyczkę, możesz zmodyfikować sekcję source::
source: "wp-content/themes/twoj-motyw"
target: "/var/www/wordpress-prod/wp-content/themes/twoj-motyw"
To pozwala wdrażać tylko wybrane komponenty, bez dotykania całej instalacji WordPressa.
7. Automatyczne czyszczenie cache i optymalizacja
Po wdrożeniu możesz automatycznie czyścić cache LiteSpeed, Redis lub Cloudflare. Przykład — czyszczenie cache LiteSpeed po SSH:
- name: Clear LiteSpeed cache
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
rm -rf /usr/local/lsws/cachedata/*
Lub wywołanie webhooka Cloudflare Purge:
- name: Purge Cloudflare cache
run: curl -X POST "https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache" \
-H "Authorization: Bearer ${{ secrets.CF_API_KEY }}" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'
8. Testowanie wdrożenia
Po wykonaniu git push origin main GitHub automatycznie uruchomi workflow i zdeployuje zmiany na serwer.
Status sprawdzisz w zakładce: 👉 Actions → Deploy WordPress via SSH
Jeśli wszystko poszło dobrze, zobaczysz zielony status „✅ success”.
9. Najczęstsze błędy
Problem Rozwiązanie Brak dostępu SSH Sprawdź uprawnienia i klucz publiczny na serwerze Złe ścieżki w YAML Upewnij się, że target istnieje na serwerze Błąd Permission denied Ustaw odpowiednie prawa (chown -R www-data:www-data) Workflow nie startuje Sprawdź, czy branch to main (lub dopasuj do swojego)
10. Podsumowanie
Automatyzacja wdrażania WordPressa z GitHub Actions to krok w stronę profesjonalnego zarządzania projektami. Dzięki temu:
możesz pracować zespołowo nad kodem,
każda zmiana jest wersjonowana i testowana,
wdrożenia są powtarzalne, szybkie i bezpieczne.
Połącz to z testami automatycznymi i backupem – a Twój proces CI/CD stanie się w pełni niezawodny.