Skip to content

Instantly share code, notes, and snippets.

@abobija
Last active October 4, 2024 19:43
Show Gist options
  • Save abobija/228e36441d31ae17ecc36edc9a47ceb5 to your computer and use it in GitHub Desktop.
Save abobija/228e36441d31ae17ecc36edc9a47ceb5 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.

@m-pokrovskii
Copy link

cannot make work virtual hosts. localhost/site works though. But site.dev doesn't

@jorge-maikel-sierra
Copy link

Me encanto este paso a paso si se toma el tiempo para entender todos los comandos es lo que que e podido encotrar en interner

@Stiy27
Copy link

Stiy27 commented Aug 2, 2023

Segui todos os passos do guia, no entanto não consegui logar como root e com a senha que configurei.
Então, para resolver esse problema, editei o arquivo CONFIG.INC.PHP em /etc/phpmyadmi, removendo o comentário em , removi isso -> "//", $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

Assim consegui logar como ROOT sem o uso de senha e criei outro usuário no banco de dados para o phpmyadmin, logo após voltei a colocar o comentário: //$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

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