Updated: 28 September 2026 · Applies to: October CMS 4 on Ubuntu 24.04, Debian 12, AlmaLinux 9 and Rocky Linux 9

Ubuntu 18.04 is end of life; these steps are for Ubuntu 24.04 (and Debian 12 / AlmaLinux/Rocky 9).

October CMS is a CMS built on Laravel. The current version is October CMS 4, which needs PHP 8.2 or newer and a licence key from octobercms.com to complete the installation (older free versions are no longer supported).

Before you start

  • A VPS or dedicated server with a fresh Ubuntu 24.04 / Debian 12 or AlmaLinux 9 / Rocky Linux 9 installation, and root or sudo access.
  • A domain or subdomain pointing to the server (an A record), if you want HTTPS.
  • The system updated: apt update && apt upgrade or dnf upgrade.

Install Apache, MariaDB and PHP

Ubuntu 24.04 / Debian 12:

apt install apache2 mariadb-server php libapache2-mod-php php-mysql php-xml php-mbstring php-curl php-zip php-gd php-intl
systemctl enable --now apache2 mariadb

AlmaLinux 9 / Rocky Linux 9 (choose a current PHP stream first):

dnf module reset php && dnf module enable php:8.3
dnf install httpd mariadb-server php php-fpm php-mysqlnd php-xml php-mbstring php-gd php-intl php-opcache php-pecl-zip
systemctl enable --now httpd mariadb php-fpm

Secure MariaDB (set a root password or keep socket login, remove test data): mariadb-secure-installation.

Also install: apt install php-curl php-gd php-mbstring php-xml php-zip php-intl (Ubuntu/Debian) and restart Apache.

On AlmaLinux/Rocky: dnf install php-gd php-mbstring php-xml php-intl php-pecl-zip, then systemctl restart php-fpm httpd.

Install Composer

apt install composer          # Ubuntu 24.04 / Debian 12
# or the official installer (any system):
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php

Create a database

mariadb -u root -p
CREATE DATABASE october CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'octoberuser'@'localhost' IDENTIFIED BY 'Strong-Password';
GRANT ALL PRIVILEGES ON october.* TO 'octoberuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Install

cd /var/www
composer create-project october/october october
cd october
php artisan october:install     # asks for the URL, database and licence key
php artisan october:migrate
chown -R www-data:www-data storage themes plugins   # apache on AlmaLinux/Rocky

Create the Apache site

Create /etc/apache2/sites-available/example.com.conf (Ubuntu/Debian) or /etc/httpd/conf.d/example.com.conf (AlmaLinux/Rocky):

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/october
    <Directory /var/www/october>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Ubuntu/Debian: a2ensite example.com && a2enmod rewrite && systemctl reload apache2. AlmaLinux/Rocky: apachectl configtest && systemctl reload httpd.

Add a free SSL certificate

apt install certbot python3-certbot-apache                     # Ubuntu / Debian
dnf install epel-release && dnf install certbot python3-certbot-apache   # AlmaLinux / Rocky
certbot --apache -d example.com -d www.example.com

Certbot installs a timer that renews the certificate automatically; test it with certbot renew --dry-run.

Log in at https://example.com/admin.

Note: On AlmaLinux 9 / Rocky Linux 9 SELinux is on. Let Apache/Nginx write where the application needs it, for example: semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/october/storage/storage(/.*)?" && restorecon -R /var/www/october/storage, and allow outgoing connections if the app calls APIs: setsebool -P httpd_can_network_connect 1.

Ucartz services for this topic

Was this answer helpful? 0 Users Found This Useful (0 Votes)