How To Install Valet Linux From Scratch
In this post, we will set our development environment with PHP, Laravel, MariaDB/MySQL, and Valet Linux; yeah, the exclusive macOS development tool working on Linux ;D.
Install MariaDB
To install MariaDB, open the terminal, and type the following command:
1sudo apt install mariadb-server mariadb-client
After the installation concludes, test the following commands in that specific order to check if the installation was successful:
1sudo systemctl stop mariadb.service
2sudo systemctl start mariadb.service
3sudo systemctl enable mariadb.service
After verifying the installation was successful, we need to run the mysql_secure_installation
, to set MariaDB correctly in our development environment:
1sudo mysql_secure_installation
After you execute the command, please answer the following questions:
- Enter current password for root (enter for none): Just press enter
- Set root password? [Y/n]: Y
- New password: Write a secure password
- Re-enter new password: Repeat the password
- Remove anonymous users? [Y/n]: Y
- Disallow root login remotely? [Y/n]: Y
- Remove test database and access to it? [Y/n]: Y
- Reload privilege tables now? [Y/n]: Y
Restart MariaDB’s service:
1sudo systemctl restart mariadb.service
Then, access to MariaDB through the terminal:
1sudo mariadb -u root -p
Or
1sudo mysql -u root -p
Remember that MariaDB is fully compatible with MySQL ;).
We need to write the password that we defined in the mysql_secure_installation
process in the following SQL statement. This also helps to access MariaDB without sudo on the terminal:
1GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY "your_password";
Now exit from MariaDB by pressing: Ctrl+C on the terminal.
Install PHP on Linux
This is very straight; forward we only need to run the following command:
1sudo apt install php libapache2-mod-php php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-mysql php-cli php-mcrypt php-zip php-curl php-sqlite3 php-pgsql
And then open php.ini file to make some adjustments:
1sudo nano /etc/php/7.X/apache2/php.ini
Modify the following variables:
We save the changes by pressing Ctrl+O
and exit with Ctrl+X
.
Install Laravel on Linux
We need composer
installed in our system to do that, we can install it with:
1sudo apt install composer
And now install Laravel:
1composer global require laravel/installer
Now we need to add Laravel in our $PATH variable, to make “laravel” a recognizable command:
1sudo nano .bashrc
If you are using zsh:
1sudo nano .zshrc
Scroll down to the last line of the file and add the following:
1export PATH="$HOME/.config/composer/vendor/bin:$PATH"
We save the changes by pressing Ctrl+O
and exit with Ctrl+X
.
And to force our shell to read the changes, execute:
1source .bashrc
If you are using zsh:
1source .zshrc
Now we can create a Laravel app:
1laravel new laravel-app
If you want to use Laravel 7, try with the following commands and ensure that the PHP version you installed is PHP 7 and not PHP 8:
1composer create-project laravel/laravel=^7 laravel-app --prefer-dist
If it does not work try replacing the ^ with >:
1composer create-project laravel/laravel=>7 laravel-app --prefer-dist
It should create a Laravel app without problems.
Install Valet Linux
Finally, execute:
1composer global require cpriego/valet-linux
If it throws an error, please execute:
1sudo apt install php-curl
Try again and now it should work.
Now execute the installation process:
1valet install
This also could throw an error, if that’s the case, please force the shell to read the changes as we did before:
1source .bashrc
If you are using zsh:
1sudo nano .zshrc
We need to ensure that we update our $PATH environment variable correctly on the previous steps.
Now valet
should throw an error about missing dependencies, to solve that we simply run:
1sudo apt-get install network-manager libnss3-tools jq xsel
Now it should install valet correctly:
1valet install
But if you have another error related with nginx
, you need to stop the service that is running in the same port as nginx
, if it’s apache
who is provoking this problem you can simply stop the apache’s service:
1sudo systemctl stop apache2.service
And try again:
1valet install
To verify everything is ok, run:
1ping valet.test
And after a few seconds it should say something like this:
1X packets transmited, X received...
If that’s the case, congrats! you successfully installed Valet Linux!
Now we need to set the directory where we are going to create Laravel or PHP projects:
1cd directory/where/you/are/going/to/work
And execute:
1valet park
Now create a folder called: phpinfo
, inside the create a file called index.php
and in the file, we can write something to check its working:
1<?php echo phpinfo();
And finally, we write the following URL in our browser:
It should display info about PHP without errors.
You can custom the domain if you don’t like .test
with:
1valet domain dev
And now to get access you need to change your current URL with the following: http://phpinfo.dev/index.php
And that’s it, hope you enjoy it, if you want to see how to do it in fedora and manjaro, please comment it :D.