Due to most people's aversion to Linux, and the SA:MP Wiki entry is unsympathetic towards Linux newbies, I've decided to throw together a real-world, step-by-step tutorial on how to set up a fresh Linux VPS/Dedicated Server with SA:MP.
However, explained a little more simply.
This may be quite long and detailed, but that's mainly so people freaked out by the command line interface actually understand what's going on.
Throwing in random commands won't help anyone in the long run, especially when things go wrong
Also, this server is made in the point of view of a Windows user. Users running Mac OSX/Linux, adjust certain areas accordingly.
So! With the introduction out of the way, let's begin.
UPDATE: I've added a web server tutorial later on in the thread.
This tutorial uses a VPS outside of the Cake.io Network.
In fact, it's a 64MB VPS from Inception Hosting. That's right kids, 64MB.
I, however, do not recommend using such a low specced system for production use.
Step 1: Hello, Linux.
|Presuming you've just rented an unmanaged VPS or Dedicated Server
running Linux, they'll usually provide you with SSH login credentials,
as well as your IP.
SSH stands for Secure Shell; think of it as a logging into a PC's cmd.exe remotely.
To log in to your server through SSH, you'll need an SSH client.
The most common SSH client for Windows is PuTTy, which you can download from...
|Let's fire up PuTTy!
As you can see, from that lovely image, you'll need to put in your Server's IP in the Hostname field, in addition, make sure the connection type is SSH.
The default port for SSH is 22.
Once you're ready, hit 'Open'.
|You'll then be approached by the login prompt.
Type in 'root', hit enter, and then type in your password.
Note: The characters will not show when being typed.
If all goes well, you'll be logged in. Horray!
|Generally speaking, running anything as the root user is a bad idea from a security point of view.
Because of this, let's create an account for the user.
|Supposing you want to create an account called 'samp', you'll use this command.
adduser -m samp
If you're running a RedHat based system, like CentOS, you'll then want to give it a password, so you'll need to use this command.
It would've looked a little bit like...
|Got this far? Great! We're right on track to downloading SA:MP.
Firstly, you'll need to close the existing login to your root user acount, and log-in to your SA:MP user account.
So open up PuTTy, enter your server's IP address, log in with the username and password you just created.
In this section, you'll also learn how to download files, copy/paste in PuTTy, and avoid typing in incredibly long file names.
|Download the server package.
To download files on a Linux based system, we'll use 'wget', since it's pretty simple and straight forward.
Navigate to the SA:MP downloads page, and find the link to the Linux server package.
Right click the link, click on 'Copy Link Address' and then go back to the PuTTy window.
Start by typing in wget, hit the space bar, and then right click onto the PuTTy window.
This pastes the link you've just copied, saving you a load of time from typing it out.
To execute the command, and download the files, just hit enter.
Your command should've looked something like this:
|Extracting the files
So, you've successfully downloaded the file, but what on Earth is that .tar.gz extension?!
Think of it as a file, within a file. The 'tar' part is basically cello-taping the files together, whilst the 'gz' part compresses the 'tar' file with Gzip compression.
To extract it, it's pretty darn simple, although the tar commands are horrible to look at.
But Hey, watch out kids, here's another Linux trick to show your friends. Remember I said I'll show you how to avoid typing out awkwardly long file names? Here we go.
You'll need to start out by typing 'tar zxf'
Then type the first couple letters of the server package (sa) then hit tab. As if like magic, the full filename has appeared.
Now just hit enter, and the package will silently extract itself.
The command should've looked a bit like
tar zxf samp03dsvr_R2.tar.gz
|Here's a screenshot showing what just happened on my screen.
Notice at the end, I've used the 'ls' command.
It's showing the .tar.gz file we downloaded, and the samp03 directory that's been extracted.
|So, you want to get the server started up?
Fair enough. Let's get to it.
You'll need to change your directory to the samp03 directory.
Quite simply, use the following command:
|Editing the server.cfg
As you're most likely aware, if you use the default server.cfg file when trying to start the server up, it'll complain and refuse to run, because you haven't changed the default password.
So, let's use a simple editor called 'nano' to edit the server.cfg
A screen looking like that should've popped up.
You'll be happy to know, that you can browse around the server.cfg by using your arrow keys, and just typing to edit the file. Simple stuff, right?
Once you've finished editing the file, hit CTRL+X, press 'Y', then Enter.
Your file is now saved!
|STARTEN THE SERVER!
Although an interesting command, it won't get your server started.
At the very least, because you don't have the correct permissions to launch the server.
That's right, you'll need to let your system know that the SA:MP binaries are allowed to be ran.
Luckily, it's just this simple command, where '-x' denotes 'executable'
chmod +x samp-npc samp03svr announce
This means it'll run without any intervention, and you can close your PuTTy session without the server closing.
An example command would be
nohup ./samp03svr &
Here's a few things you'll probably want to do post-setup:
- Upload GameModes/FilterScripts/Plugins
- Install a MySQL Server
|Uploading Files to your Linux Based Server
Although I've previously shown wget as a method of getting files onto your server, it isn't convenient when you're updating your script, or just uploading a few filterscripts.
It should be noted, that you don't need FTP to do this, oh no. Most SSHd's come with a SFTP server built in, so there's nothing you need to install on your server
Anyhow, let's get to it.
You'll need to get a SFTP client, for the sake of simplicity, go download FileZilla
In your FileZilla window, enter your server's IP, your SA:MP username, and your password into the QuickConnect bar. Remember, you're using Port 22, since you're still using SSH.
Navigate to your samp03 server folder, and drop your files into the correct folders.
Remember, Linux is CaSe SeNsItIve. LVDM isn't the same as lvdm.
Also, you need to set the correct permissions.
Make sure your 'scriptfiles' folder is writeable.
Right click the folder, and ensure that both read and write permissions are set.
Make sure any plugins are executable
Right click the file, and ensure the executable permissions are set
|Installing a MySQL Server, properly.
'Properly?!' You say with shock? Yes. If you're running a Debian or CentOS, and decide to 'apt-get' or 'yum' the MySQL server packages, you'll most likely get a very old version.
Since the latest plugins generally need newer versions, and the performance of the latest MySQL versions are significantly better, it's worth spending an extra couple minutes to do things properly.
We're going to add the DotDeb repository to our apt-get sources.
The bloke who runs it compiles the latest Web-Server packages and serves them up for free, but you'll need to enable it first.
Oh, also, this is for Debian 6 (Squeeze) only. If you're running Debian 5 (Lenny), it's time to upgrade. It's reached it's end of life.
Using the root account, we'll need to add a couple lines to our /apt/sources.list file.
So, use nano to open the file:
deb http://packages.dotdeb.org squeeze all deb-src http://packages.dotdeb.org squeeze all
Download the PGP key:
apt-get update apt-get install mysql-server
RedHat Based Systems (CentOS/Scientific Linux)
We'll be using the Atomic Repo for the latest MySQL packages, luckily, the installation is a little more straightforward than Debian.
Download the Atomic Repo Installation Script:
yum update yum install mysql-server
If you've followed this tutorial correctly, you'll have set up a SA:MP server, and installed the MySQL server as well.
If I have time, I'll update this to include administrating the MySQL server using Phpmyadmin, but it'll involve installing a web server, and optimising it to reduce memory usage.
If you have any questions, pointers, or things you think I've missed out, reply to the thread.
Someone might be thinking the same thing
Anyone, I hoped I've helped someone out.