braindisconnect
12-18-2011, 12:50 AM
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
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):
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
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:
mount /dev/cdrom /mnt
Copy the tools to root's home directory, extract, and run (change the version to match):
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:
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.
apt-get -y install gcc g++ make libio-stringy-perl libperl-dev unzip mysql-server subversion
Enter a password for MySQL root
apt-get -y install libmysqlclient15-dev
Getting the Sources
Sudo to eqemu:
su - eqemu
Make directories:
mkdir eqemu source peq server maps quests
Grab the SVN's:
svn co http://projecteqemu.googlecode.com/svn/ eqemu
svn co http://projecteqdb.googlecode.com/svn/trunk/peqdatabase peq
svn co http://projecteqquests.googlecode.com/svn/trunk/quests quests
svn co http://eqemu-maps.googlecode.com/svn/trunk/ maps
Compile EQEmu
Still as eqemu
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:
make
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:
exit
Copy libEMuShareMem to lib dir:
cp /home/eqemu/source/EMuShareMem/libEMuShareMem.so /usr/lib/
edit /etc/sysctl.conf and add a new line with your fovorit editor:
kernel.shmmax = 134217728
save, exit, and chmod
chmod 444 /etc/sysctl.conf
Execute sysctl to effect the changes
/sbin/sysctl -p
Sudo back to eqemu
su - eqemu
Change to server dir, copy and create links
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:
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:
create database peq;
use peq
source peqdb_rev<rev number>.sql
source load_player.sql
source load_bots.sql
exit
Then run:
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:
cd /home/eqemu/source/utils/sql/svn
Create a new filed called sourceme and add use peq to it:
echo "use peq" > sourcesql
If you compiled bots run these commands in order:
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.
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:
cat sourcesql | uniq > sourceme
Now source it in with mysql:
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
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
cd /home/eqemu/server
Create your start, copy and paste into your terminal:
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:
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:
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:
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.
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;
mysql -u root -p
use peq
UPDATE launcher SET dynamics=5 where name='zone';
exit
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
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):
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
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:
mount /dev/cdrom /mnt
Copy the tools to root's home directory, extract, and run (change the version to match):
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:
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.
apt-get -y install gcc g++ make libio-stringy-perl libperl-dev unzip mysql-server subversion
Enter a password for MySQL root
apt-get -y install libmysqlclient15-dev
Getting the Sources
Sudo to eqemu:
su - eqemu
Make directories:
mkdir eqemu source peq server maps quests
Grab the SVN's:
svn co http://projecteqemu.googlecode.com/svn/ eqemu
svn co http://projecteqdb.googlecode.com/svn/trunk/peqdatabase peq
svn co http://projecteqquests.googlecode.com/svn/trunk/quests quests
svn co http://eqemu-maps.googlecode.com/svn/trunk/ maps
Compile EQEmu
Still as eqemu
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:
make
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:
exit
Copy libEMuShareMem to lib dir:
cp /home/eqemu/source/EMuShareMem/libEMuShareMem.so /usr/lib/
edit /etc/sysctl.conf and add a new line with your fovorit editor:
kernel.shmmax = 134217728
save, exit, and chmod
chmod 444 /etc/sysctl.conf
Execute sysctl to effect the changes
/sbin/sysctl -p
Sudo back to eqemu
su - eqemu
Change to server dir, copy and create links
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:
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:
create database peq;
use peq
source peqdb_rev<rev number>.sql
source load_player.sql
source load_bots.sql
exit
Then run:
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:
cd /home/eqemu/source/utils/sql/svn
Create a new filed called sourceme and add use peq to it:
echo "use peq" > sourcesql
If you compiled bots run these commands in order:
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.
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:
cat sourcesql | uniq > sourceme
Now source it in with mysql:
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
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
cd /home/eqemu/server
Create your start, copy and paste into your terminal:
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:
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:
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:
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.
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;
mysql -u root -p
use peq
UPDATE launcher SET dynamics=5 where name='zone';
exit