Skip to main content

Installation - STEP 2 - Installing Core

Run this in terminal

Create folder if not exist

sudo mkdir /var/www
sudo mkdir /var/www/html

FOLDER /var/www/html MUST BE EMPTY!!

To delete all in /var/www/html run this commands

sudo rm -R /var/www/html/*
sudo rm -R /var/www/html/.*

Installing Core files

sudo chown -R www-data /var/www/html/                                       
cd /var/www/html

sudo -u www-data composer create-project wintercms/winter . --no-scripts

Installing Composer requirements

sudo -u www-data composer require textalk/websocket
sudo -u www-data composer require winter/wn-translate-plugin
sudo -u www-data composer require winter/wn-pages-plugin
sudo -u www-data composer require winter/wn-user-plugin
sudo -u www-data composer require mjaschen/phpgeo
sudo -u www-data composer require mtdowling/cron-expression
sudo -u www-data composer require spatie/dns
sudo -u www-data composer require spatie/period
sudo -u www-data composer require spatie/ssl-certificate
sudo -u www-data composer require qazd/text-diff

Removing unneeded Core files (optional)

sudo -u www-data rm -rf themes/demo/
sudo -u www-data rm -rf plugins/winter/demo/

Changing core config

Change /var/www/html/config/database.php

sudo nano /var/www/html/config/database.php

section connections => mysql  ! - IMPORTANT - !

'strict' => false,

Change /var/www/html/config/app.php *

sudo nano /var/www/html/config/app.php

section timezone change to your timezone

'timezone' => 'Europe/Kyiv',

Change /var/www/html/config/cms.php * (optional)

sudo nano /var/www/html/config/cms.php

section backendTimezone change to your timezone

'backendTimezone' => 'Europe/Kyiv',

* - your timezone can be different (see here https://www.php.net/manual/en/timezones.php)

Configuring Ngnix

Create file for main server config:
sudo nano /etc/nginx/sites-available/grusher

And put it (with changing YOUR_IP in to you IP or domain)

server {
    listen 80;
    root /var/www/html;
    server_name YOUR_IP;
    charset utf-8;
    #set buffer size
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 128k;
    # We will be use main settings in /var/www/html/.nginx
    include /var/www/html/.nginx;
}

Enabling config

sudo ln -s /etc/nginx/sites-available/grusher /etc/nginx/sites-enabled/grusher
Create Grusher Ngnix config file
sudo nano /var/www/html/.nginx

And put it

# Allow to upload filesmore then 8 mb
client_max_body_size 8M; 

# Standart config for WinterCMS from official site
index index.php;
if ($request_uri ~* "^(.*/)index\.(?:php|html)$") {
    return 301 $1;
}
location / {
    rewrite ^/.*$ /index.php last;
}

location ~ ^/index.php {
    include snippets/fastcgi-php.conf;
    # USE OUR PHP SOCKET (we have 8.2)
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    fastcgi_read_timeout 1200;
    proxy_read_timeout 1200;
}
location ~ ^/(.*\.(ac3|avi|bmp|bz2|css|cue|dat|doc|docx|dts|exe|flv|gif|gz|html|ico|img|iso|jpeg|jpg|js|mkv|mp3|mp4|mpeg|mpg|ogg|pdf|png|ppt|pptx|qt|rar|rm|swf|tar|tgz|txt|wav|xls|xlsx|zip|7z|svg|ttf|woff|woff2|eot))$ {
    sendfile on;
    access_log off;
    expires max;
}

# Whitelist
## Let Winter handle if static file not exists
location ~ ^/favicon\.ico { try_files $uri /index.php; }
location ~ ^/sitemap\.xml { try_files $uri /index.php; }
location ~ ^/robots\.txt { try_files $uri /index.php; }
location ~ ^/humans\.txt { try_files $uri /index.php; }
location ~ ^/[0-9a-z]+.html { try_files $uri /index.php; }
location ~ ^/[0-9a-z]+.tar.gz {try_files $uri /index.php; }

## Let nginx return 404 if static file not exists
# grusher backups
location ~ ^/storage/app/gviabcua-backup { try_files $uri 404; }
location ~ ^/storage/app/uploads/gviabcua-backup { try_files $uri 404; }
#winter
location ~ ^/.well-known { try_files $uri 404; }
location ~ ^/storage/app/uploads/public { try_files $uri 404; }
location ~ ^/storage/app/media { try_files $uri 404; }
location ~ ^/storage/temp/public { try_files $uri 404; }
location ~ ^/storage/app/cropped { try_files $uri 404; }
location ~ ^/storage/app/rss { try_files $uri 404; }
location ~ ^/storage/app/collections { try_files $uri 404; }
location ~ ^/modules/.*/assets { try_files $uri 404; }
location ~ ^/modules/.*/resources { try_files $uri 404; }
location ~ ^/modules/.*/behaviors/.*/assets { try_files $uri 404; }
location ~ ^/modules/.*/behaviors/.*/resources { try_files $uri 404; }
location ~ ^/modules/.*/widgets/.*/assets { try_files $uri 404; }
location ~ ^/modules/.*/widgets/.*/resources { try_files $uri 404; }
location ~ ^/modules/.*/formwidgets/.*/assets { try_files $uri 404; }
location ~ ^/modules/.*/formwidgets/.*/resources { try_files $uri 404; }
location ~ ^/modules/.*/reportwidgets/.*/assets { try_files $uri 404; }
location ~ ^/modules/.*/reportwidgets/.*/resources { try_files $uri 404; }
location ~ ^/plugins/.*/.*/assets { try_files $uri 404; }
location ~ ^/plugins/.*/.*/resources { try_files $uri 404; }
location ~ ^/plugins/.*/.*/behaviors/.*/assets { try_files $uri 404; }
location ~ ^/plugins/.*/.*/behaviors/.*/resources { try_files $uri 404; }
location ~ ^/plugins/.*/.*/reportwidgets/.*/assets { try_files $uri 404; }
location ~ ^/plugins/.*/.*/reportwidgets/.*/resources { try_files $uri 404; }
location ~ ^/plugins/.*/.*/formwidgets/.*/assets { try_files $uri 404; }
location ~ ^/plugins/.*/.*/formwidgets/.*/resources { try_files $uri 404; }
location ~ ^/plugins/.*/.*/widgets/.*/assets { try_files $uri 404; }
location ~ ^/plugins/.*/.*/widgets/.*/resources { try_files $uri 404; }
location ~ ^/themes/.*/assets { try_files $uri 404; }
location ~ ^/themes/.*/resources { try_files $uri 404; }

# Можно увімкнути стиснення (буває корисним але + до CPU)
gzip on;
gzip_disable "msie6";
gzip_types
application/atom+xml
application/javascript
text/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
font/ttf
application/x-font-ttf
application/vnd.ms-fontobject
application/font-woff
application/font-woff2
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vnd.wap.wml
text/vtt
text/x-component
text/x-cross-domain-policy;
gzip_comp_level 6;
gzip_vary on;
gzip_static off;
gzip_proxied any;
Check config and reload ngnix
sudo nginx -t
sudo systemctl reload nginx