Key Points: This tutorial optimizes Sulu, a Symfony-based CMS, for faster performance within a Vagrant environment. It addresses Symfony's inherent slowness on virtual machines with shared filesystems. The techniques detailed are applicable to any Symfony application.
This guide details setting up Sulu on Vagrant, including box download, folder sharing configuration, Sulu installation, and crucial performance enhancements. After applying these optimizations, both https://test.app/admin
and https://test.app
should be significantly faster.
Setting Up and Optimizing Sulu on Vagrant
We'll use Homestead Improved, but the principles apply broadly.
1. Initial Setup:
git clone https://github.com/swader/homestead_improved hi_sulu cd hi_sulu; bin/folderfix.sh
Homestead.yaml
:- map: test.app to: /home/vagrant/Code/sulu/web type: symfony-sulu
(The provided Nginx configuration is crucial; adapt as needed for non-Homestead environments.)
2. Vagrant and Sulu Installation:
vagrant up; vagrant ssh
test.app
to your host's /etc/hosts
file.cd Code git clone https://github.com/sulu-io/sulu-standard sulu; cd sulu git checkout master composer install
(Address potential PHP version conflicts; upgrade if necessary using sudo apt-get upgrade php7.0-fpm
.)
cp app/Resources/webspaces/sulu.io.xml.dist app/Resources/webspaces/sulu.io.xml cp app/Resources/pages/default.xml.dist app/Resources/pages/default.xml cp app/Resources/pages/overview.xml.dist app/Resources/pages/overview.xml cp app/Resources/snippets/default.xml.dist app/Resources/snippets/default.xml rm -rf app/cache/* rm -rf app/logs/*
app/console sulu:build dev
app/console assetic:dump
web/admin.php
and web/website.php
(change SYMFONY_ENV
to dev
).3. Performance Optimization Hacks:
app/AbstractKernel.php
's getCacheDir
and getLogDir
methods to use /dev/shm
for dev/test environments. This moves logs and cache to VM-local storage.vendor
directory to a VM-local path (e.g., /home/vagrant/vendors/sulu-test.app
). This significantly improves performance by avoiding shared filesystem access. (Detailed steps are provided in the original article for manual adjustment.) Use the provided script ~/Code/bin/sulu/vendorfix.sh
or follow the manual steps. Update your IDE's include path accordingly.web/website.php
and web/admin.php
.realpath_cache_size
and realpath_cache_ttl
in /etc/php/7.0/fpm/php.ini
. Consider installing the Twig C extension and disabling Xdebug (sudo phpdismod xdebug; sudo service php7.0-fpm restart
).4. Troubleshooting:
Address common issues like stale cache, incorrect class locations (use app/console cache:clear
, rm -rf app/cache/*
, composer update
), and APC cache busting (apc_clear_cache()
). Optimize for debugging as needed.
Conclusion:
These optimizations dramatically improve Sulu's performance on Vagrant. The techniques, especially vendor directory relocation and log/cache optimization, are widely applicable to any Symfony project. Remember to adapt the paths and configurations to your specific setup. The FAQs section provides further context and answers common questions about Symfony, Sulu, and Vagrant performance.
The above is the detailed content of Symfony on Vagrant Performance Hacks - SuluCMS Case Study. For more information, please follow other related articles on the PHP Chinese website!