Login into your digital ocean account. If you haven't account still then you can create new one from my referral link & you will get $100 free credit for 60 days.
https://m.do.co/c/057384693883
Step 1 : Create New Droplet
Click on 'Create' drop down & select 'Droplets'.
- Select Ubuntu 18 LTS OS.
- Choose your plan as per your project requirement.
- Select data center region like Bangalore.
- Create root password.
- Enable backups if your project require.
- Now click on 'Create Droplet' button.
It will take some time to setup droplet or server.
After droplet successfully created, IP will be assigned to it.
Step 2 : Connect to droplet
Now you have droplet IP, so use it for connect via ssh in terminal.
Connection will be establish via username of your droplet, by default username is 'root'
Connect by following command :
ssh root@127.0.0.1Enter droplet password & you ready to go.
Step 3 : Install Apache
Need to update ubuntu system
sudo apt updateInstall apache package from ubuntu repository by following command :
sudo apt install apache2Check server home page by placing IP in browser
http://127.0.0.1Step 4 : Install MySQL
Need to update ubuntu system
sudo apt updateInstall MySQL package from ubuntu repository by following command :
sudo apt install mysql-serverStep 5 : Install phpMyAdmin
Need to update ubuntu system
sudo apt updateInstall some php extension along with phpMyAdmin package from ubuntu repository by following command :
sudo apt install phpmyadmin php-mbstring php-gettextWhile installing this you will be asked for choose some options.
Enable some php extension by following command :
sudo phpenmod mbstringRestart apache server
sudo systemctl restart apache2Installation is done, but we are not able to access phpMyadmin, for that need to do some configuration.
Need to allow phpMyAdmin in apache config. Open config file with nano editor.
sudo nano /etc/apache2/apache2.confNow add following line at the end of file, that allow phpMyAdmin to run.
Include /etc/phpmyadmin/apache.confRestart apache server
sudo systemctl restart apache2Run phpMyAdmin by following url in browser
http://127.0.0.1/phpmyadminStep 6 : Create MySQL user for phpMyAdmin
Need to set root user credential for login into phpMyAdmin. For that login into mysql with command line
sudo mysqlFirst check list of existing users in MySQL by following syntax :
SELECT user,authentication_string,plugin,host FROM mysql.user;This will list all user with credential string.
By default root user has not any credential / password is set, default is blank, check it with new password so we can add extra layer of security to our database.
Change password by following syntax :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';Now reload all table privileges by following syntax :
FLUSH PRIVILEGES;Once again check list of user & verify root user has new credentials or not by following :
SELECT user,authentication_string,plugin,host FROM mysql.user;Allow root user to all table, options, etc by following syntax :
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;Exit MySQL by this :
exitCheck your credential is working or not in phpMyAdmin, login & try to create new database with root user
http://127.0.0.1/phpmyadminStep 7 : Install Composer
Check ubuntu for latest update
sudo apt updateNeed to install php extension like curl, mbstring, zip for the installation of composer
sudo apt install curl php-cli php-mbstring git unzipChange terminal current directory to root
cd ~Get composer installation file from official website by following command :
curl -sS https://getcomposer.org/installer -o composer-setup.phpGet security hash key (check sum) from following website https://composer.github.io/pubkeys.html for installation of composer file.
Copy that key & run in terminal with HASH command :
HASH=e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe280690333hkp80666Verify security key for secure installation.
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installation file verified.'; } else { echo 'Installation file corrupt.'; unlink('composer-setup.php'); } echo PHP_EOL;"You will see the output : Installation file verified.
Finally install composer in bin directory with this command :
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composerCheck composer is successfully installed or not by running this command :
composerStep 8 : Setup SWAP memory
In digital ocean servers by default swap memory is not configure, check by this command :
free -mIf you see 0 in swap memory then we need to configure that for laravel installation.
Run following command one by one to setup.
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1After that once again check swap memory by this :
free -mStep 9 : Install Laravel / Clone project
If you have existing project git repository then you can clone it.
But if you need to setup fresh copy of laravel then follow this.
Change directory to html
cd /var/www/htmlRemove existing files / folder in html directory if you not need them or create new directory for laravel project.
Now download installation files of laravel package by following composer command :
composer global require laravel/installerCreate new laravel project by this, you can change you project name by replacing blog.
composer create-project --prefer-dist laravel/laravel blogNow configure apache to run directly from your project directory.
Go to apache sites config folder
cd /etc/apache2/sites-available/Open default config file by using nano editor.
sudo nano 000-default.confChange document root to project public directory
DocumentRoot /var/www/html/blog/public/Save changes & exit editor by ctrl + x, type yes/y if needed.
Restart apache server
sudo systemctl restart apache2Change laravel project storage folder permission otherwise it will not log error, cache files, etc.
sudo chmod -R 0777 /var/www/html/blog/storageYou can refresh your current browser page & check your laravel project is now running.
All done here.