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 diegimas Stackhero yra paprastas ir galingas. Vos keliais žingsniais galite paleisti savo programą internete. Šis vadovas padės jums sukurti, konfigūruoti ir diegti jūsų PHP paslaugą draugišku, žingsnis po žingsnio būdu.

Pradėkite kurdami PHP paslaugą Stackhero per valdymo skydelį. Intuityvi sąsaja leidžia procesą atlikti greitai ir efektyviai.

Prieš pradėdami, įsitikinkite, kad turite įdiegtus šiuos įrankius:

  1. Git. Jį galite atsisiųsti iš https://git-scm.com/downloads.
  2. Windows naudotojai gali pastebėti, kad Windows Terminal suteikia geresnę patirtį. Jį galite gauti iš Microsoft Store.

Vienintelis nustatymas, kurį reikia pakeisti jūsų paslaugos konfigūracijoje, yra SSH viešasis raktas. Galite gauti savo viešąjį raktą naudodami vieną iš šių komandų:

cat ~/.ssh/id_rsa.pub

arba

cat ~/.ssh/id_ed25519.pub

Jei dar neturite raktų poros, galite ją sugeneruoti naudodami ssh-keygen Linux ir macOS arba ssh-keygen.exe Windows.

Gavę savo viešąjį raktą, eikite į Stackhero valdymo skydelį, pasirinkite savo PHP paslaugą, eikite į jos konfigūracijos puslapį ir įklijuokite savo raktą į atitinkamą lauką.

Patarimas: Galite nustatyti savo SSH viešąjį raktą globaliai, kad būsimos paslaugos jį automatiškai įtrauktų. Norėdami tai padaryti, spustelėkite savo profilio nuotrauką viršutiniame dešiniajame valdymo skydelio kampe, pasirinkite 'Jūsų profilis' ir įklijuokite savo SSH viešąjį raktą.

Paruošta paprasta PHP programa, kad parodytų, kaip ji veikia Stackhero. Norėdami pradėti, klonuokite saugyklą naudodami šias komandas:

git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started

Stackhero supaprastina jūsų programos diegimą naudojant Git. Nukopijuokite vertę, kurią pateikia git remote komanda iš pirmojo jūsų PHP paslaugos puslapio valdymo skydelyje. Komanda atrodys taip:

git remote add stackhero ssh://stackhero@XXXXX.stackhero-network.com:222/project.git

Dabar laikas diegti jūsų programą. Stumkite savo kodą naudodami šią komandą:

git push stackhero main

