PHP: Pierwsze kroki
Jak rozpocząć pracę z PHP na Stackhero
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie PHP cloud, które zapewnia wiele korzyści, w tym:
- Wdrażaj swoją aplikację w kilka sekund za pomocą prostego
git push.- Używaj własnej nazwy domeny i korzystaj z automatycznej konfiguracji certyfikatów HTTPS dla zwiększonego bezpieczeństwa.
- Ciesz się spokojem dzięki automatycznym kopiom zapasowym, aktualizacjom jednym kliknięciem oraz prostemu, przejrzystemu i przewidywalnemu cennikowi.
- Uzyskaj optymalną wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
Oszczędzaj czas i upraszczaj sobie życie: wypróbowanie rozwiązania PHP cloud hosting Stackhero zajmuje tylko 5 minut!
Uruchomienie aplikacji PHP na Stackhero jest zarówno proste, jak i wydajne. W kilku krokach Twój projekt będzie dostępny online i gotowy do działania. Ten przewodnik przeprowadzi Cię przez proces tworzenia, konfigurowania i wdrażania usługi PHP w przyjazny, krok po kroku sposób.
Uruchom usługę PHP
Aby rozpocząć, możesz utworzyć usługę PHP na Stackhero bezpośrednio z poziomu panelu zarządzania. Interfejs został zaprojektowany tak, aby ten proces był szybki i intuicyjny.
Wymagania wstępne
Przed rozpoczęciem upewnij się, że masz przygotowane następujące narzędzia:
- Git. Możesz go pobrać ze strony https://git-scm.com/downloads.
- Windows Terminal (opcjonalnie dla użytkowników Windows). Ten terminal zapewnia lepsze doświadczenie pracy. Jest dostępny w Microsoft Store.
Skonfiguruj swoją usługę
Podstawową konfiguracją, której będziesz potrzebować, jest Twój klucz publiczny SSH. Możesz go uzyskać, uruchamiając jedną z poniższych komend:
cat ~/.ssh/id_rsa.pub
lub
cat ~/.ssh/id_ed25519.pub
Jeśli nie masz jeszcze pary kluczy SSH, możesz ją wygenerować za pomocą ssh-keygen na Linuxie i macOS lub ssh-keygen.exe na Windows.
Gdy już masz swój klucz publiczny, przejdź do panelu Stackhero, wybierz swoją usługę PHP, przejdź do strony konfiguracji i wklej klucz w odpowiednie pole.
Tip: Jeśli chcesz ustawić swój klucz publiczny SSH dla wszystkich przyszłych usług, możesz zrobić to globalnie. Kliknij swoje zdjęcie profilowe w prawym górnym rogu panelu, przejdź do "Twój profil" i wklej tam swój klucz publiczny SSH.
Sklonuj przykład
Aby ułatwić Ci start, przygotowaliśmy przykładową aplikację PHP. Możesz sklonować repozytorium poleceniem:
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Skonfiguruj zdalne repozytorium
Stackhero umożliwia łatwe wdrażanie aplikacji za pomocą Git. Skopiuj polecenie git remote podane na pierwszej stronie Twojej usługi PHP w panelu. Będzie wyglądać mniej więcej tak:
git remote add stackhero ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
Wdróż swój kod PHP
Jesteś już gotowy do wdrożenia aplikacji. Możesz wypchnąć swój kod poleceniem:
git push stackhero main
Podczas pierwszego pushowania zostaniesz poproszony o zaakceptowanie odcisku klucza. Wpisz po prostu "yes", gdy zostaniesz o to zapytany. Po krótkiej chwili Twoja aplikacja powinna być dostępna online. Status możesz sprawdzić pod adresem URL podanym w panelu Stackhero (zazwyczaj https://<XXXXXX>.stackhero-network.com).
Aby zaktualizować aplikację, wystarczy zmodyfikować plik www/index.php (lub inny potrzebny plik), a następnie ponownie wdrożyć zmiany poleceniem:
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Wdróż istniejącą aplikację
Jeśli masz już gotową aplikację PHP, którą chcesz wdrożyć, wystarczy dodać zdalne repozytorium do swojego projektu (zobacz Skonfiguruj zdalne repozytorium). Następnie możesz wypchnąć zmiany poleceniem:
git push stackhero main
Domyślnie Stackhero szuka Twojego kodu PHP i plików statycznych w katalogu www. Na przykład, gdy ktoś odwiedza yourdomain.com/myphoto.jpg, plik zostanie obsłużony z www/myphoto.jpg. Jeśli Twoja aplikacja korzysta z innego katalogu publicznego, możesz zmienić to ustawienie w konfiguracji usługi PHP.
Obsługa błędu "failed to push some refs to '[...]'"
Jeśli podczas wdrażania pojawi się taki błąd:
error: failed to push some refs to '[...]'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Ten komunikat oznacza, że zdalne repozytorium Git zawiera zmiany, których nie masz lokalnie. Jeśli chcesz nadpisać zdalne repozytorium swoją wersją lokalną, możesz wymusić push poleceniem:
git push -f stackhero main
Obsługa błędu "src refspec main does not match any"
Jeśli pojawi się taki błąd:
error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'
Zazwyczaj oznacza to, że gałąź main nie istnieje lokalnie. W takim przypadku możesz wypchnąć gałąź master:
git push stackhero master
Obsługa błędu "Everything up-to-date" podczas pushowania
Jeśli Git wyświetla Everything up-to-date, a nie widzisz wdrożonych zmian, prawdopodobnie zapomniałeś zatwierdzić swoje zmiany. Możesz to naprawić, wykonując:
git add -A .
git commit -m "Twój komunikat commita"
git push stackhero main
Jeśli nie zmieniłeś żadnego kodu, ale chcesz wymusić wdrożenie, możesz użyć pustego commita:
git commit --allow-empty -m "Force update"
git push stackhero main
Wdróż inną gałąź niż main
Jeśli chcesz wdrożyć inną gałąź (np. production), użyj polecenia:
git push stackhero production:main
Wdróż tag
Aby wdrożyć konkretny tag (np. v1.0), uruchom:
git push stackhero 'v1.0^{}:main'
^{} zapewnia, że commit powiązany z tagiem zostanie poprawnie wypchnięty.
Cofnij lub wdroż konkretny commit
Jeśli musisz wdrożyć konkretny commit, najpierw znajdź jego hash za pomocą git log. Następnie wymuś push tego commita poleceniem:
git push -f stackhero <HASH>:main
Wdrażanie na wiele środowisk
Często stosuje się oddzielne usługi dla różnych środowisk, takich jak produkcyjne i staging. Możesz to obsłużyć, zmieniając nazwy i dodając zdalne repozytoria.
Aby zmienić nazwę obecnego zdalnego repozytorium z stackhero na stackhero-staging, uruchom:
git remote rename stackhero stackhero-staging
Następnie utwórz nową usługę PHP dla produkcji w panelu i dodaj ją poleceniem:
git remote add stackhero-production ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
Teraz możesz wdrażać na wybrane środowisko poleceniem:
git push stackhero-production main
lub
git push stackhero-staging main
Zapisywanie hasła klucza prywatnego SSH w pęku kluczy macOS
Jeśli korzystasz z macOS i przy każdym pushowaniu kodu jesteś proszony o hasło do klucza SSH, nie musisz usuwać hasła z klucza. Możesz bezpiecznie zapisać hasło w pęku kluczy macOS. Wystarczy uruchomić:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Po tym macOS nie będzie już pytał o hasło do klucza podczas pushowania kodu.
Zarządzanie sekretami
Dla środowisk produkcyjnych i staging ważne jest bezpieczne przechowywanie wrażliwych danych, takich jak tokeny i hasła. Zamiast umieszczać sekrety w repozytorium, zaleca się korzystanie ze zmiennych środowiskowych. Możesz dodać takie zmienne w panelu Stackhero, a następnie odczytać je w kodzie. Na przykład, jeśli utworzysz zmienną środowiskową o nazwie mySecret, możesz ją pobrać w PHP tak:
getenv("mySecret")
Zarządzanie zależnościami PHP
Podczas pushowania kodu, skrypty wdrożeniowe Stackhero odczytają Twój plik composer.json i automatycznie zainstalują wszystkie zależności określone przez Composer.
Przechowywanie plików
Jeśli Twoja aplikacja musi przechowywać pliki (np. zdjęcia przesyłane przez użytkowników), często warto skorzystać z rozwiązania object storage. Takie podejście ułatwia współdzielenie plików między usługami i oddziela przesłane pliki od kodu. Możesz rozważyć MinIO jako szybkie, niezawodne i kompatybilne z S3 rozwiązanie.
Jeśli wolisz korzystać z lokalnego magazynu plików, możesz wykorzystać trwałą przestrzeń dyskową dostępną w Twojej instancji PHP. Jest ona dostępna pod ścieżką /persistent/storage/.
Na przykład, aby zapisać przesłany plik, użyj funkcji move_uploaded_file w następujący sposób:
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Więcej informacji o przesyłaniu plików w PHP znajdziesz w oficjalnej dokumentacji: https://www.php.net/manual/en/features.file-upload.php.
UWAGA: Zawsze przechowuj dane w folderze
/persistent/storage/.Jeśli Twoja instancja zostanie zrestartowana lub wypchniesz zmiany w kodzie, wszystkie dane zapisane poza trwałą przestrzenią dyskową mogą zostać utracone.