# LAMP stack on WSL2 (Ubuntu 20.04) - Apache, MySQL, PHP, PhpMyAdmin ## Apache ```sh sudo apt-get update && sudo apt-get upgrade sudo apt-get install -y apache2 ``` ## PHP ```sh 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 ```sh 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 ```sh sudo mysql -u root -pMyPassword -e "UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root'; FLUSH PRIVILEGES;" ``` ## PhpMyAdmin ```sh sudo apt-get install -y phpmyadmin #> Use apache2 #> Configure db with dbconfig-common: Yes #> Random password (leave password blank) ``` ```sh 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 ```sh 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 ```sh 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` ```sh 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: ```sh 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.