SetupTasks » History » Version 10

Chris Cannam, 2010-12-07 09:19 PM

1 1 Chris Cannam
h1. Setup on new server tasks
2 1 Chris Cannam
3 2 Chris Cannam
# -Install Apache, Postgres, Varnish, etc-
4 2 Chris Cannam
# -Install "Ruby EE":http://www.rubyenterpriseedition.com/ and "Phusion Passenger":http://modrails.org/-
5 2 Chris Cannam
# -Install (via gem) rake, rails version 2.3.5, pg, rmagick, ruby-openid-
6 2 Chris Cannam
# -Clone current soundsoftware code-
7 2 Chris Cannam
# -Set up postgresql user and initialise database-
8 2 Chris Cannam
# -Redmine initialisation-
9 2 Chris Cannam
# -Redmine permissions and ownership-
10 2 Chris Cannam
# -Basic Apache config for site on :81-
11 2 Chris Cannam
# -Varnish config for :80->:81-
12 4 Chris Cannam
# -PHP5 via fcgi-
13 4 Chris Cannam
# -Basic Drupal install-
14 8 Chris Cannam
# Initial database load
15 8 Chris Cannam
# Pull across initial hg repos
16 8 Chris Cannam
# Configure SSL server
17 8 Chris Cannam
# Set up hgwebdir, reposman-soundsoftware, soundsoftware Apache auth (depend on SSL, db, web service key in db etc)
18 1 Chris Cannam
# Pull across remaining bits of redmine server that are not in hg (fonts, files, etc)
19 1 Chris Cannam
# Pull across Drupal theme etc
20 1 Chris Cannam
# Ensure machine can be routed to!
21 1 Chris Cannam
# Set up test instances
22 1 Chris Cannam
23 1 Chris Cannam
in the future: put old host in admin mode, re-point dns, final hg / database / redmine files update
24 6 Chris Cannam
25 6 Chris Cannam
h2. MySQL to Postgres migration notes
26 6 Chris Cannam
27 6 Chris Cannam
Just to make things more fun, we're migrating the existing databases from MySQL to pgsql.
28 6 Chris Cannam
29 9 Chris Cannam
For Redmine, we don't attempt to dump and reload the schema -- more sensible to use Redmine to set up the schema (in case it has any database-specific set up) and then massage the data as we load it.  We just dump and reload the row data.  That way we only have to fix problems once.
30 6 Chris Cannam
31 9 Chris Cannam
"mysql2pgsql":http://pgfoundry.org/projects/mysql2pgsql/ does a reasonable job of converting the data, as far as it goes.  Some problems remain:
32 6 Chris Cannam
33 7 Chris Cannam
<pre>$ grep ERROR log/dbload.log |sort|uniq
34 6 Chris Cannam
ERROR:  column "admin" is of type boolean but expression is of type integer
35 6 Chris Cannam
ERROR:  column "assignable" is of type boolean but expression is of type integer
36 6 Chris Cannam
ERROR:  column "hide_mail" is of type boolean but expression is of type integer
37 6 Chris Cannam
ERROR:  column "is_closed" is of type boolean but expression is of type integer
38 6 Chris Cannam
ERROR:  column "is_default" is of type boolean but expression is of type integer
39 6 Chris Cannam
ERROR:  column "is_in_chlog" is of type boolean but expression is of type integer
40 6 Chris Cannam
ERROR:  column "is_public" is of type boolean but expression is of type integer
41 6 Chris Cannam
ERROR:  column "mail_notification" is of type boolean but expression is of type integer
42 6 Chris Cannam
ERROR:  column "onthefly_register" is of type boolean but expression is of type integer
43 6 Chris Cannam
ERROR:  column "protected" is of type boolean but expression is of type integer
44 6 Chris Cannam
ERROR:  duplicate key value violates unique constraint "unique_schema_migrations"
45 6 Chris Cannam
ERROR:  INSERT has more expressions than target columns
46 1 Chris Cannam
ERROR:  invalid input syntax for type bytea
47 7 Chris Cannam
$
48 6 Chris Cannam
</pre>
49 10 Chris Cannam
50 10 Chris Cannam
The boolean ones are understandable -- mysqldump writes them out as ones and zeros and you can't tell they were intended to be boolean without the schema.
51 10 Chris Cannam
52 10 Chris Cannam
The duplicate key values we don't care about, in fact we're glad they're rejected, because they come from the Redmine db:migrate which we've already run anyway.
53 10 Chris Cannam
54 10 Chris Cannam
"INSERT has more expressions"... that's a strange one.  Is our schema out of date?