Production Setup

Bench is the CLI tool to manage deployments for sites based on Frappe Framework. Here are steps to deploy your frappe based sites on production.

Install Bench

Deploying frappe sites is not too different from setting it up on your local system. Install bench using the Easy Install script if your server is one of the supported linux distributions (Debian, Ubuntu, CentOS). Make sure you pass the --production flag to the script.

sudo python install.py --production --user [frappe-user]

Setup sites and apps

# change directory to frappe-bench
cd frappe-bench

# create a new site
bench new-site example.com

# download frappe apps or your custom-apps
bench get-app erpnext
bench get-app https://github.com/yourremote/yourapp.git

# install apps onto your site
bench --site example.com install-app erpnext yourapp

Check supervisor

If everything is setup properly, you should see frappe processes as the supervisor status output.

$ sudo supervisorctl status
frappe-bench-redis:frappe-bench-redis-cache                 RUNNING   pid 6467, uptime 10 days, 8:12:09
frappe-bench-redis:frappe-bench-redis-queue                 RUNNING   pid 6466, uptime 10 days, 8:12:09
frappe-bench-redis:frappe-bench-redis-socketio              RUNNING   pid 6468, uptime 10 days, 8:12:09
frappe-bench-web:frappe-bench-frappe-web                    RUNNING   pid 8856, uptime 10 days, 4:32:18
frappe-bench-web:frappe-bench-node-socketio                 RUNNING   pid 8858, uptime 10 days, 4:32:18
frappe-bench-workers:frappe-bench-frappe-default-worker-0   RUNNING   pid 8823, uptime 10 days, 4:32:19
frappe-bench-workers:frappe-bench-frappe-long-worker-0      RUNNING   pid 8824, uptime 10 days, 4:32:19
frappe-bench-workers:frappe-bench-frappe-schedule           RUNNING   pid 8822, uptime 10 days, 4:32:19
frappe-bench-workers:frappe-bench-frappe-short-worker-0     RUNNING   pid 8825, uptime 10 days, 4:32:19

If you own example.com and it is mapped to the IP Address of your server, your site should be live on example.com.

Updating

To update your sites, just run the following command. It will update all of your apps (git pull), run patches on all sites, build JS and CSS assets and restart supervisor.

# update everything
bench update

# update apps
bench update --pull

# run patches only
bench update --patch

# build assets only
bench update --build

# update bench (the cli)
bench update --bench

# update python packages and node_modules
bench update --requirements