Concrete CMS Installation and Setup
Concrete CMS requires PHP 7.4–8.2, MySQL 5.7+/MariaDB 10.2+ or PostgreSQL, Apache/Nginx. Official support is for Composer installation — the preferred method for projects.
Installation via Composer
composer create-project -n concrete5/composer mysite
cd mysite
# Web installer: open http://yourdomain.com/index.php/install
# Or CLI installation:
./vendor/bin/concrete5 c5:install \
--db-server=localhost \
--db-username=myuser \
--db-password=secret \
--db-database=mysite_db \
--site="My Site" \
[email protected] \
--admin-password=StrongPass123 \
--starting-point=elemental_blank
Starting points: elemental_blank (clean), elemental_full (with demo content).
Directory Structure
mysite/
application/ # customizations (in git)
config/
files/
single_pages/
views/
concrete/ # CMS core (don't touch, updated via composer)
packages/ # installed packages (in git)
public/ # web root (document root)
application/
packages/
index.php
vendor/ # composer dependencies (not in git)
Server document root must point to public/ directory.
Nginx Configuration
server {
listen 80;
server_name mysite.com;
root /var/www/mysite/public;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Close application/
location ~* ^/application/ {
deny all;
}
}
Environment Configuration
// application/config/app.php
return [
'debug' => false,
'url' => 'https://mysite.com',
'charset' => 'UTF-8',
'timezone' => 'Europe/Minsk',
'locale' => 'ru_RU',
];
// application/config/database.php
return [
'default-connection' => 'concrete',
'connections' => [
'concrete' => [
'driver' => 'c5_pdo_mysql',
'server' => 'localhost',
'database' => 'mysite_db',
'username' => 'myuser',
'password' => 'secret',
'charset' => 'utf8mb4',
],
],
];
Environment Variables (.env)
CONCRETE5_DB_SERVER=localhost
CONCRETE5_DB_DATABASE=mysite_db
CONCRETE5_DB_USERNAME=myuser
CONCRETE5_DB_PASSWORD=secret
CONCRETE5_URL=https://mysite.com
Core Update
composer update concrete5/core
./vendor/bin/concrete5 c5:update
./vendor/bin/concrete5 c5:cache:clear
CLI Administration Commands
# Clear cache
./vendor/bin/concrete5 c5:cache:clear
# Install package
./vendor/bin/concrete5 c5:package:install my-package
# Create user
./vendor/bin/concrete5 c5:user:add admin2 [email protected] Password123
# Rebuild search index
./vendor/bin/concrete5 c5:index:sites
Dashboard: Initial Setup
After installation via Dashboard → System & Settings:
- Cache & Speed — enable Full Page Caching in production
- SEO & Statistics — configure canonical URL, robots.txt
- Files — max upload size, allowed types
- Email — SMTP settings (required before forms launch)
- API — enable REST API if headless mode needed







