Running CiviCRM as a standalone application offers enhanced performance and simplified maintenance compared to CMS-integrated installations. In this comprehensive guide, we'll walk through the process of setting up standalone CiviCRM on an ENGINYRING Virtual Private Server, covering both Debian and RHEL-based systems.

Understanding Standalone CiviCRM

The standalone version of CiviCRM provides direct access to CRM functionality without the overhead of a content management system. This approach is ideal for organizations that primarily need constituent relationship management features and prefer a lightweight, focused installation.

Server Requirements

Your ENGINYRING VPS should meet or exceed these specifications for optimal performance:

  • 4GB RAM minimum (8GB recommended)
  • 2 CPU cores
  • 40GB SSD storage
  • Either Debian/Ubuntu or RHEL/CentOS/Rocky Linux
  • Clean server installation

Debian-Based Installation Process

The installation process on Debian and Ubuntu systems follows a straightforward path, beginning with system preparation and proceeding through database configuration and application setup.

First, we'll update the system and install required packages:

# Update system packages
sudo apt update && sudo apt upgrade -y

# Install required dependencies
sudo apt install apache2 mariadb-server php php-cli php-curl php-gd \
php-imap php-json php-intl php-ldap php-mbstring php-mysql php-soap \
php-xml php-zip unzip wget composer git -y

Next, we'll secure the database server and create necessary databases:

# Secure MariaDB
sudo mysql_secure_installation

# Create CiviCRM database
sudo mysql -u root -p
CREATE DATABASE civicrm DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'civicrm'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON civicrm.* TO 'civicrm'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Now we'll install CiviCRM using Composer:

# Create installation directory
sudo mkdir -p /var/www/civicrm
cd /var/www/civicrm

# Install CiviCRM via Composer
sudo composer create-project civicrm/standalone-dev:dev-master .
sudo chown -R www-data:www-data .

RHEL-Based Installation Process

For RHEL, CentOS, or Rocky Linux systems, we begin by enabling the necessary repositories and installing required packages:

# Enable repositories
sudo dnf install epel-release -y
sudo dnf module enable php:7.4 -y

# Install required packages
sudo dnf install httpd mariadb-server php php-cli php-curl php-gd \
php-imap php-json php-intl php-ldap php-mbstring php-mysqlnd \
php-soap php-xml php-zip unzip wget composer git -y

Configure services and firewall:

# Start and enable services
sudo systemctl start httpd mariadb
sudo systemctl enable httpd mariadb

# Configure firewall
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Database setup follows the same pattern as Debian systems:

# Secure MariaDB and create database
sudo mysql_secure_installation

mysql -u root -p
CREATE DATABASE civicrm DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'civicrm'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON civicrm.* TO 'civicrm'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Web Server Configuration

Regardless of the operating system, proper web server configuration is crucial. For Apache:

# Create Apache configuration
sudo nano /etc/apache2/sites-available/civicrm.conf  # Debian
sudo nano /etc/httpd/conf.d/civicrm.conf            # RHEL

Add the following configuration:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/civicrm
    ServerName crm.yourdomain.com

    <Directory /var/www/civicrm>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/civicrm_error.log
    CustomLog ${APACHE_LOG_DIR}/civicrm_access.log combined
</VirtualHost>

Initial Setup and Configuration

After installation, access the CiviCRM installer through your web browser:

http://your_server_ip/setup

The setup wizard will guide you through:

  • Database connection configuration
  • Administrator account creation
  • Initial system settings
  • Base currency selection
  • Location and language preferences

Performance Optimization

For optimal performance on your ENGINYRING VPS, implement these configurations:

PHP optimization:

sudo nano /etc/php/7.4/apache2/php.ini  # Debian
sudo nano /etc/php.ini                  # RHEL

# Add or modify these values:
memory_limit = 256M
max_execution_time = 120
post_max_size = 64M
upload_max_filesize = 64M

Enable caching:

# Create cache directories
sudo mkdir -p /var/www/civicrm/cache
sudo chown -R www-data:www-data /var/www/civicrm/cache

Backup Configuration

Implement a robust backup strategy:

# Create backup script
sudo nano /usr/local/bin/backup-civicrm.sh

#!/bin/bash
BACKUP_DIR="/var/backups/civicrm"
MYSQL_USER="civicrm"
MYSQL_PASS="your_secure_password"
DATE=$(date +%Y%m%d)

# Create backup directory
mkdir -p $BACKUP_DIR

# Backup database
mysqldump -u$MYSQL_USER -p$MYSQL_PASS civicrm > $BACKUP_DIR/civicrm_db_$DATE.sql

# Backup files
tar -czf $BACKUP_DIR/civicrm_files_$DATE.tar.gz /var/www/civicrm

# Remove backups older than 7 days
find $BACKUP_DIR -type f -mtime +7 -delete

Security Considerations

Post-installation security measures should include:

  • SSL certificate implementation
  • Regular security updates
  • System monitoring setup
  • Firewall configuration
  • Regular security audits

Conclusion

A standalone CiviCRM installation on an ENGINYRING VPS provides a robust, efficient platform for constituent relationship management. While the installation process requires attention to detail, the result is a streamlined, high-performance CRM system that can be customized to meet your organization's specific needs.