blob: 9aa8873e3f4a31402e200273ed7eee0fef24284e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
post_install() {
# create user and set ownership
useradd -d /opt/anki-sync-server -r -s /sbin/nologin anki-sync-server
chown -R anki-sync-server /opt/anki-sync-server
chgrp -R anki-sync-server /opt/anki-sync-server
# fix protobuf needs older version (pending upstream change)
sudo -u anki-sync-server sed -i "s/\\(protobuf\\)==.*$/\\1<=3.20.1/" /opt/anki-sync-server/requirements.txt
# install prerequisites as stated on the website
echo "installing python packages as anki-sync-server user..."
sudo -u anki-sync-server pip install -r /opt/anki-sync-server/requirements.txt --user --no-warn-script-location
append_nginx_config
systemctl enable anki-sync-server
systemctl start anki-sync-server
# post installation instructions
echo "==============================================="
echo "Check the manpage for post-install instructions"
echo "==============================================="
# ankisyncctl.py can't find ankisyncd module unless it's in the root directory (pending upstream change)
sudo -u anki-sync-server mv /opt/anki-sync-server/ankisyncd_cli/ankisyncctl.py /opt/anki-sync-server/.
}
post_remove(){
# stop service (and remove systemd files)
systemctl stop anki-sync-server
systemctl disable anki-sync-server
echo "Executing systemctl daemon-reload"
systemctl daemon-reload
# remove user (& group)
getent passwd anki-sync-server &>/dev/null && userdel anki-sync-server || true
getent group anki-sync-server &>/dev/null && groupdel anki-sync-server || true
# remove servers from sites-enabled
sudo find /etc/nginx/sites-enabled \( -name "anki-sync-server-http" -or -name "anki-sync-server-https" \) -delete
sudo find /etc/nginx/sites-enabled -type d -empty -delete
echo "==================================================================="
echo "rm -rf /opt/anki-sync-server to remove the database and cache files"
echo "==================================================================="
}
pre_upgrade(){
echo "stopping anki-sync-server.service..."
sudo systemctl stop anki-sync-server.service
}
post_upgrade(){
# install prerequisites as stated on the website
echo "installing python packages as anki-sync-server user..."
sudo -u anki-sync-server pip install -r /opt/anki-sync-server/requirements.txt --user
append_nginx_config
sudo chown -R anki-sync-server /opt/anki-sync-server
sudo chgrp -R anki-sync-server /opt/anki-sync-server
echo "reloading systemd daemon..."
sudo systemctl daemon-reload
echo "starting anki-sync-server.service..."
sudo systemctl start anki-sync-server
}
function append_nginx_config() {
local _config_dir_="/etc/nginx"
local _pacsave_="${_config_dir_}/nginx.conf.pacsave"
local _config_="${_config_dir_}/nginx.conf"
local _sites_available_dir_="${_config_dir_}/sites-available"
local _sites_enabled_dir_="${_config_dir_}/sites-enabled"
local _nginx_plugins_dir_="/opt/anki-sync-server/plugins/nginx"
if (grep "include[[:space:]]\+/etc/nginx/sites-enabled" "${_config_}" --quiet); then
echo "nginx config aleady uses sites-enabled"
echo "not modifying nginx.conf!"
echo "= you may need to manually enable the anki server ="
else
sudo cp "${_config_}" "${_pacsave_}"
sudo awk -f "${_nginx_plugins_dir_}/append.awk" \
"${_pacsave_}" > "${_config_}"
# defaulting to use http
! [ -f "${_sites_enabled_dir_}/anki-sync-server-http" ] && \
sudo \
ln -s "${_sites_available_dir_}/anki-sync-server-http" \
"${_sites_enabled_dir_}/anki-sync-server-http"
fi
}
|