Installing Neos on a hosted web server

In order to install Neos on a hosted web server, your server must meet a few requirements.

  1. A web server (Apache and Nginx are preferred, but others work as well)
  2. A database (MySQL > 5.7.7, MariaDB > 10.2.2 and PostgreSQL > 9.4 are preferred, but any database supported by Doctrine DBAL should also work).
  3. PHP >= 7.1.0 (make sure the PHP CLI has the same version)
  4. PHP modules mbstring, tokenizer and pdo_mysql
  5. PHP functions exec(), shell_exec(), escapeshellcmd() and escapeshellarg()
  6. It is recommended to install one of the PHP modules imagick or gmagick.
    [Source: https://neos.readthedocs.io/en/stable/GettingStarted/Installation.html]

To check point 3-6 you can copy the following file and run it as neos_check.php on your webserver.

<style>.i{color: green;}.i::after{content:" is available."}.n{color: red;}.n::after{content:" is unavailable."}</style>
<?php
  $check = [
    'phpVersion' => phpversion(),
    'phpCheck' => ((double)substr(phpversion(), 0, 3) >= 7.1) ? 'i' : 'n',
    'mbstring' => (extension_loaded('mbstring')) ? 'i' : 'n',
    'tokenizer' => (extension_loaded('tokenizer')) ? 'i' : 'n',
    'pdo_mysql' => (extension_loaded('pdo_mysql')) ? 'i' : 'n',
    'exec' => (function_exists('exec')) ? 'i' : 'n',
    'shell_exec' => (function_exists('shell_exec')) ? 'i' : 'n',
    'escapeshellcmd' => (function_exists('escapeshellcmd')) ? 'i' : 'n',
    'escapeshellarg' => (function_exists('escapeshellarg')) ? 'i' : 'n',
    'imagick' => (extension_loaded('imagick')) ? 'i' : 'n',
    'gmagick' => (extension_loaded('gmagick')) ? 'i' : 'n',
  ];
  print_r('<h2>Neos web server check</h2><ul>');
  print_r('<li class="'.$check['phpCheck'].'">Your php version ('.$check['phpVersion'].')</li>');
  print_r('<li class="'.$check['mbstring'].'">The module mbstring</li>');
  print_r('<li class="'.$check['tokenizer'].'">The module tokenizer</li>');
  print_r('<li class="'.$check['pdo_mysql'].'">The module pdo_mysql</li>');
  print_r('<li class="'.$check['exec'].'">The function exec</li>');
  print_r('<li class="'.$check['shell_exec'].'">The function shell_exec</li>');
  print_r('<li class="'.$check['escapeshellcmd'].'">The function escapeshellcmd</li>');
  print_r('<li class="'.$check['escapeshellarg'].'">The function escapeshellarg</li>');
  print_r('<li class="'.$check['imagick'].'">(Optional) The module imagick</li>');
  print_r('<li class="'.$check['gmagick'].'">(Optional) The module gmagick</li>');
  print_r('</ul>');


If your server meets all requirements you can continue with the following:

  1. Do not install via a web console, but via an SSH client (so that the shell commands run properly)
  2. Install composer (if you already have it, go right ahead)
  3. $ composer create-project --no-dev neos/neos-base-distribution .
  4. (Sub-)domain to the /Web folder (otherwise routing of Neos won't work and you can't call anything)
  5. Create a database (utf8mb4_general_ci)
  6. Customize /Configuration/Development/Settings.yaml and add host: 'localhost' (or instead of localhost your specific database host)
  7. $ ./flow doctrine:migrate
  8. $ ./flow kickstart:site Provider.Packagename WebsiteTitle
  9. $ ./flow site:import --package-key Provider.Packagename
  10. $ ./flow user:create Username Password Name Load Name --roles Neos.Neos:Administrator

If there were no problems you are now the proud owner of a blank Neos installation on a hosted web server. So far the guide has been tested on serverprofis.net. Here is a thread of other Compatible Neos Hoster.

Small hint if you change the context mode from Development to Production in the .htaccess, run a $ FLOW_CONTEXT=Production ./flow flow:cache:flush --force to clear the cache. This should read your Configuration/Production/Settings.yaml correctly.

Last cache from 2020-09-30 at 09:56:39 (Example Eel Helper)