Quick Start - Configure - H2O - the optimized HTTP server

# H2O

the optimized HTTP/1.x, HTTP/2, HTTP/3 server

×
Powered by Oktavia

## Configure > Quick Start

In order to run the H2O standalone HTTP server, you need to write a configuration file. The minimal configuration file looks like as follows.

    listen:
      port: 80

    hosts:
      "myhost.example.com":
        listen: &listen_ssl
          port: 443
          ssl:
            certificate-file: /path/to/certificate-file
            key-file: /path/to/key-file
        listen:
          <<: *listen_ssl
          type: quic
        paths:
          /:
            file.dir: /path/to/the/public-files

    user: nobody
    access-log: /path/to/the/access-log
    error-log: /path/to/the/error-log
    pid-file: /path/to/the/pid-file

The configuration instructs the server to:

1. listen on TCP port 80 for all hosts
2. for myhost.example.com, listen on TCP port 443 using given TLS certificate and key pair
3. listen on UDP port 443 (QUIC), reusing the previous setting named as `listen_ssl`
4. serve files under `/path/to/the/public-files`
5. under the privileges of `nobody`
6. emit access logs to file: `/path/to/the/access-log`
7. emit error logs to `/path/to/the/error-log`
8. store the process id of the server in `/path/to/the/pid-file`

Enter the command below to start the server.

    % sudo h2o -m daemon -c /path/to/the/configuration-file

The command instructs the server to read the configuration file, and start in `daemon` mode, which dispatches a pair of master and worker processes that serves the HTTP requests.

To stop the server, send `SIGTERM` to the server.

    % sudo kill -TERM `cat /path/to/the/pid-file`

### Next Step

Now that you know how to start and stop the server, the next step is to learn the configuration directives and their structure, or see the configuration examples.