Sylius: Install Your E-commerce Store on VPS in One Evening

12.02.2026
19:26

Launching a mid-size or large online store and realizing WooCommerce can't handle it, while Magento scares you with licensing costs and complexity? Take a look at Sylius — an e-commerce platform built on Symfony that delivers enterprise capabilities without the enterprise price tag.

Let's explore what Sylius is, who it's perfect for, how to deploy it on your own server, and why developers consider it the most developer-friendly platform for custom e-commerce.

What is Sylius and Who It's For

Sylius is a free, open-source e-commerce platform built on Symfony (one of the most reliable PHP frameworks). The project has existed since 2010 and powers over 10,000 online stores worldwide.

Key differences from other platforms:

  • Built on Symfony — means clean code, excellent documentation, massive community
  • API-first architecture — powerful REST API for any integrations out of the box
  • Modularity — use only needed components
  • Headless-ready — connect any frontend (React, Vue, mobile apps)

Sylius fits when:

  • You have medium or large catalog (500+ products)
  • Complex pricing logic needed
  • International sales planned (multi-language, multi-currency)
  • ERP/CRM/warehouse system integrations required
  • You want full control without monthly SaaS fees

Not suitable when:

  • Need store right now without programmers — take Shopify
  • Small catalog under 50 products — WooCommerce simpler
  • No technical specialists — SaaS more convenient

Why Sylius Requires VPS

Sylius cannot be installed on regular shared hosting. Here's why:

SSH Access Required

Installation via Composer, executing Symfony console commands, jаvascript compilation — everything requires command line. SSH usually unavailable on shared hosting.

Specific PHP Settings

Need PHP 8.3+, certain extensions, ability to change php.ini parameters. On shared hosting this is limited.

Performance

Symfony applications are sensitive to disk speed and RAM volume. On shared hosting where hundreds of clients split resources — store will lag.

Scalability Capability

As traffic grows, you'll add Redis for cache, configure queues, possibly Elasticsearch for search. On shared hosting, this is impossible.

System Requirements

Before installation, verify your server meets requirements.

Operating System

Linux (recommended):

  • Ubuntu 22.04 LTS / 24.04 LTS
  • Debian 11 / 12
  • CentOS Stream 9 / AlmaLinux 9

PHP and Extensions

Version: PHP 8.3 or newer

Required extensions:

  • gd, exif, fileinfo — image processing
  • intl — internationalization
  • sodium — cryptography
  • opcache — caching
  • pdo_mysql — database
  • xml, zip, mbstring, curl

Database

One of:

  • MySQL 8.0+
  • MariaDB 10.4.10+
  • PostgreSQL 13.9+

We recommend MySQL 8.0 — most popular choice in community.

Node.js

Version 20.x LTS or 22.x LTS for building frontend assets.

Additional

  • Composer — PHP dependency manager
  • Git — for repository cloning
  • Yarn or npm — jаvascript building

Server Resources

Minimum (testing):

  • 2 CPU cores
  • 4 GB RAM
  • 30 GB SSD

Recommended (production):

  • 4 CPU cores
  • 8 GB RAM
  • 50 GB NVMe SSD
  • 1 Gbps port

High-traffic stores:

  • 8+ CPU cores
  • 16+ GB RAM
  • 100+ GB NVMe SSD
  • 10 Gbps port

Choosing VPS from THE.Hosting

Let's look at suitable configurations for Sylius.

Standard VPS

Fits stores with traffic up to 10,000 daily visitors.

Basic configuration:

  • 4 vCPU
  • 8 GB RAM
  • 80 GB NVMe SSD
  • 1 Gbps port
  • Unlimited traffic

This suffices at launch. Easily upgrade plan as you grow.

For growing stores:

  • 6 vCPU
  • 12 GB RAM
  • 120 GB NVMe SSD

Hi-CPU VPS

If you have complex calculations (dynamic pricing, many filters, heavy integrations) — take Hi-CPU. More powerful CPU cores with high frequency, better single-thread performance.

Dedicated Servers

For large marketplaces or stores with 100,000+ daily visitors. All resources exclusively yours, no server neighbors.

Server Preparation

We'll install Ubuntu 24.04 LTS stack with Nginx, MySQL, PHP 8.3.

SSH Connection

After creating VPS, receive:

  • Server IP address
  • Root password or SSH key

