mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 10:11:27 +01:00 
			
		
		
		
	* Readme explaining use of FastCGI (by Attila Borka)
git-svn-id: trunk@17743 -
This commit is contained in:
		
							parent
							
								
									b50a3bfd5d
								
							
						
					
					
						commit
						2edcdbc6e4
					
				
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @ -2603,6 +2603,7 @@ packages/fcl-web/examples/webdata/demo6/wmusers.pp svneol=native#text/plain | |||||||
| packages/fcl-web/examples/webdata/demos.txt svneol=native#text/plain | packages/fcl-web/examples/webdata/demos.txt svneol=native#text/plain | ||||||
| packages/fcl-web/examples/webdata/users.dbf -text | packages/fcl-web/examples/webdata/users.dbf -text | ||||||
| packages/fcl-web/fpmake.pp svneol=native#text/plain | packages/fcl-web/fpmake.pp svneol=native#text/plain | ||||||
|  | packages/fcl-web/src/base/FCGI-README.txt svneol=native#text/plain | ||||||
| packages/fcl-web/src/base/Makefile svneol=native#text/plain | packages/fcl-web/src/base/Makefile svneol=native#text/plain | ||||||
| packages/fcl-web/src/base/Makefile.fpc svneol=native#text/plain | packages/fcl-web/src/base/Makefile.fpc svneol=native#text/plain | ||||||
| packages/fcl-web/src/base/README.txt svneol=native#text/plain | packages/fcl-web/src/base/README.txt svneol=native#text/plain | ||||||
|  | |||||||
							
								
								
									
										405
									
								
								packages/fcl-web/src/base/FCGI-README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										405
									
								
								packages/fcl-web/src/base/FCGI-README.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,405 @@ | |||||||
|  | FCGI-README.txt | ||||||
|  | Last modified: Attila Borka 05/31/2011 | ||||||
|  | ------------------------------------------------------------------------------- | ||||||
|  | This readme will try to explain and help developers how to be able to  | ||||||
|  | use the FastCGI protocol in Lazarus (package fpweb/lazweb) and FPC  | ||||||
|  | (/packages/fcl-web) applications with the Apache web server. | ||||||
|  | 
 | ||||||
|  | There are two FCGI implementations we are able to use at the moment (FPC  | ||||||
|  | rev17597 /2.5.1/) with FPC/Lazarus: | ||||||
|  | 
 | ||||||
|  | 1. mod_fcgid maintained by Apache (ASF) http://httpd.apache.org/mod_fcgid/ | ||||||
|  | Easy to set up and use, Apache develops and maintains it. Just needs a  | ||||||
|  | download/install and it is ready to go, even on Linux. | ||||||
|  | There are a lot of options and fine tuning that can be used, please refer to  | ||||||
|  | their documentation at http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html . | ||||||
|  | 
 | ||||||
|  | 2. mod_fastcgi from http://www.fastcgi.com/ the original FCGI "inventors" | ||||||
|  | The latest downloads are available from http://www.fastcgi.com/dist/ . Do not  | ||||||
|  | be alarmed if the latest one is years old. FCGI is a very stable protocol  | ||||||
|  | since many years (started in 1996). | ||||||
|  | On Linux, you will need to compile the mod_fastcgi module from the source  | ||||||
|  | codes, as binaries are only available for Windows as a DLL. | ||||||
|  | Note, that mod_fastcgi supports the use of External FCGI Servers, which makes  | ||||||
|  | it possible to run the FCGI application from within Lazarus for example, and  | ||||||
|  | be able to debug it with the GUI on the fly while it is generating the  | ||||||
|  | response pages. This can be a good choice for a development environment. | ||||||
|  | The documentation is at http://www.fastcgi.com/drupal/node/6 . | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | There are benefits to use both, everyone needs to decide which one fits their  | ||||||
|  | needs the best for a development environment or a live web server after some  | ||||||
|  | research on these modules. | ||||||
|  | 
 | ||||||
|  | Do not forget, that unless you use the External FCGI Server way, you need to  | ||||||
|  | restart your web server every time you recompile your FCGI program. | ||||||
|  | In case you use the External FCGI Server, you need to restart the application | ||||||
|  | itself after every recompile for the changes to take effect in the web server  | ||||||
|  | responses. The Apache server does not need to be restarted every time in this  | ||||||
|  | latter case. | ||||||
|  | 
 | ||||||
