aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAriel Costas Guerrero <94913521+arielcostas@users.noreply.github.com>2024-12-23 14:13:29 +0100
committerAriel Costas Guerrero <94913521+arielcostas@users.noreply.github.com>2024-12-23 14:13:29 +0100
commit3013f352570439832075bab19c9ae91ec6ab98ac (patch)
tree37052258a5e4d5859ad9024f99cceb9a38047707 /src
parent16b7b327d43a3d3a2ab0b6317072136d7df69a3d (diff)
Update to astro 5
Diffstat (limited to 'src')
-rw-r--r--src/content.config.ts (renamed from src/content/config.ts)29
-rw-r--r--src/data/blog/configurar-php-iis.md (renamed from src/content/blog/configurar-php-iis.md)220
-rw-r--r--src/data/blog/gobierno-no-aprueba-leyes.md (renamed from src/content/blog/gobierno-no-aprueba-leyes.md)0
-rw-r--r--src/data/blog/shitshow-wordpress.md (renamed from src/content/blog/shitshow-wordpress.md)0
-rw-r--r--src/pages/blog.astro3
-rw-r--r--src/pages/blog/[id].astro (renamed from src/pages/blog/[slug].astro)113
-rw-r--r--src/pages/index.astro2
7 files changed, 186 insertions, 181 deletions
diff --git a/src/content/config.ts b/src/content.config.ts
index d0d1d70..539db1c 100644
--- a/src/content/config.ts
+++ b/src/content.config.ts
@@ -1,14 +1,15 @@
-import { defineCollection, z } from 'astro:content';
-
-const blogCollection = defineCollection({
- type: 'content',
- schema: z.object({
- title: z.string(),
- metaDescription: z.string(),
- publishedAt: z.date()
- })
-});
-
-export const collections = {
- 'blog': blogCollection
-};
+import { glob } from 'astro/loaders';
+import { defineCollection, z } from 'astro:content';
+
+const blog = defineCollection({
+ loader: glob({ pattern: '**/*.md', base: "src/data/blog" }),
+ schema: z.object({
+ title: z.string(),
+ metaDescription: z.string(),
+ publishedAt: z.date()
+ })
+});
+
+export const collections = {
+ blog
+};
diff --git a/src/content/blog/configurar-php-iis.md b/src/data/blog/configurar-php-iis.md
index 9f286ec..9ce289a 100644
--- a/src/content/blog/configurar-php-iis.md
+++ b/src/data/blog/configurar-php-iis.md
@@ -1,111 +1,111 @@
----
-title: "Alojar aplicación PHP en servidor IIS"
-metaDescription: "Un breve tutorial de cómo alojar una aplicación PHP en un servidor IIS para desarrollo"
-publishedAt: 2024-08-21
----
-
-En este tutorial, aprenderás a alojar una aplicación PHP en un servidor IIS. IIS es un servidor web desarrollado por Microsoft que viene instalado con Windows y es usable tanto en Windows Server como en escritorios Windows 10/11 Pro y Enterprise.
-
-Si no tienes PHP instalado, puedes descargarlo desde [php.net](https://www.php.net/downloads) y seguir las instrucciones de instalación. También debes tener IIS activado como característica de Windows (en escritorio) o como rol de servidor (en Windows Server).
-
-Para este tutorial, suponemos que estamos usando lo siguiente:
-
-- Ruta de la aplicación: `C:\users\user\app\public` (usamos `public` al alojar una aplicación Symfony, pero debe ser donde estén los archivos PHP públicos)
-- Dominio de la aplicación: `app.internal` (`.internal` está reservado para uso interno)
-- PHP instalado en `C:\php`
-- IIS habilitado y funcionando (en `localhost:80` deberías ver la página de inicio de IIS)
-- [MKCert](https://mkcert.dev) instalado para generar certificados TLS autofirmados
-
-## Crear un certificado TLS autofirmado
-
-Para poder acceder a tu servidor de forma segura, necesitas un certificado TLS. Puedes usar un certificado autofirmado para propósitos de desarrollo. Para crear un certificado autofirmado, ejecuta los siguientes comandos en PowerShell:
-
-```powershell
-mkcert -install
-mkcert -p12 app.internal
-```
-
-Esto generará un certificado `app.internal.p12` en el directorio actual. Posteriormente, hay que ir a IIS e importar el certificado a nivel servidor (en Seguridad -> Certificados de servidor -> Importar y seleccionando "todos los archivos" para encontrar el archivo `.p12`).
-
-## Creación del site
-
-En la barra izquierda, en Sitios hacemos clic derecho y seleccionamos Agregar sitio. En el cuadro de diálogo, rellenamos los campos de la siguiente manera:
-
-- Nombre del sitio: `app` (o el nombre que prefieras)
-- Ruta de acceso física: `C:\users\user\app\public`
-- Enlace:
- - Tipo: `https`
- - Dirección IP: `Todas las direcciones no asignadas`
- - Puerto: `443`
- - Nombre del host: `app.internal`
- - Requerir indicación del nombre del servidor: `Sí`
- - Deshabilitar [...] `No`
- - Certificado: `app.internal`
-- Iniciar sitio web inmediatamente: `Sí`
-
-Hacemos clic en Aceptar y el sitio se creará. Pero aún hay que configurar PHP y la reescritura de URL (si el enrutamiento se hace por el propio framework, como en Symfony).
-
-Antes de eso, hay que pulsar en la parte derecha en "Configuración básica" y cerciorarse de que el grupo de aplicaciones es `DefaultAppPool`. Si no lo es, hay que cambiarlo para que el sitio funcione correctamente.
-
-## Configuración de PHP
-
-Dentro del Sitio, ir a "Componentes del servidor -> Asignaciones de controlador -> Agregar asignación de módulo" y rellenar los campos de la siguiente manera:
-- Ruta de acceso de solicitudes: `*.php`
-- Módulo: `FastCgiModule`
-- Ejecutable: `C:\php\php-cgi.exe`
-- Nombre: `PHP` (o el nombre que prefieras)
-
-Hacemos clic en Aceptar y el módulo se añadirá. Ahora, hay que configurar la reescritura de URL.
-
-## Configuración de la reescritura de URL
-
-Primero, hay que autorizar variables de servidor. Dentro del Sitio, ir a "Caracterísitcas de HTTP -> Reglas de reescritura" y hacer clic en la barra derecha en "Ver variables de servidor". Añadir las siguientes variables:
-
-- `HTTP_X_FORWARDED_SCHEMA`
-- `HTTP_X_FORWARDED_PROTO`
-- `HTTP_X_FORWARDED_HOST`
-- `HTTP_X_FORWARDED_FOR`
-
-Hacer clic en Aceptar y volver a la pantalla de reglas de reescritura. Hacer clic en "Agregar reglas" y seleccionar "Regla de blanco" dentro de "Reglas de entrada". Rellenar los campos de la siguiente manera:
-
-- Nombre: `Symfony`
-- Coincidir dirección URL:
- - Dirección URL solicitada: `Coincide con el patrón`
- - Usando: `Expresiones regulares`
- - Patrón: `^(.*)$`
- - Omitir mayúsculas y minúsculas: `Desmarcado`
-- Condiciones:
- - Agrupación lógica: `Coincide con todas`
- - Añadir condición:
- - Entrada: `{REQUEST_FILENAME}`
- - Comprobar si la cadena de entrada: `No es un archivo`
- - Seguir los grupos de captura a través de condiciones: `Desmarcado`
-- Variables de servidor:
- - Agregar...:
- - Nombre: `HTTP_X_FORWARDED_PROTO`
- - Valor: `https`
- - Remplazar el valor existente: `Marcado`
- - Agregar...:
- - Nombre: `HTTP_X_FORWARDED_SCHEMA`
- - Valor: `https`
- - Remplazar el valor existente: `Marcado`
- - Agregar...:
- - Nombre: `HTTP_X_FORWARDED_HOST`
- - Valor: `{HTTP_HOST}`
- - Remplazar el valor existente: `Marcado`
- - Agregar...:
- - Nombre: `HTTP_X_FORWARDED_FOR`
- - Valor: `{REMOTE_ADDR}`
- - Remplazar el valor existente: `Marcado`
-- Acción:
- - Tipo de acción: `Reescribir`
- - Reescribir dirección URL: `/index.php`
- - Anexar cadena de consulta: `Marcado`
- - Dirección URL reescrita de registro: `Desmarcado`
-- Detener procesamiento de reglas: `Desmarcado`
-
-Hacer clic en Aceptar y la regla se añadirá. Ahora, la aplicación PHP debería estar alojada en el servidor IIS y accesible en `https://app.internal`.
-
-## Conclusión
-
+---
+title: "Alojar aplicación PHP en servidor IIS"
+metaDescription: "Un breve tutorial de cómo alojar una aplicación PHP en un servidor IIS para desarrollo"
+publishedAt: 2024-08-21
+---
+
+En este tutorial, aprenderás a alojar una aplicación PHP en un servidor IIS. IIS es un servidor web desarrollado por Microsoft que viene instalado con Windows y es usable tanto en Windows Server como en escritorios Windows 10/11 Pro y Enterprise.
+
+Si no tienes PHP instalado, puedes descargarlo desde [php.net](https://www.php.net/downloads) y seguir las instrucciones de instalación. También debes tener IIS activado como característica de Windows (en escritorio) o como rol de servidor (en Windows Server).
+
+Para este tutorial, suponemos que estamos usando lo siguiente:
+
+- Ruta de la aplicación: `C:\users\user\app\public` (usamos `public` al alojar una aplicación Symfony, pero debe ser donde estén los archivos PHP públicos)
+- Dominio de la aplicación: `app.internal` (`.internal` está reservado para uso interno)
+- PHP instalado en `C:\php`
+- IIS habilitado y funcionando (en `localhost:80` deberías ver la página de inicio de IIS)
+- [MKCert](https://mkcert.dev) instalado para generar certificados TLS autofirmados
+
+## Crear un certificado TLS autofirmado
+
+Para poder acceder a tu servidor de forma segura, necesitas un certificado TLS. Puedes usar un certificado autofirmado para propósitos de desarrollo. Para crear un certificado autofirmado, ejecuta los siguientes comandos en PowerShell:
+
+```powershell
+mkcert -install
+mkcert -p12 app.internal
+```
+
+Esto generará un certificado `app.internal.p12` en el directorio actual. Posteriormente, hay que ir a IIS e importar el certificado a nivel servidor (en Seguridad -> Certificados de servidor -> Importar y seleccionando "todos los archivos" para encontrar el archivo `.p12`).
+
+## Creación del site
+
+En la barra izquierda, en Sitios hacemos clic derecho y seleccionamos Agregar sitio. En el cuadro de diálogo, rellenamos los campos de la siguiente manera:
+
+- Nombre del sitio: `app` (o el nombre que prefieras)
+- Ruta de acceso física: `C:\users\user\app\public`
+- Enlace:
+ - Tipo: `https`
+ - Dirección IP: `Todas las direcciones no asignadas`
+ - Puerto: `443`
+ - Nombre del host: `app.internal`
+ - Requerir indicación del nombre del servidor: `Sí`
+ - Deshabilitar [...] `No`
+ - Certificado: `app.internal`
+- Iniciar sitio web inmediatamente: `Sí`
+
+Hacemos clic en Aceptar y el sitio se creará. Pero aún hay que configurar PHP y la reescritura de URL (si el enrutamiento se hace por el propio framework, como en Symfony).
+
+Antes de eso, hay que pulsar en la parte derecha en "Configuración básica" y cerciorarse de que el grupo de aplicaciones es `DefaultAppPool`. Si no lo es, hay que cambiarlo para que el sitio funcione correctamente.
+
+## Configuración de PHP
+
+Dentro del Sitio, ir a "Componentes del servidor -> Asignaciones de controlador -> Agregar asignación de módulo" y rellenar los campos de la siguiente manera:
+- Ruta de acceso de solicitudes: `*.php`
+- Módulo: `FastCgiModule`
+- Ejecutable: `C:\php\php-cgi.exe`
+- Nombre: `PHP` (o el nombre que prefieras)
+
+Hacemos clic en Aceptar y el módulo se añadirá. Ahora, hay que configurar la reescritura de URL.
+
+## Configuración de la reescritura de URL
+
+Primero, hay que autorizar variables de servidor. Dentro del Sitio, ir a "Caracterísitcas de HTTP -> Reglas de reescritura" y hacer clic en la barra derecha en "Ver variables de servidor". Añadir las siguientes variables:
+
+- `HTTP_X_FORWARDED_SCHEMA`
+- `HTTP_X_FORWARDED_PROTO`
+- `HTTP_X_FORWARDED_HOST`
+- `HTTP_X_FORWARDED_FOR`
+
+Hacer clic en Aceptar y volver a la pantalla de reglas de reescritura. Hacer clic en "Agregar reglas" y seleccionar "Regla de blanco" dentro de "Reglas de entrada". Rellenar los campos de la siguiente manera:
+
+- Nombre: `Symfony`
+- Coincidir dirección URL:
+ - Dirección URL solicitada: `Coincide con el patrón`
+ - Usando: `Expresiones regulares`
+ - Patrón: `^(.*)$`
+ - Omitir mayúsculas y minúsculas: `Desmarcado`
+- Condiciones:
+ - Agrupación lógica: `Coincide con todas`
+ - Añadir condición:
+ - Entrada: `{REQUEST_FILENAME}`
+ - Comprobar si la cadena de entrada: `No es un archivo`
+ - Seguir los grupos de captura a través de condiciones: `Desmarcado`
+- Variables de servidor:
+ - Agregar...:
+ - Nombre: `HTTP_X_FORWARDED_PROTO`
+ - Valor: `https`
+ - Remplazar el valor existente: `Marcado`
+ - Agregar...:
+ - Nombre: `HTTP_X_FORWARDED_SCHEMA`
+ - Valor: `https`
+ - Remplazar el valor existente: `Marcado`
+ - Agregar...:
+ - Nombre: `HTTP_X_FORWARDED_HOST`
+ - Valor: `{HTTP_HOST}`
+ - Remplazar el valor existente: `Marcado`
+ - Agregar...:
+ - Nombre: `HTTP_X_FORWARDED_FOR`
+ - Valor: `{REMOTE_ADDR}`
+ - Remplazar el valor existente: `Marcado`
+- Acción:
+ - Tipo de acción: `Reescribir`
+ - Reescribir dirección URL: `/index.php`
+ - Anexar cadena de consulta: `Marcado`
+ - Dirección URL reescrita de registro: `Desmarcado`
+- Detener procesamiento de reglas: `Desmarcado`
+
+Hacer clic en Aceptar y la regla se añadirá. Ahora, la aplicación PHP debería estar alojada en el servidor IIS y accesible en `https://app.internal`.
+
+## Conclusión
+
En este tutorial, aprendiste a alojar una aplicación PHP en un servidor IIS. Aprendiste a crear un certificado TLS autofirmado, a configurar PHP y a configurar la reescritura de URL para que la aplicación funcione correctamente. Ahora puedes alojar aplicaciones PHP en un servidor IIS y acceder a ellas de forma segura. \ No newline at end of file
diff --git a/src/content/blog/gobierno-no-aprueba-leyes.md b/src/data/blog/gobierno-no-aprueba-leyes.md
index 0cf3bfa..0cf3bfa 100644
--- a/src/content/blog/gobierno-no-aprueba-leyes.md
+++ b/src/data/blog/gobierno-no-aprueba-leyes.md
diff --git a/src/content/blog/shitshow-wordpress.md b/src/data/blog/shitshow-wordpress.md
index e7afb10..e7afb10 100644
--- a/src/content/blog/shitshow-wordpress.md
+++ b/src/data/blog/shitshow-wordpress.md
diff --git a/src/pages/blog.astro b/src/pages/blog.astro
index 4cfcea3..9d2d77b 100644
--- a/src/pages/blog.astro
+++ b/src/pages/blog.astro
@@ -38,6 +38,7 @@ const schema = {
"name": "Ariel Costas",
}
};
+
---
<Layout title="Blog" description="Artículos sobre desarrollo, tecnología y otras temáticas que pueda querer compartir.">
@@ -58,7 +59,7 @@ const schema = {
<ul>
{posts.map((post) => (
<li>
- <a href={`/blog/${post.slug}`}>{post.data.title}</a>
+ <a href={`/blog/${post.id}`}>{post.data.title}</a>
</li>
))}
</ul>
diff --git a/src/pages/blog/[slug].astro b/src/pages/blog/[id].astro
index a1a0532..6488a04 100644
--- a/src/pages/blog/[slug].astro
+++ b/src/pages/blog/[id].astro
@@ -1,55 +1,58 @@
----
-import type { GetStaticPaths } from "astro";
-import Layout from "../../layouts/Layout.astro";
-import { getCollection } from "astro:content";
-export const getStaticPaths = (async () => {
- const entries = await getCollection("blog");
- return entries.map((entry) => ({
- params: { slug: entry.slug },
- props: { entry },
- }));
-}) satisfies GetStaticPaths;
-const { entry } = Astro.props;
-const { Content } = await entry.render();
-const formattedDate = new Date(entry.data.publishedAt).toLocaleDateString(
- "es-ES",
- {
- year: "numeric",
- month: "long",
- day: "numeric",
- weekday: "long",
- },
-);
-const schema = {
- "@context": "https://schema.org",
- "@type": "BlogPosting",
- headline: entry.data.title,
- datePublished: entry.data.publishedAt.toISOString(),
- author: {
- "@type": "Person",
- name: "Ariel Costas Guerrero",
- },
- publisher: {
- "@type": "Person",
- name: "Ariel Costas Guerrero",
- logo: {
- "@type": "ImageObject",
- url: "https://www.costas.dev/favicon.png",
- },
- },
-};
----
-
-<Layout title={entry.data.title} description={entry.data.metaDescription}>
- <script type="application/ld+json" slot="head-jsonld" set:html={JSON.stringify(schema)}></script>
-
- <h1>{entry.data.title}</h1>
- <small>
- Publicado el
- <time datetime={entry.data.publishedAt.toISOString()}>
- {formattedDate}
- </time>
- </small>
-
- <Content />
-</Layout>
+---
+import type { GetStaticPaths } from "astro";
+import Layout from "../../layouts/Layout.astro";
+import { getCollection, render } from "astro:content";
+
+export const getStaticPaths = (async () => {
+ const entries = await getCollection("blog");
+ return entries.map((entry) => ({
+ params: { id: entry.id },
+ props: { entry },
+ }));
+}) as GetStaticPaths;
+
+const { entry } = Astro.props;
+const { Content } = await render(entry);
+const formattedDate = new Date(entry.data.publishedAt).toLocaleDateString(
+ "es-ES",
+ {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ weekday: "long",
+ },
+);
+
+const schema = {
+ "@context": "https://schema.org",
+ "@type": "BlogPosting",
+ headline: entry.data.title,
+ datePublished: entry.data.publishedAt.toISOString(),
+ author: {
+ "@type": "Person",
+ name: "Ariel Costas Guerrero",
+ },
+ publisher: {
+ "@type": "Person",
+ name: "Ariel Costas Guerrero",
+ logo: {
+ "@type": "ImageObject",
+ url: "https://www.costas.dev/favicon.png",
+ },
+ },
+};
+---
+
+<Layout title={entry.data.title} description={entry.data.metaDescription}>
+ <script type="application/ld+json" slot="head-jsonld" set:html={JSON.stringify(schema)}></script>
+
+ <h1>{entry.data.title}</h1>
+ <small>
+ Publicado el
+ <time datetime={entry.data.publishedAt.toISOString()}>
+ {formattedDate}
+ </time>
+ </small>
+
+ <Content />
+</Layout>
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 5d1c24d..e995a9d 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -57,7 +57,7 @@ const schema = {
<time datetime={p.data.publishedAt.toISOString()}>
{date}
</time>
- <a href={`/blog/${p.slug}`}>{p.data.title}</a>
+ <a href={`/blog/${p.id}`}>{p.data.title}</a>
</li>
);
})