Skip to content

Installation on Apache

This guide will walk you through installing OmniSuite CMS on a server running Apache web server.


Table of Contents

  1. Prerequisites
  2. Step 1: Server Preparation
  3. Step 2: Install PHP and Extensions
  4. Step 3: Install Composer and Node.js
  5. Step 4: Create Database
  6. Step 5: Upload Files
  7. Step 6: Configure Apache
  8. Step 7: Enable mod_rewrite
  9. Step 8: Set Permissions
  10. Step 9: Run the Installer
  11. Step 10: Post-Installation
  12. Troubleshooting

Prerequisites

Before starting, ensure you have:

  • ✅ Root or sudo access to server
  • ✅ Apache installed and running
  • ✅ PHP 8.2+ installed
  • ✅ MySQL/PostgreSQL database server
  • ✅ Domain or IP address configured
  • ✅ Reviewed System Requirements

Step 1: Server Preparation

Update System Packages

Ubuntu/Debian:

bash
sudo apt update
sudo apt upgrade -y

CentOS/RHEL:

bash
sudo yum update -y

Install Required Tools

Ubuntu/Debian:

bash
sudo apt install -y curl wget git unzip

CentOS/RHEL:

bash
sudo yum install -y curl wget git unzip

Step 2: Install PHP and Extensions

Install PHP 8.2+

Ubuntu 22.04+:

bash
sudo apt install -y php8.2 libapache2-mod-php8.2 php8.2-cli

Ubuntu 20.04:

bash
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php8.2 libapache2-mod-php8.2 php8.2-cli

CentOS/RHEL:

bash
sudo yum install -y epel-release
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum module reset php
sudo yum module enable php:remi-8.2
sudo yum install -y php php-cli

Install Required PHP Extensions

Ubuntu/Debian:

bash
sudo apt install -y \
    php8.2-mysql \
    php8.2-pgsql \
    php8.2-sqlite3 \
    php8.2-mbstring \
    php8.2-xml \
    php8.2-curl \
    php8.2-intl \
    php8.2-zip \
    php8.2-gd \
    php8.2-bcmath

CentOS/RHEL:

bash
sudo yum install -y \
    php-mysqlnd \
    php-pgsql \
    php-sqlite3 \
    php-mbstring \
    php-xml \
    php-curl \
    php-intl \
    php-zip \
    php-gd \
    php-bcmath

Verify PHP Installation

bash
php -v
# Should show PHP 8.2.0 or higher

php -m
# Should show all required extensions

Configure PHP

Edit php.ini:

bash
sudo nano /etc/php/8.2/apache2/php.ini
# or for CentOS: sudo nano /etc/php.ini

Update these settings:

ini
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = America/New_York  # Set your timezone

Step 3: Install Composer and Node.js

Install Composer

bash
cd /tmp
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
composer --version

Install Node.js and NPM

Using NodeSource:

bash
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

Verify:

bash
node --version
npm --version

Step 4: Create Database

MySQL/MariaDB

Login to MySQL:

bash
sudo mysql -u root -p

Create Database and User:

sql
CREATE DATABASE omnisuite_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'omnisuite_user'@'localhost' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON omnisuite_db.* TO 'omnisuite_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Step 5: Upload Files

Option A: Using Git

bash
cd /var/www/html
sudo git clone [your-repository-url] omnisuite
cd omnisuite

Option B: Using SCP/SFTP

Upload files to /var/www/html/omnisuite or your web root directory.

Set Ownership

bash
sudo chown -R www-data:www-data /var/www/html/omnisuite
# or for CentOS: sudo chown -R apache:apache /var/www/html/omnisuite

Step 6: Configure Apache

Create Virtual Host

Ubuntu/Debian:

bash
sudo nano /etc/apache2/sites-available/omnisuite.conf

CentOS/RHEL:

bash
sudo nano /etc/httpd/conf.d/omnisuite.conf

Virtual Host Configuration

