Este documento está dirigido a los responsables de sitios web empresariales que tienen contacto por primera vez con KingCMS X1. No es necesario leer antes la documentación de desarrollo; siguiendo en orden los 8 pasos a continuación, podrá publicar su primer sitio web en línea. Los comandos del texto usan como ejemplo Debian 13, nginx y PHP 8.4, y las rutas usan de forma uniforme /var/www/kingcms.

Antes de comenzar

Para quién es: para personas encargadas de la construcción del sitio web corporativo que necesitan desplegarlo una vez por su cuenta y luego entregarlo a un colega para su mantenimiento.

Qué necesita preparar:

  • Un servidor con acceso SSH, con nginx o Apache ya instalado, y PHP 8.2 o superior (X1.0.0-beta.1 requiere min_php 8.2).
  • Extensiones de PHP: pdo_sqlite, sqlite3, sodium, mbstring, intl, curl, gd, xml, ctype, json, openssl, zip.
  • Un dominio ya resuelto hacia el servidor, y un directorio data/ con permisos de escritura.
  • El directorio raíz del sitio debe apuntar a public/ dentro del paquete de publicación; app/ y data/ deben quedar fuera de la raíz del sitio y no ser accesibles directamente desde el navegador.

1. Descarga y verificación

Versión actual X1.0.0-beta.1, publicada el 2026-10-24. Página de descarga del paquete de publicación: https://download.kingcms.com/. Verifique primero tras la descarga; si no coincide, no descomprima ni despliegue.

wget https://update.kingcms.com/stable/kingcms-x1-X1.0.0-beta.1.zip
sha256sum kingcms-x1-X1.0.0-beta.1.zip

El valor de verificación debe ser:

b433a7cc1081ab5cf4e3fbad3ff4709135307c972390d44f658934e242363ecc

2. Carga y descompresión, raíz del sitio apuntando a public/

sudo mkdir -p /var/www/kingcms
sudo unzip kingcms-x1-X1.0.0-beta.1.zip -d /var/www/kingcms

El paquete comprimido contiene app/, bin/, modules/, public/, resources/, themes/, vendor/. Las dependencias ya vienen incluidas en el paquete; no es necesario ejecutar composer install.

El directorio raíz del sitio debe apuntar a /var/www/kingcms/public, no a /var/www/kingcms ni a app/. Se recomienda habilitar OPcache para reducir la sobrecarga de recompilar los archivos PHP en cada solicitud.

3. Permisos de directorios y nginx

data/ debe ser escribible por el usuario que ejecuta el sitio web (normalmente www-data):

cd /var/www/kingcms
sudo mkdir -p data/uploads data/cache
sudo chown -R www-data:www-data data
sudo find data -type d -exec chmod 750 {} \;
sudo find data -type f -exec chmod 640 {} \;

public/img/ almacena las imágenes generadas por tamaño y también debe ser escribible por www-data:

sudo mkdir -p /var/www/kingcms/public/img
sudo chown www-data:www-data /var/www/kingcms/public/img

En el primer acceso, el programa crea automáticamente data/app.key y lo establece en 0600. app.key se usa para cifrar los campos de clave en la configuración; no lo elimine ni lo reemplace; si se pierde, los valores ya cifrados no podrán descifrarse.

Puntos esenciales de nginx:

  • root apunta a /var/www/kingcms/public, index es index.php.
  • location / usa try_files $uri $uri/ /index.php?$query_string;, de lo contrario las páginas internas darán 404.
  • location /media/ usa alias hacia /var/www/kingcms/data/uploads/, y en ese directorio se desactiva la ejecución de PHP.
  • Prohibir el acceso a archivos de punto, conservar el directorio de verificación ACME.
  • client_max_body_size debe coincidir con upload_max_filesize y post_max_size de PHP, por ejemplo ambos en 20m.
  • limit_req_zone solo puede escribirse en el contexto http, en un archivo conf separado.

La configuración completa, las reglas de reescritura de Apache y la descripción de los límites de carga de PHP están en /docs/install. Tras modificar la configuración, ejecute nginx -t para comprobar y luego reload.

