Deploy with Apache
Host BentoPDF using Apache HTTP Server.
Prerequisites
- Apache 2.4+
- mod_rewrite enabled
- SSL certificate (recommended)
Step 1: Build the Project
bash
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf
npm install
npm run buildStep 2: Copy Files
bash
sudo mkdir -p /var/www/bentopdf
sudo cp -r dist/* /var/www/bentopdf/
sudo chown -R www-data:www-data /var/www/bentopdfStep 3: Apache Configuration
Create /etc/apache2/sites-available/bentopdf.conf:
apache
<VirtualHost *:80>
ServerName your-domain.com
Redirect permanent / https://your-domain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName your-domain.com
DocumentRoot /var/www/bentopdf
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/your-domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
<Directory /var/www/bentopdf>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# WASM MIME type
AddType application/wasm .wasm
# Compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json application/wasm
</IfModule>
# Cache headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/wasm "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
</IfModule>
# Security headers
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
</VirtualHost>Step 4: .htaccess for SPA Routing
Create /var/www/bentopdf/.htaccess:
apache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite everything else to index.html
RewriteRule ^ index.html [L]
</IfModule>Step 5: Enable Required Modules
bash
sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod expires
sudo a2enmod deflateStep 6: Enable the Site
bash
sudo a2ensite bentopdf.conf
sudo apache2ctl configtest
sudo systemctl reload apache2Subdirectory Deployment
To host at /pdf/:
- Build with base URL:
bash
BASE_URL=/pdf/ npm run build- Update
.htaccess:
apache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /pdf/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]
</IfModule>Troubleshooting
WASM 404 Errors
Ensure MIME type is configured:
apache
AddType application/wasm .wasmRewrite Not Working
Check that mod_rewrite is enabled:
bash
sudo a2enmod rewritePermission Denied
bash
sudo chown -R www-data:www-data /var/www/bentopdf
sudo chmod -R 755 /var/www/bentopdf