Preface
I like to build my own virtual machine for local developing my WordPress sites, using this way I can run the virtual machine under any operating system.
You can also try XAMPP or local by flywheel
but building my own VMs is more stable, you can follow the steps below to build your own web server to run WordPress locally.
I like to use Ubuntu Desktop for my base environment, you can use any linux distro of your choice (Just change the package manager command)
First thing first
Update your system
sudo apt-get update
sudo apt-get upgrade -y
Install tasksel
sudo apt install tasksel
sudo tasksel install lamp-server
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc
Edit host file to use the domain name
sudo nano /etc/hosts
>ip.ip.ip.ip [testing.com] [www.testing.com]
Edit Apache2 Virtual host file
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/[testing.com].conf
sudo nano /etc/apache2/sites-available/[testing.com].conf
.conf file example
<Directory /var/www/[testing.com]>
Require all granted
</Directory>
<VirtualHost *:80>
ServerName [testing.com]
ServerAlias www.[testing.com]
ServerAdmin webmaster@localhost
DocumentRoot /var/www/[testing.com]
</VirtualHost>
Make the directory
sudo mkdir -p /var/www/[testing.com]
Enable virtual host config
sudo a2dissite 000-default.conf
sudo a2ensite [testing.com].conf
sudo systemctl reload apache2
Create Database
sudo mysql -u root
mysql> CREATE DATABASE database;
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
mysql> GRANT ALL PRIVILEGES ON database.* TO 'newuser'@'localhost';
mysql> quit
Create new user with root privilege
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'the_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'localhost' WITH GRANT OPTION;
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'the_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
mysql> SHOW GRANTS FOR username;
mysql> FLUSH PRIVILEGES;
sudo mysql_secure_installation
sudo apt-get update
sudo apt-get install -y phpmyadmin
http://localhost/phpmyadmin/
Reset root user password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Export mysql database
mysqldump --user=admin_backup --password --lock-tables --databases db1 > /data/backup/db1.sql
Restore database
mysql -u admin_backup -p db_name < backup-file.sql
Enable apache rewrite for wordpress permalinks
sudo nano /etc/apache2/apache2.conf
Find
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Change
AllowOverride None
To
AllowOverride All
sudo a2enmod rewrite
sudo systemctl reload apache2
Config Apache2 PHP
sudo nano /etc/php/7.2/apache2/php.ini
max_input_time = 120
upload_max_filesize = 128M
post_max_size = 128M
$ sudo systemctl reload apache2
Install WordPress
$ sudo wget https://wordpress.org/latest.tar.gz
Unpack the gz
$ sudo tar -xvf latest.tar.gz
move all files to the site root
cd wordpress
sudo mv * ..
remove wordpress folder and gz file
sudo rm -R wordpress
sudo rm latest.tar.gz
Copy sample config file
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
Edit the database user and password then remove the sample file
go to https://api.wordpress.org/secret-key/1.1/salt/
replace salt secret
Add Permission to folders
sudo chown -R www-data:www-data /var/www/[testing.com]/*
sudo chmod -R 775 /var/www/[testing.com]
sudo systemctl reload apache2
Finally
Insatll Theme
+ DIVI Theme – https://www.elegantthemes.com/affiliates/idevaffiliate.php?id=58138_1_1_5
Install Plugins
+ FakerPress – install fake contents
+ UpdraftPlus – backup and restore
+ WP Data Access
Notes
Ubuntu file manager – Nautilus
sudo nano ~/.bashrc
Add the following line to use open as nautilus
alias open='nautilus'
to reload bash profile
$ source ~/.bashrc
or
$ . ~/.bashrc