Difference between pages "User:Javichu/Temp 20" and "Product Opener/Installation"

From Open Food Facts wiki
< User:Javichu(Difference between pages)
Jump to navigation Jump to search
(New)
 
 
Line 1: Line 1:
<div style="color:red; font-size:xx-large; text-align:center">
+
Installation instructions for Product Opener (see [[Project:Product Opener]]).
'''''Merging & updating: Plant-based spreads'''''
 
</div>
 
  
= FR- EN =
+
== Before you start ==
<pre>
 
< en:Plant-based foods
 
< en:Spreads
 
en:Vegetable spreads
 
es:Untables vegetales
 
fr:Pâtes à tartiner végétaux
 
</pre>
 
  
<pre>
+
Product Opener is not yet released as open source. The instructions below are for reference and for early testers of Product Opener. They are very likely to change as the code will be restructured, made more independent of proprietary code and specific Open Food Facts uses etc.
< en:Sweet spreads
 
< en:Vegetable spreads
 
en:Jams
 
es:Mermeladas y confituras
 
fr:Confitures
 
  
< en:Artisan products
+
When it is released, Product Opener will have much easier to use install scripts and instructions.
< en:Jams
 
fr:Confitures artisanales
 
  
< en:Jams
+
== Install directory ==
fr:Confiture d’agrumes
 
  
< en:Jams
+
Instructions below use /home/obf for the install directory, replace with your install dir.
fr:Confiture de roses
 
  
< en:Jams
+
== Product Opener code ==
fr:Confitures allégées
 
  
< en:Jams
+
=== Configuration ===
en:Apricot jams
 
fr:Confitures d’abricot
 
  
< en:Jams
+
==== startup.pl ====
en:Orange jams
 
fr:Confitures d’orange
 
  
< en:Jams
+
This file is used to preload Perl module in Apache.
en:Figs jams
+
It contains a path that needs to be updated:
fr:Confitures de figues
 
  
< en:Jams
+
<pre>
fr:Confitures de fraises
+
# Needs to be configured
 
+
use lib "/home/obf/cgi/";
< en:Jams
 
fr:Confitures diététiques
 
 
 
< en:Jams
 
en:Marmalades
 
fr:Marmelades
 
 
 
< fr:Marmelades
 
en:Apricot Marmalades
 
fr:Marmelades d’abricots
 
 
 
< fr:Marmelades
 
en:Pineapple Marmalades
 
fr:Marmelades d’ananas
 
 
 
< fr:Marmelades
 
en:Orange Marmalades
 
fr:Marmelades d’oranges
 
 
 
< fr:Marmelades
 
fr:Marmelades de bigaradiers
 
 
 
< fr:Marmelades
 
en:Lemon marmelades
 
fr:Marmelades de citrons
 
 
 
< en:Sweet spreads
 
fr:Gelées de fruits, Gelées
 
 
 
< en:Sweet spreads
 
fr:Pâtes à tartiner, Pâte à tartiner
 
 
 
< fr:Pâtes à tartiner
 
fr:Beurres de cacahuètes, beurres d’arachide
 
 
 
< fr:Pâtes à tartiner
 
fr:Pâtes à tartiner au caramel, Pâte à tartiner au caramel, Caramels à tartiner, Caramel à tartiner
 
 
 
< fr:Pâtes à tartiner
 
fr:Pâtes à tartiner au chocolat, pâtes à tartiner au cacao
 
 
 
< fr:Pâtes à tartiner
 
fr:Pâtes à tartiner aux amandes
 
 
 
< fr:Pâtes à tartiner
 
fr:Pâtes à tartiner aux noisettes, pâte à tartiner aux noisettes
 
 
 
< fr:Pâtes à tartiner au chocolat
 
< fr:Pâtes à tartiner aux noisettes
 
fr:Pâtes à tartiner aux noisettes et au cacao, pâtes à tartiner aux noisettes et au chocolat
 
 
</pre>
 
</pre>
  
<pre>
+
==== Config.pm ====
< en:Salted spreads
 
fr:Tapenade
 
  
< fr:Tapenade
+
==== Config2.pm ====
fr:Tapenades noires, Tapenade noire, Tapenade aux olives noires
 
  
< fr:Tapenade
+
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.
fr:Tapenades vertes, Tapenade verte, Tapenade aux olives vertes
 
  
< en:Spreads
 
fr:Condiments à tartiner, Condiment à tartiner
 
</pre>
 
 
= ES =
 
 
<pre>
 
<pre>
< en:Vegetable spreads
+
# server constants
es:Baba ganush
+
$domain = "openbeautyfacts.org";
 
 
< en:Vegetable spreads
 
es:Cremas de algarroba
 
 
 
< en:Vegetable spreads
 
