PHP: Iniziare
Come iniziare con PHP su Stackhero
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione PHP cloud pronta all'uso che fornisce una serie di vantaggi, tra cui:
- Distribuisci la tua applicazione in pochi secondi con un semplice
git push.- Usa il tuo nome di dominio e beneficia della configurazione automatica dei certificati HTTPS per una sicurezza migliorata.
- Goditi la tranquillità con backup automatici, aggiornamenti con un clic, e una tariffazione semplice, trasparente e prevedibile.
- Ottieni prestazioni ottimali e una sicurezza robusta grazie a una VM privata e dedicata.
Risparmia tempo e semplificati la vita: ci vogliono solo 5 minuti per provare la soluzione di PHP cloud hosting di Stackhero!
Distribuire PHP su Stackhero è semplice e potente. In pochi passaggi, puoi avere la tua applicazione online. Questa guida ti guiderà nella creazione, configurazione e distribuzione del tuo servizio PHP in modo amichevole e passo dopo passo.
Avviare un servizio PHP
Inizia creando un servizio PHP su Stackhero tramite la dashboard. L'interfaccia intuitiva rende il processo rapido ed efficiente.
Prerequisiti
Prima di iniziare, assicurati di avere installato i seguenti strumenti:
- Git. Puoi scaricarlo da https://git-scm.com/downloads.
- Gli utenti Windows potrebbero trovare che Windows Terminal offre un'esperienza migliorata. Puoi ottenerlo dal Microsoft Store.
Configura il tuo servizio
L'unica impostazione da regolare nella configurazione del tuo servizio è la chiave pubblica SSH. Puoi recuperare la tua chiave pubblica utilizzando uno dei seguenti comandi:
cat ~/.ssh/id_rsa.pub
oppure
cat ~/.ssh/id_ed25519.pub
Se non hai ancora una coppia di chiavi, puoi generarne una usando ssh-keygen su Linux e macOS o ssh-keygen.exe su Windows.
Dopo aver ottenuto la tua chiave pubblica, vai alla dashboard di Stackhero, seleziona il tuo servizio PHP, vai alla sua pagina di configurazione e incolla la tua chiave nel campo appropriato.
Suggerimento: Puoi definire la tua chiave pubblica SSH a livello globale in modo che i futuri servizi la includano automaticamente. Per farlo, clicca sulla tua immagine del profilo in alto a destra nella dashboard, seleziona 'Il tuo profilo' e incolla la tua chiave pubblica SSH.
Clona l'esempio
È stata preparata una semplice applicazione PHP per dimostrare come funziona su Stackhero. Per iniziare, clona il repository con i seguenti comandi:
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Configura il server del repository remoto
Stackhero semplifica la distribuzione della tua applicazione utilizzando Git. Copia il valore fornito dal comando git remote dalla prima pagina del tuo servizio PHP nella dashboard. Il comando sarà simile a questo:
git remote add stackhero ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Distribuisci il tuo codice PHP
È ora di distribuire la tua applicazione. Spingi il tuo codice con il seguente comando:
git push stackhero main
La prima volta che spingi, ti verrà chiesto di accettare l'impronta della chiave. Digita "yes" quando richiesto. Dopo una breve attesa, la tua applicazione dovrebbe essere online. Puoi verificarne lo stato visitando l'URL fornito sulla dashboard di Stackhero (tipicamente qualcosa come https://XXXXX.stackhero-network.com).
Per aggiornare la tua applicazione, modifica il file www/index.php secondo necessità e ridistribuisci le modifiche con:
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Distribuisci un'applicazione esistente
Se hai un'applicazione PHP esistente, puoi facilmente distribuirla aggiungendo il repository remoto al tuo progetto (vedi Configura il server del repository remoto). Poi, spingi le tue modifiche usando:
git push stackhero main
Per impostazione predefinita, la directory pubblica è impostata su "www". È qui che viene eseguito il tuo codice PHP (incluso index.php) e dove sono memorizzati i tuoi file statici. Ad esempio, visitare yourdomain.com/myphoto.jpg recupera il file da www/myphoto.jpg. Puoi aggiornare questa directory nella configurazione del tuo servizio PHP se necessario.
Gestire l'errore "failed to push some refs to '[...]'"
Se incontri un errore come il seguente durante la distribuzione:
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.
Questo errore indica che il repository Git remoto contiene modifiche che non sono presenti nel tuo repository locale. Per sovrascrivere queste modifiche in modo sicuro, puoi forzare il push con:
git push -f stackhero main
Gestire l'errore "src refspec main does not match any"
Se vedi questo errore:
error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'
Significa che il branch main non esiste localmente. In questo caso, prova a spingere il branch master invece:
git push stackhero master
Gestire l'errore "Everything up-to-date" quando si spinge
Se Git risponde con Everything up-to-date e le tue modifiche non sono distribuite, potresti aver dimenticato di effettuare il commit delle tue modifiche. Per risolvere questo, esegui:
git add -A .
git commit -m "Your commit message"
git push stackhero main
Se non hai modificato alcun codice ma vuoi comunque attivare una distribuzione, puoi forzare un aggiornamento con un commit vuoto:
git commit --allow-empty -m "Force update"
git push stackhero main
Distribuire un branch diverso da main
Se vuoi distribuire un branch diverso da main (ad esempio, un branch chiamato "production"), puoi usare il seguente comando:
git push stackhero production:main
Distribuire un tag
Per distribuire un tag specifico (ad esempio, il tag "v1.0"), usa:
git push stackhero 'v1.0^{}:main'
La sintassi ^{} garantisce che il commit associato al tag venga spinto correttamente.
Tornare indietro o distribuire un commit specifico
Se hai bisogno di distribuire un commit specifico, ottieni prima il suo hash usando git log. Poi, forza il push di quel commit usando:
git push -f stackhero <HASH>:main
Distribuire su più ambienti
Spesso puoi avere servizi separati per diversi ambienti, come produzione e staging. Puoi gestirli rinominando e aggiungendo repository remoti.
Per rinominare il tuo remoto attuale da stackhero a stackhero-staging, usa:
git remote rename stackhero stackhero-staging
Successivamente, crea un nuovo servizio PHP per la produzione tramite la dashboard e aggiungilo usando:
git remote add stackhero-production ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Ora puoi distribuire nell'ambiente appropriato usando uno dei seguenti:
git push stackhero-production main
oppure
git push stackhero-staging main
Salvare la password della chiave privata SSH nel portachiavi di macOS
Su macOS, potresti essere invitato a inserire la password della tua chiave ogni volta che spingi il tuo codice. Invece di rimuovere la password dalla tua chiave SSH, puoi memorizzare la password della chiave nel portachiavi di macOS. Questo approccio mantiene la sicurezza risparmiando tempo. Esegui il seguente comando per aggiungere la tua chiave al portachiavi:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Una volta configurato, macOS non ti chiederà più la password della chiave quando spingi il tuo codice.
Gestire i segreti
Per gli ambienti di produzione e staging è essenziale memorizzare i dati sensibili, come token e password, in modo sicuro. Invece di codificare i segreti nel tuo repository, considera l'uso di variabili d'ambiente. Puoi aggiungere queste variabili sulla dashboard di Stackhero e accedervi nel tuo codice. Ad esempio, se crei una variabile d'ambiente chiamata "mySecret", puoi recuperare il suo valore in PHP usando:
getenv("mySecret")
Gestire le dipendenze PHP
Quando spingi il tuo codice, gli script di distribuzione leggono il tuo file composer.json e installano automaticamente tutte le dipendenze specificate tramite Composer.
Memorizzare i file
Se la tua applicazione ha bisogno di memorizzare file (ad esempio, foto degli utenti), è consigliabile utilizzare una soluzione di storage a oggetti. Questo approccio non solo facilita la condivisione dei file tra più servizi, ma separa anche i tuoi file caricati dal tuo codice. Ti consigliamo di esplorare MinIO per una soluzione veloce, affidabile e compatibile con S3.
In alternativa, se preferisci lo storage locale dei file, puoi utilizzare lo storage persistente fornito con la tua istanza PHP. Questo storage si trova nella directory /persistent/storage/.
Ad esempio, per memorizzare un file caricato, potresti usare la funzione move_uploaded_file come segue:
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Per maggiori dettagli sui caricamenti di file, consulta la documentazione ufficiale PHP: https://www.php.net/manual/en/features.file-upload.php.
ATTENZIONE: Non memorizzare mai dati al di fuori della cartella
/persistent/storage/!Se la tua istanza si riavvia o se spingi modifiche al codice, tutti i dati memorizzati al di fuori dello storage persistente potrebbero essere persi!