source: main/trunk/greenstone2/gs2-web-server.bat@ 22990

Last change on this file since 22990 was 22990, checked in by sjm84, 10 years ago

Added the Apache Lib directory to the path for windows so that it can find the MSVCR100.DLL file needed now that Apache is no longer statically compiled

File size: 9.3 KB
Line 
1@echo off
2SETLOCAL
3
4if "%serverlang%" == "" set serverlang=en
5set java_min_version=1.5.0_00
6set PROGNAME=gs2-server
7if "%PROGABBR%" == "" set PROGABBR=GSI
8pushd "%CD%"
9CD /D "%~dp0"
10
11echo Greenstone 2 Server
12echo Copyright (C) 2009, New Zealand Digital Library Project, University Of Waikato
13echo This software comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.txt
14echo This is free software, and you are welcome to redistribute it
15
16:: -------- Run the Greenstone 2 Server --------
17
18:: ---- Determine GSDLHOME ----
19set gsdl2path=
20
21:: Some users may set the above line manually
22if "%gsdl2path%" == "" (
23 set GSDLHOME=%CD%
24 set gsdl2path=%CD%
25)
26
27:checkUserPermissions
28 echo.
29 echo Checking if the Greenstone log directory is writable ...
30 if not exist "%GSDLHOME%\etc\logs-gsi" goto missingLogDir
31 (echo This is a temporary file. It is safe to delete it. > "%GSDLHOME%\etc\logs-gsi\testing.tmp" ) 2>nul
32 if exist "%GSDLHOME%\etc\logs-gsi\testing.tmp" goto deleteTempFile
33 if "%1" == "Elevated" goto printWarning
34 echo ... FAILED
35 echo The Greenstone server cannot write to the log directory (%GSDLHOME%\etc\logs-gsi)
36 echo Requesting elevated status to become admin user to continue.
37 "%GSDLHOME%\bin\windows\gstart.exe" %0 Elevated %1 %2 %3 %4 %5 %6 %7 %8 %9
38 goto exit
39
40:missingLogDir
41 echo ... FAILED
42 echo The Greenstone log directory does not exist (%GSDLHOME%\etc\logs-gsi). Please reinstall Greenstone.
43 pause
44 goto exit
45
46:printWarning
47 echo ... FAILED
48 echo The Greenstone server cannot write to the log directory (%GSDLHOME%\etc\logs-gsi).
49 echo Attempting to continue without permissions.
50 goto shiftElevated
51
52:deleteTempFile
53 echo ... OK
54 del "%GSDLHOME%\etc\logs-gsi\testing.tmp"
55
56:shiftElevated
57:: Shift "Elevated" (one of our own internal command words) out of the way if present
58:: so the command-line is as it was when the user initiated the command
59 if "%1" == "Elevated" shift
60
61echo GS2 Home: %GSDLHOME%
62
63:: Setup Greenstone2, unless it has already been done
64:: If either GSDLHOME or GSDLOS is not set, need to run setup.bat first
65:: OR operations in an IF stmt: http://fixunix.com/ms-dos/21057-how-implement-if-condition-batch-file.html
66for %%i in ("%GSDLOS%" "%GSDLHOME%") do if %%i == "" set OR=True
67if "%OR%" == "True" (
68 pushd "%gsdl2path%"
69 call setup.bat
70rem echo **** GSDLOS: %GSDLOS% and GSDLHOME: %GSDLHOME%
71 popd
72)
73
74
75:: First test that there is actually something that can be run...
76:: Exit if the apache-httpd folder doesn't exist for some reason
77:: (The errors reported when the apache webserver does not exist
78:: in the correct location are not at all helpful).
79
80:: "You cannot use the if command to test directly for a directory, but
81:: the null (NUL) device does exist in every directory. As a result, you
82:: can test for the null device to determine whether a directory exists."
83rem echo "%GSDLHOME%\apache-httpd\nul"
84if not exist "%GSDLHOME%\apache-httpd\*" (
85 echo.
86 echo UNABLE TO CONTINUE: There is no apache-httpd directory.
87 echo It does not look like the local apache webserver has been installed.
88 echo Exiting...
89 echo.
90 goto exit
91)
92:: exit 1
93
94set PATH=%GSDLHOME%\apache-httpd\windows\lib;%PATH%
95
96:: If there's no llssite.cfg file, copy from the template
97if exist "%GSDLHOME%\llssite.cfg" goto cfgfile
98if exist "%GSDLHOME%\llssite.cfg.in" (
99 copy "%GSDLHOME%\llssite.cfg.in" "%GSDLHOME%\llssite.cfg"
100) else (
101 echo Warning: could not find llssite.cfg.in to create llssite.cfg from.
102)
103
104:cfgfile
105:: ---- Determine GSDLHOME ----
106:: JRE_HOME or JAVA_HOME must be set correctly to run this program
107bin\windows\search4j -m %java_min_version% > nul
108echo.
109:: In Java code, '...getResourceAsStream("build.properties")'
110:: needs up to be in the right directory when run
111if %ERRORLEVEL% equ 0 pushd %GSDL2PATH%
112
113:: http://ss64.com/nt/call.html (and leave in trailing slash)
114call :isinpath "%GSDLHOME%\lib\java"
115
116:: After the call, we come back here
117goto chkjava
118
119:isinpath
120:: http://ss64.com/nt/syntax-replace.html and http://ss64.com/nt/syntax-args.html
121:: (Does not work: section "Finding items within the PATH environment variable")
122:: Instead, we expand the filepath of parameter 1 to its full path and
123:: try to subtract it from the classpath.
124::call set test_cpath=%%CLASSPATH:%~f1=%%
125call set test_cpath=%%CLASSPATH:%~1=%%
126
127:: If the classpath was not empty to begin with and if there IS a difference in
128:: the classpath before and after, then the filepath was already on the classpath
129if not "%CLASSPATH%" == "" if not "%CLASSPATH%" == "%test_cpath%" (
130 echo - CLASSPATH already correct:
131 echo %CLASSPATH%
132 goto :eof
133)
134
135:: If there was NO difference in the classpath before and after,
136:: then the filepath needs to be added to the classpath
137set CLASSPATH=%GSDLHOME%\lib\java;%CLASSPATH%
138
139:: http://ss64.com/nt/for_r.html and (for call) http://ss64.com/nt/for.html
140:: http://ss64.com/nt/syntax-args.html
141FOR /R "%GSDLHOME%\lib\java" %%G IN (*.jar) DO call :putinpath "%%G"
142echo - Adjusted CLASSPATH
143echo.
144::echo CLASSPATH:& echo %CLASSPATH%
145goto :eof
146
147
148:putinpath
149set jarfile=%1
150::strip quotes around jarfile path, since we can't update classpath with quotes
151set jarfile=%jarfile:"=%
152echo jarfile: %jarfile%
153set CLASSPATH=%CLASSPATH%;%jarfile%
154goto :eof
155
156:: ---- Check Java ----
157:chkjava
158:: call the script with source, so that we have the variables JAVA_EXECUTABLE and GS_JAVA_HOME it sets
159set exit_status=0
160:: Need to find Java. If found, JAVA_EXECUTABLE will be set
161:: call findjava.bat %serverlang% %PROGNAME%
162if "%GSDL3SRCHOME%" == "" (set _VERSION=2) else (set _VERSION=3)
163call "%GSDLHOME%\findjava.bat"
164if "%JAVA_EXECUTABLE%" == "" echo **** No Java executable found& goto exit
165set PATH=%GS_JAVA_HOME%\bin;%PATH%
166
167
168:: ---- Run the Greenstone Server Interface ----
169:: Some informative messages to direct the users to the logs
170if "%serverlang%" == "en" (
171 echo ***************************************************************
172 echo Starting the Greenstone Server Interface ^(GSI^)...
173 echo.
174 echo Server log messages go to:
175 echo "%GSDLHOME%\etc\logs-gsi\server.log"
176 echo.
177 echo Using Apache web server located at:
178 echo "%GSDLHOME%\apache-httpd\%GSDLOS%\bin\httpd"
179 echo The Apache error log is at:
180 echo "%GSDLHOME%\apache-httpd\%GSDLOS%\logs\error_log"
181 echo The Apache configuration file template is at:
182 echo "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf.in"
183 echo This is used to generate:
184 echo "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf"
185 echo each time Enter Library is pressed or otherwise activated.
186 echo ***************************************************************
187 echo.
188)
189echo.
190
191:: GLI launches gs2-server.bat with:
192:: cmd /c start "window" "c:\path to\gs2-server.bat" --config=c:\path to\glisite.cfg [--quit=portnum]
193:: The configfile param could contain spaces, in which case its space-separated parts spread over
194:: multiple parameters . Need to handle things the following way, since using quotes to embed the
195:: parameters breaks the start command, see http://ss64.com/nt/start.html
196:: This script is launched by the start cmd as:
197:: "c:\path to\gs2-server.bat" --config=c:\path to\config.cfg [--quit=portnum].
198:: But if the parameter following --config=<some string> doesn't start with a double hyphen, we
199:: assume it to be part of the config parameter, as the configfile path may have contained spaces.
200
201:: Store all parameters together in config file var: we may or may not have a portnumber
202:: Get everything after the "--quitport=", if anything, and store it in port var. If no port, nothing to do.
203set conf=%*
204if "%conf%" == "" goto :runit
205
206set port=%conf:*--quitport=%
207if "%conf%" == "%port%" (
208set port=
209goto :runit
210) else (
211set port=%port:~1%
212)
213
214:: Because we got here, need to adjust conf by removing " --quitport=" from it and prefixing this to port
215call set conf=%%conf:%port%=%%
216set conf=%conf:~0,-12%
217set port=--quitport=%port%
218
219:: Remove trailing spaces from conf and port
220:: (We'll put the all-important quotes around conf and port when the actual java cmd is launched)
221set tmp=%conf%
222call :trim %tmp%
223set conf=%tmp%
224set tmp=%port%
225call :trim %port%
226set port=%tmp%
227set tmp=
228
229goto :runit
230
231:: http://www.computing.net/answers/programming/dos-batch-remove-trailing-space/9270.html
232:trim
233set tmp=%*
234goto :eof
235
236:runit
237::echo port: %port%& echo conf: %conf%& echo.& echo.
238:: "%JAVA_EXECUTABLE%" org.greenstone.server.Server2 "%GSDLHOME%" "%serverlang%" %*
239"%JAVA_EXECUTABLE%" org.greenstone.server.Server2 "%GSDLHOME%" "%serverlang%" "%conf%" "%port%"
240
241
242:: The 1st argument to gs2-server.bat (if any) would be --config, the 2nd is the config filename.
243:: Both are stored in %conf% now. If the config file is glisite.cfg, then this script was launched through
244:: GLI and would have opened a DOS console. Need to exit from this script then to close the console.
245:: Remove --config=prefix and do a case insensitive comparison, since filepaths can have uppercase chars
246if "%conf%" == "" goto exit
247if /i "%conf:~9%" == "%GSDLHOME%\glisite.cfg" goto quitcmd
248goto exit
249
250:: Exit the batch script (close the console)
251:quitcmd
252popd
253ENDLOCAL
254exit 0
255
256:: Just end the script without closing the console
257:exit
258popd
259ENDLOCAL
Note: See TracBrowser for help on using the repository browser.