Tutoriales / Script de inicio del servidor

Quien soy
Martí Micolau
@martimicolau
Autor y referencias
Este tutorial es exclusivo de Java Edition.  advertencia  Dado que esta es una página web y cualquiera puede modificar cualquier página en cualquier momento, se sugiere que no utilice este script, sino que simplemente lo utilice como una guía para escribir el suyo.

Este es un ejemplo de un posible script de inicio y mantenimiento del servidor de Minecraft para distribuciones GNU / Linux.



Contenido

  • 1 secuencia de comandos de Systemd
    • Instalacion 1.1
    • 1.2 Instancia de configuración
    • 1.3 Iniciar / detener instancias
    • 1.4 Inicio automático
      • 1.4.1 Habilitar
      • 1.4.2 Desactivar
  • 2 Script de inicialización
    • 2.1 Prerrequisitos
    • 2.2 Descargar
    • Requisitos de 2.3
    • Instalacion 2.4
    • 2.5 Desinstalar
    • Uso de 2.6
    • 2.7
    • 2.8 Información adicional
  • 3 scripts de inicio alternativos

Script de Systemd

Para todos los servidores modernos compatibles con Systemd. Systemd es el gato de todos los oficios. Para Ubuntu, viene con 15.04 (15.04 es una versión antigua que ha tenido fin de soporte, sugerimos usar versiones posteriores de LTS en su lugar, pero el siguiente contenido funciona completamente en esta versión).

Instalación

  1. Conéctese a su (v) servidor raíz o si desea ejecutar el servidor en su máquina, abra una terminal.
  2. Conviértete en root usando su o sudo. Para comprobar si es root, ejecute whoami para mostrar su nombre de usuario.
  3. A continuación, instale los paquetes necesarios apt install openjdk-8-jre-headless curl screen nano bash grep
  4. Cree la carpeta / opt si aún no existe: mkdir / opt
  5. Cree el grupo de minecraft para el usuario de minecraft que agregaremos en el siguiente paso: groupadd minecraft
  6. Ahora necesita crear el usuario para el servicio: useradd --system --shell / usr / sbin / nologin --home / opt / minecraft -g minecraft minecraft
  7. Cree el archivo de unidad Systemd nano /etc/systemd/system/minecraft@.service y lo siguiente:

[Unidad] Descripción = Minecraft Server% i After = network.target [Service] WorkingDirectory = / opt / minecraft /% i # Resuelve el problema en el que el servidor de Minecraft se reinicia sin cesar # Ver https://askubuntu.com/questions/ 953920 / systemctl-service-timed-out-during-start para obtener más información Type = simple PrivateUsers = true # La base de datos de usuarios no está disponible desde dentro de la unidad, solo root y minecraft están disponibles, todos los demás no son nadie User = minecraft Group = minecraft ProtectSystem = full # El mapeo de solo lectura de / usr / boot y / etc ProtectHome = true # / home, / root y / run / user parecen estar vacíos desde dentro de la unidad. Se recomienda habilitar esta configuración para todos los servicios de larga duración (en particular, los que están conectados a la red). ProtectKernelTunables = true # / proc / sys, / sys, / proc / sysrq-trigger, / proc / latency_stats, / proc / acpi, / proc / timer_stats, / proc / fs y / proc / irq serán de solo lectura dentro del unidad. Se recomienda activarlo para la mayoría de los servicios. # Implica MountFlags = esclavo ProtectKernelModules = true # Bloquear llamadas al sistema del módulo, también / usr / lib / modules. Se recomienda activarlo para la mayoría de los servicios que no necesitan sistemas de archivos especiales o módulos de kernel adicionales para funcionar # Implica NoNewPrivileges = yes ProtectControlGroups = true # Por lo tanto, se recomienda activarlo para la mayoría de los servicios. # Implica MountAPIVFS = yes # Establecer valores de memoria predeterminados Environment = "MCMINMEM = 512M" "MCMAXMEM = 1024M" "SHUTDOWN_DELAY = 5" "POST_SHUTDOWN_DELAY = 10" # Cambiar valores de memoria en el archivo de entorno EnvironmentFile = - / opt / minecraft /% i / server.conf. si necesita actualizar # debido a que Minecraft 8 requiere Java 777 ExecStart = / bin / sh -c 'find -L. -maxdepth 1 -type f -iregex ". * / (FTBServer | craftbukkit | spigot | paper | forge | minecraft_server ). * jar" -print0 -quit | xargs -0 -I {} / usr / bin / screen -DmS mc-% i / usr / bin / java -server -Xms $ {MCMINMEM} -Xmx $ {MCMAXMEM} -XX: + UseG1GC -XX: + CMSClassUnloadingEnabled - XX: ParallelGCThreads = 2 -XX: MinHeapFreeRatio = 5 -XX: MaxHeapFreeRatio = 10 -jar {} nogui '# Alternativa al ExecStart anterior. Se encontró que funciona mejor ya que esto crea la sesión de pantalla antes de invocar a Java para ejecutar el servidor. # Resuelve el problema que muchos encontraron al iniciar el servicio donde fallaría con el error 'no se encontró sesión de pantalla'. ExecStartPre = / bin / sh -c 'buscar -L. -maxdepth 1 -type f -iregex ". * / (FTBServer | craftbukkit | spigot | paper | forge | minecraft_server ). * jar" -print0 -quit | xargs -0 -I {} / usr / bin / screen -DmS mc-% i 'ExecStart = / bin / sh -c' / usr / bin / java -server -Xms $ {MCMINMEM} -Xmx $ {MCMAXMEM} - XX: + UseG1GC -XX: + CMSClassUnloadingEnabled -XX: ParallelGCThreads = 2 -XX: MinHeapFreeRatio = 5 -XX: MaxHeapFreeRatio = 10 -jar {} # inserte el nombre del jar del servidor. es decir, 'server.jar' nogui '# Simplificado de la alternativa ExecStartPre = / bin / sh -c' / usr / bin / screen -dmS mc-% i 'ExecStart = / bin / sh -c' / usr / bin / java -server -Xmx $ {MCMAXMEM} -Xms $ {MCMINMEM} -jar server.jar nogui 'ExecReload = / usr / bin / screen -p 0 -S mc-% i -X eval' stuff "reload" 015 'ExecStop = / usr / bin / screen -p 0 -S mc-% i -X eval 'stuff "dice SERVIDOR APAGANDO.