Connect:

ssh root@185.104.248.123

(replace with your IP)

System Update

apt update && apt upgrade -y

Installing Basic Packages

apt install software-properties-common curl wget git unzip -y

Installing PHP 8.3

Add Ondrej repository with current PHP versions:

add-apt-repository ppa:ondrej/php -y
apt update

Install PHP and all necessary extensions:

apt install php8.3-fpm php8.3-cli php8.3-mysql php8.3-gd php8.3-intl \
php8.3-xml php8.3-zip php8.3-curl php8.3-mbstring php8.3-opcache -y

Check version:

php -v

Should show: PHP 8.3.x

PHP Configuration

Edit configuration for optimal Symfony performance:

nano /etc/php/8.3/fpm/php.ini

Key parameters:

memory_limit = 256M
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 300
date.timezone = America/New_York
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000

Restart PHP-FPM:

systemctl restart php8.3-fpm

Installing MySQL

apt install mysql-server -y

Run secure installation wizard:

mysql_secure_installation

Recommended answers:

  • Validate Password Component: Yes
  • Remove anonymous users: Yes
  • Disallow root login remotely: Yes
  • Remove test database: Yes
  • Reload privilege tables: Yes

Creating Database

mysql -u root -p

In MySQL console execute:

CREATE DATABASE sylius CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'sylius_user'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON sylius.* TO 'sylius_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Installing Nginx

apt install nginx -y
systemctl start nginx
systemctl enable nginx

Verification: open http://your-ip in browser — should see standard Nginx page.

Installing Composer

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer

Verification:

composer --version

Installing Node.js 20 LTS

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install nodejs -y

Install Yarn (recommended over npm):

npm install -g yarn

Verification:

node -v

Installing Sylius

Now install the store itself.

Creating Project via Composer

cd /var/www
composer create-project sylius/sylius-standard myshop

Process takes 5-10 minutes — Composer downloads all project dependencies.

Setting Permissions

cd myshop
chown -R www-dаta:www-data .
chmod -R 755 .
chmod -R 775 var/cache var/log public/media

Environment Configuration

Copy environment variables file:

cp .env .env.local

Edit .env.local:

nano .env.local

Key parameters:

APP_ENV=prod
APP_SECRET=generate_random_32_character_string

DATABASE_URL="mysql://sylius_user:your_password@127.0.0.1:3306/sylius?serverVersion=8.0"

MAILER_DSN=smtp://your_email@gmail.com:app_password@smtp.gmail.com:587

Important for APP_SECRET: generate random string, for example via:

openssl rand -hex 16

For Gmail: use App Password, not main account password.

Installing Frontend Dependencies

yarn install

Build jаvascript and CSS:

yarn build

For production mode use:

yarn build

Running Sylius Installation

Execute installation wizard:

php bin/console sylius:install

Wizard will ask:

Database: already configured in .env.local, press Enter

Create administrator? → yes

Enter admin dаta:

  • Email: admin@example.com
  • Password: minimum 8 characters

Configure store? → yes

Store parameters:

  • Name: My Store
  • Currency: USD (or EUR, GBP)
  • Locale: en_US

Installation completes in 2-3 minutes.

Cache Clearing

php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod

Configuring Nginx

nano /etc/nginx/sites-available/sylius

Create virtual host configuration:

Insert following configuration:

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    root /var/www/myshop/public;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    location ~ \.php$ {
        return 404;
    }

    error_log /var/log/nginx/sylius_error.log;
    access_log /var/log/nginx/sylius_access.log;
}

Activate configuration:

ln -s /etc/nginx/sites-available/sylius /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Installing SSL Certificate

For security, HTTPS is mandatory.

Install Certbot

apt install certbot python3-certbot-nginx -y

Obtain Let's Encrypt Certificate

certbot --nginx -d your-domain.com -d www.your-domain.com

Certbot automatically:

  • Obtains free SSL certificate
  • Configures Nginx for HTTPS
  • Sets up auto-renewal

Store now accessible at: https://your-domain.com

First Store Launch

Open in browser https://your-domain.com — should see store storefront.

To access admin panel, go to https://your-domain.com/admin

Login: email you specified during installation Password: what you set

Done! Basic Sylius installation complete. You now have a working online store on your own server.

Further store configuration (adding products, categories, setting up shipping and payment) is done through admin panel — that's a topic for separate article.

