October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

How to Install and Get Started With Symfony on an Ubuntu VPS

Install Symfony on an Ubuntu VPS with the supported PHP runtime, Composer, Symfony CLI, Nginx and PHP-FPM. This guide covers new and existing projects, permissions, environment configuration, deployment choices and troubleshooting.
Length10 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To run Symfony on an Ubuntu VPS, install PHP 8.4 or newer with the extensions required by the current Symfony setup documentation, Composer, Git, and a production web server. Symfony CLI is optional: it checks requirements and makes project creation and local development easier, but its development server is not a production web server. For production, point Nginx or Apache at the project’s public/ directory and connect it to PHP-FPM.

What the finished setup looks like

A Symfony VPS deployment has three distinct layers. Ubuntu provides the operating system and process permissions. Nginx (or Apache, Caddy, or FrankenPHP) accepts HTTP requests and serves static files. PHP-FPM executes Symfony’s front controller, normally public/index.php. Symfony itself keeps generated cache and logs under var/.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The document root must be the project’s public/ directory, not the repository root. That directory is intended to contain all public and static files, including images, stylesheets, JavaScript, and the front controller. Keeping the rest of the source tree outside the document root prevents configuration files, vendor code, and application secrets from being requested as web resources.

Prerequisites on Ubuntu

Component What you need How to verify it
PHP PHP 8.4 or higher, as required by the current Symfony setup documentation php -v
PHP extensions Every core extension listed for your Symfony version php -m, followed by Symfony’s requirement check
Composer A working Composer installation for dependency resolution composer --version
Source tools Git for a project repository and unzip for package archives git --version and unzip -v
Web server Nginx or Apache for production; Caddy or FrankenPHP are alternatives Check the service status and listening ports
PHP-FPM Required when Nginx or Apache is used to execute PHP Check the PHP-FPM service and its socket or TCP listener

Ubuntu package names and PHP repositories differ between Ubuntu releases. Install a supported PHP 8.4 build and the extensions named by the Symfony setup page rather than assuming that an older distribution package is sufficient. If Symfony CLI is installed, run symfony check:requirements; it reports missing PHP features and extensions before you spend time debugging an application.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.

Prepare the VPS

1. Install and verify the base software

Use Ubuntu’s package management and your chosen PHP source to install PHP 8.4 or newer, the required extensions, Composer, Git, unzip, Nginx (or another production server), and PHP-FPM. Enable the services you intend to run and make sure the firewall permits only the ports you actually use, normally SSH plus HTTP and HTTPS.

Before creating a project, confirm the command-line PHP and the PHP-FPM version are compatible. A common failure is having PHP 8.4 in the shell while Nginx sends requests to an older FPM pool. Inspect both php -v and the FPM service or socket name, then use the same supported major and minor version in the web-server configuration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

2. Install Symfony CLI (optional)

Symfony CLI is a free, open-source terminal tool. On Ubuntu, follow Symfony’s documented Cloudsmith APT repository setup script, then install the package:

sudo apt install symfony-cli

The official CLI documentation also describes an installer script and standalone binary. The APT package is convenient for a VPS because normal package updates keep the command available system-wide. Confirm installation with:

symfony -v

CLI is not required to serve an existing Symfony application. Composer, PHP, and a correctly configured production web server are the essential runtime pieces.

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed

Create a new Symfony application

Full web application

For a conventional website with Symfony’s web-oriented dependencies, create the project with:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
symfony new --webapp my_project

Change into the new directory before running application commands:

cd my_project

The --webapp option selects the standard web-application setup. It is the practical starting point when the project will render pages, process forms, use sessions, or expose a browser-facing interface.

Minimal, API, microservice, or console application

For a smaller dependency set, use:

symfony new my_project

This is appropriate for an API, microservice, command-line application, or another project where you want to choose components explicitly. The CLI supports version selection with --version, including an LTS choice documented by Symfony. Select a version deliberately when an existing application, PHP release, or support policy requires it instead of always taking the newest release.

Set up an existing Symfony project

