Server Setup
Prerequisites
- Ubuntu 22.04 LTS (or similar)
- Root or sudo access
- Domain name configured
Installation Steps
1. Update System
sudo apt update
sudo apt upgrade -y
2. Install PHP
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl -y
3. Install MySQL
sudo apt install mysql-server -y
sudo mysql_secure_installation
4. Install Nginx
sudo apt install nginx -y
5. Install Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
6. Install Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install nodejs -y
Application Deployment
Backend
cd /var/www/backend
composer install --optimize-autoloader --no-dev
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
Frontend
cd /var/www/frontend
npm install
npm run build
Web Server Configuration
Nginx Configuration
server {
listen 80;
server_name api.yourdomain.com;
root /var/www/backend/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
SSL Certificate
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d api.yourdomain.com
Environment Configuration
cp .env.example .env
nano .env
Update values:
- Database credentials
- APP_URL
- APP_ENV=production
- APP_DEBUG=false
Permissions
sudo chown -R www-data:www-data /var/www/backend
sudo chmod -R 755 /var/www/backend/storage
Verify Installation
Test backend:
curl https://api.yourdomain.com/api/v1/health