DeployManage, server management for any cloud
Connect a server, point a site at its GitHub, GitLab or Bitbucket repository and push. DeployManage clones every release into a fresh folder, links the shared .env and storage, runs your deploy script there and switches the live symlink in one step, so visitors never hit a half updated codebase. Laravel, Symfony, WordPress and plain PHP apps on PHP 8.1 to 8.4.
One-time demo, no credit card required.
Deployer, Envoyer, DeployHQ and Laravel Forge figures read from their own sites and READMEs in October 2026. Your servers stay in your own cloud account.
| Server | Provider | Load |
|---|---|---|
|
web-01.prod
fsn1
|
Hetzner |
32%
|
|
web-02.prod
fsn1
|
Hetzner |
47%
|
|
db-01.prod
fra1
|
DigitalOcean |
18%
|
|
worker-01
eu-central-1
|
AWS |
61%
|
|
mail-01
gra
|
OVHcloud |
9%
|
A PHP deployment tool takes code from git and puts it on a server without breaking the live site. The safe pattern, used by Deployer, Envoyer and DeployManage, is a new release directory per deploy and an atomic symlink switch at the end. Deployer is a free command line tool you run and maintain yourself; Envoyer ($10 to $50 a month) deploys PHP to servers you already built; DeployManage ($59 to $299 a month, half price billed yearly) also provisions the server, installs PHP and Nginx, runs queue workers and gives a team seats and an activity log.
Most PHP deployments start as a shell script or an FTP upload that one developer runs. It works until the second developer joins, or until a Composer install fails halfway and the site serves a broken vendor folder for four minutes while someone fixes it over SSH.
A deployment tool fixes three things at once. Every release builds next to the live one instead of on top of it, every deploy is recorded with who ran it and which commit went out, and going back means redeploying a known good commit rather than reconstructing yesterday's files by hand.
Each deploy clones the branch into releases/<timestamp> next to the live code. The current release keeps serving traffic while the new one installs, so a slow Composer run or a failed build never touches what visitors see. Atomic releases are on the Growth and Business plans.
When your script finishes without an error, the current symlink is replaced in a single rename and PHP-FPM reloads. If the script exits non zero, the switch never happens and the previous release stays live.
The default script runs composer install with --no-dev and an optimized autoloader. When the repo has an artisan file it also runs migrate --force, caches config, routes and views, and restarts queue workers. Edit the script for Symfony, WordPress or anything else.
The site's .env lives once at the site root and is linked into every release, and the storage directory is moved out and shared, so uploads, sessions and logs survive each deploy instead of being reset.
Connect the repository and branch per site. Quick deploy adds a signed webhook so a push to the branch starts a release, or keep it manual and press Deploy when you are ready.
Create servers on DigitalOcean or Hetzner Cloud straight from the panel, or run one install command as root on any Ubuntu box at AWS, Vultr, Linode or OVHcloud. Nginx, PHP-FPM, Composer, MySQL or Postgres, Redis, Supervisor, cron, a firewall and Let's Encrypt are set up the same way on each.
Pick the PHP version for each site, so an older app on 8.1 and a new one on 8.4 can share a server. The web root is configurable per site, which covers Laravel's public directory, Symfony's public directory and a WordPress root alike.
Long running PHP processes run under Supervisor and restart after a deploy, and cron jobs are managed from the same screen. No separate process manager to install or babysit.
Every deploy, server change and site change is recorded against the team member who made it. Starter includes 2 members, Growth 10 and Business unlimited, so contractors get their own login instead of a shared SSH key.
Paste a DigitalOcean or Hetzner token and launch a server in a US region, or run the one line installer on an Ubuntu server you already have at any provider.
Choose the project type (General PHP or Laravel, Symfony, WordPress or static HTML), the PHP version and the web directory, then connect the repository and branch.
Add the .env contents once. Read the default deploy script, which runs inside the new release, and add your own steps such as a Symfony cache warmup or wp-config linking.
Press Deploy or push to the branch with quick deploy on. Watch the log live, and the release goes live only when every step has passed.
The tools below all get PHP code from git onto a server. They differ in who runs them, whether they build the server too, and what the monthly bill covers. Prices are list prices in USD unless marked.
swipe to see all columns →
| What you are comparing | DeployManage | Deployer | Envoyer | DeployHQ | Laravel Forge |
|---|---|---|---|---|---|
| What it is | Server panel with atomic deploys on your servers | Open source command line deploy tool | Hosted zero downtime deploys for PHP | Hosted deployment service | Laravel server panel with deploys |
| Price | $59, $129 or $299 a month; half price billed yearly | No licence fee (MIT), you run it | $10, $20 or $50 a month | Free tier, then EUR 9, 19, 39 or 99 a month | $12, $19 or $39 a month |
| Builds and patches the server | Yes, Nginx, PHP-FPM, database, Redis, Supervisor | No, you prepare the server | No, connects to existing servers | No, connects to existing servers | Yes |
| Release folders and symlink switch | Yes, Growth and Business | Yes | Yes | Yes, zero downtime deployments | Yes, one server per site |
| Where deploys run | From the panel or on git push | From your laptop or CI job | From Envoyer on git push | From DeployHQ on git push | From Forge on git push |
| Team access | 2, 10 or unlimited members with an activity log | Whoever has the SSH key | Unlimited members on every tier | Varies by plan | Varies by plan |
| Queue workers and cron | Managed in the panel | Not included | Not included | Not included | Managed in the panel |
| Best for | Teams and agencies running several PHP apps on their own servers | One developer who is happy maintaining scripts | Teams with servers already built who only need deploys | Mixed stacks deploying over SSH or SFTP | Laravel shops on a budget with one server per site |
Laravel apps, a few Symfony projects and a handful of WordPress sites, spread over four or five servers. One panel holds them all, each client site deploys the same way, and contractors get their own seats instead of the agency's root key.
The script lives on one laptop and does git pull in the live directory. Moving to release folders removes the minutes of broken pages during composer install, and the deploy log shows who shipped what.
Deployer's recipe model is good, but someone has to keep PHP, the deploy host and the SSH keys in order. A hosted tool keeps the same release folder pattern and adds a UI, webhooks and permissions.
Security reviews, cloud credits or a client contract can rule out a managed platform. The servers here stay in your DigitalOcean, Hetzner, AWS, Vultr, Linode or OVHcloud account and on your own invoice.
For a team or agency running several PHP apps on its own servers, the best PHP deployment tool is one that also builds the servers and runs the workers, and DeployManage Growth at $129 a month covers 10 servers, 50 sites per server and 10 members with atomic releases. For a single developer who is comfortable maintaining scripts, Deployer is the strongest choice and has no licence fee. For a team whose servers are already built and only needs deploys, Envoyer at $10 to $50 a month is cheaper.
The honest split is about scope. Deployer, Envoyer and DeployHQ deploy code. Laravel Forge and DeployManage deploy code and also install and patch the server underneath it. If you already have a sysadmin keeping Nginx, PHP and Supervisor in shape, a deploy only tool is enough. If nobody on the team wants that job, the panel is what you are really buying.
Laravel Forge is the cheaper panel at $12 to $39 a month. Its native zero downtime deploys are limited to one server per site, which is fine for most apps. DeployManage costs more and is aimed at teams that want more seats, a per member activity log and several PHP frameworks in one place.
Build each release in a new directory, finish every install and build step there, then switch a symlink that the web server points at. Because the switch is a single filesystem rename, requests either hit the old release or the new one, never a mix. Shared files such as .env, uploads and logs live outside the release folders and are linked in.
In DeployManage the layout on the server looks like this:
releases/20261009120000, one folder per deploy, the newest five are keptcurrent, a symlink to the live release, which Nginx serves.env and storage, kept once at the site root and linked into each releaseYour deploy script runs inside the new release with DM_RELEASE_DIR and DM_COMMIT set, so a step such as php bin/console cache:warmup or a WordPress uploads link works without hard coded paths. If any command fails, the script stops and current keeps pointing at the old release.
One thing a symlink switch cannot fix on its own is a database migration that breaks the old code. Add columns before you use them and drop them a release later, and both releases can run against the same schema for the seconds the switch takes.
Install a web server and PHP-FPM on the server, put the code in a directory the web server serves, install dependencies with Composer, write the environment file and point a domain at it with TLS. Every later deploy repeats the code and dependency steps.
Done by hand, that first setup is an afternoon of apt installs, an Nginx server block, a PHP-FPM pool, a Let's Encrypt certificate and a Supervisor config if the app has queue workers. The repeat steps are where most outages happen, because git pull and composer install in the live directory leave the site half updated while they run.
A deployment tool turns the first setup into a form and the repeat steps into a button or a push. With DeployManage you create the server, add the site with its domain, project type and PHP version, connect the repository and press Deploy. The certificate is issued with Let's Encrypt from the site screen.
Deployer is a free, MIT licensed PHP tool that deploys over SSH from your machine or a CI job, with recipes for Laravel, Symfony, WordPress and other frameworks, release folders and rollback. It is excellent at the deploy itself. What it leaves to you is everything around it.
| Job | With Deployer | With DeployManage |
|---|---|---|
| Run the deploy | dep deploy from a laptop or a CI pipeline you maintain | A button or a git push webhook |
| Build the server | Separate scripts, Ansible or by hand | Included, same stack on every server |
| Who can deploy | Whoever holds the SSH key | Named members, each action logged |
| Queue workers | Your own Supervisor config | Managed per site |
| Software cost | None, plus the hours to maintain it | $59 to $299 a month |
If one person deploys one or two apps, stay on Deployer. The case for paying starts when several people deploy, when servers multiply, or when the developer who wrote the recipes leaves.
Between nothing and about $300 a month for the software, plus the servers. Deployer has no licence fee. Envoyer is $10, $20 or $50 a month by project count with unlimited members. DeployHQ has a free tier and paid plans of EUR 9 to EUR 99 a month. Laravel Forge is $12, $19 or $39 a month. DeployManage is $59 (3 servers, 2 members), $129 (10 servers, 10 members, atomic releases and quick deploy) or $299 (unlimited), and half that per month when billed yearly.
A worked example for a small agency with 12 PHP sites on two 4 GB servers at $24 each:
| Setup | Servers | Software | Monthly total |
|---|---|---|---|
| Deployer, servers built by hand | $48 | $0 | $48 plus maintenance time |
| Envoyer Plus (20 projects), servers built by hand | $48 | $20 | $68 |
| Laravel Forge Growth | $48 | $19 | $67 |
| DeployManage Growth, monthly | $48 | $129 | $177 |
| DeployManage Growth, billed yearly | $48 | $64 | $112 |
On price alone Forge and Envoyer win this table, and we would rather say so than have you find out later. What the DeployManage line pays for is that nobody on the team builds servers or keeps Supervisor configs, that 10 people get their own logins with an activity log, and that Laravel, Symfony and WordPress sites run on the same panel.
Any PHP application that installs with Composer or ships as plain files. The project types in the site form are General PHP or Laravel, Symfony, WordPress and static HTML, and the deploy script is yours to edit, so Statamic, Craft CMS, Drupal, Slim or a legacy app without a framework deploy the same way.
Framework pages with worked setups:
The provisioning script installs PHP and Composer but not Node. If your release builds front end assets, build them in CI and commit or upload the result, or install Node on the server once and call npm from the deploy script.
Yes. Redeploy the last known good commit and it goes live as a new release through the same symlink switch, usually in under a minute for a typical Composer app. The five most recent release folders stay on disk, which keeps the previous code available while you investigate.
Rolling back code does not roll back the database. If the bad release ran a migration, write a follow up migration rather than restoring a backup over live data, unless the data itself is damaged.
Ready to stop managing servers by hand? DeployManage provisions, deploys and monitors your fleet from one dashboard.
Get startedFor teams running several PHP apps on their own servers, a panel that deploys and also builds the servers, such as DeployManage Growth at $129 a month. For one developer, Deployer has no licence fee and does atomic deploys over SSH. For deploy only on servers you already run, Envoyer costs $10 to $50 a month.
Build each release in a new directory, run Composer and any build or migration steps there, then switch a symlink that the web server serves. The switch is one rename, so requests never see a half installed release. Keep .env, uploads and logs in a shared directory linked into each release.
Yes. Deployer is open source under the MIT licence and has no fee. You run it yourself from a laptop or a CI job and keep the recipes, the SSH keys and the servers in order. Hosted tools charge for running that for you and for the parts Deployer does not cover.
Yes. Symfony, WordPress, General PHP and static HTML are project types when you add a site, the PHP version is set per site from 8.1 to 8.4, and the deploy script is editable, so Craft CMS, Statamic and Drupal deploy with the same release folder flow.
Yes. Each site connects to a GitHub, GitLab or Bitbucket repository, or any git URL, and a branch. With quick deploy on (Growth and Business), a push to that branch starts a release through a signed webhook. Without it, you press Deploy in the panel.
Atomic releases with release folders and the symlink switch are on Growth ($129 a month, or $64 billed yearly) and Business ($299, or $149 billed yearly). Starter at $59 deploys in place and suits sites where a few seconds of reload during a deploy are acceptable.
Less than you would without one. DeployManage installs and configures Nginx, PHP-FPM, the database, Redis, Supervisor, cron, the firewall and certificates for you. You still need to read your deploy log and understand your own app's build steps, but not write server configs.
Connect a server, add a site from GitHub, GitLab or Bitbucket and push your first release. Every account starts with a one-time demo, no card required.