server_readme.md 2.6 KB

##SERVER COMMANDS (most need sudo):

LINUX:

  • lsof -i:PORT --> list processes listening on PORT on linux
  • ss -ltnp --> list processes listening on various ports
  • ip a --> various machine ips
  • top, nohup --> old friends
  • journalctl -xe --> ???

SSH:

  • ssh-keygen --> generate public/private key pair. TAKE CARE OF THE FORMAT: EGI virtual machines seem to NEED RSA. The public key needs to be saved in /home/USERNAME/.ssh, and to be cat-ed in the /home/USERNAME/.ssh/authorized_keys file. The private key needs to be used by the user wanting to login; on linux, permissions must be 700.
  • ssh-add PRIVATE_KEY --> add the PRIVATE_KEY to the ssh service, so it won't need to be passed each time. Works with scp too
  • ssh -i PRIVATE_KEY user@server --> connect to server using PRIVATE_KEY. -i PRIVATE_KEY works for scp too.
  • ssh-copy-id user@server --> can be used to copy the/a public key to the server; probably needs password authentication enabled, check. --> it's useful to also check the sshd (ssh daemon) configuration, for instance to enable/disable password login

APACHE: Note -- most apache commands are shortcuts to stuff that can be done in other, more direct and "handmade" ways

  • systemctl start/stop/restart/reload apache2
  • a2ensite NOMESITO --> apache2 command to add 'site' (configuration file NOMESITO.conf in /etc/apache2/sites-available) to sites-enabled
  • a2enmod proxy --> command to enable reverse proxy setup in virtualhost (use together with proxy_http)
  • a2enmod proxy_http --> command to enable reverse proxy setup in virtualhost (use together with proxy)

PYTHON:

  • waitress-serve --listen=127.0.0.42:5000 app:app --> example of command to serve flask app (file app.py, app name = app) on the waitress WSGI

DOCKER:

  • docker exec -it CONTAINER bash --> explore filesystem Docker of specified container (with bash); more generally, 'docker exec' will execute commands on it. The container has to be running.
  • docker [buildx] build -t IMAGE_NAME . --> build docker image of specified name using a Dockerfile in the current working directory. The buildx extra keyword is needed on Windows.
  • docker run -d --name CONTAINER -p 80:80 IMAGE --> example of running Docker: run specified image in container named 'CONTAINER'; expose internal port 80 on external port 80 (-p); detach (-d)
  • docker images --> check existing Docker images
  • docker ps [-a] --> check running [all] docker containers
  • docker rm CONTAINER --> delete specified container
  • docker image rm IMAGE --> delete specified image
  • docker container logs CONTAINER --> check container logs