Fourteen setups and systems that help you to develop websites with TYPO3. Local development can really boost your efficiency and effectiveness! Most of the solutions are (at least) partially cross platform. Most of them work also with any other php / mysql project, like wordpress, drupal or joomla.
On the first sight, it might be not clear why you should develop locally. I will show you three reasons. There are probably more. If you like to mention one or more additional reasons, you are welcome to add a note in the comments. 😉
3 Reasons, why you should develop locally
1. No Live-Hacking any more
Some customers do not provide a developing or testing instance, so you are forced to develop on the live site. This can have unwanted side effects, f.e. if you make a typo … the whole website does not any more. In these cases you probably do not have access to server side log files, that give detailed error messages of php errors. One possibility could be to set the live site into development context … but this is not what you and your customer want.
2. Develop without any internet connection
Many of us are travelling a lot with planes or trains. Much of that time there is no internet connection available, but many of like to use these times in a productive way (at least sometimes). A local development environment enables you to use this time and head on with your development.
3. Use advanced techniques
Using node packages like browser-sync, concat, uglify or sass is getting more easy, since you do not have to upload the results to the remote server in order to check the outcome. Everything works on your local computer.
There are four main groups of local development environments:
1) LAMP Packages
2) Pre – Configured Virtualization Solutions
3) Native Solutions
4) Standard Virtualizer
*AMP – Packages
“AMP” is an abbreviation that stands for the software stack of Apache
. The “M” can also be a referral to MariaDB
, the “free” replacement of mySQL. The mentioned packages in this section are the easiest way to get a local development environment. But they are limited in their flexibilty. If this is your first contact with local dev environments, this is the way to go. But some weeks later you will probably check other solutions, that offer more features.
1. Apachefriends XAMPP
The AMP stack XAMPP is available for Windows, Mac OS X and Linux. The „X“ in its name stands as a variable and reflects the availablility for the different OSs. For each system there are three packages which difference is mainly the packaged php – version. All supported php versions are available: 5.5, 5.6 and 7.0.
2. MAMP (Pro)
MAMP is an AMP stack for Mac OS X and MS Windows. Windows support is available since a August 2015. It comes in two versions MAMP and MAMP Pro. MAMP is the free package and provides basic functionality. MAMP Pro is the commercial version an offers additional valuable features. It allows you to use multiple php versions in parallel, unlimited vhosts, dynamic dns and a full featured mailserver (Postfix). This is IMHO the most flexible solution in this category.
The WampServer is a Windows only package and comes in two variants: one for 32-bit and one for 64-bit systems. But there is only one php version available. As of the time of writing there is only php 5.5 available. Php 5.5 is still supported, but the most current php release is 7.0.x.
Pre-Configured Virtualization Solution
The third category is about some kind pre-configured virtualization solution. All of them need a „standard virtualizer“ of the last category. The configuration of those is getting much easier if not everything has to be done manually.
Vagrant has the goal to enable devops to create “lightweight, reproducible and portable development environments“. So it is an intermediate layer between the virtualization solution and the installed operating system. In most cases this will be some kind of linux dialect.
There are many configurations out there in the wild … just google for them. As long as I worked with vagrant and custom recipes, I had problem, that the environments were not really reproducible. There are two exceptions. These are shown in the next two sections.
WebDevOps is an initiative of devops enthusiasts based in Stuttgart (Germany). Their goal is to provide an easy setup for local dev environments. A couple of months ago I gave it a try, because I needed a second dev environment on my mac for another user. I had it up and running in less the 30 minutes. They also provide boilerplates for TYPO3 and other php projects.
Checkout their websites, it’s really worth it!
Download & install:
6. TYPO3.review Box
The TYPO3.review box is a special Vagrant setup, that is made for TYPO3 code reviews. It provides three vhosts with different TYPO3 setups
- the last released version
- dev-master for reference
- dev-master for reviews
A simple „vagrant up“ is sufficient, if you have Vagrant and VirtualBox or any other virtualization product installed.
Native AMP Solutions
The difference between between the packages from the last section and the native solutions is, that the do not come with a ready to run installer. Thus some manual work is required in order to make it work.
7. MacOS native
Each Mac OS X version comes with most components preinstalled, like apache and php. In order to get TYPO3 running, you need a mysql package and graphicsmagick installed. This setup works but is limited to the php version delivered by Apple.
Download & install graphicsmagick:
8. / 9. Mac OS X with Packagemanager
Installing an AMP stack on Mac OS X is also possible with an additional package manager. There are at least two of them: MacPorts
. I used both of them. My favorite is homebrew, as it works without any hassle. The install, update and upgrade process is very handy and works since many OS X versions like a charm.
10. Windows with cygwin
OK, to be serious … this is just for completeness. With cygwin it is possible to install gnu linux packages on windows. Probably nobody will use this, but here is a tutorial how to get it running
11. Linux native
If you have a linux computer for your development, I may not tell you how to set up a local dev environment, as it comes right with the package manager of the distribution. As an example, which is some kind of template, you can use
for ubuntu. If you use another distribution, you must look substitutes of some cli commands.
Last but not least, you can use the standard virtualizers without any pre configuration. You must install the OS images yourself an configure everything on your own, as you would do on a root server. This is the most flexible way, but implies the most manual work.
If you decide to use this way, you really should consider using Ansible, Saltstack or any other provisioning tool to have reproducible dev setups.
VirtualBox is the free virtualization solution of Oracle. It is availble for Windows, Linux, OS X and Solaris. At least the version 4 had serious performance problems on Mac. Rumors told me that the situation should have improved much with version 5.
VMware is company which is specialized on virtualization solutions. On part of their commercial solutions are for the desktop. The product for Mac OS X is called „VMware Fusion”. The solution for Windows and Linux is called „VMware Workstation Pro“.
14. Parallels (Mac OS X only)
Parallels is a solution only for Mac OS X. Their are two editions: the standard edition and the business edition. In order to use parallels together with vagrant or docker, you need the business edition, because the standard desktop does not allow headless usage. Both version come with a 14-day trial.
Download and install:
15. kvm (Linux only)
On linux you can create virtual machines using the kvm technology. This works on any linux computer that has the kvm kernel modules installed. A collection of howtos is on http://www.linux-kvm.org/page/HOWTO .
I showed you 14 different local development setups for your web project. Many of them are cross plattform and from different complexity to install. There should be at least one of them that fits your needs.
What are you using? Do use miss a system? If so, please leave a comment, so that later readers can profit from it.
If you found this article useful, please do not hesitate to share it on your favorite social media channel. I would be happy, if you would spread the word. 😉 Thanks.