Point the web server at Laravel’s public/ directory. Do not expose app/, .env, or storage/ as document roots.
1. Deploy files
Copy the application to a directory such as /var/www/profilesuite. From that directory:
composer install --no-dev --optimize-autoloader
Rebuild frontend assets only if you changed Vue/JS/CSS:
npm ci
npm run prod
Create the database and a dedicated MySQL user before running the wizard.
2. Permissions
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
Replace www-data with your PHP-FPM user (nginx, apache, etc.).
3. Nginx example
server {
listen 443 ssl http2;
server_name example.com;
root /var/www/profilesuite/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Adjust the PHP-FPM socket to match the installed version. Use Certbot (or your usual TLS flow) for certificates.
4. Apache (VPS)
If you use Apache instead of Nginx:
- Document root:
/var/www/profilesuite/public - Enable
mod_rewriteandAllowOverride Allfor that directory - The
public/.htaccessfile already routes requests toindex.php
5. Open the wizard
Visit https://example.com/install and complete Setup wizard. Set Application URL to the public HTTPS URL.
6. PHP-FPM limits
Uploads (logos, card images, CSV import) need reasonable upload_max_filesize and post_max_size (for example 16M or higher). memory_limit of 256M is a comfortable floor for image work (GD).
← All ProfileSuite – Digital Business Card, Bio Link & Lead Capture Platform documentation