forked from emweb/wt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
INSTALL.win32.html
210 lines (183 loc) · 10.3 KB
/
INSTALL.win32.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
</head>
<title>Wt Installation</title>
<body>
<h1>Wt Installation instructions for Windows</h1>
This page lists the instructions for building and installing Wt on Windows.
It is organized in 3 sections:
<ul>
<li>Requirements</li>
<li>Building and installing the library</li>
<li>Trying the examples (or your own Wt application)</li>
</ul>
<h2>Requirements</h2>
<p>
Wt for Windows uses the built-in web server connector or the ISAPI connector.
The fastcgi connector is not supported. The built-in web server is more
convenient during development and is easier to setup than the ISAPI connector.
It is also designed for production environments, where it is often used in
combination with a reverse proxy server.
To use the built-in server, you have to link your projects against libwt
and libwthttp. To use the ISAPI connector, you have to link to libwtisapi
instead of libwthttp.</p>
<p>The prebuilt binaries for Visual Studio include all necessary and optional dependencies,
and enable all features of Wt and can be downloaded from the
<a href="https://github.com/emweb/wt/releases">releases page on GitHub</a>.</p>
<p>Requirements:
<ul>
<li>Microsoft Visual Studio 2015 or newer. Wt and its dependencies also
build on the Community Edition, which is free (as in beer) to use.
<li>CMake cross-platform build system (www.cmake.org): cmake-3.1.x or higher</li>
<li>Boost 1.46.1 (or later; a recent version is recommended)</li>
</ul>
</p>
<p>Additional and optional requirements for some of the examples
<ul>
<li>For HTTPS support: OpenSSL, version 0.9.8d or newer.</li>
<li>To compress traffic: zlib</li>
<li>PostgreSQL, MySQL, Firebird client libraries for Dbo database backends</li>
<li><a href="http://libharu.org/">Haru Free PDF Library</a>, which is used to
provide support for rendering PDF (WPdfImage, WPdfRenderer).</li>
</ul>
</p>
<p>
We strongly recommend to use libraries which are all built using the same
compiler and the same runtime configuration (/MT, /MD, /MTd
or /MDd) to avoid incompatibilities with the C runtime libraries. Mixing
CRTs is NOT recommended, the <a href="http://www.zlib.net/DLL_FAQ.txt">zlib
DLL FAQ</a> clearly explains why and what you should do about it (in
short: use prebuilt libraries for the exact same compiler as you use, and
if those are not available, rebuild the dependency libraries from the sources).
</p>
<hr />
<h2>Step by step instructions to build and install the Wt library</h2>
<p>
Up to date instructions are located on the Wt wiki page:
<a href="http://redmine.emweb.be/projects/wt/wiki/Installing_Wt_on_MS_Windows">Installing Wt on MS Windows</a>
</p>
<p>
Instructions on how to use the ISAPI connector for deployment under IIS are
also available on the wiki page:
<a href="http://redmine.emweb.be/projects/wt/wiki/ISAPI_on_Microsoft_IIS">ISAPI on Microsoft IIS</a>
</p>
<h2>Trying the examples (or your own Wt application) using wthttpd</h2>
<h4>1. Run the example in the MSVC IDE </h4>
Right-click on the example project you want to run, and select 'Properties'.
In Configuration Properties->Debugging, set the Command Arguments to
<pre>
--http-address=0.0.0.0 --http-port=8080 --deploy-path=/hello --docroot=.
</pre>
<p>
This will start a httpd server listening on all local interfaces, on
port 8080, and you may browse the example at <a
href="http://127.0.0.1:8080/hello">http://127.0.0.1:8080/hello</a></p>
<p>
Examples that need extra files to run should be executed from their source
directory in order to find their dependency files (icons, css files, etc.
Watch for 404 errors in Wt's output). To do so, set the 'Working directory'
for the example to wt-x.y.z/examples/ExampleName. Some examples (e.g. the
wt home page) need the 'resources' directory to work correctly. Copy
the wt-2.x.x/resources to the example's source directory to solve this
problem. Other examples (such as the Charts example) may require the
installation of ExtJs. See the Wt reference manual for more information
on how to obtain and install ExtJs.
</p>
<p>
These are all the command-line options that are available (run the examples
with --help to see the most recent list of available options):
<pre>
General options:
-h [ --help ] produce help message
-t [ --threads ] arg (=-1) number of threads (-1 indicates that
num_threads from wt_config.xml is to be
used, which defaults to 10)
--servername arg (=diffie) servername (IP address or DNS name)
--docroot arg document root for static files,
optionally followed by a
comma-separated list of paths with
static files (even if they are within a
deployment path), after a ';'
e.g. --docroot=".;/favicon.ico,/resourc
es,/style"
--approot arg application root for private support
files; if unspecified, the value of the
environment variable $WT_APP_ROOT is
used, or else the current working
directory
--errroot arg root for error pages
--accesslog arg access log file (defaults to stdout),
to disable access logging completely,
use --accesslog=-
--no-compression do not use compression
--deploy-path arg (=/) location for deployment
--session-id-prefix arg prefix for session IDs (overrides
wt_config.xml setting)
-p [ --pid-file ] arg path to pid file (optional)
-c [ --config ] arg location of wt_config.xml; if
unspecified, the value of the
environment variable $WT_CONFIG_XML is
used, or else the built-in default
(c:/witty/wt_config.xml) is tried, or
else built-in defaults are used
--max-memory-request-size arg (=131072)
threshold for request size (bytes), for
spooling the entire request to disk, to
avoid DoS
--gdb do not shutdown when receiving Ctrl-C
(and let gdb break instead)
HTTP/WebSocket server options:
--http-address arg IPv4 (e.g. 0.0.0.0) or IPv6 Address
(e.g. 0::0). You must specify either
this option or --https-address (or
both)
--http-port arg (=80) HTTP port (e.g. 80)
HTTPS/Secure WebSocket server options:
--https-address arg IPv4 (e.g. 0.0.0.0) or IPv6 Address
(e.g. 0::0). You must specify either
this option or --http-address (or both)
--https-port arg (=443) HTTPS port (e.g. 443)
--ssl-certificate arg SSL server certificate chain file
e.g. "/etc/ssl/certs/vsign1.pem"
--ssl-private-key arg SSL server private key file
e.g. "/etc/ssl/private/company.pem"
--ssl-tmp-dh arg File for temporary Diffie-Hellman
parameters
e.g. "/etc/ssl/dh512.pem"
--ssl-enable-v3 Switch on SSLv3 support (not
recommended; disabled by default)
--ssl-client-verification arg (=none) The verification mode for client
certificates.
This is either 'none', 'optional' or
'required'. When 'none', the server
will not request a client certificate.
When 'optional', the server will
request a certificate, but the client
does not have to supply one. With
'required', the connection will be
terminated if the client does not
provide a valid certificate.
--ssl-verify-depth arg (=1) Specifies the maximum length of the
server certificate chain.
--ssl-ca-certificates arg Path to a file containing the
concatenated trusted CA certificates,
which can be used to authenticate the
client. The file should contains a a
number of PEM-encoded certificates.
--ssl-cipherlist arg List of acceptable ciphers for SSL.
This list is passed as-is to the SSL
layer, so see openssl for the proper
syntax. When empty, the default
acceptable cipher list will be used.
Example cipher list string:
"TLSv1+HIGH:!SSLv2"
--ssl-prefer-server-ciphers arg (=0) By default, the client's preference is
used for determining the cipher that is
choosen during a SSL or TLS handshake.
By enabling this option, the server's
preference will be used.
</pre>
</p>
</body>
</html>