Instancia de configuración

Ahora puede cargar sus FTB Modpacks en una subcarpeta de / opt / minecraft /. Por ejemplo, colocaría el modpack "FTB Beyond" en "/ opt / minecraft / FTBBeyond" (sin espacios en el nombre). Si desea ejecutar instancias vanilla, simplemente cree una carpeta dentro de / opt / minecraft y cargue minecraft_server.jar y cree el archivo eula.txt (usando: echo "eula = true"> /opt/minecraft/vanilla/eula.txt ).


Después de cargar los archivos del servidor de Minecraft, asegúrese de que "Minecraft" sea el propietario y el grupo propietario. Para hacerlo, simplemente ejecute "ls -la / opt / minecraft". Si no es así, ejecute "chown minecraft: minecraft / opt / minecraft / FTBBeyond". También es posible que deba completar la instalación. Para los paquetes FTB actuales, ejecutaría:

cd / opt / minecraft / FTBBeyond echo "eula = true"> /opt/minecraft/FTBBeyond/eula.txt su -c "/opt/minecraft/FTBBeyond/FTBInstall.sh" -s "/ bin / bash" minecraft

Iniciar / detener instancias

Inicia su servidor usando "systemctl start minecraft @ FTBBeyond" y lo detiene usando "systemctl stop minecraft @ FTBBeyond". La parte detrás de "@" es el nombre de su instancia, por ejemplo, el nombre de la carpeta. Este script también se encarga de detener automáticamente su servidor de Minecraft si reinicia el servidor.

inicio

permitir

systemctl habilitar minecraft @ FTBBeyond

Deshabilitar

systemctl deshabilitar minecraft @ FTBBeyond

Script de inicialización

Para servidores heredados que no tienen Systemd integrado en el sistema operativo

Prerrequisitos

Se debe instalar el paquete de pantalla.
En distribuciones basadas en CentOs y Red Hat:


pantalla de instalación de yum

En sistemas basados ​​en Debian como Ubuntu:

apt-get install pantalla de python

Descargar

Para descargar el script con wget, ejecute lo siguiente (TENGA CUIDADO QUE EL SCRIPT NECESITA TRABAJAR: cambie las variables WORLD, MCPATH y BACKUPPATH.
Importante: Si usa el método wget y el primer carácter de cada línea es un espacio vacío, el script no funcionará y update-rc.d generará errores. Si es así, debe eliminar los espacios vacíos iniciales de cada línea. ¡Sin embargo, tenga cuidado de no eliminar nada más que un espacio vacío!)

wget -O minecraft "http://minecraft.xxx/Tutorials/Server_startup_script/Script?action=raw"

#! / bin / bash # /etc/init.d/minecraft # versión 0.4.2 2016-02-09 (AAAA-MM-DD) # ### BEGIN INIT INFO # Proporciona: minecraft # Required-Start: $ local_fs $ remote_fs screen-cleanup # Required-Stop: $ local_fs $ remote_fs # Should-Start: $ network # Should-Stop: $ network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Descripción breve: Minecraft server # Descripción: Inicia el servidor de Minecraft ### END INIT INFO #Settings SERVICE = 'minecraft_server.jar' SCREENNAME = 'minecraft_server' OPTIONS = 'nogui' USERNAME = 'minecraft' WORLD = 'world' MCPATH = '/ home / minecraft 'BACKUPPATH =' / minecraft / minecraft.backup 'MAXHEAP = 2048 MINHEAP = 1024 HISTORY = 1024 CPU_COUNT = 1 INVOCATION = "java -Xmx $ {MAXHEAP} M -Xms $ {MINHEAP} M -XX: + UseConcMarkSweepGC -XX: + CMSIncrementalPacing -XX: ParallelGCThreads = $ CPU_COUNT -XX: + AggressiveOpts -jar $ SERVICE $ OPTIONS "ME =` whoami` as_user () {if ["$ ME" = "$ USERNAME"]; luego bash -c "$ 1" else su - "$ NOMBRE DE USUARIO" -c "$ 1" fi} mc_start () {if pgrep -u $ NOMBRE DE USUARIO -f $ SERVICIO> / dev / null; luego echo "¡$ SERVICE ya se está ejecutando!" else echo "Iniciando $ SERVICE ..." cd $ MCPATH as_user "cd $ MCPATH && screen -h $ HISTORY -dmS $ {SCREENNAME} $ INVOCATION" sleep 7 if pgrep -u $ USERNAME -f $ SERVICE> / dev / null ; luego echo "$ SERVICE ahora se está ejecutando". else echo "¡Error! ¡No se pudo iniciar $ SERVICE!" fi fi} mc_saveoff () {si pgrep -u $ NOMBRE DE USUARIO -f $ SERVICIO> / dev / null; luego echo "$ SERVICE se está ejecutando ... suspendiendo guarda la pantalla" as_user "-p 0 -S $ {SCREENNAME} -X eval 'stuff" dice SERVER BACKUP STARTING. El servidor va a solo lectura ... "


Añade un comentario de Tutoriales / Script de inicio del servidor
¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.