Installing EQEmu on Debian 6 within vSphere 5.0 (ESXi)
Thanks to all the posters of linux and windows guide where a lot of this info came from.
Much came from Sikkun's guide "Debian Linux Install Guide 5/28/2011"
I made some custom one line scripts to make the process a little easier.
Get the Debian 6 ISO- Download the Debian 6 i386 netinst CD image from http://www.debian.org/releases/stable/debian-installer/
- Upload the ISO to your ESX host.
The revision at the time of this guide was 6.0.3
Static DNS Entry
Create a static DNS entry ahead of time for your new EQEmu VM.
Router Setup
Setup your router to forward the following protocols and ports to your server:
UDP 7000-7100
TCP 9000
Creating the VM- Right click your ESX host and create a new VM
- Use the Typical option
- enter the host name
- Select desired datastore
- Choose Linux and select Debian 6 (32-bit)
- You need one NIC with E1000 (Debian won't recognize the VMXNET3 adapter)
- Change storage to 100GB with Thin Provision
- Select Edit the virtual machine settings before creating option
- Change memory to at least 6GB
- Change CPU to at least 2 virtual sockets and 2 cores per socket
- Point then DVD to your Debian 6 32 bit ISO and select connect at power on
- Remove the floppy drive
- Click finish and power on VM when the process completes.
Right click your VM and open a console or click on the console tab
- Choose Install
- Choose your language
- Choose your country
- Choose your keyboard layout
- Enter host name
- Enter domain
- Enter root password
- Enter full name for user; EQEmu
- Enter username; eqemu
- password for eqemu
- Choose your timezone
- hit return on partioning
- hit return on disk to partition
- hit return on finish partitioning
- Write changes to disk? tab to yes and hit return (this took a few minutes)
- Wait for it to install the base system...
- Select your country
- Select the default which should be ftp.<country code>.debian.org
- Configure your proxy if you need to
- Select no on the package survey
- Package Install
- De-select the Graphical Desktop Environment
- Select SSH Server
- Select Standard system utilities
- Hit enter on grub loader; yes
- Hit enter on fishing the installation; Continue
Post Install- Login as root through VM console
- Verify that your interface is static
Code:
more /etc/networks/interfaces
- If the iface eth0 says iface eth0 init dhcp, configure it for static:
- edit /etc/networks/interfaces with your favorite editor
- change iface eth0 init dhcp to (change the information for your network):
Code:
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
- Exit and save
- Install packages for Higher Memory Support, VMware Tools, and EQEmu
Code:
apt-get -y install linux-image-2.6.32-5-686-bigmem linux-headers-2.6.32-5-686-bigmem make
- reboot once its done
VMware Tools Install- Right click your VM, select Guest, and then Install/Upgrade VMware Tools
- Login as root to your VM via SSH
- Mount your cdrom:
Code:
mount /dev/cdrom /mnt
- Copy the tools to root's home directory, extract, and run (change the version to match):
Code:
cp /mnt/VMwareTools-<version>.tar.gz ./
tar -zxvf VMwareTools-<version>.tar.gz
./vmware-tools-distrib/vmware-install.pl -d
- Once it has completed, remove the archive and directory:
Code:
rm VMwareTools-<version>.tar.gz
rm -rf vmware-tools-distrib
- reboot
Packages for EQEmu- Login as root to your VM via SSH, from now on everything is done via SSH.
Code:
apt-get -y install gcc g++ make libio-stringy-perl libperl-dev unzip mysql-server subversion
- Enter a password for MySQL root
Code:
apt-get -y install libmysqlclient15-dev
Getting the Sources- Sudo to eqemu:
- Make directories:
Code:
mkdir eqemu source peq server maps quests
- Grab the SVN's:
Compile EQEmu- Still as eqemu
Code:
cd source
cp -r ../eqemu/trunk/EQEmuServer/* ./
- If you want Bots, now is the time:
- Edit zone/makefile and add -DBOTS to DFLAGS.
- Edit zone/makefile.common and add both bot.o and botspellsai.o
- Edit world/makefile and add -DBOTS to DFLAGS.
- Compile:
You will see many warnings... don't panic...
If make stops with an error, then you can panic. Trace the steps and correct what you missed.
Copying and Linking Files to the server Directory- Go back to root:
- Copy libEMuShareMem to lib dir:
Code:
cp /home/eqemu/source/EMuShareMem/libEMuShareMem.so /usr/lib/
- edit /etc/sysctl.conf and add a new line with your fovorit editor:
Code:
kernel.shmmax = 134217728
- save, exit, and chmod
Code:
chmod 444 /etc/sysctl.conf
- Execute sysctl to effect the changes
- Sudo back to eqemu
- Change to server dir, copy and create links
Code:
cd server
cp -r ../source/utils/defaults/* ./
cp ../source/utils/patch_* ./
cp ../source/utils/opcodes.conf ./
cp ../source/utils/cleanipc ./
cp ../source/world/world ./
cp ../source/zone/zone ./
cp ../source/eqlaunch/eqlaunch ./
rm -rf Maps plugins quests
ln -s ../maps Maps
ln -s ../quests/plugins plugins
ln -s ../quests quests
Database Setup Part 1- Still as eqemu, unzip the database changing the rev number to yours:
Code:
cd /home/eqemu/peq
gunzip peqdb_rev<rev number>.sql.gz
- Remember the rev number...
- Create a file called sourceme putting the following lines in changing the rev number to match your file remove the bots line if you did not compile bots:
Code:
create database peq;
use peq
source peqdb_rev<rev number>.sql
source load_player.sql
source load_bots.sql
exit
- Then run:
Code:
mysql -u root -p < sourceme
Take a break. This is going to take a a few minutes... This is why the few commands were scripted
Database Setup Part 2
Ok.. time for the last part of the database...
- Change to the source sql directory:
Code:
cd /home/eqemu/source/utils/sql/svn
- Create a new filed called sourceme and add use peq to it:
Code:
echo "use peq" > sourcesql
- If you compiled bots run these commands in order:
Code:
ls -la bot*.sql | tr -s " " | cut -d " " -f9 | sort -n | sed 's/^/source /' | sort -r >> sourcesql
ls -la [0-9]*bot*.sql | tr -s " " | cut -d " " -f9 | sort -n | sed 's/^/source /' >> sourcesql
- Run this command and change 2082 to whatever version your database rev number is minus 1. My version was 2083.
Code:
ls -la [0-9]* | tr -s " " | cut -d " " -f9 | sort -n | awk -F'_' '$1 > 2082' | sed 's/^/source /' >> sourcesql
- Remove the duplicates and create the sourceme file:
Code:
cat sourcesql | uniq > sourceme
- Now source it in with mysql:
Code:
mysql -u root -p < sourceme
If you get errors, search the forums to see if you need to correct them or not.
Getting your Login Server Account- Go to the Main Page of EqEmu http://www.eqemulator.org/
- Click on the Loginserver Accounts link.
- Click on Create New Worldserver Account
- Create your Server account. The username and password is needed for your config file.
Edit Your Config file- Still as eqemu
Code:
cd /home/eqemu/server
mv eqemu_config.xml.full eqemu_config.xml
- edit eqemu_config.xml with your favorite editor
- In the world section change the longname and short name to your EQ world name.
- In the world, loginserver section put your loginserver username and password.
- In the world section change the key to a string for your launcher.
- In the zones section change the defaultstatus to 0
- In the database section, change username and password to your mysql credentials.
- In the database section, change db to peq.
- Save and exit
Create your Server start and stop files- Still as eqemu
Code:
cd /home/eqemu/server
- Create your start, copy and paste into your terminal:
Code:
cat > start << EOD6
#!/bin/bash
# Auto generated by EQEmu Installer v$EQEMU_INSTALLER_VER on $EQEMU_INSTALL_DATE
# Include our configuration.
#source eqemu.conf
#ulimit -c 99999999
# Start the login server.
if [ \$USE_LOGIN_SERVER ]; then
./EQEmuLoginServer 2>&1 > logs/loginserver &
fi
# Remove any shutdown files.
rm -f .zone_shutdown
rm -f .world_shutdown
# Print commands and their arguments as they are executed.
set -x
# Launcher name.
LNAME="zone"
if [ "\$1" = "test" ]; then
LNAME="test"
fi
# Set our library path.
P=`pwd`
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:\$P"
# Make sure we have a place to log.
mkdir -p logs 2>&1 > /dev/null
# Clear out old logs, if both are stopped.
if [ ! -e .lock-zones -a ! -e .lock-world ] ; then
for f in logs/eqemu_*.log
do
# Keep the commands_zone log.
if [ "\$f" = "logs/eqemu_commands_zone.log" ]; then
continue;
fi
rm -f \$f
done
fi
# Boot up world.
if [ ! -e .lock-world ] ; then
# Create our lock file.
touch .lock-world
# Determine how to run the world server.
if [ \$USE_PERSIST_WORLD ]; then
./persist_world 2>&1 > logs/world &
else
./world 2>&1 > logs/world &
fi
# wait for shared memory to load
sleep 15
fi
# Start up the official launcher.
if [ ! -e .lock-launcher ]; then
# Create our lock file.
touch .lock-launcher
# Launch!
./eqlaunch \$LNAME 2>&1 > logs/launcher &
fi
# Determine if we should start the chat server.
if [ \$USE_CHAT_SERVER ]; then
./chatserver 2>&1 > logs/chatserver &
fi
# Determine if we should start the mail server.
if [ \$USE_MAIL_SERVER ]; then
./mailserver 2>&1 > logs/mailserver &
fi
EOD6
- Create the persist_world file, copy and paste the following into your terminal:
Code:
cat > persist_world << EOD8
#!/bin/bash
#ulimit -c 99999999
while true
do
./world "\$@"
if [ -r ".world_shutdown" ]; then
exit 0
fi
echo `date` " - World crashed." >> crashlog
sleep 2
done
EOD8
- Create your stop file, copy and paste the following into your terminal:
Code:
cat > stop << EOD7
#!/bin/bash
# Auto generated by EQEmu Installer v$EQEMU_INSTALLER_VER on $EQEMU_INSTALL_DATE
# Include our configuration.
#source eqemu.conf
# Create our shutdown files.
touch .zone_shutdown
touch .world_shutdown
targets="world eqlaunch zone"
# Login Server Check
if [ \$USE_LOGIN_SERVER ]; then
targets="\$targets EQEmuLoginServer"
fi
# Chat Server Check
if [ \$USE_CHAT_SERVER ]; then
targets="\$targets chatserver"
fi
# Mail Server Check
if [ \$USE_MAIL_SERVER ]; then
targets="\$targets mailserver"
fi
killall \$targets
# Small pause here.
sleep 3
# If world/zone/eqlaunch is stuck we'll 'kill -9' them here.
if ps ax | grep -e 'w[o]rld' -e 'z[o]ne' -e 'eq[l]aunch' > /dev/null; then
killall -9 world zone eqlaunch
sleep 2
fi
# Run our IPC cleaning.
./cleanipc
# Remove any lock files.
rm -f .lock-zones .lock-world .lock-login .lock-launcher
EOD7
- Make start, persist_world, and stop executable:
Code:
chmod 750 start
chmod 750 persist_world
chmod 750 stop
Thats it, startup your server and login with your player account.
If you get errors, then you missed something, trace your steps through the guide and fix anything you missed. Otherwise search the forums.
Additional
You can edit your database after you logged in to make your character the server admin, by changing the status to 200 on your account.
Code:
mysql -u root -p
use peq
UPDATE account SET status=200 WHERE name='youraccountname';
exit
You can increase the number of zones that can be active at a time, the default is 5;
Code:
mysql -u root -p
use peq
UPDATE launcher SET dynamics=5 where name='zone';
exit