|  | =============================================================================== | ||||||
|  | 1. mod_fcgid from Apache | ||||||
|  | 1.1 on Windows | ||||||
|  | 1.2 on Linux | ||||||
|  | 2. mod_fastcgi from fastcgi.com | ||||||
|  | 2.1 on Windows | ||||||
|  | 2.1 on Linux | ||||||
|  | =============================================================================== | ||||||
|  | 
 | ||||||
|  | 1. mod_fcgid from Apache: | ||||||
|  | ========================= | ||||||
|  | 
 | ||||||
|  | 1.1 mod_fcgid from Apache on Windows: | ||||||
|  | ------------------------------------- | ||||||
|  | Setup Steps: | ||||||
|  | 1.1.1 Download from http://httpd.apache.org/download.cgi#mod_fcgid the latest  | ||||||
|  | Windows zip file and unpack as it instructs you to, over the installed Apache  | ||||||
|  | directory. This puts the mod_fcgid.* files under the current /modules  | ||||||
|  | directory of Apache. | ||||||
|  | 
 | ||||||
|  | 1.1.2 Now, mod_fcgid is ready to be used as soon as we load it with Apache. | ||||||
|  | 
 | ||||||
|  | 1.1.3 If you have not done so yet, compile your FCGI application. | ||||||
|  | 
 | ||||||
|  | 1.1.4 Then, edit the Apache /conf/httpd.conf file and add to the end: | ||||||
|  | ############ | ||||||
|  | LoadModule fcgid_module "modules/mod_fcgid.so" | ||||||
|  | <IfModule mod_fcgid.c> | ||||||
|  |   <Directory "<Path_To_Your_FCGI_application>"> | ||||||
|  |     SetHandler fcgid-script | ||||||
|  | #    Options +ExecCGI  <- not needed if ScriptAlias is used below | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  | #optionally, to shorten the URL and to not display the executable file name  | ||||||
|  | #(if ScriptAlias is used, no +ExecCGI is needed above) | ||||||
|  |   ScriptAlias /myfcgid "<Path_To_Your_FCGI_application>/<Your_FCGI_application>" | ||||||
|  | </IfModule> | ||||||
|  | ############ | ||||||
|  | Example: | ||||||
|  | LoadModule fcgid_module "modules/mod_fcgid.so" | ||||||
|  | <IfModule mod_fcgid.c> | ||||||
|  |   <Directory "C:/My Programs/LazarusFCGITest"> | ||||||
|  |     SetHandler fcgid-script | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  |   ScriptAlias /myfcgid "C:/My Programs/LazarusFCGITest/helloworld.exe" | ||||||
|  | </IfModule> | ||||||
|  | 
 | ||||||
|  | Note, there are many ways to configure the FCGI applications, this is just but  | ||||||
|  | one example. You can check the Apache and mod_fcgid documentation for  | ||||||
|  | alternatives. | ||||||
|  | 
 | ||||||
|  | 1.1.5 Start/Restart your Apache server so it will load your FCGI application.  | ||||||
|  | If everything went according to plan, your FCGI application should be listed  | ||||||
|  | in the Windows task manager as running. | ||||||
|  | 
 | ||||||
|  | 1.1.6 Open your web browser and try to call your new FCGI application. | ||||||
|  | Example: | ||||||
|  | http://127.0.0.1:8080/myfcgid/func1call | ||||||
|  | or | ||||||
|  | http://127.0.0.1/myfcgid/func1call | ||||||
|  | depending on your Apache installation and configuration. "myfcgid" is the  | ||||||
|  | ScriptAlias name specified for the FCGI application, func1call is the action  | ||||||
|  | name we want to call within our default web module. If you have multiple web  | ||||||
|  | modules, you can enter the desired web module name before the action name, for  | ||||||
|  | example:  | ||||||
|  | http://127.0.0.1:8080/myfcgid/webmodule1/func1call | ||||||
|  | or | ||||||
|  | http://127.0.0.1/myfcgid/webmodule1/func1call | ||||||
|  | 
 | ||||||
|  | If there is any problem, you can try and check the Apache error.log for clues. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 1.2 mod_fcgid from Apache on Linux: | ||||||
|  | ----------------------------------- | ||||||
|  | Setup Steps: | ||||||
|  | 1.2.1 Install the mod_fcgi module for Apache with your distro's package  | ||||||
|  | manager.  | ||||||
|  | Example on Ubuntu: | ||||||
|  | sudo apt-get install libapache2-mod-fcgid | ||||||
|  | 
 | ||||||
