---
name: cms-made-simple
description: CMS Made Simple recipe for open-forge. Mature PHP CMS for managing website content, scalable from small business to enterprise. Multi-template, modules, SEO-friendly. GPL-2.0. Source: http://svn.cmsmadesimple.org/svn/cmsmadesimple/trunk/
---

# CMS Made Simple

A mature, full-featured content management system for managing website content at any scale. Features a module system for extending functionality, WYSIWYG editing, menu builder, file manager, news module, theme system, and multi-language support. GPL-2.0 licensed, written in PHP. Actively maintained since 2004. Website: <https://www.cmsmadesimple.org/>. Docs: <https://docs.cmsmadesimple.org/>

## Compatible Combos

| Infra | Runtime | Database | Notes |
|---|---|---|---|
| Any Linux | PHP 7.4+ + Apache/NGINX | MySQL / MariaDB | Most common setup |
| Any Linux | PHP 7.4+ + Apache/NGINX | PostgreSQL | Supported |
| Any Linux | PHP 7.4+ + Apache/NGINX | SQLite | Supported for small sites |

## Inputs to Collect

### Phase 1 — Preflight

| Prompt | Format | Notes |
|---|---|---|
| "Domain?" | FQDN | e.g. www.example.com |
| "Database type?" | MySQL / PostgreSQL / SQLite | MySQL most common |
| "Database host, name, user, password?" | Connection details | Skip for SQLite |
| "Admin email and password?" | credentials | Set during web installer |

### Phase 2 — Deploy

| Prompt | Format | Notes |
|---|---|---|
| "Site name?" | string | Displayed in the admin panel and frontend |
| "Pretty URLs?" | Yes / No | Requires mod_rewrite (Apache) or try_files (NGINX) |
| "Timezone?" | TZ string | e.g. America/New_York |

## Software-Layer Concerns

- **Web installer**: After uploading files, visit the domain — a step-by-step web installer creates the DB schema and first admin account.
- **PHP requirements**: PHP 7.4 or higher; required extensions: GD, PDO, mbstring, XML, session.
- **`config.php`**: Generated by the installer at the CMS root. Contains DB credentials — protect from web access (or keep outside web root).
- **Pretty URLs**: Require Apache `mod_rewrite` (`.htaccess`) or NGINX `try_files` rewrite rules.
- **File permissions**: `tmp/`, `uploads/`, and module cache directories must be writable by the web server.
- **Module marketplace**: Additional modules available at https://www.cmsmadesimple.org/downloads/modules/ — installable via Module Manager in admin.
- **Smarty templates**: CMSMS uses Smarty as its template engine — themes and templates use Smarty syntax.
- **SVN source**: Official source in SVN at `svn.cmsmadesimple.org` — releases also available as zip from the website.

## Deployment

### NGINX + PHP-FPM

```bash
# Download latest release
wget https://www.cmsmadesimple.org/downloads/cmsms/ -O cmsms.zip
# (check https://www.cmsmadesimple.org/downloads/ for current URL)
unzip cmsms.zip -d /var/www/
chown -R www-data:www-data /var/www/cmsmadesimple/
```

NGINX vhost:
```nginx
server {
    listen 443 ssl;
    server_name www.example.com;
    root /var/www/cmsmadesimple;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Protect sensitive directories
    location ~* /(lib|phar|tmp|modules|uploads)(/.*)? {
        deny all;
    }
}
```

PHP extensions:
```bash
apt install php8.1-fpm php8.1-mysql php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip php8.1-curl
```

### Database setup

```sql
CREATE DATABASE cmsms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'cmsms'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL ON cmsms.* TO 'cmsms'@'localhost';
```

Visit `https://www.example.com/install.php` to run the web installer.

## Upgrade Procedure

1. Back up database and `uploads/` directory.
2. Download new release and extract — overwrite files (keep custom templates/modules separate).
3. Run upgrade wizard at `/upgrade.php` if present, or follow upgrade instructions at https://docs.cmsmadesimple.org/installation/upgrading.
4. Delete `install.php` and `upgrade.php` after completion.

## Gotchas

- **Delete installer**: Remove `install.php` from the web root after installation — anyone can re-run it otherwise.
- **`tmp/` must be writable**: Smarty template cache and session data live here — permissions issues cause blank pages.
- **Module version compatibility**: Modules may require specific CMSMS versions — check compatibility before installing add-ons.
- **SVN-based source**: No GitHub/GitLab — source is in SVN. Release downloads (zip) are the practical install method.
- **`config.php` permissions**: Set to `chmod 444` after install to prevent web writes.

## Links

- Website: https://www.cmsmadesimple.org/
- Downloads: https://www.cmsmadesimple.org/downloads/
- Documentation: https://docs.cmsmadesimple.org/
- Modules: https://www.cmsmadesimple.org/downloads/modules/
- Forum: https://forum.cmsmadesimple.org/
