Installing and Running MTASA Server on GNU Linux: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
(34 intermediate revisions by 7 users not shown)
Line 1: Line 1:
== Installation ==
== Installation 64 bit ==


=== Main binary ===
=== Main binary ===
Download the latest stable Linux binaries from here:
Download the latest stable 64 bit Linux binaries:
  wget <nowiki>http</nowiki>://linux.mtasa.com/dl/140/multitheftauto_linux-{{Current Version|full}}.tar.gz
rm -f multitheftauto_linux_x64.tar.gz
<!--
  wget <nowiki>http</nowiki>://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz
or if you are feeling daring, get the latest nightly build from here:
 
wget <nowiki>http</nowiki>://nightly.mtasa.com/?multitheftauto_linux-{{Current Version|full}}-latest
-->
Unpack into a directory:
Unpack into a directory:
  tar -xf multitheftauto_linux*
  tar -xf multitheftauto_linux_x64.tar.gz


=== Default config ===
=== Default config ===
Download the default config files:
Download the default config files:
  wget <nowiki>http</nowiki>://linux.mtasa.com/dl/140/baseconfig-{{Current Version|full}}.tar.gz
rm -f baseconfig.tar.gz
  wget <nowiki>http</nowiki>://linux.mtasa.com/dl/baseconfig.tar.gz