Basic Optimization

A few simple steps to improve performance.

Symfony Caching

Ensure cache is warmed:

php bin/console cache:warmup --env=prod

Redis Setup (optional)

Redis significantly speeds up cache and sessions.

Installation:

apt install redis-server -y
systemctl start redis
systemctl enable redis

PHP extension:

apt install php8.3-redis -y
systemctl restart php8.3-fpm

Configuration in .env.local:

REDIS_HOST=127.0.0.1

Redis usage configuration described in Symfony documentation.

Queues for Background Tasks

For email sending and other background operations, configure Supervisor.

Installation:

apt install supervisor -y

Configuration (/etc/supervisor/conf.d/sylius-messenger.conf):

[program:sylius-messenger]
command=php /var/www/myshop/bin/console messenger:consume async --time-limit=3600
user=www-data
numprocs=2
startsecs=0
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d

Apply:

supervisorctl reread
supervisorctl update
supervisorctl start sylius-messenger:*

Security

Basic store protection measures.

UFW Firewall

apt install ufw -y
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Fail2Ban for Brute-force Protection

apt install fail2ban -y
systemctl start fail2ban
systemctl enable fail2ban

Automatic Database Backups

Create script /root/backup-sylius.sh:

#!/bin/bash
DATE=$(date +%Y-%m-%d)
mysqldump -u sylius_user -p'your_password' sylius | gzip > /root/backups/sylius_$DATE.sql.gz
find /root/backups/ -name "sylius_*.sql.gz" -mtime +7 -delete

Execution permissions:

mkdir -p /root/backups
chmod +x /root/backup-sylius.sh

Add to cron (nightly at 3 AM):

crontab -e

Add line:

0 3 * * * /root/backup-sylius.sh

Important: Store backups on separate server or cloud (AWS S3, Backblaze B2).

What's Next

After installing Sylius, your next step is store configuration:

Basic Store Setup:

  • Creating product categories (taxons)
  • Adding attributes and options
  • Uploading products and prices
  • Configuring payment methods
  • Setting up shipping

Integrations:

  • Connecting payment systems (Stripe, PayPal, Mollie)
  • Accounting integration
  • Connecting shipping services
  • Setting up analytics

Advanced Features:

  • Headless commerce with separate frontend
  • Elasticsearch for fast search
  • Multi-channel sales
  • B2B functionality

Each of these topics deserves separate article — stay tuned for knowledge base updates.

Conclusion

You've successfully installed Sylius on your own VPS. Now you have a full-featured online store on Symfony without monthly subscriptions and with complete platform control.

THE.Hosting provides reliable infrastructure for Sylius:

  • NVMe drives for fast Symfony performance
  • Servers in 50+ global locations
  • Anti-DDoS protection
  • Round-the-clock technical support

Next step — fill store with products, configure payments and shipping, launch marketing. Technical foundation ready, everything else depends on your products and service.

Good luck with your business!

Order VPS for Sylius

Frequently Asked Questions

Is PHP knowledge mandatory for Sylius installation?

For basic installation following instructions — not mandatory. But for customizing store to business requirements — yes, PHP knowledge and preferably Symfony needed.

Can I use Apache instead of Nginx?

Yes, Sylius works with Apache 2.4+. Need to enable mod_rewrite and configure virtual host similar to Nginx.

How long does installation take?

If executing all commands sequentially without distractions — about an hour. With experience, reduce to 30 minutes.

Do I need to pay for Sylius?

Base version is completely free under MIT license. There's commercial Sylius Plus with extended modules, but it's optional.

How to update Sylius?

Via Composer: composer update, then php bin/console doctrine:migrations:migrate and cache clearing. Always backup before updating.

Can I run multiple stores on one VPS?

Yes, possible. Sylius supports multi-channel (multiple storefronts on one installation) or you can install multiple independent Sylius instances.

Will VPS with 2GB RAM work?

For testing — yes. For production minimum 4GB, we recommend 8GB for comfortable operation.

Other articles

12.02.2026
10
Knowledge base / Review
Easypanel: Docker Panel for Modern Applications
12.02.2026
9
Knowledge base / Review
Free Control Panel from a Russian Provider
12.02.2026
11
Knowledge base / Instructions
Bagisto: Build Your E-commerce Store with Laravel in a Weekend