For example, each update I upload datapack and gameserver in separated files (.zip) using build.xml Ant task from Eclipse.
On live server, for example, we have a home user directory:
Well, we can use a couple of extra directories for deploy:
Code: Select all
/home/l2jserver/opt//home/l2jserver/build/
In
/opt/ i usually have a build.sh that remove old files and backup important files, cron execute it each sunday. In
/build/ directory i have my hexid.txt and some script.sql or properties to save (olys), my geodata/pathnode files, and more.
This is a simple bash script (custom) only an example:
build.sh
Code: Select all
#!/bin/sh # backup last logs files (maybe you need to check this later..)cp -rf /home/l2jserver/gameserver/log/ /home/l2jserver/opt/ # backup for olympiad.properties to restore it after updatecp -rf /home/l2jserver/gameserver/config/olympiad.properties /home/l2jserver/build/ # backup crests clans to restore it after updatecp -rf /home/l2jserver/gameserver/data/crests/ /home/l2jserver/opt/ # I have some modifications in LoginServer_loop.sh and i want to save this file also (optional for me)cp -rf /home/l2jserver/login/LoginServer_loop.sh /home/l2jserver/build/ # And.. all you need# -- here -- # Now,.. clean all filesrm -rf /home/l2jserver/gameserverrm -rf /home/l2jserver/libsrm -rf /home/l2jserver/languagesrm -rf /home/l2jserver/loginrm -rf /home/l2jserver/sqlrm -rf /home/l2jserver/toolsrm -rf /home/l2jserver/docrm -rf /home/l2jserver/imagesrm -rf /home/l2jserver/configrm -rf /home/l2jserver/*.txtrm -rf /home/l2jserver/*_lIC*rm -rf /home/l2jserver/*.html #Well.. now we can extract our updated server in same placeunzip -o -q /home/l2jserver/build/L2J_Server.zip -d ..unzip -o -q /home/l2jserver/build/L2J_DataPack.zip -d .. #We need to restore our important info (geodata included)cp -rf /home/l2jserver/build/geodata /home/l2jserver/gameserver/datacp -rf /home/l2jserver/build/pathnode /home/l2jserver/gameserver/datacp -rf /home/l2jserver/build/olympiad.properties /home/l2jserver/gameserver/configcp -rf /home/l2jserver/build/LoginServer_loop.sh /home/l2jserver/login/cp -rf /home/l2jserver/build/hexid.txt /home/l2jserver/gameserver/configcp -rf /home/l2jserver/build/chmod 750 /home/l2jserver/login/*.shchmod 750 /home/l2jserver/gameserver/*.sh # clean not important (for me) filesrm -rf /home/l2jserver/*.txtrm -rf /home/l2jserver/*_LIC*rm -rf /home/l2jserver/*.html # clean -_- windows files =Prm -rf /home/l2jserver/gameserver/*.batrm -rf /home/l2jserver/gameserver/*.exerm -rf /home/l2jserver/login/*.batrm -rf /home/l2jserver/login/*.exe # backup for mysql with dumpsmysqldump -u l2jserver -ppasswordhere --database yourdatabase > /home/l2jserver/opt/backup.sql #I have a empty script.sql.. to apply some sql scripts if is neccessary after updatemysql -u l2jserver -ppasswordhere --database yourdatabase < /home/l2jserver/opt/script.sql
Now maybe will need to update some sql files, normally I like to do it manually
Well , now open your cron manager with
Add your build.sh and you can execute a similar batch script to backup and restore your files at 00:00 on Sunday.
Code: Select all
0 0 * * 0 /home/l2jserver/opt/build.sh
Remember to give privs
Code: Select all
chmod 750 /home/l2jserver/opt/build.sh
Note: Its only an example, its means you need to have same files in same directories as my example , build a couple of extra dirs, and write a build.sh.
This step-by-step script is only for learning purposes, isnt a production script but it can give you a idea
You can add an automatic restart, update, package, all you need
Im using Debian Lenny 5.0+