View Single Post
  #1  
Old 12-18-2011, 12:50 AM
braindisconnect
Fire Beetle
 
Join Date: Apr 2005
Posts: 9
Default EQEmu on Debian 6 within vSphere 5.0 (ESXi) 12-17-2011

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
  1. Download the Debian 6 i386 netinst CD image from http://www.debian.org/releases/stable/debian-installer/
  2. 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
  1. Right click your ESX host and create a new VM
  2. Use the Typical option
  3. enter the host name
  4. Select desired datastore
  5. Choose Linux and select Debian 6 (32-bit)
  6. You need one NIC with E1000 (Debian won't recognize the VMXNET3 adapter)
  7. Change storage to 100GB with Thin Provision
  8. Select Edit the virtual machine settings before creating option
  9. Change memory to at least 6GB
  10. Change CPU to at least 2 virtual sockets and 2 cores per socket
  11. Point then DVD to your Debian 6 32 bit ISO and select connect at power on
  12. Remove the floppy drive
  13. Click finish and power on VM when the process completes.

Right click your VM and open a console or click on the console tab
  1. Choose Install
  2. Choose your language
  3. Choose your country
  4. Choose your keyboard layout
  5. Enter host name
  6. Enter domain
  7. Enter root password
  8. Enter full name for user; EQEmu
  9. Enter username; eqemu
  10. password for eqemu
  11. Choose your timezone
  12. hit return on partioning
  13. hit return on disk to partition
  14. hit return on finish partitioning
  15. Write changes to disk? tab to yes and hit return (this took a few minutes)
  16. Wait for it to install the base system...
  17. Select your country
  18. Select the default which should be ftp.<country code>.debian.org
  19. Configure your proxy if you need to
  20. Select no on the package survey
  21. Package Install
    • De-select the Graphical Desktop Environment
    • Select SSH Server
    • Select Standard system utilities
  22. Hit enter on grub loader; yes
  23. Hit enter on fishing the installation; Continue

Post Install
  1. Login as root through VM console
  2. Verify that your interface is static
    Code:
    more /etc/networks/interfaces
  3. If the iface eth0 says iface eth0 init dhcp, configure it for static:
  4. edit /etc/networks/interfaces with your favorite editor
  5. 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
  6. Exit and save
  7. 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
  8. reboot once its done

VMware Tools Install
  1. Right click your VM, select Guest, and then Install/Upgrade VMware Tools
  2. Login as root to your VM via SSH
  3. Mount your cdrom:
    Code:
    mount /dev/cdrom /mnt
  4. 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
  5. Once it has completed, remove the archive and directory:
    Code:
    rm VMwareTools-<version>.tar.gz
    rm -rf vmware-tools-distrib
  6. reboot

Packages for EQEmu
  1. 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
  2. Enter a password for MySQL root
    Code:
    apt-get -y install libmysqlclient15-dev


Getting the Sources
  1. Sudo to eqemu:
    Code:
    su - eqemu
  2. Make directories:
    Code:
    mkdir eqemu source peq server maps quests
  3. Grab the SVN's:

Compile EQEmu
  1. Still as eqemu
    Code:
    cd source
    cp -r ../eqemu/trunk/EQEmuServer/* ./
  2. 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.
  3. Compile:
    Code:
    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
  1. Go back to root:
    Code:
    exit
  2. Copy libEMuShareMem to lib dir:
    Code:
    cp /home/eqemu/source/EMuShareMem/libEMuShareMem.so /usr/lib/
  3. edit /etc/sysctl.conf and add a new line with your fovorit editor:
    Code:
    kernel.shmmax = 134217728
  4. save, exit, and chmod
    Code:
    chmod 444 /etc/sysctl.conf
  5. Execute sysctl to effect the changes
    Code:
    /sbin/sysctl -p
  6. Sudo back to eqemu
    Code:
    su - eqemu
  7. 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
  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
  2. Remember the rev number...
  3. 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
  4. 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...
  1. Change to the source sql directory:
    Code:
    cd /home/eqemu/source/utils/sql/svn
  2. Create a new filed called sourceme and add use peq to it:
    Code:
    echo "use peq" > sourcesql
  3. 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
  4. 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
  5. Remove the duplicates and create the sourceme file:
    Code:
    cat sourcesql | uniq > sourceme
  6. 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
  1. Go to the Main Page of EqEmu http://www.eqemulator.org/
  2. Click on the Loginserver Accounts link.
  3. Click on Create New Worldserver Account
  4. Create your Server account. The username and password is needed for your config file.

Edit Your Config file
  1. Still as eqemu
    Code:
    cd /home/eqemu/server
    mv eqemu_config.xml.full eqemu_config.xml
  2. edit eqemu_config.xml with your favorite editor
    1. In the world section change the longname and short name to your EQ world name.
    2. In the world, loginserver section put your loginserver username and password.
    3. In the world section change the key to a string for your launcher.
    4. In the zones section change the defaultstatus to 0
    5. In the database section, change username and password to your mysql credentials.
    6. In the database section, change db to peq.
  3. Save and exit

Create your Server start and stop files
  1. Still as eqemu
    Code:
    cd /home/eqemu/server
  2. 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
  3. 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
  4. 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
  5. 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
Reply With Quote