Version at: 29/04/2013, 00:51 vs. version at: 02/05/2013, 22:00
11# How to Install the CakePHP Version of the Tatoeba Web App
22
33NOTE: This is about installing the PHP version (i.e. current version) of Tatoeba.
44
55# Downloads
66
77## Required tools
88
99* Apache
1010* PHP
1111* MySQL
1212* SVN Client
1313
1414For those who are on Windows:
1515
1616* [XAMPP](http://www.apachefriends.org/en/xampp-windows.html) will do the trick for Apache/PHP/MySQL.
1717* [TortoiseSVN](http://tortoisesvn.net/downloads.html) for the SVN client
1818
1919For those who are on Macintosh or Linux:
2020
2121* [XAMPP](http://www.apachefriends.org/en/xampp.html) works, too.
2222
2323## Source code
2424
2525The source code is hosted on a platform called Assembla:
2626[https://www.assembla.com/code/tatoeba2/subversion/nodes](https://www.assembla.com/code/tatoeba2/subversion/nodes)
2727
2828Repository URL:
2929[https://subversion.assembla.com/svn/tatoeba2/](https://subversion.assembla.com/svn/tatoeba2/)
3030
3131URL you'll want to checkout:
3232[https://subversion.assembla.com/svn/tatoeba2/trunk/](https://subversion.assembla.com/svn/tatoeba2/trunk/)
3333
3434
3535# Configuration
3636
3737## Virtual host
3838
3939You may set up a virtual host. I personally use http://tatoeba.dev/ as my local URL.
4040
4141To find out how to set up a virtual host on a Macintosh using XAMPP see the following page.
42[http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/](http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/)
4243
43[http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/]
44On Windows 7 using XAMPP:
45[http://austinpassy.com/tutorials/setting-up-virtual-hosts-wordpress-multisite-with-xampp-on-windows-7/](http://austinpassy.com/tutorials/setting-up-virtual-hosts-wordpress-multisite-with-xampp-on-windows-7/)
4446
4547
4648**TODO** More details on how to do that.
4749
4850
4951## mod_rewrite
5052
5153You need to have mod_rewrite enabled, it's necessary for CakePHP.
5254
5355**TODO** More details on how to do that.
5456
5557
5658## app/config/core.php
5759
5860In the file `app/config/core.php`, put into comments the part about XCache.
5961
6062 /*
6163 Cache::config('default', array(
6264 'engine' => 'Xcache', //[required]
6365 'duration'=> 3600, //[optional]
6466 'probability'=> 100, //[optional]
6567 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
6668 'user' => 'user', //user from xcache.admin.user settings
6769 'password' => 'password', //plaintext password (xcache.admin.pass)
6870 ));
6971 Cache::config('_cake_core_', array(
7072 'engine' => 'Xcache', //[required]
7173 'duration'=> 3600, //[optional]
7274 'probability'=> 100, //[optional]
7375 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
7476 'user' => 'user', //user from xcache.admin.user settings
7577 'password' => 'password', //plaintext password (xcache.admin.pass)
7678 ));
7779 */
7880
7981And uncomment the line to use the "File" cache engine:
8082
8183`Cache::config('default', array('engine' => 'File'));`
8284
8385
8486
8587## app/config/database.php
8688
8789In the file `app/config/database.php`, set your login, password and database in the $default array.
8890
8991 var $default = array(
9092 'driver' => 'mysql',
9193 'persistent' => false,
9294 'host' => 'localhost',
9395 'login' => 'root',
9496 'password' => 'somepassword',
9597 'database' => 'tatoeba',
9698 'prefix' => '',
9799 'encoding' => 'utf8'
98100 );
99101
100102
101103## app/models/sentence.php
102104
103105Tatoeba uses some other external tools that you won't necessarily need. These tools are:
104106
105107* the search engine (Sphinx)
106108* the tools for romanization
107109
108110If you're not going to work on the search or on the romanization and don't want to install these tools, you will have to uncomment a few things in the Sentence model (`app/models/sentence.php`).
109111
110112line 274: uncomment "return array(1)"
111113
112114 public function getSeveralRandomIds($lang = 'und', $numberOfIdWanted = 10)
113115 {
114116 // Uncomment the line below if you don't have sphinx installed.
115117 return array(1);`
116118
117119line 847: uncomment "return false"
118120
119121 public function generateMetas(&$sentenceArray)
120122 {
121123 // Uncomment the line below you don't have the Chinese
122124 // romanization tools installed.
123125 return false;`
124126    
125127## Make the following directory writable.
126128
127129/app/tmp/cache/
128130
129131## For XAMPP (at least on a Mac)
130132
131133You'll need to up the default thread_stack from 64K to 256K.
132134(I tried 128K, but that wasn't enough.)
133135
134136/Applications/XAMPP/xamppfiles/etc/my.cnf
135137
136138thread_stack = 256K
137139
138140
139141# Database
140142
141143Now you need to create the database, and import the necessary things. The scripts you will need are in the `docs/database` folder.
142144
143145First, create the database. Make sure the name you use here is the name you've set in app/core/database.php. I'll name it `tatoeba`.
144146
145147 CREATE DATABASE tatoeba
146148 USE tatoeba
147149
148150Then execute the following scripts.
149151
1501521. This will create all the tables (they will be empty).
151153
152154 \. docs/database/database_20130406.sql
153155
1541562. These will create a minimal user base (one user in each group), and the associated access rights for each user.
155157
156158 \. docs/database/import/groups.sql
157159 \. docs/database/import/users.sql
158160 \. docs/database/import/acos.sql
159161 \. docs/database/import/aros.sql
160162 \. docs/database/import/aros_acos.sql
161163
1621643. This will import the list of countries. It's used in profile.
163165
164166 \. docs/database/import/countries.sql
165167
1661684. After you start adding sentences, you will get some errors related to the fact that the table langStats is empty. This table contains lists the different languages in which the sentences are and the number of sentences for each language. So after adding your first sentences, and also everytime you will add sentences in a language that wasn't present before, you will need to execute the following script to update the langStats table:
167169
168170 \. docs/database/scripts/create_fill_langStats.sql
169171
170172
171173You can fill your database with the [exported CSV files](http://tatoeba.org/files/downloads/). For example, adapt and use the following commands to add sentences:
172174
173175 cat sentences.csv | while read -r id lang text; do echo "insert into sentences (id, lang, text) values ('$id', '$lang', '${text//\'/\'}');"; done | sudo mysql -u root tatoeba_database
174176 cat links.csv | while read -r id1 id2; do echo "insert into sentences_translations (sentence_id, translation_id) values ($id1, $id2);"; done | sudo mysql -u root tatoeba_database
175177Expect this to take some time (dozens of minutes) and fill some disk space (several gigabytes).
176178
177179**TODO** Would probably be nice to have some data for sentences, comments, wall messages as well. Although they can be created manually once logged in.
178180
179181
180182
181183
182184# Logging in
183185
184186Now you should be able to go to your local Tatoeba URL (http://tatoeba.dev/ in my case), and be able to log in.
185187
186188The default usernames are:
187189
188190* admin
189191* corpus_maintainer
190192* advanced_contributor
191193* contributor
192194* inactive
193195* spammer
194196
195197The default password for each user is '123456'.
diff view generated by jsdifflib

Version at: 29/04/2013, 00:51

# How to Install the CakePHP Version of the Tatoeba Web App

NOTE: This is about installing the PHP version (i.e. current version) of Tatoeba.

# Downloads

## Required tools

* Apache
* PHP
* MySQL
* SVN Client

For those who are on Windows:

* [XAMPP](http://www.apachefriends.org/en/xampp-windows.html) will do the trick for Apache/PHP/MySQL.
* [TortoiseSVN](http://tortoisesvn.net/downloads.html) for the SVN client

For those who are on Macintosh or Linux:

* [XAMPP](http://www.apachefriends.org/en/xampp.html) works, too.

## Source code

The source code is hosted on a platform called Assembla:
[https://www.assembla.com/code/tatoeba2/subversion/nodes](https://www.assembla.com/code/tatoeba2/subversion/nodes)

Repository URL:
[https://subversion.assembla.com/svn/tatoeba2/](https://subversion.assembla.com/svn/tatoeba2/)

URL you'll want to checkout:
[https://subversion.assembla.com/svn/tatoeba2/trunk/](https://subversion.assembla.com/svn/tatoeba2/trunk/)


# Configuration

## Virtual host

You may set up a virtual host. I personally use http://tatoeba.dev/ as my local URL.

To find out how to set up a virtual host on a Macintosh using XAMPP see the following page.

[http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/]


**TODO** More details on how to do that.


## mod_rewrite

You need to have mod_rewrite enabled, it's necessary for CakePHP.

**TODO** More details on how to do that.


## app/config/core.php

In the file `app/config/core.php`, put into comments the part about XCache.

    /*
    Cache::config('default', array(
        'engine' => 'Xcache', //[required]
        'duration'=> 3600, //[optional]
        'probability'=> 100, //[optional]
        'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
        'user' => 'user', //user from xcache.admin.user settings
        'password' => 'password', //plaintext password (xcache.admin.pass)
    ));
    Cache::config('_cake_core_', array(
        'engine' => 'Xcache', //[required]
        'duration'=> 3600, //[optional]
        'probability'=> 100, //[optional]
        'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
        'user' => 'user', //user from xcache.admin.user settings
        'password' => 'password', //plaintext password (xcache.admin.pass)
    ));
    */

And uncomment the line to use the "File" cache engine:

`Cache::config('default', array('engine' => 'File'));`



## app/config/database.php

In the file `app/config/database.php`, set your login, password and database in the $default array.

    var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => 'somepassword',
        'database' => 'tatoeba',
        'prefix' => '',
        'encoding' => 'utf8'
    );


## app/models/sentence.php

Tatoeba uses some other external tools that you won't necessarily need. These tools are:

* the search engine (Sphinx)
* the tools for romanization

If you're not going to work on the search or on the romanization and don't want to install these tools, you will have to uncomment a few things in the Sentence model (`app/models/sentence.php`).

line 274: uncomment "return array(1)"

    public function getSeveralRandomIds($lang = 'und',  $numberOfIdWanted = 10)
    {
        // Uncomment the line below if you don't have sphinx installed.
        return array(1);`

line 847: uncomment "return false"

    public function generateMetas(&$sentenceArray) 
    {
        // Uncomment the line below you don't have the Chinese
        // romanization tools installed.
        return false;`
	
## Make the following directory writable.

/app/tmp/cache/

## For XAMPP (at least on a Mac)

You'll need to up the default thread_stack from 64K to 256K.
(I tried 128K, but that wasn't enough.)

/Applications/XAMPP/xamppfiles/etc/my.cnf

thread_stack = 256K


# Database

Now you need to create the database, and import the necessary things. The scripts you will need are in the `docs/database` folder.

First, create the database. Make sure the name you use here is the name you've set in app/core/database.php. I'll name it `tatoeba`.

    CREATE DATABASE tatoeba
    USE tatoeba

Then execute the following scripts.

1. This will create all the tables (they will be empty).

        \. docs/database/database_20130406.sql

2. These will create a minimal user base (one user in each group), and the associated access rights for each user.

        \. docs/database/import/groups.sql
        \. docs/database/import/users.sql
        \. docs/database/import/acos.sql
        \. docs/database/import/aros.sql
        \. docs/database/import/aros_acos.sql

3. This will import the list of countries. It's used in profile.

        \. docs/database/import/countries.sql

4. After you start adding sentences, you will get some errors related to the fact that the table langStats is empty. This table contains lists the different languages in which the sentences are and the number of sentences for each language. So after adding your first sentences, and also everytime you will add sentences in a language that wasn't present before, you will need to execute the following script to update the langStats table:

        \. docs/database/scripts/create_fill_langStats.sql


You can fill your database with the [exported CSV files](http://tatoeba.org/files/downloads/). For example, adapt and use the following commands to add sentences:

    cat sentences.csv | while read -r id lang text; do echo "insert into sentences (id, lang, text) values ('$id', '$lang', '${text//\'/\'}');"; done | sudo mysql -u root tatoeba_database
    cat links.csv | while read -r id1 id2; do echo "insert into sentences_translations (sentence_id, translation_id) values ($id1, $id2);"; done | sudo mysql -u root tatoeba_database
Expect this to take some time (dozens of minutes) and fill some disk space (several gigabytes).

**TODO** Would probably be nice to have some data for sentences, comments, wall messages as well. Although they can be created manually once logged in.




# Logging in

Now you should be able to go to your local Tatoeba URL (http://tatoeba.dev/ in my case), and be able to log in.

The default usernames are: 

* admin
* corpus_maintainer
* advanced_contributor
* contributor
* inactive
* spammer

The default password for each user is '123456'.

version at: 02/05/2013, 22:00

# How to Install the CakePHP Version of the Tatoeba Web App

NOTE: This is about installing the PHP version (i.e. current version) of Tatoeba.

# Downloads

## Required tools

* Apache
* PHP
* MySQL
* SVN Client

For those who are on Windows:

* [XAMPP](http://www.apachefriends.org/en/xampp-windows.html) will do the trick for Apache/PHP/MySQL.
* [TortoiseSVN](http://tortoisesvn.net/downloads.html) for the SVN client

For those who are on Macintosh or Linux:

* [XAMPP](http://www.apachefriends.org/en/xampp.html) works, too.

## Source code

The source code is hosted on a platform called Assembla:
[https://www.assembla.com/code/tatoeba2/subversion/nodes](https://www.assembla.com/code/tatoeba2/subversion/nodes)

Repository URL:
[https://subversion.assembla.com/svn/tatoeba2/](https://subversion.assembla.com/svn/tatoeba2/)

URL you'll want to checkout:
[https://subversion.assembla.com/svn/tatoeba2/trunk/](https://subversion.assembla.com/svn/tatoeba2/trunk/)


# Configuration

## Virtual host

You may set up a virtual host. I personally use http://tatoeba.dev/ as my local URL.

To find out how to set up a virtual host on a Macintosh using XAMPP see the following page.
[http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/](http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/)

On Windows 7 using XAMPP:
[http://austinpassy.com/tutorials/setting-up-virtual-hosts-wordpress-multisite-with-xampp-on-windows-7/](http://austinpassy.com/tutorials/setting-up-virtual-hosts-wordpress-multisite-with-xampp-on-windows-7/)


**TODO** More details on how to do that.


## mod_rewrite

You need to have mod_rewrite enabled, it's necessary for CakePHP.

**TODO** More details on how to do that.


## app/config/core.php

In the file `app/config/core.php`, put into comments the part about XCache.

    /*
    Cache::config('default', array(
        'engine' => 'Xcache', //[required]
        'duration'=> 3600, //[optional]
        'probability'=> 100, //[optional]
        'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
        'user' => 'user', //user from xcache.admin.user settings
        'password' => 'password', //plaintext password (xcache.admin.pass)
    ));
    Cache::config('_cake_core_', array(
        'engine' => 'Xcache', //[required]
        'duration'=> 3600, //[optional]
        'probability'=> 100, //[optional]
        'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
        'user' => 'user', //user from xcache.admin.user settings
        'password' => 'password', //plaintext password (xcache.admin.pass)
    ));
    */

And uncomment the line to use the "File" cache engine:

`Cache::config('default', array('engine' => 'File'));`



## app/config/database.php

In the file `app/config/database.php`, set your login, password and database in the $default array.

    var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => 'somepassword',
        'database' => 'tatoeba',
        'prefix' => '',
        'encoding' => 'utf8'
    );


## app/models/sentence.php

Tatoeba uses some other external tools that you won't necessarily need. These tools are:

* the search engine (Sphinx)
* the tools for romanization

If you're not going to work on the search or on the romanization and don't want to install these tools, you will have to uncomment a few things in the Sentence model (`app/models/sentence.php`).

line 274: uncomment "return array(1)"

    public function getSeveralRandomIds($lang = 'und',  $numberOfIdWanted = 10)
    {
        // Uncomment the line below if you don't have sphinx installed.
        return array(1);`

line 847: uncomment "return false"

    public function generateMetas(&$sentenceArray) 
    {
        // Uncomment the line below you don't have the Chinese
        // romanization tools installed.
        return false;`
	
## Make the following directory writable.

/app/tmp/cache/

## For XAMPP (at least on a Mac)

You'll need to up the default thread_stack from 64K to 256K.
(I tried 128K, but that wasn't enough.)

/Applications/XAMPP/xamppfiles/etc/my.cnf

thread_stack = 256K


# Database

Now you need to create the database, and import the necessary things. The scripts you will need are in the `docs/database` folder.

First, create the database. Make sure the name you use here is the name you've set in app/core/database.php. I'll name it `tatoeba`.

    CREATE DATABASE tatoeba
    USE tatoeba

Then execute the following scripts.

1. This will create all the tables (they will be empty).

        \. docs/database/database_20130406.sql

2. These will create a minimal user base (one user in each group), and the associated access rights for each user.

        \. docs/database/import/groups.sql
        \. docs/database/import/users.sql
        \. docs/database/import/acos.sql
        \. docs/database/import/aros.sql
        \. docs/database/import/aros_acos.sql

3. This will import the list of countries. It's used in profile.

        \. docs/database/import/countries.sql

4. After you start adding sentences, you will get some errors related to the fact that the table langStats is empty. This table contains lists the different languages in which the sentences are and the number of sentences for each language. So after adding your first sentences, and also everytime you will add sentences in a language that wasn't present before, you will need to execute the following script to update the langStats table:

        \. docs/database/scripts/create_fill_langStats.sql


You can fill your database with the [exported CSV files](http://tatoeba.org/files/downloads/). For example, adapt and use the following commands to add sentences:

    cat sentences.csv | while read -r id lang text; do echo "insert into sentences (id, lang, text) values ('$id', '$lang', '${text//\'/\'}');"; done | sudo mysql -u root tatoeba_database
    cat links.csv | while read -r id1 id2; do echo "insert into sentences_translations (sentence_id, translation_id) values ($id1, $id2);"; done | sudo mysql -u root tatoeba_database
Expect this to take some time (dozens of minutes) and fill some disk space (several gigabytes).

**TODO** Would probably be nice to have some data for sentences, comments, wall messages as well. Although they can be created manually once logged in.




# Logging in

Now you should be able to go to your local Tatoeba URL (http://tatoeba.dev/ in my case), and be able to log in.

The default usernames are: 

* admin
* corpus_maintainer
* advanced_contributor
* contributor
* inactive
* spammer

The default password for each user is '123456'.

Note

The lines in green are the lines that have been added in the new version. The lines in red are those that have been removed.