Unpack and move into the deathmatch directory:<br/>
Unpack and move into the deathmatch directory:<br/>
('''''Note:''' Only do this for new installations as it will overwrite any existing config files.)''
('''''Note:''' Only do this for new installations as it will overwrite any existing config files.)''
  tar -xf baseconfig*
  tar -xf baseconfig.tar.gz
  mv baseconfig*/* multitheftauto_linux*/mods/deathmatch
  mv baseconfig/* multitheftauto_linux_x64/mods/deathmatch


<!--
Change to the MTA server install directory:
=== Default resources ===
  cd multitheftauto_linux_x64
Download the latest default resources:
  wget <nowiki>http</nowiki>://mtasa-resources.googlecode.com/files/mtasa-resources-r959.zip
(mtasa-resources-r959.zip is an example. Check https://code.google.com/p/mtasa-resources/downloads/list?q=label:Latest for the latest file name)
-->


=== Test ===
=== Test ===
You can now test if the server will start correctly, by entering the install directory:
You can now test if the server will start correctly:
  cd multitheftauto_linux*
  ./mta-server64


and launching:
=== Default resources ===
  ./mta-server
If you need the default resources:
Download the latest default resources zip from http://mirror.mtasa.com/mtasa/resources/
and unzip into '''mods/deathmatch/resources'''
<br/>
'''Make sure you are in the MTA server install directory when following this example:'''
apt-get install unzip
mkdir mods/deathmatch/resources
cd mods/deathmatch/resources
rm -f mtasa-resources-latest.zip
  wget <nowiki>http</nowiki>://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip
unzip mtasa-resources-latest.zip
rm -f mtasa-resources-latest.zip
cd ../../..


== Running with 32 or 64 bit Linux==
=== Make sure your server libraries and stuff are up to date ===
On Debian/Ubuntu this is done with:
apt-get update
apt-get upgrade


* If you get a problem with such as "libmysqlclient.so.16: cannot open shared object file: No such file or directory", it can be solved on Debian/Ubuntu by doing this:
== Installation 32 bit ==


  apt-get install libmysqlclient16
=== Main binary===
Download the latest stable 32 bit Linux binaries:
  rm -f multitheftauto_linux.tar.gz
wget <nowiki>http</nowiki>://linux.mtasa.com/dl/multitheftauto_linux.tar.gz


== Running with 32 bit Linux ==
Unpack into a directory:
===32 bit Troubleshooting===
tar -xf multitheftauto_linux.tar.gz
* If you get a problem with such as "libreadline.so.5: cannot open shared object file: No such file or directory.", it can be solved on 32 bit Debian/Ubuntu by doing this:


  apt-get install libreadline5
=== Default config ===
Download the default config files:
  rm -f baseconfig.tar.gz
wget <nowiki>http</nowiki>://linux.mtasa.com/dl/baseconfig.tar.gz


* If you get a problem with such as "libncursesw.so.5 cannot open shared object file: No such file or directory", it can be solved on 32 bit Debian/Ubuntu by doing this:
Unpack and move into the deathmatch directory:<br/>
('''''Note:''' Only do this for new installations as it will overwrite any existing config files.)''
tar -xf baseconfig.tar.gz
mv baseconfig/* multitheftauto_linux/mods/deathmatch


  apt-get install libncursesw5
Change to the MTA server install directory:
  cd multitheftauto_linux


* If you get a problem with such as "libmysqlclient.so.16: cannot open shared object file: No such file or directory", it can be solved on Debian/Ubuntu by doing this:
=== Test ===
You can now test if the server will start correctly:
./mta-server


  apt-get install libmysqlclient16
=== Default resources ===
If you need the default resources:
Download the latest default resources zip from http://mirror.mtasa.com/mtasa/resources/
and unzip into '''mods/deathmatch/resources'''
<br/>
'''Make sure you are in the MTA server install directory when following this example:'''
  apt-get install unzip
mkdir mods/deathmatch/resources
cd mods/deathmatch/resources
rm -f mtasa-resources-latest.zip
wget <nowiki>http</nowiki>://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip
unzip mtasa-resources-latest.zip
rm -f mtasa-resources-latest.zip
cd ../../..


If that fails, download [http://nightly.mtasa.com/files/libmysqlclient.so.16 libmysqlclient.so.16] and put it in
/usr/lib/


== Running with 64 bit Linux ==
===Debian 7 (wheezy) 64 bit===
Before running MTASA Server, use this command line for installation of 32 bit libs :<br/>


  apt-get install lib32ncursesw5 lib32readline5
== Running with 32 or 64 bit Linux==
=== Make sure your server libraries and stuff are up to date ===
On Debian/Ubuntu this is done with:
  apt-get update
apt-get upgrade


===Install 32 bit libs for your 64 bit distro===
===Troubleshooting===
For 64 bit Debian 6, this is achieved with:<br/>
* If you get a problem with such as "libreadline.so.5: cannot open shared object file: No such file or directory.", it can be solved on 32 bit Debian/Ubuntu by doing this:
''(Some 64 bit distros have 32 bit libs already installed for you. So this step might not be required)''


  apt-get install ia32-libs
  apt-get install libreadline5


===64 bit Troubleshooting===
* If you get a problem with such as "libncursesw.so.5 cannot open shared object file: No such file or directory", it can be solved on 32 bit Debian/Ubuntu by doing this:
====64 bit Debian/Ubuntu====
* If you get a problem with such as "libstdc++.so.6: cannot open shared object file: No such file or directory.", it can be solved on 64 bit Debian/Ubuntu by doing this:


  apt-get install lib32stdc++6
  apt-get install libncursesw5


* If you get a problem with such as "libz.so.1: cannot open shared object file: No such file or directory.", it can be solved on 64 bit Debian/Ubuntu by doing this:
'''Note:''' If you experience this issue on a 64-bit machine while trying to run the 32-bit MTA server, then you should install the following package on a 64-bit Debian/Ubuntu machine (as root):


  apt-get install lib32z1
  apt-get install lib32ncursesw5


* If you get a problem with such as "libreadline.so.5: cannot open shared object file: No such file or directory.", it can be solved on 64 bit Debian/Ubuntu by doing this:
You can find more 32-bit library alternatives on this page: [http://www.debian.org/distrib/packages#search_contents www.debian.org/distrib/packages#search_contents].
 
apt-get install lib32readline5
 
* If you get a problem with such as "libncursesw.so.5 cannot open shared object file: No such file or directory", it can be solved on 64 bit Debian/Ubuntu by doing this:
 
apt-get install lib32ncursesw5


== MySQL Troubleshooting==
* If you are using the inbuilt MySQL functions such as [[dbConnect]] and [[dbQuery]], you will need to have '''libmysqlclient.so.16''' installed.
* If you get a problem with such as "libmysqlclient.so.16: cannot open shared object file: No such file or directory", it can be solved on Debian/Ubuntu by doing this:
* If you get a problem with such as "libmysqlclient.so.16: cannot open shared object file: No such file or directory", it can be solved on Debian/Ubuntu by doing this:


  apt-get install libmysqlclient16
  apt-get install libmysqlclient16


** If that fails, download [http://nightly.mtasa.com/files/libmysqlclient.so.16 libmysqlclient.so.16] and put it in  
If that fails:
/usr/lib/
* For 32 bit Linux, download [http://nightly.mtasa.com/files/modules/32/libmysqlclient.so.16 32 bit libmysqlclient.so.16] and put it in '''/usr/lib/'''
 
* For 64 bit Linux, download [http://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16 64 bit libmysqlclient.so.16] and put it in '''/usr/lib/'''
**NOTE: If you are running the experimental MTA x64 server, you will need [http://nightly.mtasa.com/files/x64/libmysqlclient.so.16 this file] instead:
 
====64 bit CentOS 6====
* If you get a problem with such as "libreadline.so.5: cannot open shared object file: No such file or directory.", edit '''''/etc/yum.conf''''' and add this line:
multilib_policy=all
Then issue this command:
yum install compat-readline5
* Further 64 bit solutions can be found [http://forum.mtasa.com/viewtopic.php?f=106&t=35328#p367282 on the forums]
 
== MySQL Troubleshooting==
* If you are using the inbuild MySQL functions such as [[dbConnect]] and [[dbQuery]], you will need to have '''libmysqlclient.so.15''' installed.
* If you can't get '''libmysqlclient.so.15''' installed by conventional means, then try [http://nightly.mtasa.com/files/libmysqlclient.so.15 downloading the file from here] and copying it to your Linux server '''/usr/lib/''' directory.
 
==Cent OS Troubleshooting==
* If you are using Cent OS and you get something like /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by xmll.so) this can be resolved by doing downloading the archive [[http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/9/Fedora/i386/os/Packages/libstdc++-4.3.0-8.i386.rpm here]] and unpacking it with the following command:


rpm2cpio libstdc++-4.3.0-8.i386.rpm | cpio -i --make-directories
==[Optional] Installing and Configuring an External Web Server==
Instructions on how to install and configure Nginx as an external web server for MTA is here: [[Installing and Configuring Nginx as an External Web Server]]


== Server crashes ==
== Server crashes ==
Line 140: Line 144:
  apt-get install gdb
  apt-get install gdb
*And from the MTA server directory start the mta-server like this:
*And from the MTA server directory start the mta-server like this:
  gdb mta-server -ex "set print thread-events off" --eval-command run
  gdb -ex "set print thread-events off" --eval-command run --args mta-server -q
*Now wait for a crash. (Ignore any weird screen output in the meantime)
*Now wait for a crash. (Ignore any weird screen output in the meantime)
*When a crash occurs, do this command to get a module list:
*When a crash occurs, do this command to get a module list:
Line 158: Line 162:
  apt-get install gdb
  apt-get install gdb
*And from the MTA server directory start the mta-server like this:
*And from the MTA server directory start the mta-server like this:
  gdb mta-server -ex "set print thread-events off" --eval-command run
  gdb -ex "set print thread-events off" --eval-command run --args mta-server -q
*Now wait for a freeze. (Ignore any weird screen output in the meantime)
*Now wait for a freeze. (Ignore any weird screen output in the meantime)
*When a freeze occurs, press ctrl-c to start gdb
*When a freeze occurs, press ctrl-c to start gdb
Line 169: Line 173:
*Save the output
*Save the output
*(To exit gdb, use the quit command)
*(To exit gdb, use the quit command)
== Automatic installer ==
=== Prerequisites ===
Make sure you have bash, unzip, tar and wget available on your server.
Also notice that for 64-bit servers the 64-bit binary will be installed, otherwise 32-bit binary will be.
=== Source code ===
  #!/bin/bash -x
  #==============================================================================#
  #                                mtasa-install                                #
  #------------------------------------------------------------------------------#
  #  This shellscript installs MTA:SA on your server. You can configure it and  #
  #  modify it as desired, you can even improve it if you want.                  #
  #==============================================================================#
 
  ARCH_TYPE=""
 
  getArchitecture()
  {
      if ((1<<32)); then
          ARCH_TYPE="_x64"
      fi
  }
 
  downloadFiles()
  {
      wget http://linux.mtasa.com/dl/multitheftauto_linux${ARCH_TYPE}.tar.gz
      wget http://linux.mtasa.com/dl/baseconfig.tar.gz
  }
 
  unpack()
  {
      tar -xf multitheftauto_linux${ARCH_TYPE}.tar.gz
      tar -xf baseconfig.tar.gz
  }
 
  moveConfig()
  {
      mv baseconfig/* multitheftauto_linux${ARCH_TYPE}/mods/deathmatch
      rm -rf baseconfig
      cd multitheftauto_linux${ARCH_TYPE}
  }
 
  installResources()
  {
      mkdir mods/deathmatch/resources
      cd mods/deathmatch/resources
      wget http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip
      unzip mtasa-resources-latest.zip
      cd ../../..
  }
 
  clean()
  {
      rm -f ../multitheftauto_linux${ARCH_TYPE}.tar.gz
      rm -f ../baseconfig.tar.gz
      rm -f mods/deathmatch/resources/mtasa-resources-latest.zip
  }
 
  main()
  {
      getArchitecture
      clean
      downloadFiles
      unpack
      moveConfig
      installResources
      clean
 
      if ((1<<32)); then # 64 bits
          echo "Installation ready! Use ./mta-server64 to initialize server"
      else
          echo "Installation ready! Use ./mta-server to initialize server"
      fi
  }
 
  main # calling program entry point
=== Procedure ===
To proceed with installation, save somewhere with read-write-execute access (777) the mtasa-install shell. Finally, proceed to execute it (./mtasa-install for example).

Revision as of 18:47, 5 September 2017

Installation 64 bit

Main binary

Download the latest stable 64 bit Linux binaries:

rm -f multitheftauto_linux_x64.tar.gz
wget http://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz

Unpack into a directory:

tar -xf multitheftauto_linux_x64.tar.gz

Default config

Download the default config files:

rm -f baseconfig.tar.gz
wget http://linux.mtasa.com/dl/baseconfig.tar.gz

Unpack and move into the deathmatch directory:
(Note: Only do this for new installations as it will overwrite any existing config files.)

tar -xf baseconfig.tar.gz
mv baseconfig/* multitheftauto_linux_x64/mods/deathmatch

Change to the MTA server install directory:

cd multitheftauto_linux_x64

Test

You can now test if the server will start correctly:

./mta-server64

Default resources

If you need the default resources: Download the latest default resources zip from http://mirror.mtasa.com/mtasa/resources/ and unzip into mods/deathmatch/resources
Make sure you are in the MTA server install directory when following this example:

apt-get install unzip
mkdir mods/deathmatch/resources
cd mods/deathmatch/resources
rm -f mtasa-resources-latest.zip
wget http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip
unzip mtasa-resources-latest.zip
rm -f mtasa-resources-latest.zip
cd ../../..


Installation 32 bit

Main binary

Download the latest stable 32 bit Linux binaries:

rm -f multitheftauto_linux.tar.gz
wget http://linux.mtasa.com/dl/multitheftauto_linux.tar.gz

Unpack into a directory:

tar -xf multitheftauto_linux.tar.gz

Default config

Download the default config files:

rm -f baseconfig.tar.gz
wget http://linux.mtasa.com/dl/baseconfig.tar.gz

Unpack and move into the deathmatch directory:
(Note: Only do this for new installations as it will overwrite any existing config files.)

tar -xf baseconfig.tar.gz
mv baseconfig/* multitheftauto_linux/mods/deathmatch

Change to the MTA server install directory:

cd multitheftauto_linux

Test

You can now test if the server will start correctly:

./mta-server

Default resources

If you need the default resources: Download the latest default resources zip from http://mirror.mtasa.com/mtasa/resources/ and unzip into mods/deathmatch/resources
Make sure you are in the MTA server install directory when following this example:

apt-get install unzip
mkdir mods/deathmatch/resources
cd mods/deathmatch/resources
rm -f mtasa-resources-latest.zip
wget http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip
unzip mtasa-resources-latest.zip
rm -f mtasa-resources-latest.zip
cd ../../..


Running with 32 or 64 bit Linux

Make sure your server libraries and stuff are up to date

On Debian/Ubuntu this is done with:

apt-get update
apt-get upgrade

Troubleshooting

  • If you get a problem with such as "libreadline.so.5: cannot open shared object file: No such file or directory.", it can be solved on 32 bit Debian/Ubuntu by doing this:
apt-get install libreadline5
  • If you get a problem with such as "libncursesw.so.5 cannot open shared object file: No such file or directory", it can be solved on 32 bit Debian/Ubuntu by doing this:
apt-get install libncursesw5

Note: If you experience this issue on a 64-bit machine while trying to run the 32-bit MTA server, then you should install the following package on a 64-bit Debian/Ubuntu machine (as root):

apt-get install lib32ncursesw5

You can find more 32-bit library alternatives on this page: www.debian.org/distrib/packages#search_contents.

MySQL Troubleshooting

  • If you are using the inbuilt MySQL functions such as dbConnect and dbQuery, you will need to have libmysqlclient.so.16 installed.
  • If you get a problem with such as "libmysqlclient.so.16: cannot open shared object file: No such file or directory", it can be solved on Debian/Ubuntu by doing this:
apt-get install libmysqlclient16

If that fails:

[Optional] Installing and Configuring an External Web Server

Instructions on how to install and configure Nginx as an external web server for MTA is here: Installing and Configuring Nginx as an External Web Server

Server crashes

If your Linux server crashes, please obtain a backtrace and post a report on our Bug tracker

To obtain a backtrace:

Do you have a core dump file in the the MTA server directory?

It's usually called 'core', and usually over 100MB, and looks something like this:

Core.png

If you have a core dump file in the the MTA server directory:

  • Install gdb. To install gdb on Debian, use this command:
apt-get install gdb
  • And from the MTA install directory do this command
gdb mta-server -c core
  • When gdb launches, do this command to get a module list:
i sh
  • And then this command to get a backtrace:
bt
  • Save the output
  • (To exit gdb, use the quit command)

If you do not have a core dump file in the the MTA server directory:

  • Install gdb. To install gdb on Debian, use this command:
apt-get install gdb
  • And from the MTA server directory start the mta-server like this:
gdb -ex "set print thread-events off" --eval-command run --args mta-server -q
  • Now wait for a crash. (Ignore any weird screen output in the meantime)
  • When a crash occurs, do this command to get a module list:
i sh
  • And then this command to get a backtrace:
bt
  • Save the output
  • (To exit gdb, use the quit command)


Server freezes

If your Linux server freezes, please obtain a backtrace with thread information and post a report on our Bug tracker

To obtain a backtrace with thread information:

  • Install gdb. To install gdb on Debian, use this command:
apt-get install gdb
  • And from the MTA server directory start the mta-server like this:
gdb -ex "set print thread-events off" --eval-command run --args mta-server -q
  • Now wait for a freeze. (Ignore any weird screen output in the meantime)
  • When a freeze occurs, press ctrl-c to start gdb
  • Then do this command to get a module list:
i sh
  • And then this command to get a backtrace:
bt
  • And then this command to get thread information:
info threads
  • Save the output
  • (To exit gdb, use the quit command)

Automatic installer

Prerequisites

Make sure you have bash, unzip, tar and wget available on your server. Also notice that for 64-bit servers the 64-bit binary will be installed, otherwise 32-bit binary will be.

Source code

 #!/bin/bash -x
 #==============================================================================#
 #                                mtasa-install                                 #
 #------------------------------------------------------------------------------#
 #  This shellscript installs MTA:SA on your server. You can configure it and   #
 #  modify it as desired, you can even improve it if you want.                  #
 #==============================================================================#
  
 ARCH_TYPE=""
  
 getArchitecture()
 {
     if ((1<<32)); then
         ARCH_TYPE="_x64"
     fi
 }
  
 downloadFiles()
 {
     wget http://linux.mtasa.com/dl/multitheftauto_linux${ARCH_TYPE}.tar.gz
     wget http://linux.mtasa.com/dl/baseconfig.tar.gz
 }
  
 unpack()
 {
     tar -xf multitheftauto_linux${ARCH_TYPE}.tar.gz
     tar -xf baseconfig.tar.gz
 }
  
 moveConfig()
 {
     mv baseconfig/* multitheftauto_linux${ARCH_TYPE}/mods/deathmatch
     rm -rf baseconfig
     cd multitheftauto_linux${ARCH_TYPE}
 }
  
 installResources()
 {
     mkdir mods/deathmatch/resources
     cd mods/deathmatch/resources
     wget http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip
     unzip mtasa-resources-latest.zip
     cd ../../..
 }
  
 clean()
 {
     rm -f ../multitheftauto_linux${ARCH_TYPE}.tar.gz
     rm -f ../baseconfig.tar.gz
     rm -f mods/deathmatch/resources/mtasa-resources-latest.zip
 }
  
 main()
 {
     getArchitecture
     clean
     downloadFiles
     unpack
     moveConfig
     installResources
     clean
  
     if ((1<<32)); then # 64 bits
         echo "Installation ready! Use ./mta-server64 to initialize server"
     else
         echo "Installation ready! Use ./mta-server to initialize server"
     fi
 }
  
 main # calling program entry point

Procedure

To proceed with installation, save somewhere with read-write-execute access (777) the mtasa-install shell. Finally, proceed to execute it (./mtasa-install for example).