Skip to content

Instantly share code, notes, and snippets.

@marufmax
Forked from bigbeno37/install-laravel.sh
Created May 10, 2017 14:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marufmax/cab084cb70323efc48816f7f8f4b5b62 to your computer and use it in GitHub Desktop.
Save marufmax/cab084cb70323efc48816f7f8f4b5b62 to your computer and use it in GitHub Desktop.
Install Laravel 5.4, MySQL 5.7, Apache2.4 and PHP7.1 on Ubuntu 16.04
# CREATED BY BEN O'SULLIVAN / BIGBENO37 (GITHUB.COM/BIGBENO37)
# LICENSED UNDER CREATIVE COMMONS 'Attribution 4.0 International' LICENSE
# https://creativecommons.org/licenses/by/4.0/
# FEEL FREE TO USE AND ADAPT THIS SCRIPT IN COMMERCIAL AND NON COMMERICAL PRODUCTS
# AS LONG AS PROPER ACCREDITATION IS GIVEN
# VARIABLES
echo -e "\x1B[01;95mWhat would you like to name your Laravel project?\x1B[0m"
read LARAVEL_PROJECT_NAME
echo -e "\x1B[01;95mWhere do you want to store your Laravel project? (Use a full path such as /home/ubuntu/projects/)\x1B[0m"
read LARAVEL_PARENT_DIR
echo -e "\x1B[01;92mGreat, we'll take it from here. Don't go away just yet, we'll need you in a little bit.\x1B[0m"
LARAVEL_DIR="$LARAVEL_PARENT_DIR$LARAVEL_PROJECT_NAME";
LARAVEL_PUBLIC_DIR="$LARAVEL_DIR/public"
# INSTALL REQUIRED SOFTWARE
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install php7.1 php7.1-mbstring php7.1-zip php7.1-mysql unzip phpunit mysql-server -y
# CONFIGURE MYSQL
sudo mysql_secure_installation
echo -e "\x1B[01;93mGive us a sec to get MySQL initialised...\x1B[0m"
sudo mysqld --initalize
echo -e "\x1B[01;95mWe'll need that MySQL root password you set up earlier to make MySQL work with Laravel.\x1B[0m"
echo -e "CREATE USER 'homestead'@'localhost' IDENTIFIED BY 'secret'; GRANT ALL PRIVILEGES ON * . * TO 'homestead'@'localhost'; FLUSH PRIVILEGES; CREATE DATABASE homestead; USE homestead;">> setup_laravel_db.sql
mysql -u root -p < setup_laravel_db.sql
echo -e "\x1B[01;92mThat's all we need you to do. Sit back, and let us get everything going for you.\x1B[0m"
# INSTALL COMPOSER + LARAVEL
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '55d6ead61b29c7bdee5cccfb50076874187bd9f21f65d8991d46ec5cc90518f447387fb9f76ebae1fbbacf329e583e30') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
composer global require "laravel/installer"
if [ ! -d $LARAVEL_DIR ]; then
cd $LARAVEL_PARENT_DIR
composer create-project --prefer-dist laravel/laravel $LARAVEL_PROJECT_NAME
cd $LARAVEL_PROJECT_NAME
php artisan key:generate
fi
# CONFIGURE APACHE2
cd ~
sudo rm /etc/apache2/sites-available/000-default.conf
echo -e "<VirtualHost *:80>\n ServerAdmin webmaster@localhost\n DocumentRoot /var/www/public/\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n <Directory /var/www/public/>\n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n </Directory>\n</VirtualHost>">> 000-default.conf
sudo cp 000-default.conf /etc/apache2/sites-available/000-default.confr
rm 000-default.conf
sudo a2enmod php7.1
sudo a2enmod rewrite
sudo ln -s $LARAVEL_PUBLIC_DIR /var/www/public
sudo service apache2 restart
echo -e "\x1B[01;92mThank you for your patience. Laravel has successfully been installed!\x1B[0m"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment