PHP: Pradžia
Kaip pradėti naudoti PHP su Stackhero
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti PHP cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įdiekite savo programą per kelias sekundes su paprastu
git push.- Naudokite savo domeno vardą ir pasinaudokite automatiniu HTTPS sertifikatų konfigūravimu, kad padidintumėte saugumą.
- Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
- Gaukite optimalų veikimą ir tvirtą saugumą dėka privačios ir dedikuotos VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero PHP cloud hosting sprendimą užtrunka tik 5 minutes!
PHP aplikacijos paleidimas Stackhero platformoje yra paprastas ir galingas sprendimas. Vos keliais žingsniais jūsų projektas bus pasiekiamas internete ir paruoštas naudojimui. Šiame vadove rasite draugišką, nuoseklų paaiškinimą, kaip sukurti, sukonfigūruoti ir įdiegti savo PHP paslaugą.
Pradėkite PHP paslaugą
Norėdami pradėti, galite sukurti PHP paslaugą Stackhero valdymo skydelyje. Sąsaja sukurta taip, kad šis procesas būtų greitas ir paprastas.
Būtinos sąlygos
Prieš pradėdami, įsitikinkite, kad turite šiuos įrankius:
- Git. Atsisiųskite iš https://git-scm.com/downloads.
- Windows Terminal (nebūtina, tik Windows naudotojams). Ši terminalo programa suteikia patogesnę darbo patirtį. Ją rasite Microsoft Store.
Paslaugos konfigūravimas
Pagrindinė reikalinga konfigūracija – jūsų SSH viešasis raktas. Viešąjį raktą galite gauti įvykdę vieną iš šių komandų:
cat ~/.ssh/id_rsa.pub
arba
cat ~/.ssh/id_ed25519.pub
Jei dar neturite SSH raktų poros, ją galite sugeneruoti naudodami ssh-keygen Linux ar macOS, arba ssh-keygen.exe Windows aplinkoje.
Kai turėsite viešąjį raktą, eikite į Stackhero valdymo skydelį, pasirinkite savo PHP paslaugą, atverkite konfigūracijos puslapį ir įklijuokite raktą į tam skirtą lauką.
Tip: Jei norite nustatyti SSH viešąjį raktą visoms būsimoms paslaugoms, galite tai padaryti globaliai. Tiesiog spustelėkite savo profilio nuotrauką viršutiniame dešiniajame skydelio kampe, pasirinkite „Jūsų profilis“ ir įklijuokite SSH viešąjį raktą ten.
Pavyzdžio klonavimas
Kad pradėti būtų lengviau, paruošėme pavyzdinę PHP aplikaciją. Galite klonuoti šį repozitoriją:
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Nutolusio repozitorijos serverio konfigūravimas
Stackhero leidžia lengvai diegti aplikacijas naudojant Git. Nukopijuokite git remote komandą, kurią rasite savo PHP paslaugos pirmame puslapyje valdymo skydelyje. Ji atrodys maždaug taip:
git remote add stackhero ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
PHP kodo diegimas
Dabar esate pasiruošę diegti savo aplikaciją. Kodą galite įkelti su:
git push stackhero main
Pirmo įkėlimo metu būsite paprašyti patvirtinti rakto „fingerprint“. Tiesiog įrašykite „yes“, kai to bus paprašyta. Po trumpos pauzės jūsų aplikacija bus pasiekiama internete. Jos būseną galite patikrinti Stackhero valdymo skydelyje nurodytu URL (dažniausiai https://<XXXXXX>.stackhero-network.com).
Norėdami atnaujinti aplikaciją, tiesiog pakeiskite www/index.php failą (ar kitą reikiamą failą) ir vėl įdiekite pakeitimus:
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Esamos aplikacijos diegimas
Jei jau turite PHP aplikaciją, kurią norite įdiegti, tiesiog pridėkite nutolusį repozitorijų prie savo projekto (žr. Nutolusio repozitorijos serverio konfigūravimas). Tuomet galite įkelti pakeitimus su:
git push stackhero main
Pagal nutylėjimą Stackhero ieško jūsų PHP kodo ir statinių failų www kataloge. Pavyzdžiui, kai kas nors apsilanko yourdomain.com/myphoto.jpg, failas bus pateikiamas iš www/myphoto.jpg. Jei jūsų aplikacija naudoja kitą viešą katalogą, šį nustatymą galite pakeisti PHP paslaugos konfigūracijoje.
Klaidos „failed to push some refs to '[...]'“ sprendimas
Jei diegimo metu gaunate tokią klaidą:
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.
Ši žinutė reiškia, kad nutolusiame Git repozitorijoje yra pakeitimų, kurių nėra jūsų vietinėje kopijoje. Jei tikrai norite perrašyti nutolusį repozitorijų savo vietine versija, galite priverstinai įkelti pakeitimus:
git push -f stackhero main
Klaidos „src refspec main does not match any“ sprendimas
Jei matote tokią klaidą:
error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'
Tai dažniausiai reiškia, kad vietiniame repozitorijoje nėra main šakos. Tokiu atveju galite įkelti master šaką:
git push stackhero master
Klaidos „Everything up-to-date“ sprendimas įkeliant pakeitimus
Jei Git praneša Everything up-to-date, bet nematote savo pakeitimų, tikėtina, kad pamiršote įrašyti (commit) pakeitimus. Išspręsite tai įvykdę:
git add -A .
git commit -m "Jūsų commit žinutė"
git push stackhero main
Jei nekoregavote kodo, bet vis tiek norite inicijuoti diegimą, galite naudoti tuščią commit:
git commit --allow-empty -m "Force update"
git push stackhero main
Kitos šakos diegimas
Jei norite diegti kitą šaką (pvz., production), naudokite:
git push stackhero production:main
Žymos (tag) diegimas
Norėdami įdiegti konkrečią žymą (pvz., v1.0), vykdykite:
git push stackhero 'v1.0^{}:main'
^{} užtikrina, kad su žyma susietas commit bus tinkamai įkeltas.
Grįžimas prie konkretaus commit arba jo diegimas
Jei reikia įdiegti konkretų commit, pirmiausia raskite jo hash naudodami git log. Tuomet priverstinai įkelkite tą commit:
git push -f stackhero <HASH>:main
Diegimas į kelias aplinkas
Dažnai naudojamos atskiros paslaugos skirtingoms aplinkoms, pvz., produkcinei ir testavimo (staging). Tai galite valdyti pervadindami ir pridėdami nutolusius repozitorijus.
Norėdami pervadinti dabartinį nutolusį repozitorijų iš stackhero į stackhero-staging, vykdykite:
git remote rename stackhero stackhero-staging
Tada sukurkite naują PHP paslaugą produkcinei aplinkai per valdymo skydelį ir pridėkite ją taip:
git remote add stackhero-production ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
Dabar galite diegti į bet kurią aplinką:
git push stackhero-production main
arba
git push stackhero-staging main
SSH privataus rakto slaptažodžio išsaugojimas macOS Keychain
Jei naudojate macOS ir kiekvieną kartą įkeliant kodą prašoma SSH rakto slaptažodžio, nereikia šalinti slaptažodžio iš rakto. Vietoj to, galite saugiai išsaugoti slaptažodį macOS Keychain. Tiesiog įvykdykite:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Po šio veiksmo macOS daugiau neprašys rakto slaptažodžio įkeliant kodą.
Slaptų duomenų (secrets) tvarkymas
Produkcinei ir testavimo aplinkoms svarbu saugiai laikyti jautrią informaciją, pvz., tokenus ar slaptažodžius. Vietoj to, kad šiuos duomenis įrašytumėte į repozitoriją, rekomenduojama naudoti aplinkos kintamuosius. Juos galite pridėti Stackhero valdymo skydelyje ir pasiekti savo kode. Pavyzdžiui, jei sukursite aplinkos kintamąjį mySecret, jį PHP galite gauti taip:
getenv("mySecret")
PHP priklausomybių tvarkymas
Kai įkeliate kodą, Stackhero diegimo scenarijai perskaito jūsų composer.json failą ir automatiškai įdiegia visas Composer nurodytas priklausomybes.
Failų saugojimas
Jei jūsų aplikacijai reikia saugoti failus (pvz., naudotojų įkeltas nuotraukas), dažnai rekomenduojama naudoti objektų saugyklą (object storage). Tai palengvina failų dalinimąsi tarp kelių paslaugų ir atskiria įkeltus failus nuo kodo. Galite išbandyti MinIO – greitą, patikimą ir su S3 suderinamą sprendimą.
Jei norite naudoti vietinį saugojimą, galite pasinaudoti prie PHP instancijos priskirta nuolatine saugykla. Ji pasiekiama per /persistent/storage/ katalogą.
Pavyzdžiui, norėdami išsaugoti įkeltą failą, naudokite move_uploaded_file funkciją taip:
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Daugiau informacijos apie failų įkėlimą PHP rasite oficialioje dokumentacijoje: https://www.php.net/manual/en/features.file-upload.php.
DĖMESIO: Visada saugokite duomenis
/persistent/storage/kataloge.Jei jūsų instancija bus paleista iš naujo arba įkelsite kodo pakeitimus, visi duomenys, esantys už nuolatinės saugyklos ribų, gali būti prarasti.