|
@@ -13,35 +13,14 @@
|
13
|
13
|
#
|
14
|
14
|
# * DATABASE_TYPE (values: postgresql, mysql, sqlite)
|
15
|
15
|
# * DATABASE_USER
|
16
|
|
-# * DATABASE PASSWORD
|
|
16
|
+# * DATABASE_PASSWORD
|
17
|
17
|
# * DATABASE_HOST
|
|
18
|
+# * DATABASE_PORT
|
18
|
19
|
# * DATABASE_NAME
|
19
|
20
|
#
|
20
|
21
|
|
21
|
22
|
# Check environment variables
|
22
|
|
-./check_env_vars.sh
|
23
|
|
-
|
24
|
|
-
|
25
|
|
-
|
26
|
|
-
|
27
|
|
-# MySQL case: engine is mysql+oursql
|
28
|
|
-if [ "$DATABASE_TYPE" = mysql ] ; then
|
29
|
|
- DATABASE_TYPE=mysql+oursql
|
30
|
|
-fi
|
31
|
|
-
|
32
|
|
-# Script preparation
|
33
|
|
-FRESH_INSTALL=false
|
34
|
|
-
|
35
|
|
-# Start PostgreSQL
|
36
|
|
-service postgresql start # Broken if volume empty ... ???
|
37
|
|
-
|
38
|
|
-# Init database if needed
|
39
|
|
-if ! [ "$( su - postgres -s /bin/bash -c "psql -tAc \"SELECT 1 FROM pg_database WHERE datname='tracim'\"" )" = '1' ]; then
|
40
|
|
- FRESH_INSTALL=true
|
41
|
|
- su - postgres -s /bin/bash -c "psql -c \"CREATE DATABASE tracim;\""
|
42
|
|
- su - postgres -s /bin/bash -c "psql -c \"CREATE USER tracim WITH PASSWORD 'tracim';\""
|
43
|
|
- su - postgres -s /bin/bash -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE tracim TO tracim;\""
|
44
|
|
-fi
|
|
23
|
+/tracim/check_env_vars.sh
|
45
|
24
|
|
46
|
25
|
# Create config.ini file if no exist
|
47
|
26
|
if [ ! -f /etc/tracim/config.ini ]; then
|
|
@@ -60,13 +39,37 @@ if [ ! -f /etc/tracim/uwsgi.ini ]; then
|
60
|
39
|
cp /tracim/tracim/uwsgi.ini.template /etc/tracim/uwsgi.ini
|
61
|
40
|
fi
|
62
|
41
|
|
63
|
|
-# Update config with ENV
|
64
|
|
-# TODO Manage other ENV vars
|
65
|
|
-sed -i "s/\(sqlalchemy.url *= *\).*/\1postgresql:\/\/tracim:tracim@127.0.0.1:5432\/tracim?client_encoding=utf8/" /etc/tracim/config.ini
|
|
42
|
+# MySQL case
|
|
43
|
+if [ "$DATABASE_TYPE" = mysql ] ; then
|
|
44
|
+ # Ensure DATABASE_PORT is set
|
|
45
|
+ if ! [ -n "$DATABASE_PORT" ]; then
|
|
46
|
+ DATABASE_PORT=3306
|
|
47
|
+ fi
|
|
48
|
+ # engine is mysql+oursql
|
|
49
|
+ DATABASE_TYPE=mysql+oursql
|
|
50
|
+fi
|
|
51
|
+
|
|
52
|
+# PostgreSQL case
|
|
53
|
+if [ "$DATABASE_TYPE" = postgresql ] ; then
|
|
54
|
+ # Ensure DATABASE_PORT is set
|
|
55
|
+ if ! [ -n "$DATABASE_PORT" ]; then
|
|
56
|
+ DATABASE_PORT=5432
|
|
57
|
+ fi
|
|
58
|
+ DATABASE_SUFFIX="?client_encoding=utf8"
|
|
59
|
+fi
|
|
60
|
+
|
|
61
|
+# Update sqlalchemy.url
|
|
62
|
+sed -i "s/\(sqlalchemy.url *= *\).*/\\sqlalchemy.url = $DATABASE_TYPE:\/\/$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST:$DATABASE_PORT\/$DATABASE_NAME$DATABASE_SUFFIX/" /etc/tracim/config.ini
|
66
|
63
|
|
67
|
64
|
# Initialize database if it is a fresh install
|
68
|
|
-if [ "$FRESH_INSTALL" = true ] ; then
|
69
|
|
- echo "Init tracim database"
|
|
65
|
+if [ "$DATABASE_TYPE" = postgresql ] ; then
|
|
66
|
+ TEST_TABLE=$(PGPASSWORD="$DATABASE_PASSWORD" psql -U ${DATABASE_USER} -h ${DATABASE_HOST} -d ${DATABASE_NAME} -t -c "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'content' );")
|
|
67
|
+ if [ ${TEST_TABLE} = f ] ; then
|
|
68
|
+ INIT_DATABASE=true
|
|
69
|
+ fi
|
|
70
|
+fi
|
|
71
|
+
|
|
72
|
+if [ "$INIT_DATABASE" = true ] ; then
|
70
|
73
|
cd /tracim/tracim/ && gearbox setup-app -c config.ini
|
71
|
74
|
fi
|
72
|
75
|
|