An existing repository needs a different sequence from a new project. The repository contains application code, but not necessarily its installed dependencies, production secrets, or database state.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
  1. Clone the repository into the directory you will deploy, such as /var/www/project, using the repository address supplied by your Git provider.
  2. Enter the project directory and install the locked dependencies with composer install. Run Composer as the deployment user where possible, rather than creating a vendor tree owned by an unrelated interactive account.
  3. Provide environment-specific values. Development defaults may live in committed .env files, but production database credentials, mail settings, encryption keys, and other secrets should come from real environment variables or the hosting platform’s configuration mechanism.
  4. Complete the application’s own database setup, migrations, fixtures, file-storage configuration, queue workers, and other documented tasks. Symfony cannot infer these project-specific operations from the framework installation alone.
  5. Inspect the assembled application with:
php bin/console about

The about command displays useful information about the Symfony application and helps confirm that Composer dependencies and the console bootstrap work before you involve Nginx.

Configure environment and writable directories

Production configuration

Do not treat a developer’s local environment as the production configuration. Set real environment variables through the VPS service manager, deployment process, or hosting platform. Keep secrets out of the Git repository and out of publicly readable files. Symfony’s deployment guidance covers environment-variable handling and hosting-specific configuration mechanisms; use the mechanism that matches how your VPS starts PHP-FPM and background workers.

Cache and logs

The web-server account must be able to write the runtime directories used by the application, especially var/cache/ and var/log/. Grant only the access needed by the web-server and deployment users. Avoid making the entire project world-writable: broad permissions hide ownership mistakes and expose files unnecessarily.

After changing ownership or ACLs, test the permissions as the account that runs PHP-FPM. A successful command-line run as your own login does not prove that the web process can create cache files or append logs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Run Symfony during development

Symfony CLI includes a local development server with HTTPS and project-aware conveniences. Start it from the project directory with:

Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
symfony server:start

To leave it running in the background:

symfony server:start -d

Use the accompanying commands when diagnosing a local process:

symfony server:status
symfony server:log
symfony server:stop

server:status shows whether a process is running and helps identify a port conflict. server:log exposes requests and startup errors, while server:stop terminates a background process cleanly.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

This server is for development on the VPS or on a workstation. It is not the production web server: it is not the place to implement your public TLS termination, long-term process supervision, static-file policy, backups, or production observability. Use Nginx, Apache, FrankenPHP, or Caddy for the live site.

Configure Nginx and PHP-FPM for production

Choose the document root and FPM endpoint

Assume the application lives at /var/www/project. Set Nginx’s root to /var/www/project/public. PHP-FPM can listen on a Unix socket, such as /var/run/php/php8.3-fpm.sock, or on a TCP address. The socket example is version-specific; replace it with the socket created by the PHP-FPM version actually installed on your VPS.

Route requests through the front controller

The following pattern serves existing static files directly, sends every other request to Symfony’s front controller, and rejects direct requests for arbitrary PHP files. Using a named location also means a browser cannot simply request /index.php and bypass the public URL structure.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
server {
    listen 80;
    server_name example.com;
    root /var/www/project/public;
    index index.php;

    location / {
        try_files $uri $uri/ @symfony;
    }

    location @symfony {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_param SCRIPT_NAME /index.php;
        fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
    }

    location ~ .php$ {
        return 404;
    }
}

Replace the server name, project path, and FPM socket with your values. If your PHP-FPM pool listens on TCP, use its address in fastcgi_pass instead. The important properties are that only the front controller is executed, the script filename points to the file under public/, and unrelated PHP files return 404 rather than being interpreted.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Validate the configuration

Run Nginx’s configuration test before reloading it, then reload only after the test succeeds. Request a normal Symfony route and a known static asset. Finally, request /index.php directly with a browser or curl. A production configuration should not expose the front controller as a separate public endpoint; if it does, revisit the location ordering and front-controller routing before opening the site to users.

When Nginx returns a 502 or a blank error page, check the FPM service, the socket path, and the SCRIPT_FILENAME value first. A syntactically valid Nginx file can still point to a nonexistent socket or to a path outside the deployed release.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Apache, Caddy, and FrankenPHP alternatives

Nginx with PHP-FPM is common on an Ubuntu VPS, but it is not the only supported production arrangement. Apache also uses PHP-FPM when configured that way. Caddy and FrankenPHP provide different server and process models. Whichever server you choose, preserve the same framework boundaries: expose public/, execute the front controller for application routes, prevent arbitrary PHP execution, and give the runtime directories appropriate write access.

Do not substitute the Symfony CLI development server merely because it is easy to start. The production choice should account for TLS, process supervision, access logs, backups, updates, and the way your application handles workers and scheduled tasks.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Deploying updates safely

A repeatable deployment keeps code, dependencies, configuration, and data changes in a known order:

  1. Fetch the intended revision from version control and place it in the release directory or update the checked-out project.
  2. Run composer install so the deployed vendor tree matches the lock file.
  3. Provide or verify production environment variables before booting the new code.
  4. Perform the database and other application-specific deployment steps documented by the project.
  5. Confirm that var/cache/ and var/log/ remain writable by the PHP-FPM account.
  6. Run php bin/console about, inspect the web-server logs, and exercise a representative public route.
  7. Reload services only when configuration or code requires it, and keep a rollback path for the previous known-good release.

The exact migration, worker restart, asset-build, and cache-warm commands depend on the application. Treat them as part of that project’s deployment contract rather than copying commands from an unrelated Symfony application.

Choose a deployment approach

Approach Operational control Server stack Who handles updates and backups Scaling path Cost guidance
Self-managed Ubuntu VPS Full control over Ubuntu, Nginx, PHP-FPM, firewall, and release process Typically Nginx or Apache with PHP-FPM; Caddy and FrankenPHP are alternatives You are responsible for OS patches, PHP, Symfony, monitoring, backups, and recovery Move to a larger VPS, add workers or a second node, and externalize database or storage as needed Varies with the VPS provider, size, storage, traffic, and backup plan; no universal monthly figure
Managed Symfony hosting Less server access, more platform automation Platform-specific Symfony runtime The provider supplies some updates, observability, and backup features; verify the exact scope Use the platform’s documented scaling controls Terms and included resources vary by provider and region
Symfony Cloud Integrated Symfony deployment workflow rather than hand-built server configuration Managed Symfony hosting stack Platform features cover parts of deployment and operations; confirm current commercial terms and backup guarantees Follow the platform’s environment and scaling model Current pricing and referral terms require verification

Symfony Cloud deployments can be initiated with symfony cloud:deploy when the project is configured for that service. A VPS remains the better fit when you need root access, custom daemons, unusual networking, or complete control over the operating system. A managed platform is attractive when reducing patching and server-maintenance work matters more than that control.

Troubleshooting checklist

Symfony’s requirement check fails

  • Compare the installed PHP version with the current requirement of PHP 8.4 or higher.
  • Compare enabled extensions from php -m with the extensions listed by Symfony’s setup documentation.
  • Remember that the CLI PHP binary and PHP-FPM can use different versions or configuration files.

The local server will not start

  • Run symfony server:status to find an existing process or port conflict.
  • Stop a stale background process with symfony server:stop.
  • Read symfony server:log for certificate, port, or bootstrap errors.

Nginx returns 404, 403, or 502

  • Confirm that root ends in /public, not the repository root.
  • Confirm that the PHP-FPM service is running and that fastcgi_pass names its actual socket or TCP listener.
  • Check the SCRIPT_FILENAME path and Nginx error log.
  • Make sure the web-server account can traverse the project path and write var/cache/ and var/log/.

Unexpected production settings appear

  • Inspect the environment supplied to PHP-FPM and the deployment service.
  • Do not assume values from a developer’s shell or local .env file are present in the service environment.
  • Verify that secrets and environment-specific values were supplied through the real production configuration mechanism.

Direct PHP files are reachable

  • Check the Nginx location order and ensure the generic PHP location returns 404.
  • Ensure the only executed script is the front controller under public/.
  • Test /index.php and another nonexistent PHP path after every server-configuration change.

Final installation checklist

  • PHP 8.4 or newer is installed for both CLI and PHP-FPM.
  • All extensions required by the Symfony version are enabled.
  • Composer, Git, and unzip are available.
  • Symfony CLI is installed if you want requirement checks, project creation, or its local tooling.
  • A new project was created with symfony new --webapp my_project or symfony new my_project, or an existing project was cloned and prepared with composer install.
  • php bin/console about runs successfully.
  • Production environment variables are supplied outside committed development files.
  • Nginx or another production server uses public/ as its document root.
  • PHP-FPM receives only the front controller, while unrelated PHP files return 404.
  • The web-server user can write var/cache/ and var/log/.
  • Direct access to /index.php is rejected, and logs are monitored after deployment.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.