Newer
Older
[Buildkit](https://github.com/civicrm/civicrm-buildkit) is a collection of ~20 tools for developing and testing CiviCRM, the most important of which is [civibuild](/tools/civibuild.md).
Many of these tools are commonly used by web developers, so you may have already installed a few. Even so, it's generally easier to install the full collection — installing each individually takes a lot of work.
This is the same collection of tools which manages the test/demo/release infrastructure for civicrm.org.
## Installation
### Ubuntu
If you have a new installation of Ubuntu 12.04 or 14.04, then you can download
everything -- buildkit and the system requirements -- with one command. This
command will install buildkit to `~/buildkit`:
```bash
curl -Ls https://civicrm.org/get-buildkit.sh | bash -s -- --full --dir ~/buildkit
```
Note:
* When executing the above command, you should *not* run as `root`. However, you *should*
have `sudo` permissions.
* The `--full` option is *very opinionated*; it specifically installs `php`, `apache`, and `mysql` (rather than `hhvm`, `nginx`, `lighttpd`, or `percona`). If you try to mix `--full` with alternative systems, then expect conflicts.
* If you use the Ubuntu feature for "encrypted home directories", then don't put buildkit in `~/buildkit`. Consider `/opt/buildkit`, `/srv/buildkit`, or some other location that remains available during reboot.
### Vagrant
[Full Download: Vagrantbox](https://github.com/civicrm/civicrm-buildkit-vagrant) - Download a prepared virtual-machine with all system dependencies (mysql, etc). This is ideal if you work on Windows or OS X.
### Docker
If you have [Docker](https://www.docker.com/) running, you can [use this Docker image](https://github.com/ErichBSchulz/dcbk) to run buildkit.
### Other platforms
You may install buildkit in other environments. The main pre-requisites are:
* Linux or OS X
* Git
* PHP 5.3+ (Extensions: `bcmath curl gd gettext imap intl imagick json mbstring mcrypt openssl pdo_mysql phar posix soap zip`)
* NodeJS (v5 recommended)
* NPM
* Recommended (_for [amp](https://github.com/totten/amp) and [civibuild](/tools/civibuild.md)_)
* Apache 2.2 or 2.4 (Modules: `mod_rewrite`. On SUSE, possibly `mod_access_compat`. This list may not be exhaustive.)
* MySQL 5.1+ (client and server)
All pre-requisites must support command-line access using the standard command
names (`git`, `php`, `node`, `mysql`, `mysqldump`, etc). In some environments,
you may need to enable these commands by configuring `PATH` -- this is especially
true for MAMP, XAMPP, and other downloaded packages.
(See, e.g., [Setup Command-Line PHP](http://wiki.civicrm.org/confluence/display/CRMDOC/Setup+Command-Line+PHP).)
Once the pre-requisites are met, download buildkit to `~/buildkit`:
```bash
git clone https://github.com/civicrm/civicrm-buildkit.git ~/buildkit
cd ~/buildkit
./bin/civi-download-tools
```
### Troubleshooting
* Nodejs version too old or npm update does not work
Download the latest version from nodejs.org and follow to their instructions
* Nodejs problems
It might be handy to run
```bash
npm update
npm install fs-extra
```
## Post-install configuration {:#configuring}
### Configuring your path {:#path}
!!! note "Not needed for Vagrant/Docker installations"
If you set up buildkit using Vagrant or Docker, then you don't need to perform the configuration steps listed here.
Buildkit includes many CLI commands in the `bin/` folder.
You may execute the commands directly (e.g. `./bin/civix` or `/path/to/buildkit/bin/civix`). However, this would
become very cumbersome. Instead, you should configure the shell's `PATH` to recognize these commands automatically.
!!! tip
Throughout this document, we will provide examples which assume that buildkit was downloaded to `/path/to/buildkit`. Be sure to adjust the examples to match your system.
If you want to ensure that the buildkit CLI tools are always available, then:
1. Determine the location of your shell configuration file. This is usually `~/.bashrc`, `~/.bash_profile`, or
1. At the end of the file, add `export PATH="/path/to/buildkit/bin:$PATH"`
1. Close and reopen the terminal.
1. Enter the command `which civibuild`. This should display a full-path. If nothing appears, then retry the steps.
Buildkit includes specific versions of some fairly popular tools (such as `drush`, `phpunit`, and `wp-cli`), and it's possible that you have already installed other versions of these tools.
By design, buildkit can coexist with other tools, but you must manually manage the `PATH`.
Whenever you wish to use buildkit, manually run a command like, e.g.:
```bash
export PATH=/path/to/buildkit/bin:$PATH
```
To restore your normal `PATH`, simply close the terminal and open a new one.
Each time you open a new terminal while working on Civi development, you would need to re-run the `export` command.
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
### Configuring `amp` {:#amp-config}
!!! tip
Login as a non-`root` user who has `sudo` permission. This will ensure that new files are owned by a regular user, and (if necessary) it enables `civibuild` to restart Apache or edit `/etc/hosts`.
The first build requires only a few commands. However, these are also the
hardest commands -- you need to provide detailed information about the
Apache/MySQL/PHP systems, and you may need to try them a few times.
Configure `amp` with details of your Apache/MySQL environment. Pay close
attention to the instructions. They may involve adding a line to your
Apache configuration file.
```
$ amp config
```
Test that `amp` has full and correct information about Apache/MySQL.
```
$ amp test
```
!!! note
You may need to alternately restart httpd, re-run `amp config`, and/or re-run `amp test` a few times.
Create a new build using Drupal and the CiviCRM `master` branch.
The command will print out URLs and credentials for accessing the website.
```
$ civibuild create dmaster --url http://dmaster.localhost --admin-pass s3cr3t
```
Once you have a working build of `dmaster`, you can continue working with `civibuild` to create different builds as described below.
New versions of buildkit are likely to include new versions of tools. The
new tools will download automatically when you first run `civibuild`.
If you prefer to download explicitly, then re-run `civi-download-tools`.
The configurations and tools in buildkit are periodically updated. To get the latest, simply run:
```bash
cd ~/buildkit
git pull
./bin/civi-download-tools
```
See the [buildkit changelog](https://github.com/civicrm/civicrm-buildkit/blob/master/CHANGELOG.md) for info about specific changes to buildkit.