Skip to content

Instantly share code, notes, and snippets.

@raphaelchaib
Created November 22, 2015 02:10
Show Gist options
  • Select an option

  • Save raphaelchaib/8a42166b68fd1e845ad4 to your computer and use it in GitHub Desktop.

Select an option

Save raphaelchaib/8a42166b68fd1e845ad4 to your computer and use it in GitHub Desktop.
Setup OpenScholar on EC2
#!/bin/sh
#Ravi Menon
#20/Aug/2014
MYSQL_ROOT_PASSWD=~/.mysql_root
install_dependencies() {
#Refresh Ubuntu package list
sudo apt-get update
#Generate strong MySQL root password
if [ ! -f $MYSQL_ROOT_PASSWD ]; then
echo $(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;) > $MYSQL_ROOT_PASSWD
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $(< $MYSQL_ROOT_PASSWD)"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $(< $MYSQL_ROOT_PASSWD)"
fi
#Install the LAMP stack
sudo apt-get install apache2 -y
sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql -y
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt php5-gd php5-curl -y
#Install git
sudo apt-get build-dep git-core -y
sudo apt-get install git-core -y
#Install drupal
sudo apt-get install drush -y
#Install miscellaneous packages
sudo apt-get install expect
return
}
install_openscholar() {
OPENSCHOLAR_DIR=/tmp/openscholar
sudo rm -rf $OPENSCHOLAR_DIR
git clone https://github.com/openscholar/openscholar.git $OPENSCHOLAR_DIR
cd $OPENSCHOLAR_DIR
#Latest version as on 23 Aug, 2014
git checkout tags/SCHOLAR-3.15.1
sudo ./scripts/build
#Fix symlinks and create missing directories
sudo rm ./www/profiles/openscholar && sudo mv ./openscholar ./www/profiles/
sudo mkdir ./www/sites/default/files && sudo chmod a+w $_
sudo cp ./www/sites/default/default.settings.php ./www/sites/default/settings.php && sudo chmod a+w $_
#REMEMBER TO REMOVE WORLD WRITE PERMISSIONS AFTER INSTALLATION
sudo mv $OPENSCHOLAR_DIR/www /var/www/openscholar
return
}
configure_apache() {
#Add settings and enable site
sudo echo -e \
"<VirtualHost *:80>
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/openscholar/
ErrorLog ${APACHE_LOG_DIR}/openscholar_error.log
CustomLog ${APACHE_LOG_DIR}/openscholar_access.log combined
</VirtualHost>" | sudo dd of=/etc/apache2/sites-available/openscholar.conf
sudo a2dissite 000-default && sudo a2ensite openscholar
#Enable rewrite module and allow .htaccess override
sudo a2enmod rewrite
sudo bash -c "echo -e \"<Directory /var/www/openscholar/>\nAllowOverride All\n</Directory>\" >> /etc/apache2/apache2.conf"
sudo service apache2 reload
return
}
configure_mysql() {
#Create website database
mysql -u root -p$(< $MYSQL_ROOT_PASSWD) -e \
"DROP DATABASE IF EXISTS noiselab;
CREATE DATABASE noiselab;"
#Website user
MYSQL_OPENSCHOLAR_PASSWD=~/.mysql_openscholar
if [ ! -f $MYSQL_ROOT_PASSWD ]; then
echo $(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;) > $MYSQL_OPENSCHOLAR_PASSWD
mysql -u root -p$(< $MYSQL_ROOT_PASSWD) -e \
"CREATE USER 'openscholar'@'localhost' IDENTIFIED BY '$(< $MYSQL_OPENSCHOLAR_PASSWD)';
GRANT ALL PRIVILEGES ON noiselab.* TO 'openscholar'@'localhost';
FLUSH PRIVILEGES;"
fi
return
}
main () {
install_dependencies
install_openscholar
configure_apache
configure_mysql
return
}
main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment