deploy.sh 3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
#!/bin/sh
# Running as the 'gliders' user, fetch and deploy the
# backend tools and website. This script will download
# all our logs from various dockservers and
# migrates data (such as users) from the old gliders
# website database.

# Generate a SSH key
# We want passwordless authentication when logging into
# dockservers from scripts etc.
ssh-keygen

13 14 15 16 17
echo "Please copy the public key on your gitlab account with the name gliders"
cat /home/gliders/.ssh/id_rsa.pub
echo "Plese press return when you are done"
read

18 19 20
#We need to go to the gliders home directory first
cd /home/gliders

21 22 23 24 25 26 27
# Install Composer
mkdir -p /home/gliders/bin
curl -sS https://getcomposer.org/installer | php -- --install-dir=bin
ln -s /home/gliders/bin/composer.phar /home/gliders/bin/composer

# Set up python environment and directories
mkdir -p /home/gliders/code
28
mkdir -p /home/gliders/devtools
29
mkdir -p /home/gliders/pythonenv
30 31 32 33 34
mkdir -p /var/gliders/www /var/gliders/www_dev /var/gliders/logs
virtualenv /home/gliders/pythonenv --system-site-packages
echo 'source /home/gliders/pythonenv/bin/activate' >> /home/gliders/.bash_profile
source /home/gliders/pythonenv/bin/activate

35 36 37 38 39 40
# Set up our web dev tools dirs...
ln -s /usr/share/phpMyAdmin /home/gliders/devtools/phpma
# PHPCI and APC-Admin would be useful, but as we don't need
# them for the production server they're left out of this
# script.

41 42 43 44 45 46 47 48 49
cd /home/gliders/code
# Add contents of /home/gliders/.ssh/id_rsa.pub to GitLab, then:
git clone git@gitlab.noc.soton.ac.uk:owanes/gliders-tools.git
git clone git@gitlab.noc.soton.ac.uk:owanes/gliders-website.git

# Install the gliders DB and parser python libraries,
# then fetch all our log files and parse them!
cd gliders-tools
python setup.py install
50 51 52 53 54 55 56
pip install pymysql
pip install python-dateutil
pip install lxml==3.4.4
pip install sqlalchemy
pip install elasticsearch
pip install pymongo
python setup.py install
57

58 59
sudo cp fetchlogs.service /etc/systemd/system/
sudo systemctl enable fetchlogs
60

61 62 63 64 65
echo "please enter your mysql root user password"
read -s pass
mysql -u root -p$pass < new_schema.sql
echo "CREATE USER 'gliders'@'%' IDENTIFIED BY '"$pass"' ;" | mysql -u root -p$pass
echo "GRANT ALL ON gliders.* TO 'gliders'@'%';" | mysql -u root -p$pass
66
cd bin
67
sh migrate_data.sh $pass
68
sudo systemctl start fetchlogs
69

Owain Jones's avatar
Owain Jones committed
70 71
# Set up a GitHub API key and add it to .bash_profile
# export API_KEY=...
72 73 74 75 76 77 78 79 80
echo "Deploying the website requires interacting with GitHub a lot."
echo "We need a GitHub API Key so we don't go over the public limits."
echo "Please go to: https://github.com/settings/tokens/new?scopes=repo&description=`hostname`"
echo "Generate the token and then paste it into the prompt below."
read -p "Token: " GITHUB_API_KEY
echo "export GITHUB_API_KEY=$GITHUB_API_KEY" >> ~/.bashrc
echo "export BOWERPHP_TOKEN=$GITHUB_API_KEY" >> ~/.bashrc
composer config -g github-oauth.github.com $GITHUB_API_KEY
export BOWERPHP_TOKEN=$GITHUB_API_KEY
Owain Jones's avatar
Owain Jones committed
81

82 83
# Deploy the website
cd /home/gliders/code/gliders-website
84
sh bin/deploy.sh /var/gliders/www_dev dev
85
sh bin/deploy.sh /var/gliders/www prod