5 alias sudo='sudo env PATH=$PATH $@'
10 LOG_FILE=$RUN_DIR/install.log
11 cp $LOG_FILE $LOG_FILE.old 2>&1 &> /dev/null || true
18 log $(eval "echo $1 = \$$1")
23 log "Changing directory to $1"
30 BASEDIR=/usr/local/src
33 XTUPLE_REPO='http://sourceforge.net/projects/postbooks/files/mobile-debian'
35 while getopts ":d:ipnhmx-:" opt; do
52 # iNitialize the databases and stuff
61 # Checkout a specific version of the xTuple repo
65 # only for initializing a fresh debian package install
70 # select the version to use for nodejs
75 echo "Usage: install_xtuple [OPTION]"
76 echo "Build the full xTuple Mobile Development Environment."
78 echo "To install everything, run sudo ./scripts/install_xtuple.sh"
79 echo "Everything will go in /usr/local/src/xtuple"
106 if [ -z "$NODE_VERSION" ]
112 log "installing debian packages..."
113 echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' | sudo tee /etc/apt/sources.list.d/pgdg.list > /dev/null
114 sudo wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
115 sudo apt-get -qq update 2>&1 | tee -a $LOG_FILE
116 sudo apt-get -q -y install curl build-essential libssl-dev postgresql-9.1 postgresql-server-dev-9.1 postgresql-contrib-9.1 postgresql-9.1-plv8 2>&1 | tee -a $LOG_FILE
118 if [ ! -d "/usr/local/nvm" ]; then
119 sudo rm -f /usr/local/bin/nvm
120 sudo mkdir /usr/local/nvm
121 sudo git clone https://github.com/xtuple/nvm.git /usr/local/nvm
122 sudo ln -s /usr/local/nvm/nvm_bin.sh /usr/local/bin/nvm
123 sudo chmod +x /usr/local/bin/nvm
125 sudo nvm install $NODE_VERSION
126 sudo nvm use $NODE_VERSION
127 sudo nvm alias default $NODE_VERSION
128 sudo nvm alias xtuple $NODE_VERSION
130 # npm no longer supports its self-signed certificates
131 log "telling npm to use known registrars..."
134 log "installing npm modules..."
135 npm install --unsafe-perm 2>&1 | tee -a $LOG_FILE
138 # Use only if running from a debian package install for the first time
140 if [ "$USER" = "root" ]
142 echo "Run this as a normal user"
145 echo "WARNING: This will wipe clean the xtuple folder in your home directory."
146 echo "Hit ctrl-c to cancel."
148 read -p "Github username: " USERNAME ERRS
151 git clone git://github.com/$USERNAME/xtuple.git
152 git remote add xtuple git://github.com/xtuple/xtuple.git
155 # Configure postgres and initialize postgres databases
158 sudo mkdir -p $BASEDIR/postgres
164 PGDIR=/etc/postgresql/9.1/main
166 log "copying configs..."
167 sudo cp $PGDIR/postgresql.conf $PGDIR/postgresql.conf.default
168 sudo cat $PGDIR/postgresql.conf.default | sed "s/#listen_addresses = \S*/listen_addresses = \'*\'/" | sed "s/#custom_variable_classes = ''/custom_variable_classes = 'plv8'/" | sudo tee $PGDIR/postgresql.conf > /dev/null
169 sudo chown postgres $PGDIR/postgresql.conf
171 sudo cp $PGDIR/pg_hba.conf $PGDIR/pg_hba.conf.default
172 sudo cat $PGDIR/pg_hba.conf.default | sed "s/local\s*all\s*postgres.*/local\tall\tpostgres\ttrust/" | sed "s/local\s*all\s*all.*/local\tall\tall\ttrust/" | sed "s#host\s*all\s*all\s*127\.0\.0\.1.*#host\tall\tall\t127.0.0.1/32\ttrust#" | sudo tee $PGDIR/pg_hba.conf > /dev/null
173 sudo chown postgres $PGDIR/pg_hba.conf
175 log "restarting postgres..."
176 sudo service postgresql restart
178 log "dropping existing db, if any..."
179 sudo -u postgres dropdb $DATABASE || true
181 cdir $BASEDIR/postgres
184 sudo wget -qO init.sql http://sourceforge.net/projects/postbooks/files/03%20PostBooks-databases/4.2.1/init.sql/download
185 sudo -u postgres psql -q -f 'init.sql' 2>&1 | tee -a $LOG_FILE
189 log "Setting properties of admin user"
191 cdir $XT_DIR/node-datasource
193 cat sample_config.js | sed "s/testDatabase: \"\"/testDatabase: '$DATABASE'/" > config.js
194 log "Configured node-datasource"
195 log "The database is now set up..."
197 mkdir -p $XT_DIR/node-datasource/lib/private
198 cdir $XT_DIR/node-datasource/lib/private
199 cat /dev/urandom | tr -dc '0-9a-zA-Z!@#$%^&*_+-'| head -c 64 > salt.txt
201 openssl genrsa -des3 -out server.key -passout pass:xtuple 1024 2>&1 | tee -a $LOG_FILE
202 openssl rsa -in server.key -passin pass:xtuple -out key.pem -passout pass:xtuple 2>&1 | tee -a $LOG_FILE
203 openssl req -batch -new -key key.pem -out server.csr -subj '/CN='$(hostname) 2>&1 | tee -a $LOG_FILE
204 openssl x509 -req -days 365 -in server.csr -signkey key.pem -out server.crt 2>&1 | tee -a $LOG_FILE
207 log "Failed to generate server certificate in $XT_DIR/node-datasource/lib/private"
211 cdir $XT_DIR/test/lib
212 cat sample_login_data.js | sed "s/org: \'dev\'/org: \'$DATABASE\'/" > login_data.js
213 log "Created testing login_data.js"
216 npm run-script test-build 2>&1 | tee -a $LOG_FILE
218 log "You can login to the database and mobile client with:"
219 log " username: admin"
220 log " password: admin"
221 log "Installation now finished."
222 log "Run the following commands to start the datasource:"
225 log "cd node-datasource"
228 log "cd /usr/local/src/xtuple/node-datasource/"
240 log "install_packages()"
244 log "package installation failed."
251 log "setup_postgres()"
260 log "init_everythings()"
264 log "init_everythings failed"