@@ -71,8 +71,9 @@ Deploying your Application on Heroku
71
71
72
72
To deploy your application to Heroku, you must first create a ``Procfile ``,
73
73
which tells Heroku what command to use to launch the web server with the
74
- correct settings. After you've done that, you can simply ``git push `` and
75
- you're done!
74
+ correct document root. After that, you will ensure that your Symfony application
75
+ runs the ``prod `` environment, and then you'll be ready to ``git push `` to
76
+ Heroku for your first deploy!
76
77
77
78
Creating a Procfile
78
79
~~~~~~~~~~~~~~~~~~~
@@ -110,6 +111,27 @@ create the ``Procfile`` file and to add it to the repository:
110
111
[master 35075db] Procfile for Apache and PHP
111
112
1 file changed, 1 insertion(+)
112
113
114
+ Setting the ``prod `` environment
115
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116
+
117
+ During a deploy, Heroku runs ``composer install --no-dev `` to install all of the
118
+ dependencies your application requires. However, typical `post-install-commands `_
119
+ in ``composer.json ``, e.g. to install assets or clear (or pre-warm) caches, run
120
+ using Symfony's ``dev `` environment by default.
121
+
122
+ This is clearly not what you want - the app runs in "production" (even if you
123
+ use it just for an experiment, or as a staging environment), and so any build
124
+ steps should use the same ``prod `` environment as well.
125
+
126
+ Thankfully, the solution to this problem is very simple: Symfony will pick up an
127
+ environment variable named ``SYMFONY_ENV `` and use that environment if nothing
128
+ else is explicitly set. As Heroku exposes all `config vars `_ as environment
129
+ variables, we can issue a single command to prepare our app for a deployment:
130
+
131
+ .. code-block :: bash
132
+
133
+ $ heroku config:set SYMFONY_ENV=prod
134
+
113
135
Pushing to Heroku
114
136
~~~~~~~~~~~~~~~~~
115
137
@@ -193,3 +215,5 @@ You should be seeing your Symfony application in your browser.
193
215
.. _`ephemeral file system` : https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem
194
216
.. _`Logplex` : https://devcenter.heroku.com/articles/logplex
195
217
.. _`verified that the RSA key fingerprint is correct` : https://devcenter.heroku.com/articles/git-repository-ssh-fingerprints
218
+ .. _`post-install-commands` : https://getcomposer.org/doc/articles/scripts.md
219
+ .. _`config vars` : https://devcenter.heroku.com/articles/config-vars
0 commit comments