-
-
Save rrosiek/8190550 to your computer and use it in GitHub Desktop.
#! /usr/bin/env bash | |
### | |
# | |
# install_mysql.sh | |
# | |
# This script assumes your Vagrantfile has been configured to map the root of | |
# your application to /vagrant and that your web root is the "public" folder | |
# (Laravel standard). Standard and error output is sent to | |
# /vagrant/vm_build.log during provisioning. | |
# | |
### | |
# Variables | |
DBHOST=localhost | |
DBNAME=dbname | |
DBUSER=dbuser | |
DBPASSWD=test123 | |
echo -e "\n--- Mkay, installing now... ---\n" | |
echo -e "\n--- Updating packages list ---\n" | |
apt-get -qq update | |
echo -e "\n--- Install base packages ---\n" | |
apt-get -y install vim curl build-essential python-software-properties git >> /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Add Node 6.x rather than 4 ---\n" | |
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - >> /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Updating packages list ---\n" | |
apt-get -qq update | |
# MySQL setup for development purposes ONLY | |
echo -e "\n--- Install MySQL specific packages and settings ---\n" | |
debconf-set-selections <<< "mysql-server mysql-server/root_password password $DBPASSWD" | |
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $DBPASSWD" | |
debconf-set-selections <<< "phpmyadmin phpmyadmin/dbconfig-install boolean true" | |
debconf-set-selections <<< "phpmyadmin phpmyadmin/app-password-confirm password $DBPASSWD" | |
debconf-set-selections <<< "phpmyadmin phpmyadmin/mysql/admin-pass password $DBPASSWD" | |
debconf-set-selections <<< "phpmyadmin phpmyadmin/mysql/app-pass password $DBPASSWD" | |
debconf-set-selections <<< "phpmyadmin phpmyadmin/reconfigure-webserver multiselect none" | |
apt-get -y install mysql-server phpmyadmin >> /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Setting up our MySQL user and db ---\n" | |
mysql -uroot -p$DBPASSWD -e "CREATE DATABASE $DBNAME" >> /vagrant/vm_build.log 2>&1 | |
mysql -uroot -p$DBPASSWD -e "grant all privileges on $DBNAME.* to '$DBUSER'@'localhost' identified by '$DBPASSWD'" > /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Installing PHP-specific packages ---\n" | |
apt-get -y install php apache2 libapache2-mod-php php-curl php-gd php-mysql php-gettext >> /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Enabling mod-rewrite ---\n" | |
a2enmod rewrite >> /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Allowing Apache override to all ---\n" | |
sed -i "s/AllowOverride None/AllowOverride All/g" /etc/apache2/apache2.conf | |
echo -e "\n--- Setting document root to public directory ---\n" | |
rm -rf /var/www/html | |
ln -fs /vagrant/public /var/www/html | |
echo -e "\n--- We definitly need to see the PHP errors, turning them on ---\n" | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.0/apache2/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.0/apache2/php.ini | |
echo -e "\n--- Restarting Apache ---\n" | |
service apache2 restart >> /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Installing Composer for PHP package management ---\n" | |
curl --silent https://getcomposer.org/installer | php >> /vagrant/vm_build.log 2>&1 | |
mv composer.phar /usr/local/bin/composer | |
echo -e "\n--- Installing NodeJS and NPM ---\n" | |
apt-get -y install nodejs >> /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Installing javascript components ---\n" | |
npm install -g gulp bower >> /vagrant/vm_build.log 2>&1 | |
echo -e "\n--- Updating project components and pulling latest versions ---\n" | |
cd /vagrant | |
if [[ -s /vagrant/composer.json ]] ;then | |
sudo -u vagrant -H sh -c "composer install" >> /vagrant/vm_build.log 2>&1 | |
fi | |
if [[ -s /vagrant/package.json ]] ;then | |
sudo -u vagrant -H sh -c "npm install" >> /vagrant/vm_build.log 2>&1 | |
fi | |
if [[ -s /vagrant/bower.json ]] ;then | |
sudo -u vagrant -H sh -c "bower install -s" >> /vagrant/vm_build.log 2>&1 | |
fi | |
if [[ -s /vagrant/gulpfile.js ]] ;then | |
sudo -u vagrant -H sh -c "gulp" >> /vagrant/vm_build.log 2>&1 | |
fi | |
echo -e "\n--- Creating a symlink for future phpunit use ---\n" | |
if [[ -x /vagrant/vendor/bin/phpunit ]] ;then | |
ln -fs /vagrant/vendor/bin/phpunit /usr/local/bin/phpunit | |
fi |
Concerning line 103, script does work without it. And with it it works also, buth throws an error.
Could please someone explain why environment variables are added into 000-default.conf and .bashrc files? What happens if I don't add them?
Updated the script to use the latest Vagrant and Ubuntu 16.04. Also cleaned up quite a bit since Laravel uses .env files rather than actual environment variables (although those are still valid). The old script was biased to my project containing a "client" folder, which isn't necessary using Laravel Elixir.
When I run ths script I've this following error : Syntax error: redirection unexpected on line 36.
Somebody have had this error ?
Hmm, are you building an Ubuntu VM? Try using this at the top:
#!/bin/bash
instead of
#! /usr/bin/env bash
Seems like it's not running in a bash environment, although what's there has been tested.
BTW: bash is needed. the <<<
HERE statement is not supported in Ubuntu's default shell (/bin/sh
-> /bin/dash
), and echo -e
doesn't work neither there.
I'm not sure about -yes flag. It's apt-get -y install
or apt-get install -y
?
Hi @zalog, I think both versions will work, but from the command reference, flags technically go before the command:
apt-get [options] [-o config=string] [-c=cfgfile] command [pkg]
@ amiceli
When I run ths script I've this following error : Syntax error: redirection unexpected on line 36.
Somebody have had this error ?
With ubuntu16.04 i managed to get it running by typing bash install_mysql.sh
Can someone explain to me why he sets "phpmyadmin phpmyadmin/reconfigure-webserver multiselect none"? His script works and I'm able to load phpmyadmin, but just so I can understand whats happening here why doesn't he choose the apache2 flag instead? How does it still get configured to work in this case? Sorry im completely new at this.
Thanks for the responses everyone; I wish Gist would actually notify me when there are comments, so I try to check on it once in a while. I'll look into explaining this a little further, fixing a few issues, adding more comments, and also updating it for Ubuntu 16.04 (or at least note the changes). Will try to test and update over the next week, thanks!