Yaws

Yaws是一款HTTP高性能1.1 Web服务器,特别适用于动态内容Web应用程序。(Yaws is a HTTP high perfomance 1.1 webserver particularly well suited for dynamic-content web applications.)

  • Owner: erlyaws/yaws
  • Platform:
  • License:: BSD 3-Clause "New" or "Revised" License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

Yaws 是一款HTTP高性能1.1网络服务器,特别适用于动态内容Web应用。 支持两种独立的操作模式:

  • Yaws作为常规Web服务器守护程序运行的独立模式。 这是默认模式。
  • Yaws作为嵌入式Web服务器在另一个Erlang应用程序中运行的嵌入式模式。
Yaws完全以Erlang语言编写,而且它是一个多线程Web服务器,其中一个Erlang轻量级进程用于处理每个客户端。
与其他Web技术相比,Yaws的主要优点是性能和优雅。 性能来自于底层的Erlang系统及其以更有效的方式处理并发进程的能力。 它的优雅也来自于Erlang。 Web应用程序不必用丑陋的特设语言编写。

Main metrics

Overview
Name With Ownererlyaws/yaws
Primary LanguageErlang
Program languageErlang (Language Count: 14)
Platform
License:BSD 3-Clause "New" or "Revised" License
所有者活动
Created At2009-02-20 21:18:06
Pushed At2025-06-19 13:18:48
Last Commit At2025-03-27 14:24:29
Release Count33
Last Release Nameyaws-2.2.0 (Posted on 2024-07-13 18:41:00)
First Release Nameyaws-1.81 (Posted on 2009-03-10 00:02:39)
用户参与
Stargazers Count1.3k
Watchers Count75
Fork Count271
Commits Count2.7k
Has Issues Enabled
Issues Count304
Issue Open Count32
Pull Requests Count104
Pull Requests Open Count3
Pull Requests Close Count91
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

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 R17 or higher is required.

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

On MacOS and OS X, be sure the necessary Xcode command-line tools and
development environment are set up correctly by running the following
command:

xcode-select --install

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