PHP: Comenzando
Cómo empezar con PHP en Stackhero
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución PHP cloud lista para usar que proporciona una serie de beneficios, incluyendo:
- Despliegue su aplicación en segundos con un simple
git push.- Use su propio nombre de dominio y benefíciese de la configuración automática de certificados HTTPS para una mayor seguridad.
- Disfrute de la tranquilidad con copias de seguridad automáticas, actualizaciones con un clic, y una tarificación sencilla, transparente y predecible.
- Obtenga un rendimiento óptimo y una seguridad robusta gracias a una VM privada y dedicada.
Ahorre tiempo y simplifique su vida: solo toma 5 minutos probar la solución de PHP cloud hosting de Stackhero.
Desplegar PHP en Stackhero es sencillo y potente. En solo unos pasos, puede tener su aplicación funcionando en línea. Esta guía le guiará a través de la creación, configuración y despliegue de su servicio PHP de manera amigable y paso a paso.
Iniciar un servicio PHP
Comience creando un servicio PHP en Stackhero a través del panel de control. La interfaz intuitiva hace que el proceso sea rápido y eficiente.
Requisitos previos
Antes de comenzar, asegúrese de tener instaladas las siguientes herramientas:
- Git. Puede descargarlo desde https://git-scm.com/downloads.
- Los usuarios de Windows podrían encontrar que Windows Terminal ofrece una experiencia mejorada. Puede obtenerlo desde la Microsoft Store.
Configurar su servicio
El único ajuste que necesita realizar en la configuración de su servicio es la clave pública SSH. Puede recuperar su clave pública usando uno de los siguientes comandos:
cat ~/.ssh/id_rsa.pub
o
cat ~/.ssh/id_ed25519.pub
Si aún no tiene un par de claves, puede generar uno usando ssh-keygen en Linux y macOS o ssh-keygen.exe en Windows.
Después de obtener su clave pública, navegue al panel de control de Stackhero, seleccione su servicio PHP, vaya a su página de configuración y pegue su clave en el campo correspondiente.
Consejo: Puede definir su clave pública SSH globalmente para que los futuros servicios la incluyan automáticamente. Para hacer esto, haga clic en su foto de perfil en la esquina superior derecha del panel de control, seleccione 'Su perfil' y pegue su clave pública SSH.
Clonar el ejemplo
Se ha preparado una aplicación PHP simple para demostrar cómo funciona en Stackhero. Para comenzar, clone el repositorio con los siguientes comandos:
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Configurar el servidor del repositorio remoto
Stackhero simplifica el despliegue de su aplicación usando Git. Copie el valor proporcionado por el comando git remote desde la primera página de su servicio PHP en el panel de control. El comando se verá similar a esto:
git remote add stackhero ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Desplegar su código PHP
Es hora de desplegar su aplicación. Empuje su código con el siguiente comando:
git push stackhero main
La primera vez que empuje, se le pedirá que acepte la huella digital de la clave. Escriba "yes" cuando se le solicite. Después de una breve espera, su aplicación debería estar en línea. Puede verificar su estado visitando la URL proporcionada en el panel de control de Stackhero (típicamente algo como https://XXXXX.stackhero-network.com).
Para actualizar su aplicación, modifique el archivo www/index.php según sea necesario y vuelva a desplegar sus cambios con:
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Desplegar una aplicación existente
Si tiene una aplicación PHP existente, puede desplegarla fácilmente agregando el repositorio remoto a su proyecto (ver Configurar el servidor del repositorio remoto). Luego, empuje sus cambios usando:
git push stackhero main
Por defecto, el directorio público está configurado como "www". Aquí es donde se ejecuta su código PHP (incluido index.php) y donde se almacenan sus archivos estáticos. Por ejemplo, visitar yourdomain.com/myphoto.jpg recupera el archivo desde www/myphoto.jpg. Puede actualizar este directorio en la configuración de su servicio PHP si es necesario.
Manejar el error "failed to push some refs to '[...]'"
Si encuentra un error como el siguiente al desplegar:
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.
Este error indica que el repositorio Git remoto contiene cambios que no están presentes en su repositorio local. Para sobrescribir estos cambios de manera segura, puede forzar el empuje con:
git push -f stackhero main
Manejar el error "src refspec main does not match any"
Si ve este error:
error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'
Significa que la rama main no existe localmente. En este caso, intente empujar la rama master en su lugar:
git push stackhero master
Manejar el error "Everything up-to-date" al empujar
Si Git responde con Everything up-to-date y sus cambios no se despliegan, es posible que haya olvidado confirmar sus cambios. Para resolver esto, ejecute:
git add -A .
git commit -m "Your commit message"
git push stackhero main
Si no ha cambiado ningún código pero aún desea activar un despliegue, puede forzar una actualización con un commit vacío:
git commit --allow-empty -m "Force update"
git push stackhero main
Desplegar una rama distinta de main
Si desea desplegar una rama distinta de main (por ejemplo, una rama llamada "production"), puede usar el siguiente comando:
git push stackhero production:main
Desplegar una etiqueta
Para desplegar una etiqueta específica (por ejemplo, la etiqueta "v1.0"), use:
git push stackhero 'v1.0^{}:main'
La sintaxis ^{} asegura que el commit asociado con la etiqueta se empuje correctamente.
Revertir o desplegar un commit específico
Si necesita desplegar un commit específico, primero obtenga su hash usando git log. Luego, fuerce el empuje de ese commit usando:
git push -f stackhero <HASH>:main
Desplegar en múltiples entornos
A menudo puede tener servicios separados para diferentes entornos, como producción y staging. Puede gestionarlos renombrando y agregando repositorios remotos.
Para renombrar su remoto actual de stackhero a stackhero-staging, use:
git remote rename stackhero stackhero-staging
A continuación, cree un nuevo servicio PHP para producción a través del panel de control y agréguelo usando:
git remote add stackhero-production ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Ahora puede desplegar en el entorno apropiado usando ya sea:
git push stackhero-production main
o
git push stackhero-staging main
Guardar la contraseña de su clave SSH privada en el llavero de macOS
En macOS, se le podría pedir la contraseña de su clave cada vez que empuje su código. En lugar de eliminar la contraseña de su clave SSH, puede almacenar su contraseña de clave en el llavero de macOS. Este enfoque mantiene la seguridad mientras ahorra tiempo. Ejecute el siguiente comando para agregar su clave al llavero:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Una vez configurado, macOS ya no le pedirá la contraseña de su clave al empujar su código.
Manejar secretos
Para los entornos de producción y staging, es esencial almacenar datos sensibles, como tokens y contraseñas, de manera segura. En lugar de codificar los secretos en su repositorio, considere usar variables de entorno. Puede agregar estas variables en el panel de control de Stackhero y acceder a ellas en su código. Por ejemplo, si crea una variable de entorno llamada "mySecret", puede recuperar su valor en PHP usando:
getenv("mySecret")
Manejar dependencias de PHP
Cuando empuja su código, los scripts de despliegue leen su archivo composer.json e instalan automáticamente todas las dependencias especificadas a través de Composer.
Almacenar archivos
Si su aplicación necesita almacenar archivos (por ejemplo, fotos de usuarios), es aconsejable usar una solución de almacenamiento de objetos. Este enfoque no solo facilita el intercambio de archivos entre múltiples servicios, sino que también separa sus archivos subidos de su código. Recomendamos explorar MinIO para una solución rápida, confiable y compatible con S3.
Alternativamente, si prefiere el almacenamiento de archivos local, puede usar el almacenamiento persistente proporcionado con su instancia PHP. Este almacenamiento se encuentra en el directorio /persistent/storage/.
Por ejemplo, para almacenar un archivo subido, podría usar la función move_uploaded_file de la siguiente manera:
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Para más detalles sobre la carga de archivos, consulte la documentación oficial de PHP: https://www.php.net/manual/en/features.file-upload.php.
PRECAUCIÓN: ¡Nunca almacene datos fuera de la carpeta
/persistent/storage/!Si su instancia se reinicia o si empuja cambios de código, ¡cualquier dato almacenado fuera del almacenamiento persistente puede perderse!