forked from naviserver-project/naviserver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
281 lines (183 loc) · 9.2 KB
/
README
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
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
WHAT IS THIS?
-------------
This is the source distribution of the NaviServer, a versatile
multiprotocol (HTTP(S) et al) server written in C/Tcl. It can
be easily extended in either language to create interesting
websites and services.
Contents
--------
1. Introduction
2. Documentation
3. Compiling and installing
4. Mailing lists
1. Introduction
---------------
NaviServer is maintained, enhanced, and distributed freely by the
open source community. The home for NaviServer downloads and bug/patch
database is located on the SourceForge site:
https://sourceforge.net/projects/naviserver
Source code is available from the GitHub site:
https://github.com/orgs/naviserver-project/naviserver
Another resource is the Tcl wiki:
https://wiki.tcl-lang.org/page/NaviServer
NaviServer is a freely available open source package. See the file
"license.terms" for complete information.
2. Documentation
----------------
Documentation is available in the "doc" subdirectory. At this
point it is incomplete and is considered to be a work in progress.
Once done, it will be distributed in Unix nroff format (suitable
for viewing with Unix "man" command) and HTML format (suitable
for viewing with any HTML-compatible browser).
The latest development version is available online:
https://naviserver.sourceforge.io/n/toc.html
3. Compiling and installing
---------------------------
NaviServer is known to compile and run on FreeBSD, Linux, Solaris,
macOS 10.2+ and Windows. To compile and install:
3a. Download, configure, build and install Tcl 8.5 or better
You may use the version of Tcl already installed on your machine
if it was built with threads enabled. The configure step below
will complain if this is not the case.
You can download the latest Tcl release from https://www.tcl-lang.org/
and follow the instructions in the included README. You may install
Tcl within the directory you intend to install the server
(e.g., /usr/local/ns) or in some other location.
NaviServer 4.99.* requires Tcl 8.5 or Tcl 8.6. NaviServer 5 will
be compatible with Tcl 9 (when it is released).
The following commands should work on a Unix-like operating system:
$ gunzip < tcl8.6.13-src.tar.gz | tar xvf -
$ cd tcl8.6.13/unix
$ ./configure --prefix=/usr/local/ns --enable-threads --enable-symbols
$ make install
3b. If you don't have GNU make (Linux make is GNU make), install
it, as the server's makefiles require it. If you're not sure
if you have GNU make, try "make -v" to check. You can get
GNU make at https://www.gnu.org/
3c. Download, configure, build, and install NaviServer.
Official releases:
https://sourceforge.net/projects/naviserver/files/
Latest development source code (Git repository):
https://github.com/naviserver-project/naviserver/
Note that the main branches on the Git repository are:
- main (the latest development code)
- release/4.99 (bug fixes for NaviServer 4.99.*)
The following should work for official releases:
$ gunzip < naviserver-4.99.25.tar.gz | tar xvf -
$ cd naviserver-4.99.25
$ ./configure --prefix=/usr/local/ns --with-tcl=/usr/local/ns/lib --enable-symbols
$ make
$ su -c 'make install'
The configure script takes the following options:
--with-tcl=/usr/local/ns/lib
Path to library installation directory of Tcl where
configure can find the tclConfig.sh script. Without
this option, configure will search around for
tclConfig.sh, perhaps finding it in ../tcl8.6.13/unix.
--with-zlib=/usr
You will need the zlib compression library headers available.
e.g. "yum install zlib-devel" for Fedora Linux. If the headers
are not located in the usual places where the compiler looks,
you can tell configure where to find them with the --with-zlib
option.
--enable-symbols
Compile with debug symbols enabled. Recommended.
--prefix=/usr/local/ns
Set the installation directory for the server. All
program, man page, and runtime files (e.g., log
files) will be installed or updated within this
directory.
To compile with Purify tool, set the variable $PURIFY to
your Purify executable along with any options you desire, e.g.,
make PURIFY="purify -cache-dir=/home/joe/my-cache-dir" install
Alternatively, NaviServer can be installed directly from GitHub
via the git version control system installed. Git is
available for most Linux distributions: e.g. "yum install git".
For e.g. Windows binaries, see https://git-scm.com/downloads
If you checked out the source directly from GitHub, replace
"./configure" in the example above with "./autogen.sh" to get the
initial makefiles created.
You will need recent versions of autoconf and automake installed.
You will need 'dtplite' which is part of 'tcllib' installed if you
want to build the documentation.
Checkouts from the source code repository have to generate
the documentation from the sources as well via "make build-doc",
otherwise, the call "make install" will complain.
See: 'make help' for more help in the build process.
3d. Create and edit a configuration file (nsd.tcl, by convention)
A couple of samples are provided to get you started:
$ cd /usr/local/ns
$ cp sample-config.tcl nsd.tcl
$ vi nsd.tcl
sample-config.tcl contains every possible configuration option and
its default value. Remove the ones you don't need.
simple-config.tcl contains a basic set of the important configuration
options you are likely to need. Add to it as necessary.
3e. Try running the server in a shell window:
$ cd /usr/local/ns
$ ./bin/nsd -f -t conf/nsd.tcl
The '-f' option runs the server in the foreground with important
log messages directed to your terminal.
3f. To download and install additional modules:
For tar releases of NaviServer, a compatible version of the modules
is as well provided via SourceForge. In order to obtain a module
named "nsfoo", get it from the modules tar file and install it
like sketched below:
$ gunzip < naviserver-4.99.25-modules.tar.gz | tar xvf -
$ cd modules/nsfoo
$ make install NAVISERVER=/usr/local/ns
Alternatively, modules can be obtained from the code repository at
GitHub via git. To get a module "nsfoo" via git
$ git clone https://github.com/naviserver-project/nsfoo.git
$ cd nsfoo
$ make install NAVISERVER=/usr/local/ns
See: https://github.com/orgs/naviserver-project/repositories
for a full list of modules.
3g. To compile for Windows with Msys + Mingw
Download: https://sourceforge.net/projects/mingw/files/
The Msys + Mingw download above is the minimal environment needed
to build NaviServer under Windows. It includes a shell environment and
gcc.
To install, you just download the zip file and extract the
files into a directory. The README.TXT file describes how to launch
the msys shell.
You then run the configure script in the NaviServer directory. The
Msys based configure/build process works just like the UNIX one.
Example of building naviserver.exe:
Run dos prompt or cmd.exe, assuming msys_mingw8.zip is unpacked in the
root of drive c:
c:>cd msys
c:\msys> msys.bat
$ cd /c/naviserver-4.99.25
$ ./configure --prefix=c:/naviserver --with-tcl=c:/naviserver/lib
$ make install
The example above assumes Tcl is also built using mingw with prefix c:/naviserver
3h. To compile for Windows with MSVC
Update the 'tcl_64' and 'tcllib_64' variables in Makefile.win32 in
the top-level NaviServer directory. See also these settings in
"include/Makefile.win32": 'HAVE_OPENSSL_EVP_H', 'openssl_64'.
Run appropriate Microsoft build setup script. E.g. one of these:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
"%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Debug /x64 /win7
nmake -f Makefile.win32
3i. Cross-compiling for Windows 64-bit (using gcc/mingw)
The configure magic does not detect some settings for MINGW,
they need to be specified explicitly:
./configure --host=x86_64-w64-mingw32 --enable-64-bit \
--prefix=<path> --with-zlib=<path> --with-openssl=<path> --with-tcl=<path>/lib
CFLAGS="-DHAVE_INET_PTON -DHAVE_INET_NTON -DHAVE_GETADDRINFO -D_WIN32_WINNT=0x600" \
LDFLAGS="-static-libgcc" \
make LIBLIBS="-Wl,-Bstatic -lpthread -Wl,-Bdynamic"
The installation script does not expect the ".exe" extension; workaround:
cp nsthread/nsthreadtest.exe nsthread/nsthreadtest
cp nsd/nsd.exe nsd/nsd
cp nsproxy/nsproxy.exe nsproxy/nsproxy
make install
4. Mailing lists
----------------
There are mailing lists for NaviServer to discuss anything from
configuration, development, and future direction. To join visit:
https://sourceforge.net/projects/naviserver
Thank you for your interest in NaviServer. We hope you find it
useful and look forward to hearing from you on our mailing list.
-EOF-