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
Redis Namespaces
Namespaces help to secure user's data. Multiple benches can use the same Redis instance without worrying about namespace conflicts. You can enable Redis namespaces in Frappe by following the given setup (for now Frappe supports namespaces for Redis Queue at bench level).
You can create Redis users and configure Frappe with credentials using bench create-rq-users CLI.
bench create-rq-users
# Optional flags
# --use-rq-auth Enable Redis authentication for all bench sites
# --set-admin-password sets default user admin password
Above command generates an ACL file in the bench configs directory. Make sure that Redis_queue.conf file is configured to use an acl file if not already (Alternatively, run
bench setup redis
with the latest version of the Bench CLI).
aclfile [frappe-bench-absolute-path]/config/redis_queue.acl