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!
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.