Automated Installation

This section is intended for software installer vendors. You can automate the installation of SCHLIX CMS by just using HTTP POST to /install/index.php or by storing the variables in environment variables. Upon completion, the /install folder will also be deleted automatically, unlike the manual install. The following is a sample code on how to perform an automatic installation with just a single PHP script. The variables will be obtained from user input, which will be provided by your installer.

<?php 

function __perform_http_post($url, $postvars)
{
    $str_postvars = '';
    foreach ($postvars as $key=> $value)
    {
        $str_postvars .= $key.'='.urlencode ($value).'&';
    }
    rtrim($str_postvars, '&');

    //open connection
    $ch = curl_init();

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($postvars));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $str_postvars);

    //execute post
    $result = curl_exec($ch);

    //close connection
    curl_close($ch);
    return $result;
}

function __perform_installation()
{

    $site_full_url = 'https://samplesite.com/siteprefixhttpbase';

    // To perform auto install, add auto_install = 9 to post variables
    $post_vars = array (
      'auto_install' => 9, // keep this to 9
      'agree_term' => true,  // must be set to true
      'db_host' => $db_host, // Host name
      'db_database' => $db_name,  // Database
      'db_username' => $db_user,   // Username
      'db_password' => $db_pass,  // Password
      'site_domain_name' => $url_domain,  // domain name without https
      'site_use_https' => false,  // true/false
      'site_httpbase' => $site_httpbase,  // the path relative to root
      'site_name' => $input['field_sitetitle'],  // Site Title, e.g. My Website
      'site_root_file_path' => $path,   // The root path of the installation
      'site_id' => 'main',  // This is the first site, keep this as "main"
      'email_from' => 'Webmaster',  // The sender name
      'email_address' => $input['field_email'],  // Default from email address
      'admin_username' => $input['field_login'],  // Admin username
      'admin_password' => $input['field_passwd'],  // Admin password
      'sampledata' => $input['field_sampledata'],  // 1 or 0
      'use_wildcard' => $input['field_usewildcard'],   // Wildcard
      'timezone' => $input['field_timezone'], // Must match  http://php.net/manual/en/timezones.php, e.g. America/Edmonton
      'use_www' => $input['use_www'], // new - 2017 July 3 - recommended for single site (non-multisite)
      'db_port' => $input['db_port'], // Database port - default is 3306 if blank
      'db_socket' => $input['db_socket'], // Database socket - most of the time this parameter is empty by default
      'db_use_ssl' => $input['db_use_ssl'], // for Azure - using non-localhost MySQL connection
      'db_ssl_ca' => $input['db_ssl_ca'], // for Azure - if db_use_ssl is selected. The file is assumed to have existed prior to the automated install        
        ); 
   $exec_result = __perform_http_post($site_full_url.'/install/index.php',$post_vars);
}

Alternatively, you can use a pre-set environment variable, then execute the /install/index.php.

Environment variable key Environment variable value
SCHLIX_AUTO_INSTALL must be exactly number 8
SCHLIX_INSTALL_USER_AGREE_TERM must be 1
SCHLIX_INSTALL_DB_HOST database host
SCHLIX_INSTALL_DB_DATABASE database name
SCHLIX_INSTALL_DB_USERNAME database username
SCHLIX_INSTALL_DB_PASSWORD database password
SCHLIX_INSTALL_SITE_DOMAIN_NAME domain name, e.g. www.mywebsite.com
SCHLIX_INSTALL_SITE_USE_HTTPS 1 or 0
SCHLIX_INSTALL_SITE_HTTPBASE leave blank for automatic configuration, or hardcode it here
SCHLIX_INSTALL_SITE_NAME e.g. Newspaper Today
SCHLIX_INSTALL_SITE_ROOT_FILE_PATH leave blank for automatic configuration, or hardcode it here
SCHLIX_INSTALL_SITE_ID website name, e.g. main, or mywebsite (alphanumeric only)
SCHLIX_INSTALL_EMAIL_FROM Email sender name, e.g. Company Name Ltd Webmaster
SCHLIX_INSTALL_EMAIL_ADDRESS Email address, e.g. info@localhost.local
SCHLIX_INSTALL_ADMIN_USERNAME Web administrator username, e.g. admin
SCHLIX_INSTALL_ADMIN_PASSWORD Minimum 7 characters password
SCHLIX_INSTALL_USE_SAMPLE_DATA 1 or 0
SCHLIX_INSTALL_HOST_USE_WILDCARD whether install should use wildcard. Recommended: 0 (no). This is for advanced multi-site configuration only
SCHLIX_INSTALL_TIMEZONE Timezone name, must match https://www.php.net/manual/en/timezones.php or simply set to UTC
SCHLIX_INSTALL_HOST_ADD_WWW recommended = 1 for production public facing website, 0 for development
SCHLIX_INSTALL_DB_PORT MySQL port number (or leave blank or 0 for default)
SCHLIX_INSTALL_DB_SOCKET MySQL socket, simply leave blank for automatic onfiguration
SCHLIX_INSTALL_DB_USE_SSL Option to set SSL for database connection for non-localhost database (e.g. Azure)
SCHLIX_INSTALL_DB_SSL_CA Option to set SSL Certificate Authority file (e.g. Azure)