|  | This downloads, installs and configures mod_fcgid without the need to do  | ||||||
|  | anything else. | ||||||
|  | 
 | ||||||
|  | 1.2.2 Now, mod_fcgid is ready to be used as soon as we load it with Apache. | ||||||
|  | mod_fcgid.so should be sitting in the /usr/lib/apache2/modules/ directory (on  | ||||||
|  | Ubuntu) | ||||||
|  | 
 | ||||||
|  | 1.2.3 If you have not done so yet, compile your FCGI application. | ||||||
|  | 
 | ||||||
|  | 1.2.4 Edit the Apache configuration file (/etc/apache2/apache2.conf on Ubuntu)  | ||||||
|  | and add to the end: | ||||||
|  | ############ | ||||||
|  | LoadModule fcgid_module "<Path_To_Mod>/mod_fcgid.so" | ||||||
|  | <IfModule mod_fcgid.c> | ||||||
|  |   <Directory "<Path_To_Your_FCGI_application>"> | ||||||
|  |     SetHandler fcgid-script | ||||||
|  | #    Options +ExecCGI  <- not needed if ScriptAlias is used below | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  | #optionally, to shorten the URL and to not display the executable file name  | ||||||
|  | #(if ScriptAlias is used, no +ExecCGI is needed above) | ||||||
|  |   ScriptAlias /myfcgid "<Path_To_Your_FCGI_application>/<Your_FCGI_application>" | ||||||
|  | </IfModule> | ||||||
|  | ############ | ||||||
|  | Example: | ||||||
|  | LoadModule fcgid_module "/usr/lib/apache2/modules/mod_fcgid.so" | ||||||
|  | <IfModule mod_fcgid.c> | ||||||
|  |   <Directory "/home/johndoe/LazarusFCGITest"> | ||||||
|  |     SetHandler fcgid-script | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  |   ScriptAlias /myfcgid "/home/johndoe/LazarusFCGITest/helloworld" | ||||||
|  | </IfModule> | ||||||
|  | 
 | ||||||
|  | (the project was compiled into directory /home/johndoe/LazarusFCGITest/ , and  | ||||||
|  | the FCGI application is called helloworld with no file extension) | ||||||
|  | 
 | ||||||
|  | Note, there are many ways to configure the FCGI applications, this is just but  | ||||||
|  | one example. You can check the Apache and mod_fcgid documentation for  | ||||||
|  | alternatives. | ||||||
|  | 
 | ||||||
|  | 1.2.5 Start/Restart your Apache server so it will load your FCGI application.  | ||||||
|  | If everything went according to plan, and you do a "sudo netstat -l"  | ||||||
|  | (on Ubuntu) from a terminal window, there should be a new line in the result  | ||||||
|  | list looking something like this:  | ||||||
|  | ... LISTENING   XXXX   /var/lib/apache2/fcgid/sock/...  | ||||||
|  | indicating, that the Apache mod_fcgid module has loaded your FCGI application. | ||||||
|  | 
 | ||||||
|  | 1.2.6 Open your web browser and try to call your new FCGI application. | ||||||
|  | Example: | ||||||
|  | http://127.0.0.1/myfcgid/func1call | ||||||
|  | 
 | ||||||
|  | "myfcgid" is the ScriptAlias name specified for the FCGI application, and  | ||||||
|  | func1call is the action name we want to call within our default web module. | ||||||
|  | If you have multiple web modules, you can enter the desired web module name  | ||||||
|  | before the action name, for example:  | ||||||
|  | http://127.0.0.1/myfcgid/webmodule1/func1call . | ||||||
|  | 
 | ||||||
|  | If there is any problem, you can try and check the Apache error.log for clues. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 2. mod_fastcgi from fastcgi.com: | ||||||
|  | ================================ | ||||||
|  | Unlike the Apache developed mod_fcgid, mod_fastcgi has two main operating  | ||||||
|  | modes for FCGI applications. One is very similar to mod_fcgid (where Apache  | ||||||
|  | itself loads the FCGI application at startup), and one called External FCGI  | ||||||
|  | Server mode. With this latter, Apache will not load the FCGI application at  | ||||||
|  | startup, but it has to be running on its own when a web request arrives  | ||||||
|  | (either as a system service/daemon, or a simple running application) and  | ||||||
|  | listening. This makes it possible to run the FCGI application from within a  | ||||||
|  | debugger interactively, to see/track the request handling like any normal GUI  | ||||||
|  | application debugging. | ||||||
|  | 
 | ||||||
