Jump to content

Product Opener/Installation: Difference between revisions

no edit summary
(Created page with "Installation instructions for ProductOpener (see Project:ProductOpener). == Before you start == ProductOpener is not yet released as open source. The instructions below ...")
 
No edit summary
Line 6: Line 6:


When it is released, ProductOpener will have much easier to use install scripts and instructions.
When it is released, ProductOpener will have much easier to use install scripts and instructions.
== Install directory ==
Instructions below use /home/obf for the install directory, replace with your install dir.


== ProductOpener code ==
== ProductOpener code ==


=== Configuration ===
=== Configuration ===
==== startup.pl ====
This file is used to preload Perl module in Apache.
It contains a path that needs to be updated:
<pre>
# Needs to be configured
use lib "/home/obf/cgi/";
</pre>
==== Config.pm ====
==== Config2.pm ====
Contains info about the domain, database and path. This is separated from Config.pm so that it is easy to create test instance that share the same configuration in Config.pm but are on other domains.
<pre>
# server constants
$domain = "openbeautyfacts.org";
# server paths
$www_root = "/home/obf/html";
$data_root = "/home/obf";
$mongodb = "obf";
</pre>


== MongoDB database ==
== MongoDB database ==


== Apache servers ==  
== Apache servers ==  
In production we use a light weight Apache web server for static files (e.g. images) that does reverse proxying to a modperl Apache server that dynamically generates the HTML pages.
If the trafic is low or moderate, you can use only one Apache mod_perl server that also serves images etc.
In the example below, the Apache mod_perl server listens on port 19000.


=== Light-weight reverse proxy for static files ===
=== Light-weight reverse proxy for static files ===
Add to httpd.conf:
<pre>
<VirtualHost *>
DocumentRoot /home/obf/html
ServerName world.openbeautyfacts.org
ServerAlias *.openbeautyfacts.org
ErrorLog /home/obf/logs/proxy_error_log
CustomLog /home/obf/logs/proxy_access_log combined
ServerAdmin stephane@openbeautyfacts.org
<Directory "/home/obf/html">
    Options -Indexes FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>
RewriteEngine on
RewriteCond  %{REQUEST_URI}  !/./
RewriteRule ^(/cgi/.*)$ http://localhost:19000$1 [P,L]
RewriteMap escape int:escape
RewriteRule ^/favicon.ico$ /favicon.ico [L]
RewriteCond  %{REQUEST_URI}  !^/images/
RewriteCond  %{REQUEST_URI}  !^/js/
RewriteCond  %{REQUEST_URI}  !^/rss/
RewriteCond  %{REQUEST_URI}  !^/robots
RewriteCond  %{REQUEST_URI}  !^/clicks/
RewriteCond  %{REQUEST_URI}  !^/data/
RewriteCond  %{REQUEST_URI}  !^/files/
RewriteRule  ^(.*)$ http://localhost:19000/cgi/display.pl?${escape:$1} [P,L,QSA]
</VirtualHost>
<VirtualHost *>
DocumentRoot /home/obf/html
ServerName openbeautyfacts.org
ErrorLog /home/obf/logs/proxy_error_log
CustomLog /home/obf/logs/proxy_access_log combined
DirectoryIndex index.html index.shtml
<Directory "/home/obf/html">
    Options -Indexes FollowSymLinks Includes
    Order allow,deny
    Allow from all
</Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^openbeautyfacts\.org
RewriteRule ^/products$ /products.shtml [L]
</VirtualHost>
</pre>


=== modperl Apache server for dynamic pages ===
=== modperl Apache server for dynamic pages ===
* download the latest version of the source of the Apache httpd server from the 2.2 branch (2.2.29 when writing this)
** do not use the 2.4 branch as mod_perl is not yet compatible with it
* extract the source
* ./configure --with-mpm=prefork --prefix=/home/obf/apache --enable-rewrite --enable-proxy --enable-proxy_http --enable-deflate --disable-userdir --enable-headers
* make
* make install
* download the latest version of mod_perl from http://perl.apache.org/
* extract the source
* perl Makefile.PL MP_APXS=/home/obf/apache/bin/apxs
* make
* make install