A web server for SoSci Survey can also be operated via a Docker container.
Warning: This manual is still incomplete (work in progress). It describes a minimal configuration without SSL encryption and further security mechanisms, intended for local operation. Do not use this configuration to operate a production system.
On Windows, it is best to install Docker Desktop for this purpose.
Create a directory, e.g., C:\Data\sosci, and in it a file docker-compose.yml with the following content. Do not forget to enter your own data at the places marked with __Change__.
services: mariadb: image: 'mariadb:11.0' working_dir: /application volumes: - './data:/application' - './data/mysql:/var/lib/mysql' environment: - MYSQL_ROOT_PASSWORD=__Change__ - MYSQL_DATABASE=sosci - MYSQL_USER=sosci - MYSQL_PASSWORD=__Change__ ports: - '63003:3306' webserver: image: 'nginx:alpine' working_dir: /application volumes: - './data:/application' - './conf/nginx.conf:/etc/nginx/conf.d/default.conf' - './survey:/var/www/html' - './log:/var/log' ports: - '63000:80' # - '443:443' php-fpm: build: php-fpm working_dir: /application volumes: - './data:/application' - './conf/php-ini-overrides.ini:/etc/php/8.4/fpm/conf.d/99-overrides.ini' - './conf/php-ini-overrides.ini:/etc/php/8.4/cli/conf.d/99-overrides.ini' - './survey:/var/www/html' - './log:/var/log'
Extract the SoSci Survey installation package to C:\Data\sosci\survey\, a file C:\Data\sosci\survey\index.html should exist afterwards.
Create the following configuration in C:\Data\sosci\conf\nginx.conf
server {
listen 80 default;
client_max_body_size 128M;
access_log /var/log/nginx/access.log;
root /var/www/html;
index index.php;
# try to serve file directly, fallback to index.php
location / {
try_files $uri $uri/ =404;
index index.php index.html;
}
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
# Forbidden directories
location ~ ^/(inc|lib|system)/ {
deny all;
return 403;
}
location ~ ^/files/(protected|upload|share)/ {
deny all;
return 403;
}
location ~ /\.ht {
deny all;
return 403;
}
# Use default favicon, so no entries will appear in the errorlog
location ~ ^/.*/favicon\.ico$ {
try_files /favicon.ico =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
}
Furthermore, create the configuration C:\Data\sosci\conf\php-ini-overrides.ini
upload_max_filesize = 100M post_max_size = 128M
Create a configuration C:\Data\sosci\php-fpm\Dockerfile
FROM phpdockerio/php:8.4-fpm
WORKDIR "/application"
RUN apt-get update \
&& apt-get -y --no-install-recommends install \
php8.4-bcmath \
php8.4-gd \
php8.4-imap \
php8.4-intl \
php8.4-memcached \
php8.4-mysql \
php8.4-xml \
php8.4-gd \
php8.4-mbstring \
php8.4-zip \
php8.4-apcu \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
Start the container on the command line or in the terminal with the following command:
docker-compose up
In the future, you can then also start the containers directly in Docker Desktop.
You open the installation routine via http://localhost:63000/admin/install.php.
As the database server in the SoSci Survey installation, enter mariadb:3306.
This solution uses different (Linux) users for the PHP process and for the web server. For access to the survey projects to work, set the option “limited writing (0x755)” for New projects' file permissions in the Server Settings, in the tab “Server”, in the section “Security”.