4. Creación automática de la base de datos en el primer acceso, creación del administrador

Abra la dirección del sitio en el navegador. Cuando data/kingcms.sqlite no existe, el programa crea automáticamente la base de datos SQLite, ejecuta las migraciones, escribe la configuración predeterminada y genera data/app.key. No hay asistente de instalación por pasos ni es necesario importar SQL manualmente.

Cuando el administrador aún no se ha creado, el acceso a cualquier página del sitio redirige a /admin/setup. En la página de configuración de una sola vez, complete:

  • Nombre de usuario: no puede estar vacío, máximo 64 caracteres.
  • Contraseña: al menos 8 caracteres, y confírmela de nuevo.
  • Casilla «Escribir contenido de ejemplo (se puede eliminar)»: puede marcarla para ver primero el efecto del frontend.
  • «¿Los precios de los productos incluyen impuestos?»: sin impuestos / con impuestos, obligatorio.
  • Zona horaria del sitio: se completa automáticamente según el navegador.
  • Aceptar el acuerdo de licencia (X1 v2.3).

Tras la creación exitosa, el navegador actual inicia sesión automáticamente y redirige a la página de inicio del panel /admin; /admin/setup devuelve 404 de forma permanente y ya no puede usarse para crear un segundo administrador. A partir de entonces, la dirección de inicio de sesión es /admin/login.

5. Completar la información básica del sitio

En el panel, vaya a «Configuración del sistema → Configuración» y complete los siguientes campos:

GrupoCampoDescripción
Información básicaNombre del sitioNombre que la empresa muestra al público
Información básicaURL del sitio webDirección de acceso oficial
Información básicaLogo del frontendImagen usada en el encabezado del frontend
Información básicaZona horaria del sitioComplete según la zona horaria real
Información básicaFormato de URLSeleccione según sea necesario
Contacto y organizaciónNombre de la organizaciónUsado para los datos estructurados Organization de la página de inicio
Contacto y organizaciónTeléfono de contactoMedio de contacto público
Contacto y organizaciónDirección de contactoDirección de contacto pública
RegistroNúmero de registro ICPComplete según la información de registro real
RegistroNúmero de registro de seguridad públicaComplete según la información de registro real
RegistroEnlace del registro de seguridad públicaComplete según la información de registro real

Los idiomas habilitados y el idioma predeterminado están en «Configuración → Contenido y medios». El título predeterminado, las palabras clave predeterminadas, la descripción predeterminada y el título/descripción/imagen para compartir están en «Marketing y SEO → SEO → Configuración». El tema predeterminado del frontend genera meta description, canonical, hreflang y og:title/description/url/image, y emite tipos JSON-LD como Organization, WebPage, Article, Product/Offer, BreadcrumbList, FAQPage, CollectionPage, ItemList, etc.

6. Crear la primera columna de página única y publicarla

En «Configuración del sistema → Gestión de columnas» (栏目管理), haga clic en «Agregar»; los campos del formulario son columna superior, nombre, tipo (lista de artículos/página única/lista de productos), introducción de la columna y miniatura. Seleccione el tipo «Página única», adecuado para contenidos como «Sobre nosotros» o «Contacto». La ruta se genera automáticamente a partir del nombre (el chino se convierte a pinyin); no hay campos de nombre de ruta ni de orden, el orden se ajusta arrastrando.

Tras guardar, haga clic en «Editar» para tener acceso al cuerpo del texto, título/palabras clave/descripción SEO, preguntas frecuentes (FAQ), visible para visitantes y añadir a la navegación. El editor del cuerpo admite formatos habituales como títulos, listas, enlaces, imágenes y tablas. En la lista hay «Ver».

Tanto las páginas únicas como los productos tienen un bloque de FAQ; una vez completado, se emite FAQPage JSON-LD; los artículos y las listas de columnas no lo tienen. En sitios multilingües, en la página de edición use las pestañas de idioma para completar las traducciones; si no se completa una traducción, el frontend recurre al chino. Al cambiar el nombre, marque «Regenerar ruta» y la ruta antigua redirige automáticamente con 301; la dirección solo cambia si se marca regenerar ruta.

