4.1.14 Installation CMS Made Simple on hosting and server

CMS Made Simple (CMSMS) is a lightweight CMS in PHP for corporate and small projects, focused on a simple template structure and modularity. It supports clean URLs, flexible Smarty template management, extensions via modules, and stable operation on the classic Nginx/Apache + PHP-FPM + MySQL/MariaDB stack. The Smarty templating engine with layout and block inheritance simplifies component reuse and clear separation of presentation. Multilingual projects (via modules), fine-grained access roles, and page/template caching are supported, which speeds up rendering and simplifies SEO configuration.
Preparing the environment
Requirements
Environment variables
DOMAIN_NAME— your domain.CMSMS_VERSION— CMSMS version, e.g.2.2.20.DB_HOST,DB_NAME,DB_USER,DB_PASSWORD— database parameters.WWW_USER,WWW_GROUP— web project owner, usuallywww-data.
Installing CMS Made Simple on hosting
-
Download the CMSMS distribution. Download the stable archive from the official website and save it locally.
-
Upload the archive to hosting via the file manager or via FTP. Extract it into the site root.
-
Create a user and a database.
-
Start the web installer. Open
http://DOMAIN_NAME/cmsms-<version>-install.php/and follow the installation wizard:
- Specify the desired language for installation

- Run a check of the existing software in the installation directory

- Check the environment and PHP extensions.

- Enter the parameters of the created database:
DB_HOST,DB_NAME,DB_USER,DB_PASSWORD.

- Create a superuser for the administration panel.

- Specify the site name and select an additional language

- Confirm file extraction

- Confirm database creation and configuration

- Installation completed successfully

Installing CMS Made Simple on a server
Preparing the directory and downloading
Create the project directory, download the release, and extract it:
sudo mkdir -p /var/www/DOMAIN_NAME && cd /var/www/DOMAIN_NAME
sudo wget -O cmsms.zip "https://downloads.cmsmadesimple.org/{$CMSMS_VERSION}/cmsms-CMSMS_VERSION.zip"
sudo apt update && sudo apt install -y unzip
sudo unzip cmsms.zip && sudo rm cmsms.zip
sudo chown -R WWW_USER:WWW_GROUP /var/www/DOMAIN_NAME
Creating the database and user
mysql -u root <<'SQL'
CREATE DATABASE DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'DB_USER'@'localhost' IDENTIFIED BY 'DB_PASSWORD';
GRANT ALL PRIVILEGES ON DB_NAME.* TO 'DB_USER'@'localhost';
FLUSH PRIVILEGES;
Installing PHP modules
For Ubuntu 22.04/24.04, install PHP and extensions:
sudo apt install -y php8.2 php8.2-fpm php8.2-cli php8.2-mysql php8.2-xml php8.2-gd \
php8.2-curl php8.2-zip php8.2-intl php8.2-mbstring
php -v
php -m | grep -E "mbstring|intl|zip|curl|xml|gd|mysql"
Configure PHP in the php.ini file: memory_limit=256M, max_execution_time=180, upload_max_filesize=32M, post_max_size=32M.
Nginx configuration
server {
listen 80;
server_name DOMAIN_NAME;
root /var/www/DOMAIN_NAME;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_read_timeout 120;
}
# Restrict direct access to service paths
location ~* ^/(tmp|install|backup|uploads/secure)/ {
deny all;
return 403;
}
}
Enabling the site and verification:
sudo ln -s /etc/nginx/sites-available/cmsms.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
nginx -v
After that, open http://DOMAIN_NAME/cmsms-<version>-install.php/ and complete the installation in the browser.
Permissions and ownership: make sure that storage/tmp, uploads/ and cache directories are owned by WWW_USER:WWW_GROUP and writable by the web server.
Configuring additional CMS Made Simple features
HTTPS (Let’s Encrypt)
Attach a certificate and enable redirect to HTTPS. See the full guide in our article: Let’s Encrypt (Certbot).
# Add this to the server block:
if ($scheme = http) { return 301 https://$host$request_uri; }
Friendly URLs and routing rules
Enable Friendly URL in the CMSMS settings and ensure that try_files is enabled as in the example. For Apache, use the .htaccess file from the distribution.
Template cache and performance
In the admin panel, enable caching and periodic cleanup of temporary files. Under high load, use OPcache in PHP.

Localization and date/time
Set the required PHP locale and time zone:
sudo sed -i 's#;date.timezone =#date.timezone = Europe/Kyiv#g' /etc/php/8.2/fpm/php.ini
sudo systemctl reload php8.2-fpm
Verifying operation
- Open
http://DOMAIN_NAME/— the main page should load without 404 or 500 errors. - Log in to the admin panel and clear the cache. Create a test page.
Common issues
| Error/Symptom | Cause | Solution |
|---|---|---|
| 404 with Friendly URLs enabled | No try_files or a conflicting location block |
Apply try_files $uri $uri/ /index.php?$query_string; |
| 500 during installation | Missing PHP modules | Install gd, mbstring, intl, curl, zip, xml, pdo_mysql |
No writes in uploads |
Incorrect file and directory permissions that prevent www-data processes from writing to the specified directory |
Run chown -R WWW_USER:WWW_GROUP and chmod 775 for the required directories |
| “Could not connect to database” | Incorrect database connection details or localhost ≠ socket |
Check DB_HOST, access, GRANT, and use 127.0.0.1 |
| Infinite redirect to HTTPS | Duplicate redirect rules | Leave a single redirect on the HTTP server |
Useful links
Official documentation and communities


