Installation

jekcms ships as two files: jekcms-install.php (the setup wizard) and jekcms.zip (the core). No Composer, no Node, no build step. Upload both to your web root, open the wizard in a browser, and it handles the rest — extracting the core, writing your configuration, creating the database schema, and deleting itself when it's finished.

A typical fresh install takes under ten minutes.

Requirements

The wizard opens with a system check and tells you exactly where you stand. Required items block the install; recommended ones only produce a warning.

Required

  • PHP 8.0 or newer
  • pdo_mysql — database connectivity
  • zip — package extraction
  • mbstring — multilingual text handling
  • A writable web root — the wizard tests this by actually writing a file, not by trusting is_writable()
  • jekcms.zip present in the same folder as the wizard

Recommended

  • gd — image processing. Without it, image download and conversion won't work; the install still completes.
  • curl (or allow_url_fopen) — needed to fetch remote images, which matters most for WordPress migrations.
  • 128 MB PHP memory limit, an 8 MB upload limit, and free disk space of roughly three times the zip size.
  • AVIF support (imageavif). Without it jekcms falls back to WebP.

You also need a MySQL 8.0+ / MariaDB 10.4+ database and, on Apache, mod_rewrite.

Most shared hosts advertising "PHP 8 + MySQL" satisfy all of this out of the box.

Before you start

  1. Download the package. Both files are in your customer portal under Downloads, gated by your license.
  2. Create an empty MySQL database in your hosting panel (cPanel, Plesk, DirectAdmin all have a "Create Database" wizard). Write down the database name, username, and password. Many hosts prefix the name with your account, e.g. cpuser_jekcms — the full prefixed name is what you'll enter.
  3. Upload jekcms-install.php and jekcms.zip to your web root — usually public_html/. Put them side by side; the wizard looks for the zip next to itself.

You do not need to extract the zip yourself. The wizard does it.

Running the wizard

Open yoursite.com/jekcms-install.php in a browser. The wizard is bilingual — the toggle in the top-right switches between English and Turkish, and there's a light/dark switch beside it.

1. System check

Twelve checks run automatically. Green means ready. A red item marked required stops the install and names the missing extension, which is all your host's support team needs to enable it. A warning is safe to continue past.

2. Choose your scenario

  • Fresh install — a clean site.
  • Migrate from WordPress — reads your existing WordPress database directly and brings posts, pages, categories, tags, comments, authors, and media across. See [WordPress Import](/docs/getting-started/wordpress-import) for the full walkthrough.

3. Database

Enter the credentials for the empty database you created. Host is almost always localhost and the port 3306; your hosting panel will say otherwise if it differs. Click Test connection — the wizard creates the database if the user has permission and it doesn't exist yet, then confirms it's reachable before letting you continue.

If you chose the WordPress scenario, the next screen asks for your WordPress database separately, along with its table prefix (usually wp_, but check the $table_prefix line in wp-config.php). Once connected, you'll see live counts of the posts, pages, categories, and comments that will be imported, plus checkboxes for images and comments.

4. Site and administrator

  • Site name and tagline — these become your SEO title and are what Google reads as your brand.
  • Site URL — the canonical address. Get the https:// and the presence or absence of www exactly right; SEO metadata and outgoing emails are built from it.
  • Logo — upload a PNG, JPEG, SVG, or WebP now, or skip it and add one later under Settings → General.
  • Theme — pick one of the bundled themes. You can switch any time from Appearance → Themes.
  • Administrator account — name, email, password. This email receives notifications for new comments and support tickets.

5. Install

The wizard extracts the core, creates the writable folders it needs (cache, logs, temp, backups), writes your .env file, creates every table, seeds your settings, your administrator account and a default category, then marks the install complete. Your site starts empty — the first post is yours to write.

A WordPress migration continues from here in time-budgeted chunks with a live progress bar. It is safe to close the tab: reopen the wizard and it offers to resume where it left off. Same-server migrations use a disk shortcut for media, which is why a 1,200-post site with 600 comments and its images typically lands in well under a minute.

6. Done

On this screen the installer deletes jekcms.zip and then deletes itself. Nothing is left in your web root for an attacker to re-run. There is no install.php to remember to remove.

Follow Go to admin and log in with the account you just created.

What the installer wrote

  • .env in your web root — database credentials and site URL. On a production host, a copy is written to .env-production.
  • config/.installed — the marker that tells jekcms it's live, and tells the wizard not to run again.
  • .htaccess — jekcms's own rewrite rules. If you installed over an existing WordPress site, its .htaccess (typically full of Yoast or Rank Math rules that would break jekcms's clean URLs) is preserved as .htaccess.wp-backup before being replaced.

Your first ten minutes

Log in at /admin. The dashboard opens with a five-step first-publish track across the top; it checks each step against the database on every load, so it stays honest no matter which page you finish the work on.

  1. Site identity — name and tagline under Settings → General, default meta description under Settings → SEO.
  2. LogoSettings → General, if you skipped it in the wizard.
  3. Your first categoryCategories. The seeded "Uncategorized" doesn't count.
  4. Your first postPosts → Add New.
  5. A strong admin passwordProfile.

When all five are green the track disappears on its own. From there, [customize your theme](/docs/themes/customization) and [connect your integrations](/docs/integrations/n8n-setup).

Common installation problems

"Could not open jekcms.zip." The upload was interrupted and the file is truncated. Re-upload it — FTP clients are the usual culprit, so prefer your host's file manager for the zip.

"Files could not be extracted." Your web root isn't writable. Set the folder to 755 in your hosting file manager and re-run the wizard.

"Database connection failed." Nine times out of ten it's the database name. If your host prefixes it (cpuser_jekcms), the prefix is part of the name.

"wp_..." table was not found during a migration. Your WordPress table prefix isn't wp_. Open wp-config.php and read the $table_prefix line.

A 500 error on the first page load. Almost always mod_rewrite. Confirm .htaccess survived the upload and that your Apache config sets AllowOverride All for the document root.

Admin login loops back to the login page. Session cookies aren't being stored — usually a trailing-slash mismatch in the site URL, or an unwritable PHP session directory.

Images won't upload. uploads/ needs to be writable: 0755 on the directory, 0644 on the files inside.

Be the first to know

New features, release notes & CMS guides — a couple of emails a month, no spam.