Support #549
Updated by Daniel Curtis almost 10 years ago
This is a simple guide on setting up a Trytond server on FreeBSD 9.2.
* Update packages and ports tree:
<pre>
pkg update && pkg upgrade
portsnap fetch extract
</pre>
---
h1. Install MariaDB server
* Start by installing the mariadb-server and mariadb-client packages:
<pre>
pkg install mariadb55-{server,client}
</pre>
h2. Configure MariaDB server
* Copy a base MariaDB configuration to use
<pre>
cp /usr/local/share/mysql/my-small.cnf /var/db/mysql/my.cnf
</pre>
* Tuning: Copy one of the default config files and change the max packet size:
<pre>
vi /var/db/mysql/my.cnf
</pre>
#* and modify @max_allowed_packet@ to 32M
<pre>
max_allowed_packet = 32M
</pre>
* Enable and start MariaDB
<pre>
echo 'mysql_enable="YES"' >> /etc/rc.conf
service mysql-server start
</pre>
* Prepare Database for use by running the secure installation. +Choose a root password+ and answer +yes+ to all questions.
<pre>
mysql_secure_installation
</pre>
h3. Create MariaDB Databases and Users
* Login to MariaDB and create appropriate databases and users.
<pre>
mysql -u root -p
</pre>
#* and run the following SQL queries to create the *trytond* database and user:
<pre>
CREATE DATABASE trytond CHARACTER SET utf8;
CREATE USER 'trytond'@'127.0.0.1' IDENTIFIED BY 'SecretSecretPassword';
GRANT ALL PRIVILEGES ON trytond.* TO 'trytond'@'127.0.0.1';
flush privileges;
</pre>
h3. Create Trytond Database Scheme
* Log into mysql and switch the trytond database:
<pre>
mysql -u root -p
USE trytond;
</pre>
#* And add the following:
<pre>
CREATE TABLE ir_configuration (
id BIGINT AUTO_INCREMENT NOT NULL,
language VARCHAR(255),
PRIMARY KEY(id)
) ENGINE=InnoDB;
CREATE TABLE ir_model (
id BIGINT AUTO_INCREMENT NOT NULL,
model VARCHAR(255) NOT NULL,
name VARCHAR(255),
info TEXT,
module VARCHAR(255),
PRIMARY KEY(id)
) ENGINE=InnoDB;
CREATE TABLE ir_model_field (
id BIGINT AUTO_INCREMENT NOT NULL,
model BIGINT,
name VARCHAR(255) NOT NULL,
relation VARCHAR(255),
field_description VARCHAR(255),
ttype VARCHAR(255),
help VARCHAR(255),
module VARCHAR(255),
PRIMARY KEY(id),
CONSTRAINT ir_model_field_model_fkey FOREIGN KEY (model) REFERENCES ir_model (id) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE ir_ui_view (
id BIGINT AUTO_INCREMENT NOT NULL,
model VARCHAR(255) NOT NULL,
type VARCHAR(255),
data TEXT NOT NULL,
field_childs VARCHAR(255),
priority BIGINT NOT NULL default 0,
PRIMARY KEY(id)
) ENGINE=InnoDB;
CREATE TABLE ir_ui_menu (
id BIGINT AUTO_INCREMENT NOT NULL,
parent BIGINT,
name VARCHAR(255) NOT NULL,
icon VARCHAR(255),
PRIMARY KEY (id),
CONSTRAINT ir_ui_menu_parent_fkey FOREIGN KEY (parent) REFERENCES ir_ui_menu (id) ON DELETE SET NULL
) ENGINE=InnoDB;
CREATE TABLE ir_translation (
id BIGINT AUTO_INCREMENT NOT NULL,
lang VARCHAR(255),
src TEXT,
src_md5 VARCHAR(32) NOT NULL,
name VARCHAR(255) NOT NULL,
res_id BIGINT,
value TEXT,
type VARCHAR(255),
module VARCHAR(255),
fuzzy BOOLEAN NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB;
CREATE TABLE ir_lang (
id BIGINT AUTO_INCREMENT NOT NULL,
name VARCHAR(255) NOT NULL,
code TEXT NOT NULL,
translatable BOOLEAN NOT NULL,
active BOOLEAN NOT NULL,
direction VARCHAR(255) NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB;
CREATE TABLE res_user (
id BIGINT AUTO_INCREMENT NOT NULL,
name VARCHAR(255) NOT NULL,
active BOOLEAN NOT NULL,
login VARCHAR(255) NOT NULL,
password VARCHAR(40),
PRIMARY KEY(id)
) ENGINE=InnoDB;
ALTER TABLE res_user ADD CONSTRAINT res_user_login_uniq UNIQUE (login);
INSERT INTO res_user (id, login, password, name, active) VALUES (0, 'root', NULL, 'Root', False);
UPDATE res_user set id = 0;
ALTER TABLE res_user AUTO_INCREMENT = 1;
CREATE TABLE res_group (
id BIGINT AUTO_INCREMENT NOT NULL,
name VARCHAR(255) NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB;
CREATE TABLE `res_user-res_group` (
`user` BIGINT NOT NULL,
`group` BIGINT NOT NULL,
CONSTRAINT `res_user-res_group_user_fkey` FOREIGN KEY (`user`) REFERENCES res_user (id) ON DELETE CASCADE,
CONSTRAINT `res_user-res_group_group_fkey` FOREIGN KEY (`group`) REFERENCES res_group (id) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE ir_module_module (
id BIGINT AUTO_INCREMENT NOT NULL,
create_uid BIGINT,
create_date TIMESTAMP NOT NULL,
write_date TIMESTAMP NULL,
write_uid BIGINT,
name VARCHAR(255) NOT NULL,
state VARCHAR(255),
PRIMARY KEY(id),
CONSTRAINT ir_module_module_create_uid_fkey FOREIGN KEY (create_uid) REFERENCES res_user (id) ON DELETE SET NULL,
CONSTRAINT ir_module_module_write_uid_fkey FOREIGN KEY (write_uid) REFERENCES res_user (id) ON DELETE SET NULL
) ENGINE=InnoDB;
ALTER TABLE ir_module_module ADD CONSTRAINT name_uniq UNIQUE (name);
CREATE TABLE ir_module_module_dependency (
id BIGINT AUTO_INCREMENT NOT NULL,
create_uid BIGINT,
create_date TIMESTAMP NOT NULL,
write_date TIMESTAMP NULL,
write_uid BIGINT,
name VARCHAR(255),
module BIGINT,
PRIMARY KEY(id),
CONSTRAINT ir_module_module_dependency_create_uid_fkey FOREIGN KEY (create_uid) REFERENCES res_user (id) ON DELETE SET NULL,
CONSTRAINT ir_module_module_dependency_write_uid_fkey FOREIGN KEY (write_uid) REFERENCES res_user (id) ON DELETE SET NULL,
CONSTRAINT ir_module_module_dependency_module_fkey FOREIGN KEY (module) REFERENCES ir_module_module (id) ON DELETE CASCADE
) ENGINE=InnoDB;
</pre>
---
h1. Install Trytond
* Install Trytond
<pre>
pkg install trytond28
</pre>
* Install Tryton modules:
<pre>
pkg install trytond28_account trytond28_account_asset trytond28_account_be trytond28_account_invoice trytond28_account_invoice_history trytond28_account_invoice_line_standalone trytond28_account_product trytond28_account_statement trytond28_account_stock_anglo_saxon trytond28_account_stock_continental trytond28_analytic_account trytond28_analytic_invoice trytond28_analytic_purchase trytond28_analytic_sale trytond28_calendar trytond28_calendar_classification trytond28_calendar_scheduling trytond28_calendar_todo trytond28_carrier trytond28_carrier_percentage trytond28_carrier_weight trytond28_company trytond28_company_work_time trytond28_country trytond28_currency trytond28_dashboard trytond28_google_maps trytond28_ldap_authentication trytond28_ldap_connection trytond28_party trytond28_party_siret trytond28_party_vcarddav trytond28_product trytond28_product_attribute trytond28_product_cost_fifo trytond28_product_cost_history trytond28_product_measurements trytond28_product_price_list trytond28_production trytond28_project trytond28_project_invoice trytond28_project_plan trytond28_project_revenue trytond28_purchase trytond28_purchase_invoice_line_standalone trytond28_purchase_shipment_cost trytond28_sale trytond28_sale_opportunity trytond28_sale_price_list trytond28_sale_shipment_cost trytond28_sale_supply trytond28_sale_supply_drop_shipment trytond28_stock trytond28_stock_forecast trytond28_stock_inventory_location trytond28_stock_location_sequence trytond28_stock_lot trytond28_stock_product_location trytond28_stock_split trytond28_stock_supply trytond28_stock_supply_day trytond28_stock_supply_forecast trytond28_stock_supply_production trytond28_timesheet
</pre>
* Install py27-MySQLdb from ports:
<pre>
cd /usr/ports/databases/py-MySQLdb
make install clean
</pre>
*NOTE*: This package must be installed from ports or else the mariadb55-client package will be overwritten by the mysql55-client package.
h2. Configure Trytond
* Edit the Trytond configuration file
<pre>
vi /usr/local/etc/trytond.conf
</pre>
#* Add/Modify the following:
<pre>
jsonrpc = trytond.exmaple.com:8000
db_type = mysql
db_host = 127.0.0.1
db_port = 3306
db_user = trytond
db_password = SuperSecretPassword
admin_passwd = SecretPassword
</pre>
* Enable Trytond to start at boot:
<pre>
echo 'trytond_enable="YES"' >> /etc/rc.conf
</pre>
* Start Trytond:
<pre>
service trytond start
</pre>
---
h2. Resources
* https://code.google.com/p/tryton/wiki/InstallationFreeBSD
* https://github.com/tryton/trytond
* http://www.dalescott.net/?p=2771