es:Cremas de algarroba y frutos secos
 
  
< en:Vegetable spreads
+
# server paths
es:Cremas de cacao
+
$www_root = "/home/obf/html";
 +
$data_root = "/home/obf";
  
< en:Vegetable spreads
+
$mongodb = "obf";
es:Cremas de cacao y frutos secos
 
 
 
< en:Vegetable spreads
 
es:Cremas de frutos secos
 
 
 
< es:Cremas de frutos secos
 
es:Cremas de almendra
 
 
 
< es:Cremas de frutos secos
 
es:Cremas de anacardos
 
 
 
< es:Cremas de frutos secos
 
es:Cremas de avellana
 
 
 
< es:Cremas de frutos secos
 
es:Cremas de cacahuete
 
 
 
< es:Cremas de frutos secos
 
es:Cremas de castañas
 
 
 
< es:Cremas de frutos secos
 
es:Cremas de nueces
 
 
 
< en:Vegetable spreads
 
es:Cremas de sésamo
 
 
 
< en:Vegetable spreads
 
es:Hummus
 
 
 
< en:Vegetable spreads
 
es:Patés vegetales
 
 
 
< es:Patés vegetales
 
es:Patés vegetales de aceitunas
 
 
 
< en:Vegetable spreads
 
es:Tahines
 
 
</pre>
 
</pre>
  
= Common =
+
== MongoDB database ==
See:
 
* [[wikipedia:Spread (food)]]
 
* [[wikipedia:Nut butter]], [[wikipedia:es:Manteca de frutos secos]]
 
  
 +
== Apache servers ==
  
== Top category ==
+
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.
<pre>
 
< en:Plant-based foods
 
< en:Spreads
 
en:Plant-based spreads, Vegetable spreads
 
es:Untables vegetales
 
fr:Pâtes à tartiner végétaux
 
</pre>
 
  
== Main categories ==
+
If the trafic is low or moderate, you can use only one Apache mod_perl server that also serves images etc.
<pre>
 
< en:Plant-based spreads
 
< en:Sweet spreads
 
en:Jams
 
es:Mermeladas y confituras, Mermeladas, Confituras
 
fr:Confitures
 
  
< en:Plant-based spreads
+
In the example below, the Apache mod_perl server listens on port 19000.
< en:Sweet spreads
 
en:Plant-based butters
 
es:Mantecas de origen vegetal, Mantecas vegetales
 
fr:
 
</pre>
 
 
 
== Jams ==
 
<pre>
 
</pre>
 
  
== Plant-based butters ==
+
=== Light-weight reverse proxy for static files ===
  
=== Nut butters ===
+
Add to httpd.conf:
<pre>
 
< en:Plant-based butters
 
en:Nut butters
 
es:Mantecas de frutos secos, Cremas de frutos secos, Mantecas de frutos de cáscara, Cremas de frutos de cáscara
 
fr:Pâtes à tartiner aux fruits à coques
 
</pre>
 
  
 
<pre>
 
<pre>
< en:Nut butters
 
en:Almond butters
 
es:Cremas de almendra
 
fr:Pâtes à tartiner aux amandes
 
  
< en:Nut butters
+
<VirtualHost *>
en:Cashew butters
+
DocumentRoot /home/obf/html
es:Cremas de anacardos
+
ServerName world.openbeautyfacts.org
fr:Pâtes à tartiner aux noix de cajou
+
ServerAlias *.openbeautyfacts.org
  
< en:Nut butters
+
ErrorLog /home/obf/logs/proxy_error_log
en:Chestnut butters
+
CustomLog /home/obf/logs/proxy_access_log combined
es:Cremas de castañas
+
ServerAdmin stephane@openbeautyfacts.org
fr:Pâtes à tartiner aux châtaignes
 
  
< en:Nut butters
+
<Directory "/home/obf/html">
en:Hazelnut butters
+
    Options -Indexes FollowSymLinks
es:Cremas de avellanas, Cremas de avellana
+
    Order allow,deny
fr:Pâtes à tartiner aux noisettes, pâte à tartiner aux noisettes
+
    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>
  
< en:Nut butters
 
en:Macadamia nut butters
 
es:Cremas de nueces de macadamia
 
fr:Pâtes à tartiner aux noix de macadamia
 
  
< en:Nut butters
+
<VirtualHost *>
en:Pecan butters
+
DocumentRoot /home/obf/html
es:Cremas de nueces de nueces pecanas
+
ServerName openbeautyfacts.org
fr:Pâtes à tartiner aux noix pécanes
+
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]
  
< en:Nut butters
+
</VirtualHost>
en:Pistachio butters
 
es:Cremas de pistachos
 
fr:Pâtes à tartiner aux pistaches
 
  
< en:Nut butters
 
en:Walnut butters
 
es:Cremas de nueces
 
fr:Pâtes à tartiner aux noix
 
 
</pre>
 
</pre>
  
=== Other plant-based butters ===
+
=== modperl Apache server for dynamic pages ===
<pre>
 
< en:Plant-based butters
 
en:Peanut butters
 
es:Mantecas de cacahuetes, Mantequillas de cacahuetes, Cremas de cacahuetes, Cremas de cacahuete
 
fr:Beurres de cacahuètes, beurres d’arachide
 
  
< en:Plant-based butters
+
* download the latest version of the source of the Apache httpd server from the 2.2 branch (2.2.29 when writing this)
en:Pumpkin seed butters
+
** do not use the 2.4 branch as mod_perl is not yet compatible with it
es:
+
* extract the source
fr:
+
* ./configure --with-mpm=prefork --prefix=/home/obf/apache --enable-rewrite --enable-proxy --enable-proxy_http --enable-deflate --disable-userdir --enable-headers
 +
* make
 +
* make install
  
< en:Plant-based butters
+
* download the latest version of mod_perl from http://perl.apache.org/
en:Sesame seed butters, Tahinis, Tahini
+
* extract the source
es:Cremas de sésamo, Tahines
+
* perl Makefile.PL MP_APXS=/home/obf/apache/bin/apxs
fr:
+
* make
 +
* make install
  
< en:Plant-based butters
+
==== Configuration ====
en:Soybean butters, Soynut butters
 
es:
 
fr:
 
  
< en:Plant-based butters
+
In /home/obf/apache/conf/httpd.conf:
en:Sunflower seed butters
 
es:
 
fr:
 
  
.......................................................
+
Change the port:
  
< en:Plant-based butters
+
Listen 19000
en:
 
es:Cremas de cacao
 
fr:
 
  
< en:Plant-based butters
+
Add at the end:
en:
 
es:Cremas de algarroba
 
fr:
 
  
......................................................
+
<pre>
 
+
PerlWarn Off
< en:Plant-based butters
+
PerlRequire /home/obf/cgi/startup.pl
en:
 
es:Cremas de cacao y frutos secos
 
fr:
 
 
 
< en:Plant-based butters
 
en:
 
es:Cremas de algarroba y frutos secos
 
fr:
 
</pre>
 
  
== Others ==
 
<pre>
 
< en:Plant-based butters
 
en:
 
es:Hummus
 
fr:
 
  
< en:Plant-based butters
+
<Location /cgi>
en:
+
SetHandler perl-script
es:Baba ganush
+
PerlResponseHandler ModPerl::Registry
fr:
+
PerlOptions +ParseHeaders
 +
Options +ExecCGI
 +
Order allow,deny
 +
Allow from all
 +
</Location>
  
....................................................
 
  
< en:Plant-based butters
+
<VirtualHost *>
en:
+
DocumentRoot /home/obf/html
es:Patés vegetales
+
ServerName world.openbeautyfacts.org
fr:
+
ErrorLog /home/obf/logs/error_log
 +
CustomLog /home/obf/logs/access_log combined
 +
ScriptAlias /cgi/ "/home/obf/cgi/"
 +
</VirtualHost>
  
< en:Plant-based butters
+
PerlPostReadRequestHandler My::ProxyRemoteAddr
en:
 
es:Patés vegetales de aceitunas
 
fr:
 
 
</pre>
 
</pre>

Revision as of 13:44, 4 September 2014

Installation instructions for Product Opener (see Project:Product Opener).

Before you start

Product Opener is not yet released as open source. The instructions below are for reference and for early testers of Product Opener. They are very likely to change as the code will be restructured, made more independent of proprietary code and specific Open Food Facts uses etc.

When it is released, Product Opener 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.

Product Opener code

Configuration

startup.pl

This file is used to preload Perl module in Apache. It contains a path that needs to be updated:

# Needs to be configured
use lib "/home/obf/cgi/";

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.

# server constants
$domain = "openbeautyfacts.org";

# server paths
$www_root = "/home/obf/html";
$data_root = "/home/obf";

$mongodb = "obf";

MongoDB database

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

Add to httpd.conf:


<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>

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

Configuration

In /home/obf/apache/conf/httpd.conf:

Change the port:

Listen 19000

Add at the end:

PerlWarn Off
PerlRequire /home/obf/cgi/startup.pl


<Location /cgi>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Location>


<VirtualHost *>
DocumentRoot /home/obf/html
ServerName world.openbeautyfacts.org
ErrorLog /home/obf/logs/error_log
CustomLog /home/obf/logs/access_log combined
ScriptAlias /cgi/ "/home/obf/cgi/"
</VirtualHost>

PerlPostReadRequestHandler My::ProxyRemoteAddr