Tras guardar y publicar, vuelva al frontend para confirmar que la página se abre correctamente. Si la página de inicio funciona pero las páginas internas dan 404, revise primero la configuración de reescritura del paso 3.

7. Configurar cron y HTTPS

cron se encarga de ejecutar los hooks por minuto registrados por los módulos habilitados y de procesar las tareas en segundo plano vencidas. Escriba en /etc/cron.d/kingcms:

SHELL=/bin/sh
PATH=/usr/local/bin:/usr/bin:/bin
* * * * * www-data /usr/bin/php /var/www/kingcms/bin/kingcms cron:run >/dev/null 2>&1

cron:run usa data/cron.lock para garantizar que solo se ejecute una instancia a la vez; confirme que data/ es escribible por www-data.

Antes de la puesta en marcha oficial debe configurarse HTTPS. Las devoluciones de llamada de WeChat y Alipay y las cookies Secure dependen de HTTPS.

8. Lista de verificación antes de publicar

  1. La raíz del sitio apunta a public/; app/ y data/ no están dentro de la raíz del sitio.
  2. El propietario de data/ y public/img/ es www-data; los permisos de app.key son 0600.
  3. La página de inicio y las páginas internas se abren, sin 404.
  4. Suba una imagen y confirme que se muestra correctamente en /media/ y que no se ejecuta PHP.
  5. Se han completado el nombre del sitio, la URL, el logo, el teléfono de contacto, la dirección, el número de registro ICP y el título y la descripción predeterminados.
  6. La primera columna de página única está publicada, con título y descripción SEO completados.
  7. cron está configurado y data/ es escribible.
  8. HTTPS está habilitado.
  9. Acceda a /sitemap.xml, /robots.txt y /llms.txt para confirmar que la salida es correcta.
  10. La base de datos y app.key se han respaldado juntas, y los archivos de respaldo están fuera del directorio del sitio.

Si necesita que los motores de búsqueda indexen el sitio, en «Configuración del sistema → Módulos y temas» confirme que el módulo «Indexación en motores de búsqueda» está habilitado (en beta.1, tras una instalación nueva, se comprobó que ya está habilitado). En la página «Marketing y SEO → SEO → Configuración», haga clic en «Mostrar configuración avanzada» para configurar la verificación de sitio de Baidu/Sogou, el envío de indexación normal de Baidu (interruptor), la dirección del sitio de Baidu, el token de envío de Baidu, el envío de IndexNow y el envío automático por JS de Toutiao/360. El registro de envíos está en la pestaña «Registro de envíos» de esa página. Asistentes de IA como Tencent Yuanbao no tienen entrada de envío pública, y KingCMS tampoco tiene configuraciones específicas para Doubao, DeepSeek o Yuanbao.

Probar primero en local

Si solo quiere ver la interfaz en su equipo, ejecute un comando en el directorio descomprimido:

php -S 127.0.0.1:8080 -t public public/index.php

Luego abra http://127.0.0.1:8080; en el primer acceso se crearán automáticamente data/, data/kingcms.sqlite y data/app.key, y a continuación se entrará en /admin/setup para crear el administrador. El servidor integrado solo es adecuado para pruebas locales; no lo use para un sitio oficial.

Documentación relacionada

  • /docs/install: instalación y actualización, configuración completa de nginx y Apache, respaldo, cron, preguntas frecuentes.
  • /docs/product-page: cómo redactar y operar una página única de presentación de producto.
  • /docs/ai-visibility: descripción de la visibilidad del sitio para los asistentes de IA.

KingCMS X1 se ofrece de forma gratuita y las empresas pueden utilizarlo comercialmente sin costo, con la condición de conservar el enlace de copyright «Powered by KingCMS» en el front-end; para eliminar dicho enlace, adquiera una licencia comercial, consulte /license.