commit | 3e339ffe3085508c348e41d908e2a3b05df56b7a | [log] [download] |
---|---|---|
author | WHR <msl0000023508@gmail.com> | Mon Aug 13 21:58:53 2018 +0800 |
committer | WHR <msl0000023508@gmail.com> | Mon Aug 13 21:58:53 2018 +0800 |
tree | 6107f32179c98576da6aff133e76f5e3ca54198c | |
parent | 51819c0eac9f6455b83e5aa3a27d57cc4d33faa8 [diff] |
Add dependency for minecraft-tmux@.service
Configuration file /etc/default/minecraft
|Variable |Description |Default value | |-------------------------------|-------------------------------------------------------|-----------------------| |MINECRAFT_USER_NAME |The user name to run Minecraft server |minecraft | |MINECRAFT_HOME |Home directory of Minecraft server instances |/home/minecraft | |MINECRAFT_START_COMMAND |Server startup command |exec sh start.sh | |MINECRAFT_USE_TMUX |Enable to uses of tmux(1) |NO | |MINECRAFT_SESSION_NAME |Base session name of tmux(1) sessions |minecraft | |MINECRAFT_ALTERNATIVE_LOG_FILE |Redirect outputs to this file if tmux(1) is not used |/dev/null | |MINECRAFT_SERVERS |Space separated server instances | |
Server instances are directories under MINECRAFT_HOME; each server instance will be started under its instance directory by running MINECRAFT_START_COMMAND. Enabling tmux(1) is recommended if using Bukkit server framework, as this server didn't save worlds when exiting on signals. Session name of each server instance will be ‘MINECRAFT_SESSION_NAME-INSTANCE_NAME’.
/etc/default/minecraft
example:
MINECRAFT_HOME=/export/home/minecraft MINECRAFT_SERVERS="1.7-server 1.8-server" MINECRAFT_USE_TMUX=YES
The user (minecraft
by default) must have a sh(1)
compatible shell in order to run shell commands with the default shell.
The startup script (start.sh
by default) must write the PID of server program to server.pid
, and must not fork the server program into background.
start.sh
example:
#!/bin/sh JAVA_HOME=/opt/jdk1.7.0_80 echo $$ > server.pid exec "$JAVA_HOME/bin/java" -jar /opt/minecraft/minecraft-server-1.7.10.jar --nogui
This is very similar with init.d/minecraft
, except the configuration variables are in lower case and set from rc.conf
instead of /etc/default/minecraft
Example configuration in rc.conf
:
minecraft_enable="YES" minecraft_home="/usr/home/minecraft" minecraft_use_tmux="YES" minecraft_servers="1.7-server 1.8-server"
The user and startup script requirements are same with init.d/minecraft
.
minecraft_use_tmux="YES"
svccfg(1M) should be used instead of editing configuration file; configuration properties and its default values are:
$ svccfg -s site/minecraft listprop config config application config/alt_log_file astring /dev/null config/session_name astring minecraft config/start_command astring "exec sh start.sh" config/use_tmux boolean false config/user astring minecraft config/home astring /var/games/minecraft config/servers astring
Example configuration:
# svccfg -s site/minecraft setprop config/home = astring: /export/home/minecraft # svccfg -s site/minecraft setprop config/use_tmux = boolean: true # svccfg -s site/minecraft setprop config/servers = astring: '("1.7-server" "1.8-server")' # svcadm enable site/minecraft
Due to some limitations of systemd, many configuration variables used in previous scripts are hardcoded; service user will always be minecraft
; home directory is the home directory of user minecraft
; start up script is start.sh
under instance directory. Two types of services are available: minecraft@.service
and minecraft-tmux@.service
; use only one type per instance. Like init.d/minecraft
, instances are directories under home directory. Referencing an instance in systemd with minecraft@<instance-name>.service
or minecraft-tmux@<instance-name>.service
. To configure multiple server instances, just enable every instance via systemctl(1).
Example configuration:
# systemctl enable --now minecraft-tmux@1.6-server minecraft@1.7-server minecraft@1.8-server