Script to install LAMP & WordPress on Ubuntu 20.04 LTS server quickly with one command

Do you want to automate the installation of the Apache web server, MySQL Database, PHP, and WordPress? Then here is the tutorial on that.

I have created a script that comprises all commands we need to install LAMP on Ubuntu 20.04 LTS focal fossa and over that WordPress. This is really handy if you want to set up and run a WordPress blog or website on your Ubuntu Linux server instantly without punching each command one by one.

Install LAMP & WordPress using Script on Ubuntu 20.04 LTS

What you have to do is open the command terminal or if you are using VPS Hosting or Cloud server then you are already there.

Switch to root user:

sudo su -

Create a script file:

apt install nano -y
nano word.sh

Now, copy-paste all the commands, given below in the created file:

#/bin/sh

install_dir="/var/www/html"
#Creating Random WP Database Credenitals
db_name="wp`date +%s`"
db_user=$db_name
db_password=`date |md5sum |cut -c '1-12'`
sleep 1
mysqlrootpass=`date |md5sum |cut -c '1-12'`
sleep 1

#### Install Packages for https and mysql
apt -y update 
apt -y upgrade
apt -y install apache2
apt -y install mysql-server


#### Start http
rm /var/www/html/index.html
systemctl enable apache2
systemctl start apache2

#### Start mysql and set root password

systemctl enable mysql
systemctl start mysql

/usr/bin/mysql -e "USE mysql;"
/usr/bin/mysql -e "UPDATE user SET Password=PASSWORD($mysqlrootpass) WHERE user='root';"
/usr/bin/mysql -e "FLUSH PRIVILEGES;"
touch /root/.my.cnf
chmod 640 /root/.my.cnf
echo "[client]">>/root/.my.cnf
echo "user=root">>/root/.my.cnf
echo "password="$mysqlrootpass>>/root/.my.cnf
####Install PHP
apt -y install php php-bz2 php-mysqli php-curl php-gd php-intl php-common php-mbstring php-xml

sed -i '0,/AllowOverride\ None/! {0,/AllowOverride\ None/ s/AllowOverride\ None/AllowOverride\ All/}' /etc/apache2/apache2.conf #Allow htaccess usage

systemctl restart apache2

####Download and extract latest WordPress Package
if test -f /tmp/latest.tar.gz
then
echo "WP is already downloaded."
else
echo "Downloading WordPress"
cd /tmp/ && wget "http://wordpress.org/latest.tar.gz";
fi

/bin/tar -C $install_dir -zxf /tmp/latest.tar.gz --strip-components=1
chown www-data: $install_dir -R

#### Create WP-config and set DB credentials
/bin/mv $install_dir/wp-config-sample.php $install_dir/wp-config.php

/bin/sed -i "s/database_name_here/$db_name/g" $install_dir/wp-config.php
/bin/sed -i "s/username_here/$db_user/g" $install_dir/wp-config.php
/bin/sed -i "s/password_here/$db_password/g" $install_dir/wp-config.php

cat << EOF >> $install_dir/wp-config.php
define('FS_METHOD', 'direct');
EOF

cat << EOF >> $install_dir/.htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
EOF

chown www-data: $install_dir -R

##### Set WP Salts
grep -A50 'table_prefix' $install_dir/wp-config.php > /tmp/wp-tmp-config
/bin/sed -i '/**#@/,/$p/d' $install_dir/wp-config.php
/usr/bin/lynx --dump -width 200 https://api.wordpress.org/secret-key/1.1/salt/ >> $install_dir/wp-config.php
/bin/cat /tmp/wp-tmp-config >> $install_dir/wp-config.php && rm /tmp/wp-tmp-config -f
/usr/bin/mysql -u root -e "CREATE DATABASE $db_name"
/usr/bin/mysql -u root -e "CREATE USER '$db_name'@'localhost' IDENTIFIED WITH mysql_native_password BY '$db_password';"
/usr/bin/mysql -u root -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost';"
 
######Display generated passwords to log file.
echo "Database Name: " $db_name
echo "Database User: " $db_user
echo "Database Password: " $db_password
echo "Mysql root password: " $mysqlrootpass
 

To save the script file press Crtl+X and then type Y and hit the Enter button.

Now run the Script:

sh word.sh

Wait for a few minutes depending upon your internet connection, it will set up Apache, MySQL, PHP, and WordPress. Once the script gets completed it will also show the created Database, username, and MySQL root password.  Note that down somewhere.

Open your browser and type the server or system Ip address where you have executed the above command. It will show the process to set up the WordPress website including username and password for the same.

Wordfpress instaaltion script with LAMp on ubuntu 20.04 LTS

Optional:

In case you need phpMyAdmin, then use the below command after installing WordPress to easily handle databases.

apt install phpmyadmin

 

 

Comments (6)

  1. Diego Sarmiento December 28, 2020
  2. Mamun July 19, 2021
    • Heyan July 19, 2021
  3. sergii iermolenko January 1, 2022
    • Heyan January 2, 2022
  4. Super April 5, 2022

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.