KB00005:Web Server Configuration

From PartKeepr Wiki
Revision as of 13:46, 16 May 2017 by Felicitus (talk | contribs)
Jump to: navigation, search

PartKeepr requires special configuration in some cases.

Apache

Apache requires the following settings:

On Debian-Based systems, you can usually activate mod_rewrite using:

a2enmod rewrite

Example config for demo.partkeepr.org running on Apache 2.4 on Debian Jessie:

<VirtualHost *:80>
        ServerName demo.partkeepr.org

        DocumentRoot /home/demo.partkeepr.org/PartKeepr/web/
        AcceptPathInfo on

        ErrorDocument 403 "<h1>Demo Site update in progress. Check back in a few minutes.</h1>"

        <Directory /home/demo.partkeepr.org/PartKeepr/web/>
		Require all granted
                AllowOverride All
        </Directory>

  ## Logging
  ErrorLog "/var/log/apache2/demo.partkeepr.org_error.log"
  ServerSignature Off
  CustomLog "/var/log/apache2/demo.partkeepr.org_access.log" combined 
</VirtualHost>

nginx

You need to configure nginx so that it passes the path_info to PHP, that is, everything which is added after a PHP script (like setup.php/test). Also make sure you set your root directory to your PartKeepr web/ directory. If you have set your root directory to web/, you need to open setup/index.html instead of web/setup/index.html.

 server {
    # Listening port and host address
    listen 80;
    server_name partkeepr.example.com;

    # Default index pages
    index app.php index.html

    # Default character set
    charset utf-8;

    # Turn off access.log writes
    access_log off;
    log_not_found off;

    # Send file is an optimization, but does not work
    # across unix sockets which I use for php fpm so is best
    # used for local static content onlya 
    sendfile off;

    # Root for / project
    root /var/www/partkeepr/web/;

    # Setup rewrite helper
    rewrite ^/setup/webserver-test$ /setup/tests/webservercheck.json;

    # Handle main / location to symfony app.php controller
    location / {
        try_files $uri $uri/ /app.php?$query_string;
    }

    # Handle /setup location to symfony setup.php controller
    location /setup {
        try_files $uri $uri/ /setup.php?$query_string;
    }

    # Handle all locations *.php files via PHP-FPM unix socket
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_pass unix://var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    # Deny .ht* access
    location ~ /\.ht {
        deny all;
    }
}