⚠️ Atención Esta opción dejó de ser gratuita debido a cambios en la plataforma de Railway. Mas info.
El principal objetivo de este repositorio es poder desplegar de forma automática nuestra aplicación PHP Slim Framework 4 en un servidor en la nube. En esta ocación vamos a utilizar la versión gratuita de Railway, que nos permite vincular nuestro repositorio de github con la plataforma, poder desplegar automáticamente nuesto código y quedar disponible en la web.
Como primer paso, debemos hacer un fork de este proyecto desde el boton ubicado en la parte superior derecha de la pagina del repositorio.
Una vez forkeado, clonamos el repo con git clone <url del repo>
y agregamos nuestro codigo PHP (SLIM Framework).
Luego comiteamos y pusheamos los cambios.
git add .
git commit -m "first commit"
git push -u origin main
Para poder desplegar nuestro código en un servidor remoto, necesitamos una plataforma que nos permita gestionar uno. Para ello, nos dirigimos a la página de Railway https://railway.app/, iniciamos sesión con nuestra cuenta de Github.
Railway al iniciar sesión nos muestra su dashboard, aquí haremos clic en Deploy from Github repo
En esta sección buscamos por el nombre de nuestro repo forkeado. Ej.: slim-php
Una vez hecho esto, va a comenzar a clonar y desplegar nuestro repositorio en el servidor remoto. Este paso puede demorar unos minutos.
Una vez que termine vamos a poder ir a la sección Settings y elegir la rama de github que queremos deplegar con nuestra aplicación, en nuestro caso main
. De esta forma, cada vez que se haga una modificación a esta rama, Railway va actualizar automáticamente la aplicación.
En esa misma sección podemos verificar si el depliegue se hizo con exito y la url para acceder en Domains.
https://slim-php-deployment-production.up.railway.app/
Accedemos a la URL de la app desplegada y si todo funcionó correctamente veremos el siguiente mensaje:
{"method":"GET","msg":"Bienvenido a SlimFramework 2023"}
Abre dev.new y elige "Provisionar MySQL".
Después de configurar la base de datos, haz clic en "MySQL" a la izquierda y luego elige "Connect".
Tu propia contraseña se incluirá en lugar de xxxx
.
mysql -hcontainers-us-west-8.railway.app -uroot -xxxx --port 7551 --protocol=TCP railway
(es necesario descargar MySQL)
Ejecuta los siguientes comandos SQL para crear una tabla de prueba con datos iniciales.
-- Estructura de tabla para la tabla `usuarios`
CREATE TABLE `usuarios` (
`id` int(11) NOT NULL,
`usuario` varchar(250) COLLATE utf8_unicode_ci NOT NULL,
`clave` varchar(250) COLLATE utf8_unicode_ci NOT NULL,
`fechaBaja` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- Volcado de datos para la tabla `usuarios`
INSERT INTO `usuarios` (`id`, `usuario`, `clave`, `fechaBaja`) VALUES
(1, 'franco', 'Hsu23sDsjseWs', NULL),
(2, 'pedro', 'dasdqsdw2sd23', NULL),
(3, 'jorge', 'sda2s2f332f2', NULL);
-- Indices de la tabla `usuarios`
ALTER TABLE `usuarios` ADD PRIMARY KEY (`id`);
- Instalar PHP o XAMPP (https://www.php.net/downloads.php o https://www.apachefriends.org/es/download.html)
- Instalar Composer desde https://getcomposer.org/download/ o por medio de CLI:
php -r "copy('//getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
- Copiar proyecto dentro de la carpeta htdocs
C:\xampp\htdocs\
- Acceder por linea de comandos a la carpeta del proyecto y luego instalar Slim framework via Compose
cd C:\xampp\htdocs\<ruta-del-repo-clonado>
composer update
- En el archivo index.php agregar la siguiente linea debajo de
AppFactory::create();
// Set base path
$app->setBasePath('/app');
- Abrir desde http://localhost/app ó http://localhost:8080/app (depende del puerto configurado en el panel del XAMPP)
- Acceder por linea de comandos a la carpeta del proyecto y luego instalar Slim framework via Compose
cd C:\<ruta-del-repo-clonado>
composer update
php -S localhost:666 -t app
- Abrir desde http://localhost:666/
Crear dentro de la carpeta /app/
el archivo .env
tomando de referencia .env.example
Agregamos los siguientes datos Clave -> Valor:
MYSQL_HOST=remotemysql.com (campo "Server" de los datos que guardamos al crear la base en remotemysql.com)
MYSQL_PORT=3306 (campo "Port" de los datos que guardamos al crear la base en remotemysql.com)
MYSQL_USER=elcNx8VTCx (campo "Username" de los datos que guardamos al crear la base en remotemysql.com)
MYSQL_PASS=1234 (campo "Password" de los datos que guardamos al crear la base en remotemysql.com)
MYSQL_DB=elcNx8VTCx (campo "Database Name" de los datos que guardamos al crear la base en remotemysql.com)
Cualquier duda o consulta por el canal de slack