Skip to content

Instantly share code, notes, and snippets.

@benjaminv
Forked from abobija/wsl2-ubuntu-lamp.md
Created September 9, 2021 05:20
Show Gist options
  • Save benjaminv/5392139928f1d725ed530ad83c97cf19 to your computer and use it in GitHub Desktop.
Save benjaminv/5392139928f1d725ed530ad83c97cf19 to your computer and use it in GitHub Desktop.
LAMP stack on WSL2 (Ubuntu 20.04) - Apache, MySQL, PHP, PhpMyAdmin

LAMP stack on WSL2 (Ubuntu 20.04) - Apache, MySQL, PHP, PhpMyAdmin

Apache

sudo apt-get update && sudo apt-get upgrade 
sudo apt-get install -y apache2

PHP

sudo apt-get install -y php libapache2-mod-php
sudo apt-get install -y php-curl php-gd php-json php-mbstring php-xml

MySQL

sudo apt-get install -y mysql-server php-mysql
sudo service mysql restart
sudo mysql_secure_installation
    #> Validate password component: N
    #> New password: MyPassword
    #> Remove anonymous users: Y
    #> Disallow root login remotely: Y
    #> Reload privilege tables now: Y
sudo service mysql stop
sudo usermod -d /var/lib/mysql mysql
sudo service mysql start

Allow remote root login

sudo mysql -u root -pMyPassword  -e "UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root'; FLUSH PRIVILEGES;"

PhpMyAdmin

sudo apt-get install -y phpmyadmin
    #> Use apache2
    #> Configure db with dbconfig-common: Yes
    #> Random password (leave password blank)
sudo service mysql restart && sudo service apache2 restart

Now you can login into phpmyadmin with username root and password MyPassword.


Additional (optionally)

Disallow root login remotely

sudo mysql -u root -pMyPassword  -e "UPDATE mysql.user SET plugin = 'auth_socket' WHERE User = 'root'; FLUSH PRIVILEGES;"

* If remotely login for root is disallowed then you need to create new MySql user, otherwise you will not be able to login into PhpMyAdmin.

LAMP Control Aliases

cd ~ && touch .bash_aliases
echo 'alias lampstatus="sudo service apache2 status ; sudo service mysql status"' >> .bash_aliases
echo 'alias lampstart="sudo service mysql start ; sudo service apache2 start"' >> .bash_aliases
echo 'alias lampstop="sudo service mysql stop ; sudo service apache2 stop"' >> .bash_aliases
echo 'alias lamprestart="lampstop ; lampstart"' >> .bash_aliases

Now you need to logout/login and then you can use lampstatus, lampstart, lampstop and lamprestart for controling LAMP stack.

Change document root of Apache2

In this example document root will be changed from /var/www/html to ~/www

cd ~
mkdir www
sudo sed -i "s;/var/www;$HOME/www;g" /etc/apache2/apache2.conf
sudo sed -i "s;/var/www/html;$HOME/www;g" /etc/apache2/sites-available/000-default.conf

Now you can go to ~/www and create index.html

Configure Apache2 for Wordpress module rewrite custom permalink structure

First with cd go into your wordpress installation folder and then:

sudo touch .htaccess
sudo chown -v :www-data .htaccess
sudo chmod -v 664 .htaccess
sudo sed -i "s/AllowOverride None/AllowOverride All/g" /etc/apache2/apache2.conf
sudo a2enmod rewrite
sudo service apache2 restart

Now go to WpAdmin -> Settings -> Permalinks. Choose permalink structure and hit "Save Changes". Now .htaccess should be populated with wordpress rewrite rules and conditions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment