Merge changes from master related to wiki docs.
Merge branch 'master' into concurrent_httpd Conflicts: README.md
This commit is contained in:
@@ -38,11 +38,12 @@ For download, check
|
||||
Tasks and issues are managed with github issue system
|
||||
* See https://github.com/EiffelWebFramework/EWF/issues
|
||||
* And visual dashboard: https://waffle.io/eiffelwebframework/ewf
|
||||
* Forum/group post: https://groups.google.com/forum/#!forum/eiffel-web-framework
|
||||
|
||||
## Requirements
|
||||
* Compiling from EiffelStudio 14.05 and more recent version of the compiler.
|
||||
* Developped using EiffelStudio 15.05 (on Windows, Linux)
|
||||
* Tested using EiffelStudio 15.05 with "jenkins" CI server (not anymore compatible with 6.8 due to use of `TABLE_ITERABLE')
|
||||
* Compiling from EiffelStudio 13.11 to 15.05 and more recent version of the compiler.
|
||||
* Currently being developped using EiffelStudio 15.01 (on Windows, Linux)
|
||||
* Tested using EiffelStudio 15.01 with "jenkins" CI server (not anymore compatible with 6.8 due to use of `TABLE_ITERABLE')
|
||||
* The code have to allow __void-safe__ compilation and non void-safe system (see [more about void-safety](http://docs.eiffel.com/book/method/void-safe-programming-eiffel) )
|
||||
|
||||
## How to get the source code?
|
||||
@@ -100,6 +101,7 @@ review the [guidelines for contributing](CONTRIBUTING.md).
|
||||
Keep track of development and community news.
|
||||
|
||||
* Follow [@EiffelWeb](https://twitter.com/EiffelWeb) on Twitter
|
||||
* [Forum](https://groups.google.com/forum/#!forum/eiffel-web-framework) on Google groups.
|
||||
* Follow our [page](https://plus.google.com/u/0/110650349519032194479) and [community](https://plus.google.com/communities/110457383244374256721) on Google+
|
||||
* Have a question that's not a feature request or bug report? [Ask on the mailing list](http://groups.google.com/group/eiffel-web-framework)
|
||||
|
||||
|
||||
133
doc/wiki/Deployment.md
Normal file
133
doc/wiki/Deployment.md
Normal file
@@ -0,0 +1,133 @@
|
||||
EWF Deployment
|
||||
==============
|
||||
|
||||
##Apache on Windows
|
||||
###Apache Install
|
||||
|
||||
- Check the correct version (Win 32 or Win64)
|
||||
- Apache Version: Apache 2.4.4
|
||||
- Windows: http://www.apachelounge.com/download/
|
||||
|
||||
###Deploying EWF CGI
|
||||
|
||||
####CGI overview
|
||||
> A new process is started for each HTTP request. So if there are N request to the same CGI
|
||||
> program, the code of the CGI program is loaded into memory N times.
|
||||
> When a CGI program finished handling a request, the program terminates
|
||||
|
||||
1. Build EWF application.
|
||||
|
||||
```
|
||||
ec -config app.ecf -target app_cgi -finalize -c_compile -project_path .
|
||||
Note: change app.ecf and target app_cgi based on your own configuration.
|
||||
```
|
||||
2. Copy the generated exe file and the www content.
|
||||
|
||||
```
|
||||
Copy the app.exe and the folder www into a folder served by apache2, for example under
|
||||
<APACHE_PATH>/htdocs
|
||||
<APACHE_PATH> = path to your apache installation
|
||||
Edit httpd.conf under c:/<APACHE_PATH>/conf
|
||||
DocumentRoot "c:/<APACHE_PATH>/htdocs"
|
||||
<Directory "c:/<APACHE_PATH>/htdocs">
|
||||
AllowOverride All --
|
||||
Require all granted -- this is required in Apache 2.4.4
|
||||
</Directory>
|
||||
```
|
||||
|
||||
3. Check that you have the following modules enabled.
|
||||
|
||||
```
|
||||
LoadModule cgi_module modules/mod_cgi.so
|
||||
LoadModule rewrite_module modules/mod_rewrite.so
|
||||
```
|
||||
|
||||
*Tip:*
|
||||
To check the syntax of your httpd.conf file. From command line run the following.
|
||||
|
||||
```
|
||||
$>httpd - t
|
||||
```
|
||||
####.htaccess CGI
|
||||
http://perishablepress.com/stupid-htaccess-trics/
|
||||
|
||||
```
|
||||
Options +ExecCGI +Includes +FollowSymLinks -Indexes
|
||||
AddHandler cgi-script exe
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
RewriteRule ^$ $service [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_URI} !$service
|
||||
RewriteRule ^(.*)$ $service/$1
|
||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
|
||||
</IfModule
|
||||
```
|
||||
Replace $service with the name of your executable service, for example app_service.exe
|
||||
|
||||
|
||||
##Deploying EWF FCGI
|
||||
|
||||
- To deploy FCGI you will need to download the mod_fcgi module.
|
||||
- You can get it from here http://www.apachelounge.com/download/
|
||||
|
||||
###FCGI overview
|
||||
> FastCGI allows a single, long-running process to handle more than one user request while keeping close to
|
||||
> the CGI programming model, retaining the simplicity while eliminating the overhead of creating a new
|
||||
> process for each request. Unlike converting an application to a web server plug-in, FastCGI applications
|
||||
> remain independent of the web server.
|
||||
|
||||
1. Build EWF application
|
||||
|
||||
```
|
||||
ec -config app.ecf -target app_fcgi -finalize -c_compile -project_path .
|
||||
Note: change app.ecf and target app_fcgi based on your own configuration.
|
||||
```
|
||||
2. Copy the generated exe file and the www content
|
||||
|
||||
```
|
||||
Copy the app.exe and the folder "www" into a folder served by apache2, for example under
|
||||
<APACHE_PATH>/htdocs.
|
||||
<APACHE_PATH> = path to your apache installation
|
||||
Edit httpd.conf under c:/<APACHE_PATH>/conf
|
||||
|
||||
DocumentRoot "c:/<APACHE_PATH>/htdocs"
|
||||
<Directory "c:/<APACHE_PATH>/htdocs">
|
||||
AllowOverride All --
|
||||
Require all granted -- this is required in Apache 2.4.4
|
||||
</Directory>
|
||||
```
|
||||
Check that you have the following modules enabled.
|
||||
|
||||
```
|
||||
LoadModule rewrite_module modules/mod_rewrite.so
|
||||
LoadModule fcgid_module modules/mod_fcgid.so
|
||||
```
|
||||
|
||||
By default Apache does not comes with fcgid module, so you will need to
|
||||
download it, and put the module under Apache2/modules
|
||||
|
||||
####.htaccess FCGI
|
||||
http://perishablepress.com/stupid-htaccess-tricks/
|
||||
|
||||
```
|
||||
Options +ExecCGI +Includes +FollowSymLinks -Indexes
|
||||
<IfModule mod_fcgid.c>
|
||||
AddHandler fcgid-script .ews
|
||||
FcgidWrapper $FULL_PATH/$service .ews
|
||||
</IfModule>
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
RewriteBase /
|
||||
RewriteRule ^$ service.ews [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_URI} !=/favicon.ico
|
||||
RewriteCond %{REQUEST_URI} !service.ews
|
||||
RewriteRule ^(.*)$ service.ews/$1 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
|
||||
</IfModule>
|
||||
```
|
||||
Replace $service with the name of your executable $service, for example app_service.exe
|
||||
You will need to create an service.ews file, this file will be located at the same place where you
|
||||
copy your app service executable.
|
||||
@@ -1,4 +1,4 @@
|
||||
Menu :: [[Doc_Getting_Started|Getting Started]] :: [[Doc_Community|Community]]
|
||||
Menu :: [[Doc_Getting_Started.mediawiki|Getting Started]] :: [[Community-collaboration.md|Community]]
|
||||
|
||||
= Getting Started =
|
||||
This page will help you to get started with EWF. We will first see how to install EWF and then how to compile and run the venerable Hello World example.
|
||||
@@ -54,4 +54,4 @@ To do this, we will redefine the feature initialize as follows:
|
||||
|
||||
|
||||
After one more compile, you can now launch the application and point your browser to [http://localhost:9090].
|
||||
You should now see a simple page with Hello World.
|
||||
You should now see a simple page with Hello World.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Menu :: [[Doc_Getting_Started|Getting Started]] :: [[Doc_Community|Community]]
|
||||
Menu :: [[Doc_Getting_Started.mediawiki|Getting Started]] :: [[community.md|Community]]
|
||||
|
||||
= Eiffel Web Framework =
|
||||
Framework to build web applications in Eiffel
|
||||
|
||||
[ [http://github.com/EiffelWebFramework/EWF/zipball/ Download Current] ]
|
||||
[ [http://github.com/EiffelWebFramework/EWF/zipball/release-0.3 Download v0.3] ]
|
||||
[ [http://github.com/EiffelWebFramework/EWF/zipball/release-0.3 Download v0.3] ]
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
See WSF_ROUTER
|
||||
@@ -1 +0,0 @@
|
||||
See WSF_CONNECTOR
|
||||
@@ -1 +0,0 @@
|
||||
See WSF_ROUTER
|
||||
@@ -1,5 +1,5 @@
|
||||
- See proposed specifications: [EWSGI specification](./EWSGI-specification)
|
||||
- See [Open questions](./EWSGI-Open-Questions)
|
||||
- See proposed specifications: [EWSGI specification](EWSGI-specification.md)
|
||||
- See [Open questions](EWSGI-Open-Questions.md)
|
||||
- And below the various proposals and associated decision
|
||||
|
||||
----
|
||||
@@ -6,21 +6,21 @@ The official documentation/wiki is located at [https://github.com/EiffelWebFrame
|
||||
## Organization ##
|
||||
- Mailing list: please visit and subscribe to the mailing list page [http://groups.google.com/group/eiffel-web-framework](http://groups.google.com/group/eiffel-web-framework) 
|
||||
- Most of the topics are discussed on the mailing list (google group).
|
||||
- For time to time we have [web meetings](./wiki/Meetings), and less frequently [physical meetings](./wiki/Meetings) that occurs usually during other Eiffel related events.
|
||||
- For time to time we have [web meetings](project/Meetings.md), and less frequently [physical meetings](project/Meetings.md) that occurs usually during other Eiffel related events.
|
||||
|
||||
## Documentation ##
|
||||
- [Documentation](./Documentation)
|
||||
- [Documentation](documentation/README.md)
|
||||
|
||||
## Contributions ##
|
||||
- You want to contribute or follow the progress/discussion, see the [collaboration page](./wiki/Community-collaboration)
|
||||
- Potential tasks/projects on EWF: [Projects page](./wiki/Projects)
|
||||
- You want to contribute or follow the progress/discussion, see the [collaboration page](community.md)
|
||||
- Potential tasks/projects on EWF: [Projects page](project/Projects.md)
|
||||
|
||||
## See also ##
|
||||
- [list of tasks, and a potential roadmap](./wiki/Tasks-Roadmap)
|
||||
- [General source structure of this project](./wiki/Source-structure)
|
||||
- EWSGI: [Eiffel Web Server Gateway Interface](./wiki/EWSGI)
|
||||
- [Overview of the server side architecture](./wiki/Spec-Server-Architecture)
|
||||
- This project is also a collection of [Libraries](./wiki/Libraries) related to the Web
|
||||
- [list of tasks, and a potential roadmap](project/Tasks-Roadmap.md)
|
||||
- [General source structure of this project](Source-structure.md)
|
||||
- EWSGI: [Eiffel Web Server Gateway Interface](EWSGI/README.md)
|
||||
- [Overview of the server side architecture](Spec-Server-Architecture.md)
|
||||
- This project is also a collection of [Libraries](Libraries.md) related to the Web
|
||||
|
||||
## Note ##
|
||||
- This wiki needs to be updated, in the meantime, please have a look at the presentation: [https://docs.google.com/presentation/pub?id=1GPFv6aHhTjFSLMnlAt-J4WeIHSGfHdB42dQxmOVOH8s&start=false&loop=false&delayms=3000](https://docs.google.com/presentation/pub?id=1GPFv6aHhTjFSLMnlAt-J4WeIHSGfHdB42dQxmOVOH8s&start=false&loop=false&delayms=3000)
|
||||
@@ -46,3 +46,6 @@ It's fairly easy to write your own connector. Just inherit from these classes:
|
||||
* WGI_INPUT_STREAM
|
||||
* WGI_OUTPUT_STREAM
|
||||
* WSF_SERVICE_LAUNCHER
|
||||
|
||||
|
||||
See WSF_CONNECTOR
|
||||
@@ -27,7 +27,7 @@ This is the low level of the framework, at this point, `req` provides access to
|
||||
The response `res` is the interface to send data back to the client.
|
||||
For convenience, the framework provides richer service interface that handles the most common needs (filter, router, ...).
|
||||
|
||||
> [Learn more about service](Documentation__Service)
|
||||
> [Learn more about service](Service.md)
|
||||
|
||||
<a name="wiki-request"></a><a name="wiki-response"></a><a name="wiki-request-and-response"></a>
|
||||
<a name="request"></a><a name="response"></a><a name="request-and-response"></a>
|
||||
@@ -50,7 +50,7 @@ Any incoming http request is represented by an new object of type **WSF_REQUEST*
|
||||
|
||||
The **WSF_RESPONSE** represents the communication toward the client, a service need to provide correct headers, and content. For instance the `Content-Type`, and `Content-Length`. It also allows to send data with chunked encoding.
|
||||
|
||||
> [Learn more about request](Documentation__Request) and [about response](Documentation__Response)
|
||||
> [Learn more about request](Request.md) and [about response](Response.md)
|
||||
|
||||
<a name="wiki-connector"></a>
|
||||
<a name="connector"></a>
|
||||
@@ -66,7 +66,7 @@ Currently 3 main connectors are available:
|
||||
At compilation time, you can use a default connector (by using the associated default lib), but you can also use a mixed of them and choose which one to execute at runtime.
|
||||
It is fairly easy to add new connector, it just has to follow the EWSGI interface
|
||||
|
||||
> [Learn more about connector](Documentation__Connector)
|
||||
> [Learn more about connector](Connector.md)
|
||||
|
||||
<a name="wiki-router"></a>
|
||||
<a name="router"></a>
|
||||
@@ -113,7 +113,7 @@ How we do that in EWF? : Router with (or without context).
|
||||
Related code: wsf_router, wsf_router_context
|
||||
Examples
|
||||
|
||||
> [Learn more about router](Documentation__Router)
|
||||
> [Learn more about router](Router.md)
|
||||
|
||||
# EWF components
|
||||
## URI Handler:
|
||||
@@ -180,25 +180,26 @@ examples
|
||||
External libraries are included, such as Cypress OAuth (Security), HTML parsing library, Template Engine Smarty.
|
||||
|
||||
## server
|
||||
* __ewsgi__: Eiffel Web Server Gateway Interface read more
|
||||
* __ewsgi__: Eiffel Web Server Gateway Interface [read more](../EWSGI/index.md).
|
||||
* connectors: various web server connectors for EWSGI
|
||||
* __libfcgi__: Wrapper for libfcgi SDK
|
||||
* __wsf__: Web Server Framework [read more]
|
||||
* __router__: URL dispatching/routing based on uri, uri_template, or custom read more
|
||||
* __wsf__: Web Server Framework
|
||||
* __router__: URL dispatching/routing based on uri, uri_template, or custom [read more](Router.md).
|
||||
* __filter__: Filter chain [read more](Filter.md).
|
||||
* __wsf_html__: (html and css) Content generator from the server side.
|
||||
* CMS example: <https://github.com/EiffelWebFramework/cms/tree/master/example>
|
||||
|
||||
## protocol
|
||||
* __http__: HTTP related classes, constants for status code, content types, ... read more
|
||||
* __uri_template__: URI Template library (parsing and expander) read more
|
||||
* __content_negotiation__: CONNEG library (Content-type Negociation) read more
|
||||
* __http__: HTTP related classes, constants for status code, content types, ...
|
||||
* __uri_template__: URI Template library (parsing and expander)
|
||||
* __content_negotiation__: [CONNEG](Library-conneg.md) library (Content-type Negociation)
|
||||
|
||||
## Client
|
||||
* __http_client__: simple HTTP client based on cURL readmore
|
||||
* __http_client__: simple [HTTP client](HTTP-client.library.md) based on cURL
|
||||
* __Firebase API__: <https://github.com/EiffelWebFramework/Redwood>
|
||||
|
||||
## Text
|
||||
* __encoder__: Various simple encoders: base64, url-encoder, xml entities, html entities read more
|
||||
* __encoder__: Various simple encoders: base64, url-encoder, xml entities, html entities
|
||||
|
||||
## Utils
|
||||
* __error__: very simple/basic library to handle error
|
||||
@@ -1,3 +1,6 @@
|
||||
The primary goal of the router (class _WSF_ROUTER_) is to dispatch requests according to the request URI.
|
||||
|
||||
**TODO**: describe the router interface
|
||||
See WSF_ROUTER
|
||||
|
||||
**TODO**: describe the router interface
|
||||
|
||||
@@ -23,4 +23,4 @@ is_system_options_forbidden.
|
||||
|
||||
WSF_ROUTED_SKELETON_SERVICE also inherits from WSF_PROXY_USE_POLICY. This determines if the server will require clients to use a proxy server. By default, it will do so for HTTP/1.0 clients. This is a sensible default, as the framework assumes an HTTP/1.1 client throughout. If you are sure that you will only ever have HTTP/1.1 clients, then you can instead inherit from WSF_NO_PROXY_POLICY, as RESTBUCKS_SERVER does. If not, then you need to implement proxy_server.
|
||||
|
||||
Next you have to [write your handler(s)](./Writing-the-handlers)
|
||||
Next you have to [write your handler(s)](Writing-the-handlers.md)
|
||||
@@ -218,6 +218,6 @@ This routine is called for a normal (updating) PUT request. You have to update t
|
||||
|
||||
## Implementing the policies
|
||||
|
||||
* [WSF_OPTIONS_POLICY](./WSF_OPTIONS_POLICY)
|
||||
* [WSF_PREVIOUS_POLICY](./Wsf-previous-policy)
|
||||
* [WSF_CACHING_POLICY](./Wsf-caching-policy)
|
||||
* [WSF_OPTIONS_POLICY](WSF_OPTIONS_POLICY.md)
|
||||
* [WSF_PREVIOUS_POLICY](Wsf-previous-policy.md)
|
||||
* [WSF_CACHING_POLICY](Wsf-caching-policy.md)
|
||||
@@ -1,4 +1,4 @@
|
||||
# Previous and future meetings
|
||||
|
||||
* [Web-meeting: 2012-09-18](./Web-meeting-2012-09-18)
|
||||
* [Web-meeting: 2012-09-18](meetings/Web-meeting-2012-09-18.md)
|
||||
* For previous meetings, check the ["meeting" topics](https://groups.google.com/forum/?fromgroups=#!tags/eiffel-web-framework/meeting) on the [forum](http://groups.google.com/group/eiffel-web-framework)
|
||||
@@ -1,5 +1,5 @@
|
||||
Use this to suggest new projects, or request features.
|
||||
The content of this page will be moved to the main [Projects](./Projects) page for time to time.
|
||||
The content of this page will be moved to the main [Projects](Projects.md) page for time to time.
|
||||
For any entry, please use this template
|
||||
|
||||
----
|
||||
@@ -236,4 +236,4 @@ If you are a student, don't hesitate to pick one, or even suggest a new project,
|
||||
----
|
||||
# Feel free to add new idea below this line
|
||||
----
|
||||
Use the following page [Projects new suggestions](./Projects new suggestions) to suggest new project, or request a feature.
|
||||
Use the following page [Projects new suggestions](Projects-new-suggestions.md) to suggest new project, or request a feature.
|
||||
@@ -1,4 +1,4 @@
|
||||
Check new roadmap wiki page: [roadmap](./roadmap)
|
||||
Check new roadmap wiki page: [roadmap](roadmap.md)
|
||||
## Future
|
||||
* Focus on REST API
|
||||
- Hypermedia API
|
||||
@@ -32,5 +32,5 @@ Check new roadmap wiki page: [roadmap](./roadmap)
|
||||
* Installation scripts
|
||||
|
||||
## Contributors ##
|
||||
- See [the collaboration page](./Community-collaboration)
|
||||
- See [the collaboration page](../community.md)
|
||||
|
||||
4
doc/wiki/project/roadmap.md
Normal file
4
doc/wiki/project/roadmap.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# Upcoming versions
|
||||
|
||||
# Current state: oct-2013
|
||||
- check previous wiki page: [Tasks roadmap](Tasks-roadmap.md)
|
||||
@@ -1,4 +0,0 @@
|
||||
# Upcoming versions
|
||||
|
||||
# Current state: oct-2013
|
||||
- check previous wiki page: [Tasks roadmap](./Tasks roadmap)
|
||||
Reference in New Issue
Block a user