Noah Quanrud

sbcl-servers (remoteserver)

Blog

SBCL Servers On Remote Server

1. Original Setup

When I first started using SBCL on a remote server, I set it up by following this guide . In the guide I used one multiple SBCL server to hold several different project, meaning that in one repl (read-eval-print loop), it held all of the functions and packages to the different projects. This made it slightly diffuclt for me since I became more selective and careful for things as simple as the name of a function or package because if two different functions had the same function name, then the one compiled more recently is the one used in all of the projects.

2. New Setup

To solve this issue, I decided to have each project have their own SBCL server because seperating projects to individually each have their own unique SBCL servers nullifies the problem of overlapping function names. When giving each project its own server, it is important to also give each their own unique port in order to make them truly autonomous of each other.

sbcl-servers

On the right side, each "usr/bin/sbcl" is an SBCL server containing one project

The only small problem to this is that the only way to distinguish each SBCL server from terminal is by its PID. To solve this, I changed my SBCL server setup from "detachtty x /usr/bin/sbcl" to "detachtty --pid-file /pid/file/path.pid x /usr/bin/sbcl" so I can log each servers pid into a file that I can look into to be able to distinguish it later. Now that you can always distinguish PIDs, it is easy to shutdown or 'kill' a server by using "kill -9 pid" where pid is the pid number of the server you wish to kill.

sbcl-servers

example of PID files, nba.pid contains the pid to SBCL server containing the nba project and noahquanrud.pid for the PID of that project.