projects/aports·blob master · refs

154 lines · 3.4 KiB

1#!/sbin/openrc-run
2
3extra_commands="configdump configtest modules virtualhosts"
4extra_started_commands="fullstatus graceful gracefulstop reload"
5
6depend() {
7 need net
8 use mysql dns logger netmount postgresql
9 after sshd firewall
10}
11
12configtest() {
13 ebegin "Checking ${SVCNAME} configuration"
14 checkconfig
15 eend $?
16}
17
18checkconfd() {
19 PIDFILE="${PIDFILE:-/run/apache2/httpd.pid}"
20 TIMEOUT=${TIMEOUT:-10}
21
22 SERVERROOT="${SERVERROOT:-/var/www}"
23 if [ ! -d ${SERVERROOT} ]; then
24 eerror "SERVERROOT does not exist: ${SERVERROOT}"
25 return 1
26 fi
27
28 CONFIGFILE="${CONFIGFILE:-/etc/apache2/httpd.conf}"
29 [ "${CONFIGFILE#/}" = "${CONFIGFILE}" ] && CONFIGFILE="${SERVERROOT}/${CONFIGFILE}"
30 if [ ! -r "${CONFIGFILE}" ]; then
31 eerror "Unable to read configuration file: ${CONFIGFILE}"
32 return 1
33 fi
34
35 HTTPD_OPTS="${HTTPD_OPTS} -d ${SERVERROOT}"
36 HTTPD_OPTS="${HTTPD_OPTS} -f ${CONFIGFILE}"
37 [ -n "${STARTUPERRORLOG}" ] && HTTPD_OPTS="${HTTPD_OPTS} -E ${STARTUPERRORLOG}"
38 return 0
39
40}
41
42checkconfig() {
43 checkconfd || return 1
44
45 ${HTTPD} ${HTTPD_OPTS} -t 1>/dev/null 2>&1
46 ret=$?
47 if [ $ret -ne 0 ]; then
48 eerror "${SVCNAME} has detected an error in your setup:"
49 ${HTTPD} ${HTTPD_OPTS} -t
50 fi
51
52 return $ret
53}
54
55start() {
56 checkconfig || return 1
57 checkpath --directory $(dirname $PIDFILE)
58
59 [ -f /var/log/apache2/ssl_scache ] && rm /var/log/apache2/ssl_scache
60
61 ebegin "Starting ${SVCNAME}"
62 start-stop-daemon --start \
63 --pidfile ${PIDFILE} \
64 --exec ${HTTPD} \
65 -- ${HTTPD_OPTS} -k start
66 eend $?
67}
68
69stop() {
70 checkconfd || return 1
71
72 ebegin "Stopping ${SVCNAME}"
73 start-stop-daemon --stop --pidfile ${PIDFILE} --exec ${HTTPD} \
74 --retry ${TIMEOUT}
75 eend $?
76}
77
78reload() {
79 RELOAD_TYPE="${RELOAD_TYPE:-graceful}"
80
81 checkconfig || return 1
82 service_started "${SVCNAME}" || return
83
84 if [ "${RELOAD_TYPE}" = "restart" ]; then
85 ebegin "Restarting ${SVCNAME}"
86 ${HTTPD} ${HTTPD_OPTS} -k restart
87 eend $?
88 elif [ "${RELOAD_TYPE}" = "graceful" ]; then
89 ebegin "Gracefully restarting ${SVCNAME}"
90 ${HTTPD} ${HTTPD_OPTS} -k graceful
91 eend $?
92 else
93 eerror "${RELOAD_TYPE} is not a valid RELOAD_TYPE. Please edit /etc/conf.d/${SVCNAME}"
94 fi
95}
96
97graceful() {
98 checkconfig || return 1
99 service_started "${SVCNAME}" || return
100 ebegin "Gracefully restarting ${SVCNAME}"
101 ${HTTPD} ${HTTPD_OPTS} -k graceful
102 eend $?
103}
104
105gracefulstop() {
106 checkconfig || return 1
107 ebegin "Gracefully stopping ${SVCNAME}"
108 start-stop-daemon --stop --pidfile ${PIDFILE} --exec ${HTTPD} \
109 --retry SIGWINCH/${TIMEOUT}
110 eend $?
111}
112
113modules() {
114 checkconfig || return 1
115
116 ${HTTPD} ${HTTPD_OPTS} -M 2>&1
117}
118
119fullstatus() {
120 LYNX="${LYNX:-lynx -dump}"
121 STATUSURL="${STATUSURL:-http://localhost/server-status}"
122
123 if ! service_started "${SVCNAME}"; then
124 eerror "${SVCNAME} not started"
125 elif ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then
126 eerror "lynx not installed!"
127 else
128 ${LYNX} ${STATUSURL}
129 fi
130}
131
132virtualhosts() {
133 checkconfd || return 1
134 ${HTTPD} ${HTTPD_OPTS} -S
135}
136
137configdump() {
138 LYNX="${LYNX:-lynx -dump}"
139 INFOURL="${INFOURL:-http://localhost/server-info}"
140
141 checkconfd || return 1
142
143 if ! service_started "${SVCNAME}"; then
144 eerror "${SVCNAME} not started"
145 elif ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then
146 eerror "lynx not installed!"
147 else
148 echo "${HTTPD} started with '${HTTPD_OPTS}'"
149 for i in config server list; do
150 ${LYNX} "${INFOURL}/?${i}" | sed '/Apache Server Information/d;/^[[:space:]]\+[_]\+$/Q'
151 done
152 fi
153}
154