PHP: Primeros pasos
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.
Poner en marcha su aplicación PHP en Stackhero es sencillo y potente. En solo unos pasos, tendrá su proyecto online y listo para funcionar. Esta guía le acompañará paso a paso para crear, configurar y desplegar su servicio PHP de forma clara y amigable.
Iniciar un servicio PHP
Para comenzar, puede crear un servicio PHP en Stackhero directamente desde el panel de control. La interfaz está diseñada para que este proceso sea rápido y sencillo.
Requisitos previos
Antes de empezar, asegúrese de tener las siguientes herramientas configuradas:
- Git. Puede descargarlo desde https://git-scm.com/downloads.
- Windows Terminal (opcional para usuarios de Windows). Este terminal puede ofrecer una experiencia mejorada. Está disponible en Microsoft Store.
Configurar su servicio
La configuración principal que necesitará es su clave pública SSH. Puede obtener su clave pública ejecutando uno de estos comandos:
cat ~/.ssh/id_rsa.pub
o
cat ~/.ssh/id_ed25519.pub
Si aún no dispone de un par de claves SSH, puede generarlo usando ssh-keygen en Linux y macOS o ssh-keygen.exe en Windows.
Una vez tenga su clave pública, acceda al panel de Stackhero, seleccione su servicio PHP, vaya a la página de configuración y pegue su clave en el campo correspondiente.
Tip: Si desea establecer su clave pública SSH para todos los servicios futuros, puede hacerlo de forma global. Simplemente haga clic en su foto de perfil en la esquina superior derecha del panel, vaya a "Su perfil" y pegue allí su clave pública SSH.
Clonar el ejemplo
Para ayudarle a empezar, hemos preparado una aplicación PHP de ejemplo. Puede clonar el repositorio con:
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Configurar el repositorio remoto
Stackhero facilita el despliegue de su aplicación usando Git. Copie el comando git remote que aparece en la primera página de su servicio PHP en el panel. Será similar a esto:
git remote add stackhero ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
Desplegar su código PHP
Ya está listo para desplegar su aplicación. Puede subir su código con:
git push stackhero main
En el primer push, se le pedirá que acepte la huella digital de la clave. Simplemente escriba "yes" cuando se le solicite. Tras unos segundos, su aplicación debería estar online. Puede comprobar su estado en la URL que aparece en su panel de Stackhero (normalmente https://<XXXXXX>.stackhero-network.com).
Para actualizar su aplicación, solo tiene que modificar el archivo www/index.php (o cualquier otro archivo necesario) y volver a desplegar los cambios con:
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Desplegar una aplicación existente
Si ya dispone de una aplicación PHP que desea desplegar, solo tiene que añadir el repositorio remoto a su proyecto (consulte Configurar el repositorio remoto). Después, puede subir sus cambios usando:
git push stackhero main
Por defecto, Stackhero busca su código PHP y archivos estáticos en el directorio www. Por ejemplo, cuando alguien visita yourdomain.com/myphoto.jpg, el archivo se sirve desde www/myphoto.jpg. Si su aplicación utiliza otro directorio público, puede modificar este ajuste en la configuración de su servicio PHP.
Gestionar el error "failed to push some refs to '[...]'"
Si encuentra un error como este durante el despliegue:
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 mensaje significa que el repositorio remoto de Git tiene cambios que no están presentes en su copia local. Si está seguro de que quiere sobrescribir el remoto con su versión local, puede forzar el push con:
git push -f stackhero main
Gestionar 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'
Esto suele indicar que la rama main no existe localmente. En ese caso, puede subir la rama master en su lugar:
git push stackhero master
Gestionar el error "Everything up-to-date" al hacer push
Si Git indica Everything up-to-date y no ve sus cambios desplegados, probablemente haya olvidado hacer commit de sus modificaciones. Puede solucionarlo ejecutando:
git add -A .
git commit -m "Su mensaje de commit"
git push stackhero main
Si no ha cambiado ningún código pero igualmente quiere forzar un despliegue, puede usar un commit vacío:
git commit --allow-empty -m "Force update"
git push stackhero main
Desplegar una rama distinta de main
Si desea desplegar otra rama (por ejemplo, production), puede usar:
git push stackhero production:main
Desplegar una etiqueta (tag)
Para desplegar una etiqueta concreta (como v1.0), ejecute:
git push stackhero 'v1.0^{}:main'
El ^{} asegura que el commit asociado a la etiqueta se suba correctamente.
Volver atrás o desplegar un commit específico
Si en algún momento necesita desplegar un commit concreto, primero localice su hash usando git log. Después, puede forzar el push de ese commit con:
git push -f stackhero <HASH>:main
Desplegar en varios entornos
Es habitual tener servicios separados para distintos entornos, como producción y staging. Puede gestionar esto renombrando y añadiendo repositorios remotos.
Para renombrar su remoto actual de stackhero a stackhero-staging, ejecute:
git remote rename stackhero stackhero-staging
A continuación, cree un nuevo servicio PHP para producción desde el panel y añádalo con:
git remote add stackhero-production ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
Ahora puede desplegar en cualquiera de los entornos con:
git push stackhero-production main
o
git push stackhero-staging main
Guardar la contraseña de su clave privada SSH en el llavero de macOS
Si utiliza macOS y se le solicita la contraseña de su clave SSH cada vez que sube código, no es necesario eliminar la contraseña de su clave SSH. Puede guardar la contraseña de forma segura en el llavero de macOS. Simplemente ejecute:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Después de esto, macOS no le pedirá la contraseña de la clave al hacer push de su código.
Gestionar secretos
Para los entornos de producción y staging, es importante almacenar los datos sensibles, como tokens y contraseñas, de forma segura. En lugar de incluir secretos en su repositorio, es recomendable usar variables de entorno. Puede añadir estas variables en el panel de Stackhero y acceder a ellas en su código. Por ejemplo, si crea una variable de entorno llamada mySecret, puede recuperarla en PHP así:
getenv("mySecret")
Gestionar dependencias PHP
Cuando sube su código, los scripts de despliegue de Stackhero leerán su archivo composer.json e instalarán automáticamente las dependencias que haya especificado usando Composer.
Almacenar archivos
Si su aplicación necesita almacenar archivos (como fotos subidas por usuarios), suele ser recomendable utilizar una solución de almacenamiento de objetos. Este enfoque facilita compartir archivos entre varios servicios y mantiene los archivos subidos separados del código. Puede consultar MinIO para una solución rápida, fiable y compatible con S3.
Si prefiere usar almacenamiento local, puede aprovechar el almacenamiento persistente incluido con su instancia PHP. Este almacenamiento está disponible en /persistent/storage/.
Por ejemplo, para guardar un archivo subido, puede usar la función move_uploaded_file así:
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Para más información sobre la subida de archivos en PHP, consulte la documentación oficial: https://www.php.net/manual/en/features.file-upload.php.
ATENCIÓN: Guarde siempre los datos dentro de la carpeta
/persistent/storage/.Si su instancia se reinicia o sube cambios de código, cualquier dato almacenado fuera del almacenamiento persistente puede perderse.