8000 symfony-docs/deployment.rst at 3.0 · symfony/symfony-docs · GitHub
[go: up one dir, main page]

Skip to content
{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":".platform","path":".platform","contentType":"directory"},{"name":"_build","path":"_build","contentType":"directory"},{"name":"_images","path":"_images","contentType":"directory"},{"name":"_includes","path":"_includes","contentType":"directory"},{"name":"assetic","path":"assetic","contentType":"directory"},{"name":"best_practices","path":"best_practices","contentType":"directory"},{"name":"bundles","path":"bundles","contentType":"directory"},{"name":"components","path":"components","contentType":"directory"},{"name":"configuration","path":"configuration","contentType":"directory"},{"name":"console","path":"console","contentType":"directory"},{"name":"contributing","path":"contributing","contentType":"directory"},{"name":"controller","path":"controller","contentType":"directory"},{"name":"create_framework","path":"create_framework","contentType":"directory"},{"name":"debug","path":"debug","contentType":"directory"},{"name":"deployment","path":"deployment","contentType":"directory"},{"name":"doctrine","path":"doctrine","contentType":"directory"},{"name":"email","path":"email","contentType":"directory"},{"name":"event_dispatcher","path":"event_dispatcher","contentType":"directory"},{"name":"form","path":"form","contentType":"directory"},{"name":"frontend","path":"frontend","contentType":"directory"},{"name":"getting_started","path":"getting_started","contentType":"directory"},{"name":"http_cache","path":"http_cache","contentType":"directory"},{"name":"introduction","path":"introduction","contentType":"directory"},{"name":"logging","path":"logging","contentType":"directory"},{"name":"profiler","path":"profiler","contentType":"directory"},{"name":"quick_tour","path":"quick_tour","contentType":"directory"},{"name":"reference","path":"reference","contentType":"directory"},{"name":"request","path":"request","contentType":"directory"},{"name":"routing","path":"routing","contentType":"directory"},{"name":"security","path":"security","contentType":"directory"},{"name":"serializer","path":"serializer","contentType":"directory"},{"name":"service_container","path":"service_container","contentType":"directory"},{"name":"session","path":"session","contentType":"directory"},{"name":"setup","path":"setup","contentType":"directory"},{"name":"templating","path":"templating","contentType":"directory"},{"name":"testing","path":"testing","contentType":"directory"},{"name":"translation","path":"translation","contentType":"directory"},{"name":"validation","path":"validation","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".platform.app.yaml","path":".platform.app.yaml","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"README.markdown","path":"README.markdown","contentType":"file"},{"name":"assetic.rst","path":"assetic.rst","contentType":"file"},{"name":"bundles.rst","path":"bundles.rst","contentType":"file"},{"name":"changelog.rst","path":"changelog.rst","contentType":"file"},{"name":"configuration.rst","path":"configuration.rst","contentType":"file"},{"name":"console.rst","path":"console.rst","contentType":"file"},{"name":"controller.rst","path":"controller.rst","contentType":"file"},{"name":"debug.rst","path":"debug.rst","contentType":"file"},{"name":"deployment.rst","path":"deployment.rst","contentType":"file"},{"name":"doctrine.rst","path":"doctrine.rst","contentType":"file"},{"name":"email.rst","path":"email.rst","contentType":"file"},{"name":"event_dispatcher.rst","path":"event_dispatcher.rst","contentType":"file"},{"name":"expressions.rst","path":"expressions.rst","contentType":"file"},{"name":"forms.rst","path":"forms.rst","contentType":"file"},{"name":"frontend.rst","path":"frontend.rst","contentType":"file"},{"name":"http_cache.rst","path":"http_cache.rst","contentType":"file"},{"name":"index.rst","path":"index.rst","contentType":"file"},{"name":"logging.rst","path":"logging.rst","contentType":"file"},{"name":"page_creation.rst","path":"page_creation.rst","contentType":"file"},{"name":"performance.rst","path":"performance.rst","contentType":"file"},{"name":"profiler.rst","path":"profiler.rst","contentType":"file"},{"name":"request.rst","path":"request.rst","contentType":"file"},{"name":"routing.rst","path":"routing.rst","contentType":"file"},{"name":"security.rst","path":"security.rst","contentType":"file"},{"name":"serializer.rst","path":"serializer.rst","contentType":"file"},{"name":"service_container.rst","path":"service_container.rst","contentType":"file"},{"name":"session.rst","path":"session.rst","contentType":"file"},{"name":"setup.rst","path":"setup.rst","contentType":"file"},{"name":"templating.rst","path":"templating.rst","contentType":"file"},{"name":"testing.rst","path":"testing.rst","contentType":"file"},{"name":"translation.rst","path":"translation.rst","contentType":"file"},{"name":"validation.rst","path":"validation.rst","contentType":"file"}],"totalCount":75}},"fileTreeProcessingTime":8.523008,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":521583,"defaultBranch":"7.3","name":"symfony-docs","ownerLogin":"symfony","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2010-02-17T08:43:51.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/143937?v=4","public":true,"private":false,"isOrgOwned":true},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"3.0","listCacheKey":"v0:1751870253.0","canEdit":false,"refType":"branch","currentOid":"fdadad00a2d72106512b155f462aab1a86f2eaeb"},"path":"deployment.rst","currentUser":null,"blob":{"rawLines":null,"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/symfony/symfony-docs/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"deployment.rst","displayUrl":"https://github.com/symfony/symfony-docs/blob/3.0/deployment.rst?raw=true","headerInfo":{"blobSize":"7.13 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"2d284ea","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fsymfony%2Fsymfony-docs%2Fblob%2F3.0%2Fdeployment.rst","isCSV":false,"isRichtext":true,"toc":[{"level":2,"text":"How to Deploy a Symfony Application","anchor":"how-to-deploy-a-symfony-application","htmlText":"How to Deploy a Symfony Application"},{"level":3,"text":"Symfony Deployment Basics","anchor":"symfony-deployment-basics","htmlText":"Symfony Deployment Basics"},{"level":3,"text":"How to Deploy a Symfony Application","anchor":"how-to-deploy-a-symfony-application-1","htmlText":"How to Deploy a Symfony Application"},{"level":4,"text":"Basic File Transfer","anchor":"basic-file-transfer","htmlText":"Basic File Transfer"},{"level":4,"text":"Using Source Control","anchor":"using-source-control","htmlText":"Using Source Control"},{"level":4,"text":"Using Platforms as a Service","anchor":"using-platforms-as-a-service","htmlText":"Using Platforms as a Service"},{"level":4,"text":"Using Build Scripts and other Tools","anchor":"using-build-scripts-and-other-tools","htmlText":"Using Build Scripts and other Tools"},{"level":3,"text":"Common Post-Deployment Tasks","anchor":"common-post-deployment-tasks","htmlText":"Common Post-Deployment Tasks"},{"level":4,"text":"A) Check Requirements","anchor":"a-check-requirements","htmlText":"A) Check Requirements"},{"level":4,"text":"B) Configure your app/config/parameters.yml File","anchor":"b-configure-your-appconfigparametersyml-file","htmlText":"B) Configure your app/config/parameters.yml File"},{"level":4,"text":"C) Install/Update your Vendors","anchor":"c-installupdate-your-vendors","htmlText":"C) Install/Update your Vendors"},{"level":4,"text":"D) Clear your Symfony Cache","anchor":"d-clear-your-symfony-cache","htmlText":"D) Clear your Symfony Cache"},{"level":4,"text":"E) Dump your Assetic Assets","anchor":"e-dump-your-assetic-assets","htmlText":"E) Dump your Assetic Assets"},{"level":4,"text":"F) Other Things!","anchor":"f-other-things","htmlText":"F) Other Things!"},{"level":3,"text":"Application Lifecycle: Continuous Integration, QA, etc","anchor":"application-lifecycle-continuous-integration-qa-etc","htmlText":"Application Lifecycle: Continuous Integration, QA, etc"}],"lineInfo":{"truncatedLoc":"210","truncatedSloc":"149"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"reStructuredText","languageID":419,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/symfony/symfony-docs/blob/3.0/deployment.rst","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/symfony/symfony-docs/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/symfony/symfony-docs/raw/refs/heads/3.0/deployment.rst","renderImageOrRaw":false,"richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cpre\u003e.. index::\n single: Deployment; Deployment tools\n\n\u003c/pre\u003e\n\u003ca name=\"user-content-how-to-deploy-a-symfony-application\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eHow to Deploy a Symfony Application\u003c/h2\u003e\u003ca id=\"user-content-how-to-deploy-a-symfony-application\" class=\"anchor\" aria-label=\"Permalink: How to Deploy a Symfony Application\" href=\"#how-to-deploy-a-symfony-application\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDeploying a Symfony application can be a complex and varied task depending on\nthe setup and the requirements of your application. This article is not a step-\nby-step guide, but is a general list of the most common requirements and ideas\nfor deployment.\u003c/p\u003e\n\u003ca name=\"user-content-symfony-deployment-basics\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSymfony Deployment Basics\u003c/h3\u003e\u003ca id=\"user-content-symfony-deployment-basics\" class=\"anchor\" aria-label=\"Permalink: Symfony Deployment Basics\" href=\"#symfony-deployment-basics\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe typical steps taken while deploying a Symfony application include:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003eUpload your code to the production server;\u003c/li\u003e\n\u003cli\u003eInstall your vendor dependencies (typically done via Composer and may be done\nbefore uploading);\u003c/li\u003e\n\u003cli\u003eRunning database migrations or similar tasks to update any changed data structures;\u003c/li\u003e\n\u003cli\u003eClearing (and optionally, warming up) your cache.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003eA deployment may also include other tasks, such as:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eTagging a particular version of your code as a release in your source control\nrepository;\u003c/li\u003e\n\u003cli\u003eCreating a temporary staging area to build your updated setup \"offline\";\u003c/li\u003e\n\u003cli\u003eRunning any tests available to ensure code and/or server stability;\u003c/li\u003e\n\u003cli\u003eRemoval of any unnecessary files from the \u003ccode\u003eweb/\u003c/code\u003e directory to keep your\nproduction environment clean;\u003c/li\u003e\n\u003cli\u003eClearing of external cache systems (like \u003ca href=\"http://memcached.org/\" rel=\"nofollow\"\u003eMemcached\u003c/a\u003e or \u003ca href=\"http://redis.io/\" rel=\"nofollow\"\u003eRedis\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ca name=\"user-content-id1\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eHow to Deploy a Symfony Application\u003c/h3\u003e\u003ca id=\"user-content-how-to-deploy-a-symfony-application-1\" class=\"anchor\" aria-label=\"Permalink: How to Deploy a Symfony Application\" href=\"#how-to-deploy-a-symfony-application-1\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThere are several ways you can deploy a Symfony application. Start with a few\nbasic deployment strategies and build up from there.\u003c/p\u003e\n\u003ca name=\"user-content-basic-file-transfer\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBasic File Transfer\u003c/h4\u003e\u003ca id=\"user-content-basic-file-transfer\" class=\"anchor\" aria-label=\"Permalink: Basic File Transfer\" href=\"#basic-file-transfer\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe most basic way of deploying an application is copying the files manually\nvia FTP/SCP (or similar method). This has its disadvantages as you lack control\nover the system as the upgrade progresses. This method also requires you\nto take some manual steps after transferring the files (see \u003ca href=\"#common-post-deployment-tasks\"\u003eCommon Post-Deployment Tasks\u003c/a\u003e)\u003c/p\u003e\n\u003ca name=\"user-content-using-source-control\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsing Source Control\u003c/h4\u003e\u003ca id=\"user-content-using-source-control\" class=\"anchor\" aria-label=\"Permalink: Using Source Control\" href=\"#using-source-control\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf you're using source control (e.g. Git or SVN), you can simplify by having\nyour live installation also be a copy of your repository. When you're ready\nto upgrade it is as simple as fetching the latest updates from your source\ncontrol system.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis makes updating your files \u003cem\u003eeasier\u003c/em\u003e, but you still need to worry about\nmanually taking other steps (see \u003ca href=\"#common-post-deployment-tasks\"\u003eCommon Post-Deployment Tasks\u003c/a\u003e).\u003c/p\u003e\n\u003ca name=\"user-content-using-platforms-as-a-service\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsing Platforms as a Service\u003c/h4\u003e\u003ca id=\"user-content-using-platforms-as-a-service\" class=\"anchor\" aria-label=\"Permalink: Using Platforms as a Service\" href=\"#using-platforms-as-a-service\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe specific deployment steps vary greatly from one service provider to another,\nso check out the dedicated article for the service of your choose:\u003c/p\u003e\n\u003cpre\u003e.. toctree::\n :maxdepth: 1\n :glob:\n\n deployment/*\n\n\u003c/pre\u003e\n\u003ca name=\"user-content-using-build-scripts-and-other-tools\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsing Build Scripts and other Tools\u003c/h4\u003e\u003ca id=\"user-content-using-build-scripts-and-other-tools\" class=\"anchor\" aria-label=\"Permalink: Using Build Scripts and other Tools\" href=\"#using-build-scripts-and-other-tools\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThere are also tools to help ease the pain of deployment. Some of them have been\nspecifically tailored to the requirements of Symfony.\u003c/p\u003e\n\u003cdl\u003e\n\u003cdt\u003e\u003ca href=\"http://capistranorb.com/\" rel=\"nofollow\"\u003eCapistrano\u003c/a\u003e with \u003ca href=\"https://github.com/capistrano/symfony/\"\u003eSymfony plugin\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003ca href=\"http://capistranorb.com/\" rel=\"nofollow\"\u003eCapistrano\u003c/a\u003e is a remote server automation and deployment tool written in Ruby.\n\u003ca href=\"https://github.com/capistrano/symfony/\"\u003eSymfony plugin\u003c/a\u003e is a plugin to ease Symfony related tasks, inspired by \u003ca href=\"http://capifony.org/\" rel=\"nofollow\"\u003eCapifony\u003c/a\u003e\n(which works only with Capistrano 2 )\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"https://github.com/liip/sf2debpkg\"\u003esf2debpkg\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003eHelps you build a native Debian package for your Symfony project.\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"https://github.com/andres-montanez/Magallanes\"\u003eMagallanes\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003eThis Capistrano-like deployment tool is built in PHP, and may be easier\nfor PHP developers to extend for their needs.\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"http://www.fabfile.org/\" rel=\"nofollow\"\u003eFabric\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003eThis Python-based library provides a basic suite of operations for executing\nlocal or remote shell commands and uploading/downloading files.\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"http://deployer.org/\" rel=\"nofollow\"\u003eDeployer\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003eThis is another native PHP rewrite of Capistrano, with some ready recipes for\nSymfony.\u003c/dd\u003e\n\u003cdt\u003eBundles\u003c/dt\u003e\n\u003cdd\u003eThere are some \u003ca href=\"http://knpbundles.com/search?q=deploy\" rel=\"nofollow\"\u003ebundles that add deployment features\u003c/a\u003e directly into your\nSymfony console.\u003c/dd\u003e\n\u003cdt\u003eBasic scripting\u003c/dt\u003e\n\u003cdd\u003eYou can of course use shell, \u003ca href=\"http://blog.sznapka.pl/deploying-symfony2-applications-with-ant\" rel=\"nofollow\"\u003eAnt\u003c/a\u003e or any other build tool to script\nthe deploying of your project.\u003c/dd\u003e\n\u003c/dl\u003e\n\u003ca name=\"user-content-common-post-deployment-tasks\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCommon Post-Deployment Tasks\u003c/h3\u003e\u003ca id=\"user-content-common-post-deployment-tasks\" class=\"anchor\" aria-label=\"Permalink: Common Post-Deployment Tasks\" href=\"#common-post-deployment-tasks\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAfter deploying your actual source code, there are a number of common things\nyou'll need to do:\u003c/p\u003e\n\u003ca name=\"user-content-a-check-requirements\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eA) Check Requirements\u003c/h4\u003e\u003ca id=\"user-content-a-check-requirements\" class=\"anchor\" aria-label=\"Permalink: A) Check Requirements\" href=\"#a-check-requirements\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCheck if your server meets the requirements by running:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ php app/check.php\"\u003e\u003cpre\u003e$ php app/check.php\u003c/pre\u003e\u003c/div\u003e\n\u003ca name=\"user-content-b-configure-your-app-config-parameters-yml-file\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eB) Configure your \u003ccode\u003eapp/config/parameters.yml\u003c/code\u003e File\u003c/h4\u003e\u003ca id=\"user-content-b-configure-your-appconfigparametersyml-file\" class=\"anchor\" aria-label=\"Permalink: B) Configure your app/config/parameters.yml File\" href=\"#b-configure-your-appconfigparametersyml-file\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis file should \u003cem\u003enot\u003c/em\u003e be deployed, but managed through the automatic utilities\nprovided by Symfony.\u003c/p\u003e\n\u003ca name=\"user-content-c-install-update-your-vendors\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eC) Install/Update your Vendors\u003c/h4\u003e\u003ca id=\"user-content-c-installupdate-your-vendors\" class=\"anchor\" aria-label=\"Permalink: C) Install/Update your Vendors\" href=\"#c-installupdate-your-vendors\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYour vendors can be updated before transferring your source code (i.e.\nupdate the \u003ccode\u003evendor/\u003c/code\u003e directory, then transfer that with your source\ncode) or afterwards on the server. Either way, just update your vendors\nas you normally do:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ composer install --no-dev --optimize-autoloader\"\u003e\u003cpre\u003e$ composer install --no-dev --optimize-autoloader\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv dir=\"auto\"\u003e\n\u003cp dir=\"auto\"\u003eTip\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe \u003ccode\u003e--optimize-autoloader\u003c/code\u003e flag improves Composer's autoloader performance\nsignificantly by building a \"class map\". The \u003ccode\u003e--no-dev\u003c/code\u003e flag ensures that\ndevelopment packages are not installed in the production environment.\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv dir=\"auto\"\u003e\n\u003cp dir=\"auto\"\u003eCaution!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf you get a \"class not found\" error during this step, you may need to\nrun \u003ccode\u003eexport SYMFONY_ENV=prod\u003c/code\u003e before running this command so that\nthe \u003ccode\u003epost-install-cmd\u003c/code\u003e scripts run in the \u003ccode\u003eprod\u003c/code\u003e environment.\u003c/p\u003e\n\u003c/div\u003e\n\u003ca name=\"user-content-d-clear-your-symfony-cache\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eD) Clear your Symfony Cache\u003c/h4\u003e\u003ca id=\"user-content-d-clear-your-symfony-cache\" class=\"anchor\" aria-label=\"Permalink: D) Clear your Symfony Cache\" href=\"#d-clear-your-symfony-cache\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eMake sure you clear (and warm-up) your Symfony cache:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ php bin/console cache:clear --env=prod --no-debug\"\u003e\u003cpre\u003e$ php bin/console cache:clear --env=prod --no-debug\u003c/pre\u003e\u003c/div\u003e\n\u003ca name=\"user-content-e-dump-your-assetic-assets\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eE) Dump your Assetic Assets\u003c/h4\u003e\u003ca id=\"user-content-e-dump-your-assetic-assets\" class=\"anchor\" aria-label=\"Permalink: E) Dump your Assetic Assets\" href=\"#e-dump-your-assetic-assets\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf you're using Assetic, you'll also want to dump your assets:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ php bin/console assetic:dump --env=prod --no-debug\"\u003e\u003cpre\u003e$ php bin/console assetic:dump --env=prod --no-debug\u003c/pre\u003e\u003c/div\u003e\n\u003ca name=\"user-content-f-other-things\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eF) Other Things!\u003c/h4\u003e\u003ca id=\"user-content-f-other-things\" class=\"anchor\" aria-label=\"Permalink: F) Other Things!\" href=\"#f-other-things\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThere may be lots of other things that you need to do, depending on your\nsetup:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eRunning any database migrations\u003c/li\u003e\n\u003cli\u003eClearing your APC cache\u003c/li\u003e\n\u003cli\u003eRunning \u003ccode\u003eassets:install\u003c/code\u003e (already taken care of in \u003ccode\u003ecomposer install\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd/edit CRON jobs\u003c/li\u003e\n\u003cli\u003ePushing assets to a CDN\u003c/li\u003e\n\u003cli\u003e...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ca name=\"user-content-application-lifecycle-continuous-integration-qa-etc\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eApplication Lifecycle: Continuous Integration, QA, etc\u003c/h3\u003e\u003ca id=\"user-content-application-lifecycle-continuous-integration-qa-etc\" class=\"anchor\" aria-label=\"Permalink: Application Lifecycle: Continuous Integration, QA, etc\" href=\"#application-lifecycle-continuous-integration-qa-etc\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eWhile this entry covers the technical details of deploying, the full lifecycle\nof taking code from development up to production may have a lot more steps\n(think deploying to staging, QA (Quality Assurance), running tests, etc).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe use of staging, testing, QA, continuous integration, database migrations\nand the capability to roll back in case of failure are all strongly advised. There\nare simple and more complex tools and one can make the deployment as easy\n(or sophisticated) as your environment requires.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eDon't forget that deploying your application also involves updating any dependency\n(typically via Composer), migrating your database, clearing your cache and\nother potential things like pushing assets to a CDN (see \u003ca href=\"#common-post-deployment-tasks\"\u003eCommon Post-Deployment Tasks\u003c/a\u003e).\u003c/p\u003e\n\n\u003c/article\u003e","renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":"/symfony/.github/blob/6f2ca452c856184a28812bb364b4e34ed50309da/FUNDING.yml","showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":null},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/symfony/symfony-docs/branches":{"post":"7xcmYl-M26Qz1pmxPZPs31mc5TGb7fdLoP6Rid6dkT9HjXTNru--19lH2QhksSPAo3FjC3GZtd0rx822mfb7ww"},"/repos/preferences":{"post":"lQf_JYniIHXV53zvfxTCDL_-ECMHYZ6RSujt3ICuR8Ab78bMX6SftEDy20f9BKWmb-gPcYSCZmwetwNftPM9kw"}}},"title":"symfony-docs/deployment.rst at 3.0 · symfony/symfony-docs","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-b84e9496fc59.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}
0