Pirmą kartą stumiant, būsite paprašyti priimti rakto pirštų atspaudą. Įveskite "yes", kai būsite paprašyti. Po trumpo laukimo jūsų programa turėtų būti internete. Galite patikrinti jos būseną apsilankę URL, pateiktu Stackhero valdymo skydelyje (paprastai kažkas panašaus į https://XXXXX.stackhero-network.com).

Norėdami atnaujinti savo programą, pakeiskite www/index.php failą pagal poreikį ir iš naujo diekite pakeitimus su:

git add -A .
git commit -m "Update www/index.php"
git push stackhero main

Jei turite esamą PHP programą, galite lengvai ją diegti pridėdami nuotolinę saugyklą prie savo projekto (žr. Konfigūruoti nuotolinio saugyklos serverį). Tada stumkite savo pakeitimus naudodami:

git push stackhero main

Pagal numatytuosius nustatymus viešasis katalogas nustatytas kaip "www". Čia vykdomas jūsų PHP kodas (įskaitant index.php) ir saugomi jūsų statiniai failai. Pavyzdžiui, apsilankius yourdomain.com/myphoto.jpg, failas gaunamas iš www/myphoto.jpg. Jei reikia, galite atnaujinti šį katalogą savo PHP paslaugos konfigūracijoje.

Jei diegimo metu susiduriate su tokia klaida:

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 klaida rodo, kad nuotolinėje Git saugykloje yra pakeitimų, kurių nėra jūsų vietinėje saugykloje. Norėdami saugiai perrašyti šiuos pakeitimus, galite priversti stumti su:

git push -f stackhero main

Jei matote šią 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 reiškia, kad šaka main vietoje neegzistuoja. Tokiu atveju pabandykite stumti šaką master:

git push stackhero master

Jei Git atsako su Everything up-to-date ir jūsų pakeitimai nėra diegiami, galbūt pamiršote įsipareigoti savo pakeitimus. Norėdami tai išspręsti, vykdykite:

git add -A .
git commit -m "Your commit message"
git push stackhero main

Jei nekeitėte jokio kodo, bet vis tiek norite suaktyvinti diegimą, galite priversti atnaujinti su tuščiu įsipareigojimu:

git commit --allow-empty -m "Force update"
git push stackhero main

Jei norite diegti kitą šaką nei main (pavyzdžiui, šaką pavadinimu "production"), galite naudoti šią komandą:

git push stackhero production:main

Norėdami diegti konkrečią žymą (pavyzdžiui, žymą "v1.0"), naudokite:

git push stackhero 'v1.0^{}:main'

Sintaksė ^{} užtikrina, kad su žyma susijęs įsipareigojimas būtų tinkamai stumiamas.

Jei reikia diegti konkretų įsipareigojimą, pirmiausia gaukite jo hash naudodami git log. Tada priverstinai stumkite tą įsipareigojimą naudodami:

git push -f stackhero <HASH>:main

Dažnai galite turėti atskiras paslaugas skirtingoms aplinkoms, tokioms kaip gamyba ir testavimas. Galite jas valdyti pervadindami ir pridėdami nuotolines saugyklas.

Norėdami pervadinti savo dabartinę nuotolinę saugyklą iš stackhero į stackhero-staging, naudokite:

git remote rename stackhero stackhero-staging

Tada sukurkite naują PHP paslaugą gamybai per valdymo skydelį ir pridėkite ją naudodami:

git remote add stackhero-production ssh://stackhero@XXXXX.stackhero-network.com:222/project.git

Dabar galite diegti į tinkamą aplinką naudodami arba:

git push stackhero-production main

arba

git push stackhero-staging main

macOS gali paprašyti jūsų rakto slaptažodžio kiekvieną kartą stumiant kodą. Vietoj to, kad pašalintumėte slaptažodį iš savo SSH rakto, galite saugoti savo rakto slaptažodį macOS raktų pakabuke. Šis metodas išlaiko saugumą ir taupo laiką. Vykdykite šią komandą, kad pridėtumėte savo raktą į raktų pakabuką:

/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa

Kai nustatyta, macOS nebereikalaus jūsų rakto slaptažodžio stumiant kodą.

Gamybos ir testavimo aplinkose būtina saugiai saugoti jautrius duomenis, tokius kaip žetonai ir slaptažodžiai. Vietoj to, kad koduotumėte paslaptis savo saugykloje, apsvarstykite galimybę naudoti aplinkos kintamuosius. Galite pridėti šiuos kintamuosius Stackhero valdymo skydelyje ir pasiekti juos savo kode. Pavyzdžiui, jei sukuriate aplinkos kintamąjį pavadinimu "mySecret", galite gauti jo vertę PHP naudodami:

getenv("mySecret")

Kai stumiate savo kodą, diegimo skriptai skaito jūsų composer.json failą ir automatiškai įdiegia visas nurodytas priklausomybes per Composer.

Jei jūsų programa turi saugoti failus (pavyzdžiui, naudotojų nuotraukas), patartina naudoti objektų saugojimo sprendimą. Šis metodas ne tik palengvina failų dalijimąsi tarp kelių paslaugų, bet ir atskiria jūsų įkeltus failus nuo jūsų kodo. Rekomenduojame išbandyti MinIO greitam, patikimam ir S3 suderinamam sprendimui.

Arba, jei pageidaujate vietinio failų saugojimo, galite naudoti nuolatinę saugyklą, pateiktą su jūsų PHP instancija. Ši saugykla yra /persistent/storage/ kataloge.

Pavyzdžiui, norėdami saugoti įkeltą failą, galite naudoti move_uploaded_file funkciją taip:

move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');

Daugiau informacijos apie failų įkėlimą rasite oficialioje PHP dokumentacijoje: https://www.php.net/manual/en/features.file-upload.php.

DĖMESIO: Niekada nesaugokite duomenų už /persistent/storage/ aplanko ribų!

Jei jūsų instancija bus paleista iš naujo arba jei stumsite kodo pakeitimus, visi duomenys, saugomi už nuolatinės saugyklos ribų, gali būti prarasti!