Laravel: Difference between revisions
| (8 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
One of the best parts of Laravel is their excellent video course on web development. | One of the best parts of Laravel is their excellent video course on web development. | ||
The course is published on Laracasts. | The course is published on Laracasts. | ||
==Usage== | ==Usage== | ||
| Line 41: | Line 36: | ||
==Blade== | ==Blade== | ||
===Components | ===Components=== | ||
:Note: Components were completely revamped in Laravel 7 | :Note: Components were completely revamped in Laravel 7. | ||
If you don't know anything watch [https://laracasts.com/series/blade-component-cookbook Blade Component Cookbook] or read the [https://laravel.com/docs/7.x/blade Blade Templates]. | If you don't know anything watch [https://laracasts.com/series/blade-component-cookbook Blade Component Cookbook] or read the [https://laravel.com/docs/7.x/blade Blade Templates]. | ||
| Line 53: | Line 48: | ||
php artisan make:component Alert | php artisan make:component Alert | ||
</pre> | </pre> | ||
==Controllers== | ==Controllers== | ||
| Line 122: | Line 115: | ||
==Deployment== | ==Deployment== | ||
===Directly=== | ===Directly=== | ||
Point your webserver with PHP to the public folder | Point your webserver with PHP to the public folder.<br> | ||
If your application is publically accessible, make sure APP_DEBUG is set to false. | |||
=== | ===Docker=== | ||
[ | See the example Dockerfile below: | ||
<syntaxhighlight lang="Dockerfile"> | |||
# Dockerfile | |||
FROM php:8.1-apache | |||
RUN apt-get update && \ | |||
apt-get install -y nodejs npm zip libpq-dev sudo && \ | |||
a2enmod rewrite | |||
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer | |||
ENV APACHE_DOCUMENT_ROOT /var/www/html/public | |||
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf | |||
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf | |||
RUN sed -i 's#AllowOverride [Nn]one#AllowOverride All#' /etc/apache2/apache2.conf | |||
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" | |||
# RUN sed -i 's#upload_max_filesize = 2M#upload_max_filesize = 200M#' "$PHP_INI_DIR/php.ini" | |||
# RUN sed -i 's#post_max_size = 8M#post_max_size = 200M#' "$PHP_INI_DIR/php.ini" | |||
RUN chown www-data:www-data /var/www -R | |||
ADD package.json package-lock.json /var/www/html/ | |||
RUN sudo -u www-data npm ci | |||
ADD composer.json composer.lock artisan /var/www/html/ | |||
ADD app /var/www/html/app | |||
ADD config /var/www/html/config | |||
ADD database /var/www/html/database | |||
ADD bootstrap /var/www/html/bootstrap | |||
ADD routes /var/www/html/routes | |||
RUN composer install | |||
# Add remaining files | |||
ADD . /var/www/html/ | |||
RUN cp .env.prod.example .env | |||
RUN chmod 775 /root && \ | |||
chown www-data:www-data -R /var/www/html && \ | |||
npm run prod | |||
</syntaxhighlight> | |||
* | ==Security== | ||
===Vulnerabilities=== | |||
* [https://nvd.nist.gov/vuln/detail/CVE-2021-3129 CVE-2021-3129] - In Laravel < 8.4.2, leaving debug mode on can lead to remote execution. | |||
==Resources== | ==Resources== | ||