Requires the following packages (and their dependencies) to be installed:
raco pkg install --skip-installed \
plt-service-monitor \
web-server-lib \
https://github.com/racket/infrastructure-userdb.git#main \
s3-sync
Run the dynamic server via main.rkt
. Provide the --config
file to
specify a module that exports config
as a hash table with symbol
keys to configure the server. Alternatively, run one of the modules in
official/configs/
; those modules are also useful as configuration
examples.
To initialize the set of served packages, use raco pkg catalog-copy
to copy an existing catalog to directory form, and then move the pkg
directory in the catalog copy to be root/pkgs
(where root is the
server's root directory).
Common configuration keys:
-
src
- path; defaults to this package'sofficial/.
directory.-
static.src-path
- path; defaults to src/static
. Location of (non-generated) HTML/JS/CSS files to be copied tostatic-path
(see below). -
static-path
- path; defaults to src/static-gen
. Staging area where all static resources - both generated and non-generated - are copied to before being copied in turn to whereever static content is to be served from (usually an S3 bucket). -
notice-path
- path; defaults to static-path/notice.json
. Whenever the server has a message for site users, the message will be placed in this file.
-
-
root
- path; defaults to this package'sofficial/root
directory. Used as a base for many other configuration variables:-
users.new-path
- path; defaults to root/users.new
. Directory in which to hold user records, one file per user. -
cache-path
- path; defaults to root/cache
. Names a directory where filessummary.rktd
andsummary.rktd.etag
will be created. -
pkgs-path
- path; defaults to root/pkgs
. Names a directory where one file of package information for each package in the catalog will be stored. -
github-client_id
(obsolete) - string #f; defaults to the contents of the file at root/client_id
, if it exists. Should be a Github client ID string (hex; twenty characters long, i.e. 10 bytes of data, hex-encoded), used only if package downloaing is forced to use the GitHub API by setting thePLT_USE_GITHUB_API
environment variable -
github-client_secret
(obsolete) - string or #f; defaults to the contents of the file at root/client_secret
, if it exists. Should be a Github client secret string (hex; forty characters long, i.e. 20 bytes of data, hex-encoded), used only whengithub-client_id
is used
-
-
s3-bucket
- string or#f
; defaults to the contents of the environment variableS3_BUCKET
, if it is defined; otherwise, totest.racket-lang.org
. AWS credentials are found by thes3
package, typically from~/.aws-keys
. If set to#f
, S3 synchronization will be disabled. -
s3-bucket-region
- string; defaults to the contents of the environment variableS3_BUCKET_REGION
, if it is defined; otherwise, tous-east-1
. -
beat-s3-bucket
- string or #f; defaults to #f. A bucket name for regsitering heartbeats, or #f to disable heartbeats.
Configuration keys used by dynamic.rkt
:
-
redirect-to-static-proc
- function from HTTP request to HTTP response, which should issue a redirect pointing to a static resource. Defaults to a function which replaces the scheme with the contents of the configuration variableredirect-to-static-scheme
, the host withredirect-to-static-host
, and the port toredirect-to-static-port
. These, in turn, default to"http"
,"pkgs.racket-lang.org"
and80
, respectively. -
port
- number; defaults to9004
. Port on which the backend site will be served (N.B. via HTTPS). -
ssl?
- boolean; ; defaults to#t
. A true value serves HTTPS and requires root/server-cert.pem
and root/private-key.pem
. -
beat-update-task-name
- string; defaults to "pkgd-update". A task name for heartbeats after updating information for all packages.
Configuration keys used by static.rkt
:
-
atom-self-link
- string; defaults tohttps://pkg.racket-lang.org/rss
. Used as therel=self
link in the header of the generated ATOM feed. -
atom-link
- string; defaults tohttps://pkg.racket-lang.org/
. Used as the default site link in the header of the generated ATOM feed. -
atom-id
- string; defaults tohttps://pkg.racket-lang.org/
. Used as the ATOM feed ID. -
atom-compute-package-url
- function from package-name symbol to URL string. Defaults to a function which callsformat
with the package name and a format template-string fromatom-package-url-format-string
, which in turn defaults tohttp://pkg.racket-lang.org/#[~a]
. -
beat-upload-task-name
- string; defaults to "pkgd-upload". A task name for heartbeats after uploading information for all packages.