##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