commit | 09e63d23b0d166fe48f0db6f778b082cc2542b4d | [log] [download] |
---|---|---|
author | WHR <msl0000023508@gmail.com> | Tue Aug 14 13:35:37 2018 +0800 |
committer | WHR <msl0000023508@gmail.com> | Tue Aug 14 13:35:37 2018 +0800 |
tree | e2b1e7207d2e19e88475dcefeedbf9a08910f0ad | |
parent | 7d832b2171a21ac7e6815981e03d67458317ecb6 [diff] |
Fix typo
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
By default the Bukkit based servers will ignore EOF from stdin, resulting in busy loop if stdin is redirected to /dev/null. The recommended solution is to use tmux(1) with it; however there is also an option --noconsole
available, to disable reading from stdin in Bukkit server. For example the start.sh
could be written as:
#!/bin/sh JAVA_HOME=/opt/jdk1.7.0_80 echo $$ > server.pid tty -s && options= || options="--noconsole --nojline" exec "$JAVA_HOME/bin/java" -jar /opt/minecraft/craftbukkit-1.2.5-R5.0.jar $options "$@"
Option --nojline
disables the line editing library jline, since it will be useless after stdin redirected to /dev/null
.