5 echo -n "Checking for sudo..."
8 echo "Please install sudo and grant yourself access to sudo:"
10 echo " # apt-get install sudo"
11 echo " # addgroup $USER sudo"
16 alias sudo='sudo env PATH=$PATH $@'
18 # Make sure we have all the essential tools we need
20 sudo apt-get -q -y install \
23 python-software-properties \
24 software-properties-common
28 DEBDIST=`lsb_release -c -s`
29 echo "Trying to install xTuple for platform ${DEBDIST}"
32 LOG_FILE=$RUN_DIR/install.log
33 cp $LOG_FILE $LOG_FILE.old 2>&1 &> /dev/null || true
40 log $(eval "echo $1 = \$$1")
45 log "Changing directory to $1"
52 BASEDIR=/usr/local/src
55 XTUPLE_REPO='http://sourceforge.net/projects/postbooks/files/mobile-debian'
57 while getopts ":d:ipnhmx-:" opt; do
74 # iNitialize the databases and stuff
83 # Checkout a specific version of the xTuple repo
87 # only for initializing a fresh debian package install
92 # select the version to use for nodejs
97 echo "Usage: install_xtuple [OPTION]"
98 echo "Build the full xTuple Mobile Development Environment."
100 echo "To install everything, run bash /scripts/install_xtuple.sh"
127 if [ -z "$NODE_VERSION" ]
133 log "installing debian packages..."
134 if [ "${DEBDIST}" = "wheezy" ];
136 # for Debian wheezy (7.x) we need some things from the wheezy-backports
137 sudo add-apt-repository -y "deb http://ftp.debian.org/debian wheezy-backports main"
139 sudo add-apt-repository -y "deb http://apt.postgresql.org/pub/repos/apt/ ${DEBDIST}-pgdg main"
140 sudo wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
141 sudo apt-get -qq update 2>&1 | tee -a $LOG_FILE
142 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
144 if [ ! -d "/usr/local/nvm" ]; then
145 sudo rm -f /usr/local/bin/nvm
146 sudo mkdir /usr/local/nvm
147 sudo git clone https://github.com/xtuple/nvm.git /usr/local/nvm
148 sudo ln -s /usr/local/nvm/nvm_bin.sh /usr/local/bin/nvm
149 sudo chmod +x /usr/local/bin/nvm
151 sudo nvm install $NODE_VERSION
152 sudo nvm use $NODE_VERSION
153 sudo nvm alias default $NODE_VERSION
154 sudo nvm alias xtuple $NODE_VERSION
157 npm install -fg npm@1.4.25
158 # npm no longer supports its self-signed certificates
159 log "telling npm to use known registrars..."
162 log "installing npm modules..."
163 npm install --unsafe-perm 2>&1 | tee -a $LOG_FILE
166 # Use only if running from a debian package install for the first time
168 if [ "$USER" = "root" ]
170 echo "Run this as a normal user"
173 echo "WARNING: This will wipe clean the xtuple folder in your home directory."
174 echo "Hit ctrl-c to cancel."
176 read -p "Github username: " USERNAME ERRS
179 git clone git://github.com/$USERNAME/xtuple.git
180 git remote add xtuple git://github.com/xtuple/xtuple.git
183 # Configure postgres and initialize postgres databases
186 sudo mkdir -p $BASEDIR/postgres
192 PGDIR=/etc/postgresql/9.1/main
194 log "copying configs..."
195 sudo cp $PGDIR/postgresql.conf $PGDIR/postgresql.conf.default
196 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
197 sudo chown postgres $PGDIR/postgresql.conf
199 sudo cp $PGDIR/pg_hba.conf $PGDIR/pg_hba.conf.default
200 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
201 sudo chown postgres $PGDIR/pg_hba.conf
203 log "restarting postgres..."
204 sudo service postgresql restart
206 log "dropping existing db, if any..."
207 sudo -u postgres dropdb $DATABASE || true
209 cdir $BASEDIR/postgres
212 sudo wget -qO init.sql http://sourceforge.net/projects/postbooks/files/03%20PostBooks-databases/4.2.1/init.sql/download
213 sudo -u postgres psql -q -f 'init.sql' 2>&1 | tee -a $LOG_FILE
217 log "Setting properties of admin user"
219 cdir $XT_DIR/node-datasource
221 cat sample_config.js | sed "s/testDatabase: \"\"/testDatabase: '$DATABASE'/" > config.js
222 log "Configured node-datasource"
223 log "The database is now set up..."
225 mkdir -p $XT_DIR/node-datasource/lib/private
226 cdir $XT_DIR/node-datasource/lib/private
227 cat /dev/urandom | tr -dc '0-9a-zA-Z!@#$%^&*_+-'| head -c 64 > salt.txt
229 cat /dev/urandom | tr -dc '0-9a-zA-Z!@#$%^&*_+-'| head -c 64 > encryption_key.txt
230 log "Created encryption key"
231 openssl genrsa -des3 -out server.key -passout pass:xtuple 1024 2>&1 | tee -a $LOG_FILE
232 openssl rsa -in server.key -passin pass:xtuple -out key.pem -passout pass:xtuple 2>&1 | tee -a $LOG_FILE
233 openssl req -batch -new -key key.pem -out server.csr -subj '/CN='$(hostname) 2>&1 | tee -a $LOG_FILE
234 openssl x509 -req -days 365 -in server.csr -signkey key.pem -out server.crt 2>&1 | tee -a $LOG_FILE
237 log "Failed to generate server certificate in $XT_DIR/node-datasource/lib/private"
241 cdir $XT_DIR/test/lib
242 cat sample_login_data.js | sed "s/org: \'dev\'/org: \'$DATABASE\'/" > login_data.js
243 log "Created testing login_data.js"
246 npm run-script test-build 2>&1 | tee -a $LOG_FILE
248 log "You can login to the database and mobile client with:"
249 log " username: admin"
250 log " password: admin"
251 log "Installation now finished."
252 log "Run the following commands to start the datasource:"
255 log "cd node-datasource"
258 log "cd /usr/local/src/xtuple/node-datasource/"
270 log "install_packages()"
274 log "package installation failed."
281 log "setup_postgres()"
290 log "init_everythings()"
294 log "init_everythings failed"