Step by Step Guide to Setting Up Your Ubuntu 22 VPS for Laravel 10 and PHP 8.2
Embark on a journey into the digital realm as we unveil the secrets to harnessing the full power of Ubuntu 22 on your Virtual Private Server (VPS). In this step-by-step guide, we'll be your navigators through the enchanting landscape of Laravel 10 and the dynamic symphony of PHP 8.2. Get ready to sculpt a virtual masterpiece as we demystify the intricacies of setting up your VPS, transforming it into the ultimate canvas for your web development dreams. Let's dive into the future of coding, where innovation meets simplicity, and where your Ubuntu 22 VPS becomes the stage for the seamless dance of Laravel and PHP 8.2.
Login in server
Login in server with ssh (with password) [ Replace username
with actual username and ip
with actual IP address of the server ]
ssh username@ip
Login in server with ssh (with private key) [ Replace username
with actual username and ip
with actual IP address of the server ]
ssh -i path/to/private_key.pem username@ip
Update the server
sudo apt update
Install Apache 2
sudo apt install apache2
Install php 8.2
sudo apt install ca-certificates apt-transport-https software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-common php8.2-opcache php8.2-cli php8.2-gd php8.2-curl php8.2-mysql php8.2-mbstring php8.2-zip php8.2-xml php8.2-intl
Install MySQL server
sudo apt install mysql-server
Create a user and db in MySQL
Login to MySQL Server
sudo mysql
Create user [ Replace admin
with your preferred username, password
with preferred password ]
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
Grant all access for the user created [ admin
in our case ]
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Flush the privilege cache
FLUSH PRIVILEGES;
Create Database [ Replace mydatabase
with your preferred name ]
CREATE DATABASE mydatabase;
Exit from mysql with exit
command
exit;
Git
Check if git is installed or not. If not, install git with below command
sudo apt install git
Install Composer
cd ~ && curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
we’ll verify that the downloaded installer matches the SHA-384 hash for the latest installer found on the Composer Public Keys / Signatures page. To facilitate the verification step, you can use the following command to programmatically obtain the latest hash from the Composer page and store it in a shell variable:
HASH=`curl -sS https://composer.github.io/installer.sig`
Now execute the following PHP code, as provided in the Composer download page, to verify that the installation script is safe to run:
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
You’ll see the following output:
Installer verified
If the output says Installer corrupt
, you’ll need to download the installation script again and double check that you’re using the correct hash. Then, repeat the verification process. When you have a verified installer, you can continue.
To install composer
globally, use the following command which will download and install Composer as a system-wide command named composer
, under /usr/local/bin
:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
Install Node
Step 1:
Replace the version number setup_20
.x with your expected version
cd ~
curl -sL https://deb.nodesource.com/setup_20.x -o nodesource_setup.sh
Step 2:
sudo bash nodesource_setup.sh
Step 3:
sudo apt install nodejs
Install yarn (optional)
npm install --global yarn
Prepare project
Now, go to server root directory
cd /var/www/html/
Clone the repo here [ Replace REPO_URL
with your repo url ]
git pull REPO_URL
If there is a permission issue, give appropriate permission, For now I'm giving all user Read Write and Execute permission with the below command.
sudo chmod 777 -R /var/www/html/
Move to project root [ Replace 'PROJECT_ROOT' with project directory name ]
cd PROJECT_ROOT
Install dependency
composer install
Copy ENV
cp .env.example .env
Generate an app encryption key
php artisan key:generate
Update the env with Database credentials [ Replace mydatabase
, admin
, password
with actual values ]
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydatabase
DB_USERNAME=admin
DB_PASSWORD=password
Setup apache configuration
Open the default conf with below command
sudo nano /etc/apache2/sites-enabled/000-default.conf
Remove everything and paste the below conf [ Replace 'PROJECT_ROOT' with project directory name ]
<VirtualHost *:80>
#ServerAdmin admin@example.com
#ServerName mydomain.com
DocumentRoot /var/www/html/PROJECT_ROOT/public
<Directory /var/www/html/PROJECT_ROOT/public>
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Now save the file with Ctrl + S
and exit nano with Ctrl + X
Enable module rewrite in apache2
sudo a2enmod rewrite
Then restart apache server with the below command
sudo service apache2 restart
These should be everything. If you encounter any challenges, please don't hesitate to leave a comment or contact me for assistance.
Thank you for reading this.