|  | 2.1 mod_fastcgi from fastcgi.com on Windows: | ||||||
|  | -------------------------------------------- | ||||||
|  | Setup Steps: | ||||||
|  | 2.1.1 Download the latest SNAP or stable DLL from http://www.fastcgi.com/dist/  | ||||||
|  | and put it into the Apache /modules/ directory. | ||||||
|  | 
 | ||||||
|  | 2.1.2 If you have not done so yet, compile your FCGI application. | ||||||
|  | In case you want to set up an External FCGI Server, then you must specify a  | ||||||
|  | port number in your main project file (.lpr) before the Application.Run  | ||||||
|  | instruction (this is the only change needed). | ||||||
|  | Example: | ||||||
|  | <...snip...> | ||||||
|  |   Application.Initialize; | ||||||
|  |   Application.Port:=9999;//Port the FCGI application is listening on  | ||||||
|  |   Application.Run; | ||||||
|  | <...snip...> | ||||||
|  | 
 | ||||||
|  | 2.1.3 Edit the Apache /conf/httpd.conf file and add to the end: | ||||||
|  | 
 | ||||||
|  |  2.1.3.a External FCGI Server | ||||||
|  | ############ | ||||||
|  | LoadModule fastcgi_module "modules/<mod_fastcgi_DLL_name>" | ||||||
|  | <IfModule mod_fastcgi.c> | ||||||
|  |   <Directory "<Path_To_Your_FCGI_application>"> | ||||||
|  | #    Options +ExecCGI  <- not needed if ScriptAlias is used below | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  | #External FCGI app, has to be started and running when a request comes in | ||||||
|  |   FastCgiExternalServer "<Path_To_Your_FCGI_application>/<Your_FCGI_application>" -host 127.0.0.1:<Port> -idle-timeout 30 -flush | ||||||
|  | #optionally, to shorten the URL and to not display the executable file name (if used, no +ExecCGI is needed above): | ||||||
|  |   ScriptAlias /myfcgi "<Path_To_Your_FCGI_application>/<Your_FCGI_application>" | ||||||
|  | </IfModule> | ||||||
|  | ############ | ||||||
|  | Example: | ||||||
|  | LoadModule fastcgi_module "modules/mod_fastcgi-2.4.6-AP22.dll" | ||||||
|  | <IfModule mod_fastcgi.c> | ||||||
|  |   <Directory "C:/My Programs/LazarusFCGITest"> | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  |   FastCgiExternalServer "C:/My Programs/LazarusFCGITest/helloworld.exe" -host 127.0.0.1:9999 -idle-timeout 30 -flush | ||||||
|  |   ScriptAlias /myfcgi "C:/My Programs/LazarusFCGITest/helloworld.exe" | ||||||
|  | </IfModule> | ||||||
|  | 
 | ||||||
|  |  2.1.3.b Regular FCGI Server | ||||||
|  | Replace the FastCgiExternalServer line above with | ||||||
|  |   FastCgiServer "<Path_To_Your_FCGI_application>/<Your_FCGI_application>" -idle-timeout 30 | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | LoadModule fastcgi_module "modules/mod_fastcgi-2.4.6-AP22.dll" | ||||||
|  | <IfModule mod_fastcgi.c> | ||||||
|  |   <Directory "C:/My Programs/LazarusFCGITest"> | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  |   FastCgiServer "C:/My Programs/LazarusFCGITest/helloworld.exe" -idle-timeout 30 | ||||||
|  |   ScriptAlias /myfcgi "C:/My Programs/LazarusFCGITest/helloworld.exe" | ||||||
|  | </IfModule> | ||||||
|  | 
 | ||||||
|  | Known issues on Windows: | ||||||
|  | http://bugs.freepascal.org/view.php?id=19440 | ||||||
|  | 
 | ||||||
|  | 2.1.4 Start/Restart your Apache server. | ||||||
|  | If you will use the FastCgiExternalServer, then start your application  | ||||||
|  | manually, so it can start accepting incoming requests from the web server. | ||||||
|  | If you use the FastCgiServer, then your FCGI application should be launched  | ||||||
|  | by the Apache server when it starts and should be listed in the Windows task  | ||||||
|  | manager as running. | ||||||
|  | 
 | ||||||
|  | 2.1.5 Open your web browser and try to call your new FCGI application. | ||||||
|  | Example: | ||||||
|  | http://127.0.0.1:8080/myfcgi/func1call | ||||||
|  | or | ||||||
|  | http://127.0.0.1/myfcgi/func1call | ||||||
|  | depending on your Apache installation and configuration. | ||||||
|  | 
 | ||||||
|  | "myfcgi" is the ScriptAlias name specified for the FCGI application, and  | ||||||
|  | func1call is the action name we want to call within our default web module. | ||||||
|  | If you have multiple web modules, you can enter the desired web module name  | ||||||
|  | before the action name, for example:  | ||||||
|  | http://127.0.0.1:8080/myfcgi/webmodule1/func1call | ||||||
|  | or | ||||||
|  | http://127.0.0.1/myfcgi/webmodule1/func1call | ||||||
|  | 
 | ||||||
|  | If there is any problem, you can try and check the Apache error.log for clues. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 2.2 mod_fastcgi from fastcgi.com on Linux: | ||||||
|  | ------------------------------------------ | ||||||
|  | Setup Steps: | ||||||
|  | 2.2.1 There are no binaries offered for download for Linux, so we need to get  | ||||||
|  | the mod_fastcgi source codes from http://www.fastcgi.com/dist/ and compile it. | ||||||
|  | 
 | ||||||
|  |  2.2.1.1. If the Apache development package headers are not installed, then  | ||||||
|  | we need to get them first: | ||||||
|  | (on Ubuntu) | ||||||
|  | >sudo apt-get install apache2-dev | ||||||
|  | 
 | ||||||
|  |  2.2.1.2. Get the fastcgi module sources (get the latest SNAP or highest  | ||||||
|  | version stable release from http://www.fastcgi.com/dist/ ) | ||||||
|  | 
 | ||||||
|  | >cd /home/johndoe | ||||||
|  | >wget http://www.fastcgi.com/dist/mod_fastcgi-xxxxxxxxxxx.tar.gz | ||||||
|  | 
 | ||||||
|  | Example: wget http://www.fastcgi.com/dist/mod_fastcgi-SNAP-0910052141.tar.gz | ||||||
|  | 
 | ||||||
|  |  2.2.1.3. Unpack the source code files. | ||||||
|  | >tar -xzf mod_fastcgi-*.tar.gz | ||||||
|  | 
 | ||||||
|  |  2.2.1.4. Configure the makefile (we use Apache 2.2, so need the Makefile.AP2). | ||||||
|  | >cd mod_fastcgi-* | ||||||
|  | >cp Makefile.AP2 Makefile | ||||||
|  | 
 | ||||||
|  |  2.2.1.5. Edit the copied Makefile and set top_dir to the proper apache source  | ||||||
|  | directory created by the Apache development package install. For example, on  | ||||||
|  | Ubuntu it is /usr/share/apache2 (containing the .mk file). | ||||||
|  | 
 | ||||||
|  |  2.2.1.6. Compile and install (on Ubuntu) | ||||||
|  | >make | ||||||
|  | >sudo make install | ||||||
|  | 
 | ||||||
|  | 2.2.2. Now, we should have a mod_fastcgi.so in /usr/lib/apache2/modules (on  | ||||||
|  | Ubuntu) | ||||||
|  | 
 | ||||||
|  | 2.2.3. If you have not done so yet, compile your FCGI application. | ||||||
|  | In case you want to set up an External FCGI Server, then you must specify a  | ||||||
|  | port number in your main project file (.lpr) before the Application.Run  | ||||||
|  | instruction (this is the only change needed). | ||||||
|  | Example: | ||||||
|  | <...snip...> | ||||||
|  |   Application.Initialize; | ||||||
|  |   Application.Port:=1234;//Port the FCGI application is listening on  | ||||||
|  |   Application.Run; | ||||||
|  | <...snip...> | ||||||
|  | 
 | ||||||
|  | 2.2.4 Edit the Apache configuration file (/etc/apache2/apache2.conf on Ubuntu)  | ||||||
|  | and add to the end: | ||||||
|  |  2.2.4.a External FCGI Server | ||||||
|  | ############ | ||||||
|  | LoadModule fastcgi_module "<Path_To_Mod>/mod_fastcgi.so" | ||||||
|  | <IfModule mod_fastcgi.c> | ||||||
|  |   <Directory "<Path_To_Your_FCGI_application>"> | ||||||
|  | #    Options +ExecCGI  <- not needed if ScriptAlias is used below | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  | #External FCGI app, has to be manually started and running when a request comes in | ||||||
|  |   FastCgiExternalServer "<Path_To_Your_FCGI_application>/<Your_FCGI_application>" -host 127.0.0.1:<Port> -idle-timeout 30 -flush | ||||||
|  | #optionally, to shorten the URL and to not display the executable file name (if used, no +ExecCGI is needed above): | ||||||
|  |   ScriptAlias /myfcgi "<Path_To_Your_FCGI_application>/<Your_FCGI_application>" | ||||||
|  | </IfModule> | ||||||
|  | ############ | ||||||
|  | Example: | ||||||
|  | LoadModule fastcgi_module "/usr/lib/apache2/modules/mod_fastcgi.so" | ||||||
|  | <IfModule mod_fastcgi.c> | ||||||
|  |   <Directory "/home/johndoe/LazarusFCGITest"> | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  |   FastCgiExternalServer "/home/johndoe/LazarusFCGITest/helloworld" -host 127.0.0.1:1234 -idle-timeout 30 -flush | ||||||
|  |   ScriptAlias /myfcgi "/home/johndoe/LazarusFCGITest/helloworld" | ||||||
|  | </IfModule> | ||||||
|  | 
 | ||||||
|  |  2.2.4.b Regular FCGI Server | ||||||
|  | Replace the FastCgiExternalServer line above with | ||||||
|  |   FastCgiServer "<Path_To_Your_FCGI_application>/<Your_FCGI_application>" -idle-timeout 30 | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | LoadModule fastcgi_module "/usr/lib/apache2/modules/mod_fastcgi.so" | ||||||
|  | <IfModule mod_fastcgi.c> | ||||||
|  |   <Directory "/home/johndoe/LazarusFCGITest"> | ||||||
|  |     Order allow,deny | ||||||
|  |     Allow from all | ||||||
|  |   </Directory> | ||||||
|  |   FastCgiServer "/home/johndoe/LazarusFCGITest/helloworld" -idle-timeout 30 | ||||||
|  |   ScriptAlias /myfcgi "/home/johndoe/LazarusFCGITest/helloworld" | ||||||
|  | </IfModule> | ||||||
|  | 
 | ||||||
|  | (the project is compiled into directory /home/johndoe/LazarusFCGITest/ , and  | ||||||
|  | the FCGI application is called helloworld with no file extension) | ||||||
|  | 
 | ||||||
|  | Note, there are many ways to configure the FCGI applications, this is just but  | ||||||
|  | one example. You can check the Apache and mod_fastcgi documentation for  | ||||||
|  | alternatives. For example, some more information available at | ||||||
|  | http://www.fastcgi.com/docs/faq.html#typical_httpd.conf | ||||||
|  | 
 | ||||||
|  | 2.2.5 Start/Restart your Apache server.  | ||||||
|  | If FastCgiExternalServer is used, then start your application manually, so it  | ||||||
|  | can start accepting incoming requests from the web server. | ||||||
|  | On the other hand, if FastCgiServer is used and everything went according to  | ||||||
|  | plan, then the Apache error.log should contain a warning message about your  | ||||||
|  | FCGI application, saying that it was started. Something like: | ||||||
|  | [warn] FastCGI: server "/home/johndoe/LazarusFCGITest/helloworld" started... | ||||||
|  | 
 | ||||||
|  | 2.2.6 Open your web browser and try to call your new FCGI application. | ||||||
|  | Example: | ||||||
|  | http://127.0.0.1/myfcgi/func1call | ||||||
|  | "myfcgi" is the ScriptAlias name specified for the FCGI application, and  | ||||||
|  | func1call is the action name we want to call within our default web module. | ||||||
|  | If you have multiple web modules, you can enter the desired web module name  | ||||||
|  | before the action name, for example:  | ||||||
|  | http://127.0.0.1/myfcgi/webmodule1/func1call | ||||||
|  | 
 | ||||||
|  | If there is any problem, you can try and check the Apache error.log for clues. | ||||||
|  | 
 | ||||||
|  | =============================================================================== | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 michael
						michael