DeployManage, server management for any cloud
Stay in your AWS account and replace Beanstalk environments with EC2 instances you control. DeployManage builds the server, deploys every push as an atomic release, keeps queue workers and the scheduler running under Supervisor and cron, and skips the .platform hooks and worker environments.
One-time demo, no credit card required.
Elastic Beanstalk examples and EC2, EBS, IPv4 and load balancer rates read from AWS's own pricing pages, US East (N. Virginia), October 2026.
| 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%
|
The best AWS Elastic Beanstalk alternative for a PHP or Laravel team is usually plain EC2 in the same AWS account with a deployment panel on top: you keep your VPC, RDS database and credits, and drop the load balancer that every load balanced environment adds (about $22 a month each) and the separate worker environment queues often need. Elastic Beanstalk itself is free, so for a single app it is hard to beat on price. It gets expensive and slow once you run staging plus production for several apps. For container apps, ECS on Fargate is the AWS native step up. DeployManage runs PHP apps on EC2 from $59 a month (Starter, 3 servers); zero downtime releases need Growth at $129.
Beanstalk is a good first deploy. You upload a zip, it builds an Auto Scaling group, a load balancer and a security group, and the app is live. The friction shows up later, in the parts a Laravel or Symfony app needs every day: the document root has to be pointed at /public in an option setting, queue workers need a .platform hook or a separate SQS worker environment, the scheduler needs cron.yaml in that worker environment, and anything you change over SSH vanishes when the instance is replaced.
Deploys get slow too. An immutable deploy launches fresh instances and waits for health checks before it swaps them in, and a failed hook means reading eb-engine.log on an instance that might be gone by the time you look. Teams that leave Beanstalk rarely leave AWS. They want the same EC2, the same RDS and a deploy they can read.
Paste AWS credentials, pick a region and instance type. DeployManage launches the instance, opens only ports 22, 80 and 443 and installs Nginx, PHP-FPM with intl, gd, bcmath, opcache and redis, Composer, Redis, Supervisor and MySQL, MariaDB or Postgres if you want the database local.
Each push runs composer install, your build step and migrations in a new release directory, then switches one symlink. No new instances, no wait for a health check cycle. Growth and Business plans.
queue:work or Horizon runs under Supervisor on the same instance and restarts after each release. No sqsd daemon posting jobs to an HTTP endpoint and no second set of instances to pay for.
schedule:run gets its cron line when the site is created. On Beanstalk that is cron.yaml in a worker environment or a hook you maintain yourself.
The last five releases stay on disk. Rolling back flips the symlink to the previous one. On Beanstalk a rollback is a redeploy of an older application version to every instance.
Developers deploy from the panel with their own seat: two on Starter, 10 on Growth, unlimited on Business. Every deploy, rollback and key change lands in an audit log you can export.
Create an IAM user or access key scoped to EC2 and paste it in. Instances are launched in your account, your VPC and on your existing bill and credits.
Use the same region and VPC as the Beanstalk environment so the instance reaches the same RDS database. A t3.medium with 4 GiB holds a typical Laravel app with its workers.
Copy environment properties into the site's .env, turn each .platform hook or worker environment into a Supervisor program and each cron.yaml task into a cron entry, then run the first deploy.
Test on the instance IP, lower the Route 53 TTL, point the record at the instance or your own load balancer, and terminate the Beanstalk environment. Its load balancer and instances stop billing then.
AWS rates are on-demand US East (N. Virginia) prices from AWS's pricing pages, 730 hours a month. Panel prices are each vendor's published monthly price in USD, October 2026. Beanstalk itself has no fee, which is why it wins for one small app. Laravel Forge on EC2 is the cheapest panel route for a solo developer.
swipe to see all columns →
| What you are comparing | DeployManage on EC2 | AWS Elastic Beanstalk | ECS on Fargate | Laravel Forge on EC2 | Heroku |
|---|---|---|---|---|---|
| How you are billed | EC2 you size yourself plus a flat panel plan | No fee; you pay for every instance, load balancer and IP it creates | Per task vCPU and GB hour, plus the load balancer | EC2 plus a flat panel plan | Per dyno, per add-on |
| Platform or panel fee | $59 Starter (3 servers), $129 Growth, $299 Business; half price billed yearly | $0 | $0 | $12 Hobby (1 server), $19 Growth, $39 Business | Built into dyno prices |
| Smallest realistic production setup | One t3.small, about $21 a month with a 30 GB disk and IPv4 | About $12 single instance, about $29 load balanced (AWS's examples) | 0.5 vCPU and 1 GB about $18 a month, plus about $22 for a load balancer | One t3.small, about $21 a month | See our Heroku pricing breakdown |
| Queue workers | Supervisor on the same instance, no extra cost | A .platform hook, or a separate worker environment with its own instances | A second service with its own tasks | Supervisor daemons on the same server | A worker dyno each |
| Deploy speed | Seconds: a new release directory and a symlink switch | Minutes for rolling or immutable deploys | Minutes: image build, push, task replacement | Seconds, zero downtime on one server per site | Minutes: slug build and dyno restart |
| Rollback | One click to any of the last five releases | Redeploy an older application version | Redeploy a previous task definition | Redeploy a commit | Rollback to a previous release |
| Root and SSH | Yes, the instance is yours and persists | Yes, but instances are replaceable and changes are lost | No host access | Yes | No |
| Best for | Teams and agencies with several PHP apps and environments | One app that fits the platform defaults | Container apps in any language that need autoscaling | A solo Laravel developer on one or two servers | Teams that want no AWS account at all |
Two load balanced environments per app means two load balancers before a single request. Five apps is ten of them, about $220 a month just for the load balancers. On EC2, staging and production share one Nginx per instance.
On Beanstalk that is a web environment, a worker environment, cron.yaml and an SQS queue, or a stack of .platform hooks to keep Supervisor alive. On EC2 it is one instance with three Supervisor programs and a cron line.
Each client gets an environment, a load balancer and an IAM story. With a panel, clients share or get their own instances, developers get seats instead of IAM users, and the audit log shows who deployed what.
A failed hook leaves a red environment and a log on an instance that may already be replaced. A failed release on DeployManage leaves the old release live and the full deploy output in the panel.
For PHP and Laravel apps, the best alternative to AWS Elastic Beanstalk is plain EC2 in the same AWS account with a deployment panel, because you keep your VPC, RDS database, IAM setup and credits while dropping the per environment load balancers and worker environments that make Beanstalk slow and costly at scale. For container apps in Node, Python or Go that need autoscaling, ECS on Fargate is the AWS native next step.
Which one fits depends on what is wrong today. If the problem is cost across many environments, EC2 with a panel. If it is deploy speed and hooks, the same. If you want to leave AWS entirely and never patch a server, a platform like Heroku or Laravel Cloud is the answer, at a higher price per GB of memory. Our Elastic Beanstalk vs EC2 cost breakdown works through five monthly bills if you want the arithmetic first.
Elastic Beanstalk has no charge of its own, but it is not free to run: you pay for every EC2 instance, EBS volume, public IPv4 address and load balancer it creates. AWS's own examples put a single instance environment on a t3.micro at about $12 a month and a load balanced one at about $29, with each extra autoscaled instance adding about $12.75. Cluster mode adds an EKS control plane at about $72 a month on top.
Teams move off Elastic Beanstalk for three reasons: the bill multiplies with environments rather than traffic, deploys take minutes because rolling and immutable policies replace instances, and anything beyond the platform defaults (workers, cron, custom Nginx, PHP extensions) has to be scripted in .ebextensions or .platform hooks. None of that is a bug. Beanstalk is built to own the instances, so changes you make by hand are not supposed to survive.
For a PHP app the hooks are where time goes. Laravel needs the document root set to /public, storage permissions after each deploy, a queue worker that restarts on release and a scheduler that runs on exactly one instance. Each is a small file in the bundle, and each fails in its own quiet way.
For one app, Elastic Beanstalk is about the same or cheaper. From two or three apps with staging, plain EC2 with a panel usually costs less, because load balancers and worker environments stop multiplying. These bills use US East on-demand rates and leave out RDS, which costs the same either way.
| Workload | Elastic Beanstalk | EC2 plus DeployManage | EC2 plus Laravel Forge |
|---|---|---|---|
| One Laravel app: load balanced production on a t3.small, a single instance worker environment, a t3.micro staging environment | About $73 | About $116.65 on Starter (one t3.medium, one t3.small staging), $186.65 on Growth with zero downtime | About $76.65 on Growth ($19) |
| Five apps, same shape each | About $366 | About $223 on Growth (two t3.medium for production, one t3.small for staging) | About $113 on Growth, zero downtime on one server per site only |
| Five apps plus a second production instance each behind a load balancer | About $430 to $465 with the extra autoscaled instances | About $318 on Growth with one shared load balancer and four t3.medium production instances | About $208, plus Envoyer for multi server zero downtime |
The Beanstalk figures add up a t3.small web environment with a load balancer (instance $15.18, root volume $0.64, IPv4 $3.65, load balancer about $22.27), a t3.small worker environment without one (about $19.47) and a t3.micro staging environment (about $12). The EC2 figures use a t3.medium at $30.37 and a t3.small at $15.18, each with a 30 GB gp3 volume and a public IPv4 address. Forge is the cheapest route in every row and we say so. DeployManage is priced for teams that need seats, an audit log and atomic releases across several servers.
EC2 is the virtual machine; Elastic Beanstalk is an orchestration layer that launches EC2 instances, an Auto Scaling group and usually a load balancer, then puts your code on them. With Beanstalk, AWS owns the shape of the server and you configure it through option settings and hooks. With EC2 and a panel, you own the server and the panel handles the build, deploy and process supervision. The underlying compute bill for the same instance is identical.
Yes, in two ways: a .platform hook or .ebextensions config that installs Supervisor and starts queue:work on each web instance, or a separate worker environment where the sqsd daemon reads Amazon SQS and posts each job to an HTTP route in your app. The first must be kept working across platform updates. The second needs its own instances and changes how jobs are delivered, which is why many Laravel teams end up running Horizon on plain EC2 instead. Our guide to Laravel queue workers with Supervisor shows the setup DeployManage writes for you.
ECS on Fargate is a good Elastic Beanstalk replacement for containerized apps that need to scale out on demand, but it asks more of a PHP team: you build and push images, write task definitions and still pay for a load balancer. A 0.5 vCPU, 1 GB task runs about $18 a month before the load balancer. If your app is a classic PHP codebase without a Dockerfile and your traffic is steady, EC2 with a panel is the shorter path.
Ready to stop managing servers by hand? DeployManage provisions, deploys and monitors your fleet from one dashboard.
Get startedFor PHP and Laravel apps, plain EC2 in the same AWS account with a deployment panel such as DeployManage or Laravel Forge, because you keep RDS, the VPC and credits while dropping per environment load balancers and worker environments. For autoscaling container apps, ECS on Fargate.
There is no charge for Elastic Beanstalk itself. You pay for the EC2 instances, volumes, public IPv4 addresses and load balancers it creates. AWS's examples put a single instance environment at about $12 a month and a load balanced one at about $29.
Not for identical resources, because it runs on EC2. It costs more in practice because every load balanced environment gets its own load balancer, staging is a full second environment and queues often need a separate worker environment.
Yes. Launch the EC2 instance in the same VPC and give its security group access to the RDS instance. If the database was created inside the Beanstalk environment, decouple it first or take a snapshot, because terminating the environment can delete it.
For a typical Laravel app, an afternoon: launch the instance, copy environment properties into .env, convert hooks to Supervisor programs and cron entries, deploy, test on the instance IP and switch DNS. Most of the time goes into reading the existing .ebextensions files.
Yes, on the Growth and Business plans. Each push is built in a new release directory and switched in with one symlink change, across every instance attached to the site, with the last five releases kept for rollback.
Yes. Forge is $12 to $39 a month and is the cheapest panel for a solo developer. Its native zero downtime deploys cover one server per site. DeployManage costs $59 to $299 and adds team seats, an audit log and atomic releases across several servers.
Starter is $59 a month for 3 servers and 2 members, Growth $129 for 10 servers and 10 members, Business $299 for unlimited servers. Yearly billing is half price. Every account starts with a one-time demo, no card required. AWS bills you directly for EC2.
Connect your AWS account, launch an EC2 instance next to your RDS database and run your first atomic deploy with workers and cron already in place. Every account starts with a one-time demo, no card required.