Laravel deployment with Apache on Debian/Ubuntu

fmchanprogrammingLeave a Comment

Environment: Lavel 5.8, PHP 7.3, Apache 2.4, Debian 9.12

Permission

cd /var/www/html/laravel
sudo chgrp -R www-data /var/www/html/laravel
sudo chmod -R 775 storage bootstrap/cache

Virtual Host

sudo nano /etc/hosts
127.0.0.1   laravel.com
cd /etc/apache2/sites-available
sudo nano laravel.conf

Directory is the laravel root and DocumentRoot is pointing to public

<VirtualHost *:80>
ServerName laravel.com
ServerAdmin admin@laravel.com
DocumentRoot /var/www/html/laravel/public
<Directory /var/www/html/laravel>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo a2dissite 000-default.conf
sudo a2ensite laravel.conf
sudo a2enmod rewrite
sudo service apache2 restart

If you want to check the enabled sites:

cd /etc/apache2/sites-enabled

.htaccess

cd /var/www/html/laravel/public
sudo mv .htaccess .htaccess.bak
sudo nano .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder…
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller…
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* — [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Leave a Reply

Your email address will not be published. Required fields are marked *