The most basic way of deploying an application is copying the files manually
via ftp/scp (or similar method). This has its disadvantages as you lack control
over the system as the upgrade progresses. This method also requires you
to take some manual steps after transferring the files (see Common Post-Deployment Tasks)

If you're using source control (e.g. git or svn), you can simplify by having
your live installation also be a copy of your repository. When you're ready
to upgrade it is as simple as fetching the latest updates from your source
control system.

There are also high-quality tools to help ease the pain of deployment. There
are even a few tools which have been specifically tailored to the requirements of
Symfony2, and which take special care to ensure that everything before, during,
and after a deployment has gone correctly.

This file should be customized on each system. The method you use to
deploy your source code should not deploy this file. Instead, you should
set it up manually (or via some build process) on your server(s).

Your vendors can be updated before transferring your source code (i.e.
update the vendor/ directory, then transfer that with your source
code) or afterwards on the server. Either way, just update your vendors
as your normally do:

1

$ php composer.phar install --optimize-autoloader

Tip

The --optimize-autoloader flag makes Composer's autoloader more
performant by building a "class map".

While this entry covers the technical details of deploying, the full lifecycle
of taking code from development up to production may have a lot more steps
(think deploying to staging, QA, running tests, etc).

The use of staging, testing, QA, continuous integration, database migrations
and the capability to roll back in case of failure are all strongly advised. There
are simple and more complex tools and one can make the deployment as easy
(or sophisticated) as your environment requires.

You can of course use shell, Ant, or any other build tool to script
the deploying of your project.

Platform as a Service Providers:

PaaS is a relatively new way to deploy your application. Typically a PaaS
will use a single configuration file in your project's root directory to
determine how to build an environment on the fly that supports your software.
One provider with confirmed Symfony2 support is PagodaBox.

Tip

Looking for more? Talk to the community on the Symfony IRC channel #symfony
(on freenode) for more information.