Add the following:

apache
<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/html/omnisuite/public

    <Directory /var/www/html/omnisuite/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/omnisuite_error.log
    CustomLog ${APACHE_LOG_DIR}/omnisuite_access.log combined
</VirtualHost>

Important: Replace yourdomain.com and path with your actual values.

Enable Site

Ubuntu/Debian:

bash
sudo a2ensite omnisuite.conf
sudo systemctl reload apache2

CentOS/RHEL:

bash
sudo systemctl reload httpd

Step 7: Enable mod_rewrite

Check if Enabled

Ubuntu/Debian:

bash
apache2ctl -M | grep rewrite

CentOS/RHEL:

bash
httpd -M | grep rewrite

Enable mod_rewrite

Ubuntu/Debian:

bash
sudo a2enmod rewrite
sudo systemctl restart apache2

CentOS/RHEL:

bash
# Usually enabled by default
# If not, edit /etc/httpd/conf/httpd.conf and uncomment:
# LoadModule rewrite_module modules/mod_rewrite.so
sudo systemctl restart httpd

Verify .htaccess Support

Ensure your virtual host allows .htaccess overrides:

apache
<Directory /var/www/html/omnisuite/public>
    AllowOverride All
    Require all granted
</Directory>

Step 8: Set Permissions

Set Directory Permissions

bash
cd /var/www/html/omnisuite
sudo chown -R www-data:www-data .
# or for CentOS: sudo chown -R apache:apache .
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;

Set Writable Directories

bash
sudo chmod -R 775 storage bootstrap/cache
sudo chown -R www-data:www-data storage bootstrap/cache
# or for CentOS: sudo chown -R apache:apache storage bootstrap/cache

Set Executable Files

bash
sudo chmod +x artisan

Step 9: Run the Installer

Access the Installer

  1. Open browser
  2. Navigate to: http://yourdomain.com/install
  3. Or: http://your-server-ip/install

Follow Installer Steps

See Web Installer Guide for detailed steps.


Step 10: Post-Installation

Install Dependencies (if needed)

bash
cd /var/www/html/omnisuite
composer install --no-dev --optimize-autoloader
npm install
npm run build

Set Up SSL (Let's Encrypt)

Install Certbot:

bash
sudo apt install -y certbot python3-certbot-apache

Obtain Certificate:

bash
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

Auto-Renewal:

bash
sudo certbot renew --dry-run

Configure Cron Jobs

Edit crontab:

bash
sudo crontab -e -u www-data
# or for CentOS: sudo crontab -e -u apache

Add:

* * * * * cd /var/www/html/omnisuite && php artisan schedule:run >> /dev/null 2>&1

Set Up Queue Worker

See Post-Installation Setup for queue worker configuration.


Troubleshooting

500 Internal Server Error

Solutions:

  1. Check Apache error log:

    bash
    sudo tail -f /var/log/apache2/error.log
    # or for CentOS: sudo tail -f /var/log/httpd/error_log
  2. Verify .htaccess exists in public/ directory

  3. Check mod_rewrite is enabled

  4. Verify file permissions

mod_rewrite Not Working

Solutions:

  1. Enable mod_rewrite:

    bash
    sudo a2enmod rewrite
    sudo systemctl restart apache2
  2. Check AllowOverride is set to "All"

  3. Verify .htaccess file exists

  4. Check Apache configuration

Permission Denied

Solutions:

  1. Check file ownership:

    bash
    ls -la /var/www/html/omnisuite
  2. Fix ownership:

    bash
    sudo chown -R www-data:www-data /var/www/html/omnisuite
  3. Fix permissions:

    bash
    sudo chmod -R 755 /var/www/html/omnisuite
    sudo chmod -R 775 storage bootstrap/cache

Next Steps

  1. Review Post-Installation Setup
  2. Configure General Settings
  3. Read Getting Started Guide

Last Updated: [Date will be updated during final review]

Released under the MIT License.