
Deploy Symfony application to production – setting it live
This is a continuation of deploying symfony application to the server part one
Deploy Symfony application to production part two
4. Installing composer dependenciesBe in your symfony app first
cd /apps/symfony-app
The run the installer here
composer install --no-dev --optimize-autoloader
Under most circumstances, this will run without any problem. If there are any problems, composer will log them for you so follow those and solve those. And this will create a vendor folder in the folder you run composer.
5. Permissions for web folder and files under it
The web folder in the symfony app is the one facing public and greater care has to be given on the permission for it. The rule of thumb when you deploy symfony is:
Allow the owner, which would be www-data, to do anything on the folder
All others, group and users to read and execute but not write on the folders
And for all files, we would make 644 => owner can read and write, others can read only
hence
chmod 755 web/folder1 chmod 644 web/file1
This might create a bit of problem when you are working from FTP clients.
But you can loosen a bit while you are working for a brief moment and return it back after you are done. But, the most good method would be creating ssh and log through that.
6. Handling cache and log folders
These are special folders that would require a bit different handling
chmod -R 755 app/cache chmod -R 755 app/logs
7. Warm up your cache and consolidate your css and JS files
For cleaning and warming the cache:
app/console cache:clean --env=prod --no-debug
And for the css and JS files
php app/console assetic:dump --env=prod --no-debug
** Note, if you are using symfony3, the app folder might not be there and you would find bin folder rather
8. Getting rid of app.php using httaccess file
First thing first, check if mod_rewrite is enabled by doing this simple check on the command line
apache2ctl -M | grep rewrite
Or the most easiest would be to throw one php file with phpinfo() in it and look for rewrite in the page.
if it is not loaded simply run this
sudo a2enmode rewrite sudo service apache2 restart
And have the following content in the /apps/symfony-app/.htaccess
Options FollowSymlinks MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L]
**If the above is not working, check for /etc/apache2/apache.conf
or in the /etc/apache2/sites-enabled
and look for the configuration of your web root and make sure the AllowOverride
is set to All
Finally: Making web folder public accessible
We are on the final step. Now, we need to make the contents of the web file to be accessible for the public. Assuming your public facing folder is in /var/www/html – symlink the folder web to this folder:
cd /var/www/html sudo ln -s /apps/symfony-app/web/* .
The above steps would prepare your symfony app for the final production release. The rest would be pointing your domain name to your server like adding A-records and the like if you have to go through that.
lords mobile hack android
Thanks for the excellent info, it really is useful.