Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Yaws webserver
Erlang Shell C JavaScript HTML Makefile Other

Check support for the SSL 'log_alert' option

This fix the commit 1bf94af for Erlang releases older than R16B02.
latest commit f6d26c6345
@capflam capflam authored
Failed to load latest commit information.
applications Set file encoding for wiki application
c_src Fix #187: handle EINPROGRESS and EALREADY in sendfile driver
contrib add rebar support (Tuncer Ayaz and Steve Vinoski)
doc Add more documentation for arg_rewrite_mod
ebin Massive autotools refactoring & cleanup
examples Massive autotools refactoring & cleanup
include Check support for the SSL 'log_alert' option
m4 Massive autotools refactoring & cleanup
man Merge branch 'expires-improvements' of https://github.com/andreinecul…
munin README.munin
priv Massive autotools refactoring & cleanup
rebar-templates Add yaws as a dep in node rebar.config template
rel Exclude hipe application in reltool.config
scripts Do not use hostname to generate default yaws configuration
src Check support for the SSL 'log_alert' option
ssl Renew self-signed ssl certificat
test Fix #216: handle exhtml return values from out/1
win32 Massive autotools refactoring & cleanup
www Updated authbind/privbind docs
.gitignore Ignore emacs backup files in .gitignore
.travis.yml Add Erlang/OTP 17.3 support in .travis.yml
ChangeLog whitespace cleanup
LICENSE whitespace cleanup
Makefile.am Fix commit adb3c36
README.cygwin Massive autotools refactoring & cleanup
README.md Rework how SSL protocol_version is handled
README.osx Add README.osx for instructions on installing on OSX using Homebrew
README.pkg-config whitespace cleanup
_build.cfg Adding files for Erlware. A very rough packaging of 1.76 has been rel…
configure.ac Check support for the SSL 'log_alert' option
erlang_deps.mk Massive autotools refactoring & cleanup
include.mk Check support for the SSL 'log_alert' option
known_dialyzer_warnings Adapt previous Andrei patch to do more stuff during Yaws startup
rebar.config Make rebar account for 32-/64-bit builds
rebar.config.script Check support for the SSL 'log_alert' option
two-mode-mode.el updates to make two-mode-mode work with emacs 23
vsn.mk Prepare for yaws 1.99
yaws.pc.in add pkg-config support contributed by Olivier Girondel

README.md

This is Yaws, a webserver for dynamic content written in Erlang.

Travis build status

Prepare build

Get and install an Erlang system (http://www.erlang.org).

To compile Yaws, Erlang/OTP R14B02 or higher is required.

For SSL-enabled instances, Erlang/OTP R16B01 or higher is required in order to allow only specific protocol versions.

If you've cloned the source from github and you want to build using autotools, note there is no ./configure script in the source, so create one:

$> autoreconf -fi

Install build dependencies. Required packages to compile Yaws are (based on debian packages):

  • build-essential
  • autoconf/automake/libtool
  • erlang - Required apps:
    • erlang-{kernel/stdlib/sasl/erts}
    • erlang-compiler
    • erlang-crypto
    • erlang-xmerl
  • libpam0g-dev

To build the documentation (optional), you also need to install:

  • texlive-latex-base
  • texlive-latex-recommended
  • texlive-fonts-recommended
  • texlive-font-utils
  • texlive-extra-utils
  • ghostscript

On Ubuntu/debian this is pretty much equal to:

$> apt-get build-dep yaws

Finally, to run the testsuites, yaws need to install:

  • git
  • wget
  • curl
  • erlang-eunit
  • erlang-inets
  • erlang-mnesia
  • erlang-ssl
  • cadaver

Build

You can build using rebar:

$> rebar get-deps compile

or via autotools:

$> ./configure --prefix=/usr/local

If using rebar, you'll get a "local installation" with Yaws script in ./bin and the Yaws configuration file in ./etc/yaws.

If using autotools, the build will be configured by default for installation under /usr/local. For more information about installation directories and other supported options, see the configure help. Useful options are:

--with-defaultcharset=CHARSET specify default charset, i.e UTF-8
--with-extrainclude=DIR       dir to include if e.g. pam is installed in some odd place
--with-erlang=PREFIX          prefix where Erlang is installed (optional)

Note to packagers (rpm, deb ...) All install targets support the DESTDIR variable. Thus, if we do

$> ./configure --prefix=/usr; make

we can subsequently do:

$> make install DESTDIR=/foo/bar

All Yaws files will be installed under DESTDIR, but all code will assume Yaws should be installed under /usr.

Main make targets:

  • all : compile Yaws
  • debug : compile Yaws with debug flags
  • clean : remove files produced by all or debug target
  • install : do a proper install of Yaws
  • doc or docs : build the documentation
  • check or test : launch tests
  • cleantest : remove files produced by check target
  • dialyzer : run dialyzer on Yaws
  • mkinstaller : build an installer for windows
  • cleaninstaller: remove files produced by mkinstaller target
  • apps : compile Yaws applications (chat,mail,wiki,yapp)
  • cleanapps : remove files produced by apps target
  • installapps : install Yaws applications
  • fullinstall : install + installapps
  • fullclean : clean + cleantest + cleanapps + cleaninstaller

Test your build

With autotools, to test the build, you should install it somewhere:

$> ./configure --prefix=$PWD/_inst && make install
$> $PWD/_inst/bin/yaws -i

If you used rebar to compile Yaws, you can alternatively start Yaws with

$> ./bin/yaws -i

Either approach will start a webserver at http://0.0.0.0:8000 Terminate through ^C, or ^G followed by q, or

> init:stop()

NOTE: If you've used rebar to build the system, none of the following directions apply. With rebar only "local installations" are supported.

Install and run

NOTE: following commands may require root privileges, depending of the installation prefix.

Just run:

$> make install

Then, to run Yaws, you should use its script:

$> ${bindir}/yaws -i

This starts an interactive system.

With the default yaws.conf file, this will create a webserver at http://${host} and one at https://${host}.

You can adapt Yaws configuration by editing '${sysconfig}/yaws/yaws.conf'.

Daemonize Yaws

Start it using '--daemon' and '--heart' options:

$> ${bindir}/yaws --daemon --heart

This will start a daemon (--daemon) which will be autorestarted when/if it crashes or hangs (--heart). Also, for most unices, we create proper start scripts in ${sysconfdir}/init.d

Example: Here is how I compile/start the yaws system that runs at http://yaws.hyber.org (Ubuntu server system)

$> autoreconf -fi
$> ./configure --sysconfdir=/etc
$> make && make install
$> /etc/init.d/yaws start
Something went wrong with that request. Please try again.