#readwise # Linux Fundamentals - Working with Web Services ![rw-book-cover](https://readwise-assets.s3.amazonaws.com/static/images/article2.74d541386bbf.png) ## Metadata - Author: [[Hack The Box]] - Full Title: Linux Fundamentals - URL: https://academy.hackthebox.com/module/18/section/74 ## Highlights **There are many different ways to set up web servers on Linux operating systems. One of the most used and widespread web servers, besides IIS and Nginx, is Apache.** For an Apache web server, we can use appropriate modules, which can encrypt the communication between browser and web server (`mod_ssl`), use as a proxy server (`mod_proxy`), or perform complex manipulations of HTTP header data (`mod_headers`) and URLs (`mod_rewrite`). Apache offers the possibility to create web pages dynamically using server-side scripting languages. Commonly used scripting languages are PHP, Perl, or Ruby. Other languages are Python, JavaScript, Lua, and .NET, which can be used for this. We can install the Apache webserver with the following command: `apt install apache2 -y` --- ### `cURL` **`cURL` is a tool that allows us to transfer files from the shell over protocols like HTTP, HTTPS, FTP, SFTP, FTPS, or SCP.** This tool gives us the possibility to control and test websites remotely. Besides the remote servers' content, we can also view individual requests to look at the client's and server's communication. **Usually, `cURL` is already installed on most Linux systems.** This is another critical reason to familiarize ourselves with this tool, as it can make some processes much easier later on. ^yo9fdn --- ### `wget` **An alternative to `curl` is the tool `wget`. With this tool, we can download files from FTP or HTTP servers directly from the terminal and serve as a good download manager.** If we use `wget` in the same way, the difference from `curl` is that the website content is downloaded and stored locally. ^af7rmh --- ### Python 3 Another option that is often used when it comes to data transfer is the use of Python 3. In this case, the web server's root directory is where the command is executed to start the server: `python3 -m http.server` ---