2
0
mirror of https://github.com/frappe/bench.git synced 2024-09-24 13:09:01 +00:00
bench/README.md

291 lines
11 KiB
Markdown
Raw Normal View History

<div align="center">
2020-06-02 08:02:20 +00:00
<img src="https://github.com/frappe/design/raw/master/logos/png/bench-logo.png" height="128">
<h2>Bench</h2>
</div>
2016-09-22 10:21:15 +00:00
Bench is a command-line utility that helps you to install, update, and manage multiple sites for Frappe/ERPNext applications on [*nix systems](https://en.wikipedia.org/wiki/Unix-like) for development and production.
2014-07-15 09:17:32 +00:00
## Table of Contents
2018-04-11 05:10:06 +00:00
- [Installation](#installation)
- [Docker Installation](#docker-installation)
- [Development Setup](#docker-installation-for-development)
- [Production Setup](#docker-installation-for-production)
- [Easy Install Script](#easy-install-script)
- [Manual Installation](#manual-installation)
- [Usage](#usage)
- [Custom Bench commands](#custom-bench-commands)
- [Bench Manager](#bench-manager)
- [Guides](#guides)
- [Resources](#resources)
2020-08-31 08:41:29 +00:00
- [Development](#development)
- [License](#license)
## Installation
2018-04-11 05:10:06 +00:00
A typical bench setup provides two types of environments &mdash; Development and Production.
2018-04-11 05:10:06 +00:00
The setup for each of these installations can be achieved in multiple ways:
2016-09-22 10:21:15 +00:00
- [Docker Installation](#docker-installation)
- [Easy Install Script](#easy-install-script)
- [Manual Installation](#manual-installation)
2016-09-22 10:21:15 +00:00
We recommend using either the Docker Installation or the Easy Install Script to setup a Production Environment. For Development, you may choose either of the three methods to setup an instance.
2019-12-30 11:16:35 +00:00
Otherwise, if you are looking to evaluate ERPNext, you can also download the [Virtual Machine Image](https://erpnext.com/download) or register for [a free trial on erpnext.com](https://erpnext.com/pricing).
2016-09-22 10:21:15 +00:00
### Docker Installation
2016-09-22 10:21:15 +00:00
A Frappe/ERPNext instance can be setup and replicated easily using [Docker](https://docker.com). The officially supported Docker installation can be used to setup either of both Development and Production environments.
2016-09-22 10:21:15 +00:00
To setup either of the environments, you will need to clone the official docker repository:
2016-09-22 10:21:15 +00:00
```sh
$ git clone https://github.com/frappe/frappe_docker.git
$ cd frappe_docker
```
2016-09-22 10:21:15 +00:00
A quick setup guide for both the envionments can be found below. For more details, check out the [Frappe/ERPNext Docker Repository](https://github.com/frappe/frappe_docker).
2016-09-22 10:21:15 +00:00
#### Docker Installation for Development
To setup a development environment for Docker, follow the [Frappe/ERPNext Docker for Development Guide](https://github.com/frappe/frappe_docker/blob/develop/development/README.md).
#### Docker Installation for Production
2016-09-22 10:21:15 +00:00
Copy the `env-example` file to `.env`
2016-09-22 10:21:15 +00:00
```sh
$ cp env-example .env
```
Optionally, you may also setup an [NGINX Proxy for SSL Certificates](https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion) with auto-renewal for your Production instance. We recommend this for instances being accessed over the internet. For this to work, the DNS needs to be configured correctly so that [LetsEncrypt](https://letsencrypt.org) can verify the domain. To setup the proxy, run the following commands:
```sh
$ git clone https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion.git
$ cd docker-compose-letsencrypt-nginx-proxy-companion
$ cp .env.sample .env
$ ./start.sh
```
To get the Production instance running, run the following command:
```sh
$ docker-compose \
--project-name <project-name> \
-f installation/docker-compose-common.yml \
-f installation/docker-compose-erpnext.yml \
-f installation/docker-compose-networks.yml \
--project-directory installation up -d
```
Make sure to replace `<project-name>` with whatever you wish to call it. This should get the instance running through docker. Now, to create a new site on the instance you may run:
```sh
docker exec -it \
-e "SITE_NAME=$SITE_NAME" \
-e "DB_ROOT_USER=$DB_ROOT_USER" \
-e "MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD" \
-e "ADMIN_PASSWORD=$ADMIN_PASSWORD" \
-e "INSTALL_APPS=erpnext" \ # optional, if you want to install any other apps
<project-name>_erpnext-python_1 docker-entrypoint.sh new
```
Once this is done, you may access the instance at `$SITE_NAME`.
**Note:** The Production setup does not contain, require, or use bench. For a list of substitute commands, check out the [Frappe/ERPNext Docker Site Operations](https://github.com/frappe/frappe_docker/#site-operations).
2016-09-22 10:21:15 +00:00
### Easy Install Script
The Easy Install script should get you going with a Frappe/ERPNext setup with minimal manual intervention and effort. Since there are a lot of configurations being automatically setup, we recommend executing this script on a fresh server.
2016-09-22 10:21:15 +00:00
**Note:** This script works only on GNU/Linux based server distributions, and has been designed and tested to work on Ubuntu 16.04+, CentOS 7+, and Debian-based systems.
2016-09-22 10:21:15 +00:00
#### Prerequisites
2016-09-22 10:21:15 +00:00
You need to install the following packages for the script to run:
2016-09-22 10:21:15 +00:00
- ##### Ubuntu and Debian-based Distributions:
2016-09-22 10:21:15 +00:00
```sh
$ apt install python3-minimal build-essential python3-setuptools
```
2016-09-22 10:21:15 +00:00
- ##### CentOS and other RPM Distributions:
2016-09-22 10:21:15 +00:00
```sh
$ dnf groupinstall "Development Tools"
$ dnf install python3
```
#### Setup
Download the Easy Install script and execute it:
```sh
$ wget https://raw.githubusercontent.com/frappe/bench/develop/install.py
$ python3 install.py --production
```
The script should then prompt you for the MySQL root password and an Administrator password for the Frappe/ERPNext instance, which will then be saved under `$HOME/passwords.txt` of the user used to setup the instance. This script will then install the required stack, setup bench and a default ERPNext instance.
When the setup is complete, you will be able to access the system at `http://<your-server-ip>`, wherein you can use the administrator password to login.
#### Troubleshooting
2020-05-02 14:37:16 +00:00
In case the setup fails, the log file is saved under `/tmp/logs/install_bench.log`. You may then:
- Create an Issue in this repository with the log file attached.
- Search for an existing issue or post the log file on the [Frappe/ERPNext Discuss Forum](https://discuss.erpnext.com/c/bench) with the tag `installation_problem` under "Install/Update" category.
2020-05-29 05:01:52 +00:00
For more information and advanced setup instructions, check out the [Easy Install Documentation](https://github.com/frappe/bench/blob/develop/docs/easy_install.md).
### Manual Installation
2020-02-24 07:21:53 +00:00
Some might want to manually setup a bench instance locally for development. To quickly get started on installing bench the hard way, you can follow the guide on [Installing Bench and the Frappe Framework](https://frappe.io/docs/user/en/installation).
You'll have to set up the system dependencies required for setting up a Frappe Environment. Checkout [docs/installation](https://github.com/frappe/bench/blob/develop/docs/installation.md) for more information on this. If you've already set up, install bench via pip:
2020-05-29 05:01:52 +00:00
```sh
$ pip install frappe-bench
```
2020-02-24 07:21:53 +00:00
For more extensive distribution-dependent documentation, check out the following guides:
2020-02-24 07:21:53 +00:00
- [Hitchhiker's Guide to Installing Frappe on Linux](https://github.com/frappe/frappe/wiki/The-Hitchhiker%27s-Guide-to-Installing-Frappe-on-Linux)
- [Hitchhiker's Guide to Installing Frappe on MacOS](https://github.com/frappe/bench/wiki/Setting-up-a-Mac-for-Frappe-ERPNext-Development)
2016-08-01 05:44:01 +00:00
## Basic Usage
2019-07-31 07:24:49 +00:00
**Note:** Apart from `bench init`, all other bench commands are expected to be run in the respective bench directory.
2019-12-30 11:16:35 +00:00
* Create a new bench:
2016-07-18 04:47:15 +00:00
```sh
$ bench init [bench-name]
```
2016-07-18 04:47:15 +00:00
* Add a site under current bench:
2016-03-23 07:51:46 +00:00
```sh
$ bench new-site [site-name]
```
- **Optional**: If the database for the site does not reside on localhost or listens on a custom port, you can use the flags `--db-host` to set a custom host and/or `--db-port` to set a custom port.
2016-05-16 04:57:49 +00:00
```sh
$ bench new-site [site-name] --db-host [custom-db-host-ip] --db-port [custom-db-port]
```
2018-07-03 08:58:48 +00:00
* Download and add applications to bench:
2018-06-12 07:14:07 +00:00
```sh
$ bench get-app [app-name] [app-link]
```
2018-06-12 07:14:07 +00:00
* Install apps on a particular site
```sh
$ bench --site [site-name] install-app [app-name]
```
* Start bench (only for development)
2019-12-30 11:16:35 +00:00
```sh
$ bench start
```
* Show bench help:
```sh
$ bench --help
```
2020-05-29 05:01:52 +00:00
For more in-depth information on commands and their usage, follow [Commands and Usage](https://github.com/frappe/bench/blob/develop/docs/commands_and_usage.md). As for a consolidated list of bench commands, check out [Bench Usage](https://github.com/frappe/bench/blob/develop/docs/bench_usage.md).
## Custom Bench Commands
2020-05-29 05:01:52 +00:00
If you wish to extend the capabilities of bench with your own custom Frappe Application, you may follow [Adding Custom Bench Commands](https://github.com/frappe/bench/blob/develop/docs/bench_custom_cmd.md).
## Bench Manager
[Bench Manager](https://github.com/frappe/bench_manager) is a GUI frontend for Bench with the same functionalties. You can install it by executing the following command:
```sh
$ bench setup manager
```
- **Note:** This will create a new site to setup Bench Manager, if you want to set it up on an existing site, run the following commands:
```sh
$ bench get-app https://github.com/frappe/bench_manager.git
$ bench --site <sitename> install-app bench_manager
```
## Guides
2016-05-18 12:02:51 +00:00
2018-01-16 18:31:57 +00:00
- [Configuring HTTPS](https://frappe.io/docs/user/en/bench/guides/configuring-https.html)
- [Using Let's Encrypt to setup HTTPS](https://frappe.io/docs/user/en/bench/guides/lets-encrypt-ssl-setup.html)
- [Diagnosing the Scheduler](https://frappe.io/docs/user/en/bench/guides/diagnosing-the-scheduler.html)
- [Change Hostname](https://frappe.io/docs/user/en/bench/guides/adding-custom-domains)
- [Manual Setup](https://frappe.io/docs/user/en/bench/guides/manual-setup.html)
- [Setup Production](https://frappe.io/docs/user/en/bench/guides/setup-production.html)
- [Setup Multitenancy](https://frappe.io/docs/user/en/bench/guides/setup-multitenancy.html)
- [Stopping Production](https://github.com/frappe/bench/wiki/Stopping-Production-and-starting-Development)
2014-07-16 08:39:16 +00:00
For an exhaustive list of guides, check out [Bench Guides](https://frappe.io/docs/user/en/bench/guides).
2014-07-21 11:18:41 +00:00
## Resources
2018-01-16 18:33:24 +00:00
- [Bench Commands Cheat Sheet](https://frappe.io/docs/user/en/bench/resources/bench-commands-cheatsheet.html)
- [Background Services](https://frappe.io/docs/user/en/bench/resources/background-services.html)
2018-01-16 18:33:24 +00:00
- [Bench Procfile](https://frappe.io/docs/user/en/bench/resources/bench-procfile.html)
2020-01-17 06:04:17 +00:00
For an exhaustive list of resources, check out [Bench Resources](https://frappe.io/docs/user/en/bench/resources).
2020-08-31 08:41:29 +00:00
## Development
To contribute and develop on the bench CLI tool, clone this repo and create an editable install. In editable mode, you may get the following warning everytime you run a bench command:
WARN: bench is installed in editable mode!
This is not the recommended mode of installation for production. Instead, install the package from PyPI with: `pip install frappe-bench`
```sh
$ git clone https://github.com/frappe/bench ~/bench-repo
$ pip3 install -e ~/bench-repo
$ bench src
/Users/frappe/bench-repo
```
To clear up the editable install and switch to a stable version of bench, uninstall via pip and delete the corresponding egg file from the python path.
```sh
# Delete bench installed in editable install
$ rm -r $(find ~ -name '*.egg-info')
$ pip3 uninstall frappe-bench
# Install latest released version of bench
$ pip3 install -U frappe-bench
```
To confirm the switch, check the output of `bench src`. It should change from something like `$HOME/bench-repo` to `/usr/local/lib/python3.6/dist-packages` and stop the editable install warnings from getting triggered at every command.
## License
This repository has been released under the [GNU GPLv3 License](LICENSE).