chore: add deploy config with systemd services for auto-start on boot
- frappe-bench-web, worker, schedule, socketio, watch services - frappe-bench.target to group all services - bench-env.sh wrapper for proper PATH resolution - deploy README with installation/management instructions
This commit is contained in:
parent
0b0cf7e4a2
commit
759fac5a67
8 changed files with 154 additions and 0 deletions
44
deploy/README.md
Normal file
44
deploy/README.md
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Deployment Configuration
|
||||||
|
|
||||||
|
## Systemd Services
|
||||||
|
|
||||||
|
The Frappe Bench (ERPNext) is managed via systemd for automatic startup on boot.
|
||||||
|
|
||||||
|
### Services
|
||||||
|
|
||||||
|
| Service | Description | Port |
|
||||||
|
|---------|-------------|------|
|
||||||
|
| `frappe-bench-web.service` | Web server (gunicorn) | 8000 |
|
||||||
|
| `frappe-bench-worker.service` | Background async worker | - |
|
||||||
|
| `frappe-bench-schedule.service` | Scheduled job runner | - |
|
||||||
|
| `frappe-bench-socketio.service` | Realtime WebSocket server | 9000 |
|
||||||
|
| `frappe-bench-watch.service` | File watcher (dev/assets) | - |
|
||||||
|
|
||||||
|
### Management
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# View status of all services
|
||||||
|
systemctl status frappe-bench-web.service
|
||||||
|
|
||||||
|
# Start/Stop all services
|
||||||
|
systemctl start frappe-bench.target
|
||||||
|
systemctl stop frappe-bench.target
|
||||||
|
|
||||||
|
# View logs
|
||||||
|
journalctl -u frappe-bench-web.service -f
|
||||||
|
journalctl -u frappe-bench-worker.service -f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo cp deploy/frappe-bench-*.service deploy/frappe-bench.target /etc/systemd/system/
|
||||||
|
sudo cp deploy/bench-env.sh /opt/erpnext/frappe-bench/bench-env.sh
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable frappe-bench.target
|
||||||
|
sudo systemctl start frappe-bench.target
|
||||||
|
```
|
||||||
|
|
||||||
|
### Credentials
|
||||||
|
|
||||||
|
Admin credentials are stored in `/root/erpnext-admin-credentials.txt`.
|
||||||
6
deploy/bench-env.sh
Executable file
6
deploy/bench-env.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Environment wrapper for Frappe bench services
|
||||||
|
export PATH="/opt/erpnext/home/.local/share/pipx/venvs/frappe-bench/bin:/opt/erpnext/frappe-bench/env/bin:$PATH"
|
||||||
|
export HOME="/opt/erpnext/home"
|
||||||
|
cd /opt/erpnext/frappe-bench
|
||||||
|
exec "$@"
|
||||||
19
deploy/frappe-bench-schedule.service
Normal file
19
deploy/frappe-bench-schedule.service
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Frappe Bench Scheduler
|
||||||
|
Documentation=https://frappeframework.com
|
||||||
|
After=network.target redis-server.service
|
||||||
|
Requires=redis-server.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=erpnext
|
||||||
|
Group=erpnext
|
||||||
|
WorkingDirectory=/opt/erpnext/frappe-bench
|
||||||
|
ExecStart=/opt/erpnext/frappe-bench/bench-env.sh bench schedule
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardOutput=append:/opt/erpnext/frappe-bench/logs/schedule.log
|
||||||
|
StandardError=append:/opt/erpnext/frappe-bench/logs/schedule.error.log
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
19
deploy/frappe-bench-socketio.service
Normal file
19
deploy/frappe-bench-socketio.service
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Frappe Bench SocketIO (Realtime)
|
||||||
|
Documentation=https://frappeframework.com
|
||||||
|
After=network.target redis-server.service
|
||||||
|
Requires=redis-server.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=erpnext
|
||||||
|
Group=erpnext
|
||||||
|
WorkingDirectory=/opt/erpnext/frappe-bench
|
||||||
|
ExecStart=/opt/erpnext/frappe-bench/bench-env.sh bench socketio
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardOutput=append:/opt/erpnext/frappe-bench/logs/socketio.log
|
||||||
|
StandardError=append:/opt/erpnext/frappe-bench/logs/socketio.error.log
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
19
deploy/frappe-bench-watch.service
Normal file
19
deploy/frappe-bench-watch.service
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Frappe Bench File Watcher (Development)
|
||||||
|
Documentation=https://frappeframework.com
|
||||||
|
After=network.target
|
||||||
|
PartOf=frappe-bench-web.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=erpnext
|
||||||
|
Group=erpnext
|
||||||
|
WorkingDirectory=/opt/erpnext/frappe-bench
|
||||||
|
ExecStart=/opt/erpnext/frappe-bench/bench-env.sh bench watch
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardOutput=append:/opt/erpnext/frappe-bench/logs/watch.log
|
||||||
|
StandardError=append:/opt/erpnext/frappe-bench/logs/watch.error.log
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
19
deploy/frappe-bench-web.service
Normal file
19
deploy/frappe-bench-web.service
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Frappe Bench Web Server (ERPNext)
|
||||||
|
Documentation=https://frappeframework.com
|
||||||
|
After=network.target redis-server.service
|
||||||
|
Requires=redis-server.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=erpnext
|
||||||
|
Group=erpnext
|
||||||
|
WorkingDirectory=/opt/erpnext/frappe-bench
|
||||||
|
ExecStart=/opt/erpnext/frappe-bench/bench-env.sh bench serve --port 8000
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardOutput=append:/opt/erpnext/frappe-bench/logs/web.log
|
||||||
|
StandardError=append:/opt/erpnext/frappe-bench/logs/web.error.log
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
19
deploy/frappe-bench-worker.service
Normal file
19
deploy/frappe-bench-worker.service
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Frappe Bench Background Worker
|
||||||
|
Documentation=https://frappeframework.com
|
||||||
|
After=network.target redis-server.service
|
||||||
|
Requires=redis-server.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=erpnext
|
||||||
|
Group=erpnext
|
||||||
|
WorkingDirectory=/opt/erpnext/frappe-bench
|
||||||
|
ExecStart=/opt/erpnext/frappe-bench/bench-env.sh bench worker
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardOutput=append:/opt/erpnext/frappe-bench/logs/worker.log
|
||||||
|
StandardError=append:/opt/erpnext/frappe-bench/logs/worker.error.log
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
9
deploy/frappe-bench.target
Normal file
9
deploy/frappe-bench.target
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Frappe Bench (ERPNext) - All Services
|
||||||
|
Documentation=https://frappeframework.com
|
||||||
|
Requires=redis-server.service
|
||||||
|
After=redis-server.service network.target
|
||||||
|
Wants=frappe-bench-web.service frappe-bench-worker.service frappe-bench-schedule.service frappe-bench-socketio.service frappe-bench-watch.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
Loading…
Reference in a new issue