summaryrefslogtreecommitdiff
path: root/packages/fcl-web/examples/fptemplate/simpletemplate/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'packages/fcl-web/examples/fptemplate/simpletemplate/README.txt')
-rw-r--r--packages/fcl-web/examples/fptemplate/simpletemplate/README.txt143
1 files changed, 143 insertions, 0 deletions
diff --git a/packages/fcl-web/examples/fptemplate/simpletemplate/README.txt b/packages/fcl-web/examples/fptemplate/simpletemplate/README.txt
new file mode 100644
index 0000000000..f6f9d73963
--- /dev/null
+++ b/packages/fcl-web/examples/fptemplate/simpletemplate/README.txt
@@ -0,0 +1,143 @@
+Simple template, example
+================
+The simplest template with one template tag in it to be replaced by the
+CGI/FCGI/Apache module application when generating the response page
+-> ex: {TagName1}
+
+Note, that the only difference between CGI/FCGI and Apache module is in the
+main project .lpr file.
+
+=====================
+1. Compiling
+1.a; with FPC
+1.b; with Lazarus
+2. Setup
+2.a; as CGI
+2.b; as Apache module
+2.c; as FCGI
+=====================
+
+1. Compiling:
+-------------
+We can either use FPC directly, or Lazarus to compile the CGI/FCGI/Apache
+module application. The main project .lpr file, as well as the Lazarus .lpi is
+in the cgi/fcgi/apache directories.
+
+1.a; with FPC
+-------------
+Enter to the directory (cgi/fcgi/apache) that has the .lpr file you wish to
+compile, and then execute the command
+
+fpc -Fu../webmodule simpletemplate.lpr
+
+The -Fu parameter shows FPC where to find the web module source code. All
+three web applications share the same web module code.
+
+1.b; with Lazarus
+-----------------
+It needs the WebLaz Package installed. Open the .lpi file from the chosen
+application directory (cgi/fcgi/apache), and then
+
+Run -> Build from the menu.
+
+
+2. Setup:
+---------
+The application needs read access to the template file(s).
+It is best to use full paths with the file names in the web module
+(webmodule.pas), because Apache will probably look relative to the / (main
+root) directory or main Apache directory and not relative to the application
+file location.
+ex: ModuleTemplate.FileName := '/full/path/to/template/mytemplate1.html';
+
+
+2.a; as CGI
+-----------
+Usually it works if you put the template (mytemplate1.html) next to the CGI
+executable file in the Apache cgi-bin directory. Adjust the file path in the
+web module (webmodule.pas) accordingly.
+
+http://<WebServer>/cgi-bin/<CGIExecutableName>/func1call should start the
+example if everything is set up properly.
+ex: http://127.0.0.1:8080/cgi-bin/simpletemplate.exe/func1call
+
+If the calling URL looks too long, or you want to hide it a little bit more,
+you can use a ScriptAlias in the Apache configuration file to make it shorter.
+ex: ScriptAlias /mycgi "<path_to_cgi_app>/simpletemplate.exe" in your conf
+file will make http://127.0.0.1:8080/mycgi/func1call work the same way.
+
+Note: You need to change the URLs if "cgi-bin" or "simpletemplate.exe"
+changes (for example on Linux it is not simpletemplate.exe).
+Also, if your server is listening on port 80 instead of 8080, you can leave
+the :8080 part from the calling URL.
+
+
+2.b; as Apache module
+---------------------
+Usually it works if you put the template (mytemplate1.html) into the Apache
+main directory (not the DocumentRoot, but the main Apache directory), under
+sub-directory "templates" or something similar. Adjust the file path in the
+web module (webmodule.pas) accordingly.
+
+http://<WebServer>/<ApacheLocationName>/func1call should start the
+example if everything is set up properly.
+ex: http://127.0.0.1:8080/myapache/func1call
+
+if in httpd.conf it was set up as:
+LoadModule mod_simpletemplate "<path_to_mod>/simpletemplate.dll"
+<Location /myapache>
+ SetHandler mod_simpletemplate
+ Order allow,deny
+ Allow from all
+</Location>
+
+Note: You need to change the URLs "myapache" or "simpletemplate.dll"
+changes. For example on Linux the module can be libsimpletemplate.so and not
+simpletemplate.dll
+
+Note: If you recompile an apache module while the module itself is loaded into
+the Apache server, the compilation might fail because the file is in use
+(Apache modules stay in the memory). So first, you always need to stop the
+server before you recompile or before you copy over the new version of the
+newly created module.
+On Linux, it is enough to simply reload Apache after recompile.
+
+
+2.c; as FCGI
+------------
+Usually it works if you put the template (mytemplate1.html) next to the FCGI
+executable file. Adjust the file path in the web module (webmodule.pas)
+accordingly.
+
+http://<WebServer>/<ApacheScriptAliasName>/func1call should start the example
+if everything is set up properly.
+ex: http://127.0.0.1:8080/myfcgi/func1call
+if in the Apache configuration file (ex: httpd.conf) it was set up as:
+
+LoadModule fastcgi_module "<path_to_mod>/mod_fastcgi-2.4.6-AP22.dll"
+<IfModule mod_fastcgi.c>
+ <Directory "<path_to_fcgi_app>">
+# Options +ExecCGI <- not needed if ScriptAlias is used below
+ Order allow,deny
+ Allow from all
+ </Directory>
+#External FCGI app, has to start manually, Apache will not do it
+ FastCgiExternalServer "<path_to_fcgi_app>/simpletemplate.exe" -host 127.0.0.1:2015 -idle-timeout 30 -flush
+#optionally, to shorten the calling URL and to not display the executable file name (if used, no +ExecCGI is needed above)
+ ScriptAlias /myfcgi "<path_to_fcgi_app>/simpletemplate.exe"
+</IfModule>
+
+Note: You need to change the module name if needed. For example on Linux,
+the module is not mod_fastcgi-2.4.6-AP22.dll but mod_fastcgi.so (need to be
+compiled from sources found at http://www.fastcgi.com/dist/ ).
+The port (2015 in this example) must match the one set in the project main
+file (simpletemplate.lpr).
+The FCGI application must be running in order for this demo to work (external
+FCGI server setup). Do not forget to restart it after changes and
+recompilation.
+Also, mod_fastcgi is not the same as mod_fcgid that the Apache project is
+developing. The latter does not support external FCGI server apps.
+There are other ways than external FCGI server apps to handle the FCGI
+protocol and both mod_fastcgi and mod_fcgid supports that. However, external
+FCGI servers are the best for debugging and development, that is why the
+examples do it that way.