Rich Freeman on 22 Oct 2015 04:14:55 -0700 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: [PLUG] Void Linux tips |
On Thu, Oct 22, 2015 at 12:17 AM, brent timothy saner <brent.saner@gmail.com> wrote: > > i find a lot of it comes from individuals who have never actually used > systemd in a production or regular environment (or a *proper* systemd > implementation- such as Arch's- and have instead used a half-cocked > hybridized implementation such as debian, ubuntu, centos to a lesser > degree, etc.) > I'll agree with the latter half of that sentiment in particular. I think systemd has a really clean approach to its configuration with a declarative design. Distros that still use their old shell scripts with systemd are losing much of the benefit of that. Oh, and if you stick to upstream it actually gives you configuration files that are distro-agnostic - my unit file is likely identical to the one on arch, and if it isn't it would probably still work there. Case in point - the Gentoo apache2 scripts. Which do you find easier to read (and looking at the second one I find it a bit amusing that people accuse systemd of scope creep - at least its service manager component just manages services): [Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target [Service] EnvironmentFile=/etc/conf.d/apache2 ExecStart=/usr/sbin/apache2 $APACHE2_OPTS -DFOREGROUND ExecReload=/usr/sbin/apache2 $APACHE2_OPTS -k graceful ExecStop=/usr/sbin/apache2 $APACHE2_OPTS -k graceful-stop # We want systemd to give httpd some time to finish gracefully, but still want # it to kill httpd after TimeoutStopSec if something went wrong during the # graceful stop. Normally, Systemd sends SIGTERM signal right after the # ExecStop, which would kill httpd. We are sending useless SIGCONT here to give # httpd time to finish. KillSignal=SIGCONT PrivateTmp=true [Install] WantedBy=multi-user.target or #!/sbin/runscript # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 extra_commands="configtest modules virtualhosts" extra_started_commands="configdump fullstatus graceful gracefulstop reload" description_configdump="Dumps the configuration of the runing apache server. Requires server-info to be enabled and www-client/lynx." description_configtest="Run syntax tests for configuration files." description_fullstatus="Gives the full status of the server. Requires lynx and server-status to be enabled." description_graceful="A graceful restart advises the children to exit after the current request and reloads the configuration." description_gracefulstop="A graceful stop advises the children to exit after the current request and stops the server." description_modules="Dump a list of loaded Static and Shared Modules." description_reload="Kills all children and reloads the configuration." description_virtualhosts="Show the settings as parsed from the config file (currently only shows the virtualhost settings)." description_stop="Kills all children and stops the server." depend() { need net use mysql dns logger netmount postgresql after sshd } configtest() { ebegin "Checking ${SVCNAME} configuration" checkconfig eend $? } checkconfd() { if [ ! -f /etc/init.d/sysfs ]; then eerror "This init script works only with openrc (baselayout-2)." eerror "If you still need baselayout-1.x, please, use" eerror "apache2.initd-baselayout-1 from /usr/share/doc/apache2-*/" fi PIDFILE="${PIDFILE:-/var/run/apache2.pid}" TIMEOUT=${TIMEOUT:-15} SERVERROOT="${SERVERROOT:-/usr/lib64/apache2}" if [ ! -d ${SERVERROOT} ]; then eerror "SERVERROOT does not exist: ${SERVERROOT}" return 1 fi CONFIGFILE="${CONFIGFILE:-/etc/apache2/httpd.conf}" [ "${CONFIGFILE#/}" = "${CONFIGFILE}" ] && CONFIGFILE="${SERVERROOT}/${CONFIGFILE}" if [ ! -r "${CONFIGFILE}" ]; then eerror "Unable to read configuration file: ${CONFIGFILE}" return 1 fi APACHE2_OPTS="${APACHE2_OPTS} -d ${SERVERROOT}" APACHE2_OPTS="${APACHE2_OPTS} -f ${CONFIGFILE}" [ -n "${STARTUPERRORLOG}" ] && APACHE2_OPTS="${APACHE2_OPTS} -E ${STARTUPERRORLOG}" APACHE2="/usr/sbin/apache2" } checkconfig() { checkpath --directory /run/apache_ssl_mutex checkconfd || return 1 ${APACHE2} ${APACHE2_OPTS} -t 1>/dev/null 2>&1 ret=$? if [ $ret -ne 0 ]; then eerror "${SVCNAME} has detected an error in your setup:" ${APACHE2} ${APACHE2_OPTS} -t fi return $ret } start() { checkconfig || return 1 ebegin "Starting ${SVCNAME}" # Use start stop daemon to apply system limits #347301 start-stop-daemon --start -- ${APACHE2} ${APACHE2_OPTS} -k start local i=0 retval=1 while [ $i -lt ${TIMEOUT} ] ; do if [ -e "${PIDFILE}" ] ; then retval=0 break fi sleep 1 && i=$(expr $i + 1) done eend ${retval} } stop() { if [ "${RC_CMD}" = "restart" ]; then checkconfig || return 1 else checkconfd || return 1 fi PID=$(cat "${PIDFILE}" 2>/dev/null) if [ -z "${PID}" ]; then einfo "${SVCNAME} not running (no pid file)" return 0 fi ebegin "Stopping ${SVCNAME}" ${APACHE2} ${APACHE2_OPTS} -k stop local i=0 retval=0 while ( test -f "${PIDFILE}" || pgrep -P ${PID} apache2 >/dev/null ) \ && [ $i -lt ${TIMEOUT} ]; do sleep 1 && i=$(expr $i + 1) done [ -e "${PIDFILE}" ] && retval=1 eend ${retval} } reload() { RELOAD_TYPE="${RELOAD_TYPE:-graceful}" checkconfig || return 1 if [ "${RELOAD_TYPE}" = "restart" ]; then ebegin "Restarting ${SVCNAME}" ${APACHE2} ${APACHE2_OPTS} -k restart eend $? elif [ "${RELOAD_TYPE}" = "graceful" ]; then ebegin "Gracefully restarting ${SVCNAME}" ${APACHE2} ${APACHE2_OPTS} -k graceful eend $? else eerror "${RELOAD_TYPE} is not a valid RELOAD_TYPE. Please edit /etc/conf.d/${SVCNAME}" fi } graceful() { checkconfig || return 1 ebegin "Gracefully restarting ${SVCNAME}" ${APACHE2} ${APACHE2_OPTS} -k graceful eend $? } gracefulstop() { checkconfig || return 1 ebegin "Gracefully stopping ${SVCNAME}" ${APACHE2} ${APACHE2_OPTS} -k graceful-stop eend $? } modules() { checkconfig || return 1 ${APACHE2} ${APACHE2_OPTS} -M 2>&1 } fullstatus() { LYNX="${LYNX:-lynx -dump}" STATUSURL="${STATUSURL:-http://localhost/server-status}" if ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then eerror "lynx not found! you need to emerge www-client/lynx" else ${LYNX} ${STATUSURL} fi } virtualhosts() { checkconfig || return 1 ${APACHE2} ${APACHE2_OPTS} -S } configdump() { LYNX="${LYNX:-lynx -dump}" INFOURL="${INFOURL:-http://localhost/server-info}" checkconfd || return 1 if ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then eerror "lynx not found! you need to emerge www-client/lynx" else echo "${APACHE2} started with '${APACHE2_OPTS}'" for i in config server list; do ${LYNX} "${INFOURL}/?${i}" | sed '/Apache Server Information/d;/^[[:space:]]\+[_]\+$/Q' done fi } # vim: ts=4 filetype=gentoo-init-d ___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug