Установка Laravel · 8 min read · Nov 01, 2025

Как установить PHP-фреймворк Laravel с Nginx и бесплатным SSL Let's Encrypt на AlmaLinux 8

Laravel — это бесплатный, с открытым исходным кодом и легковесный PHP-фреймворк, используемый для создания веб-приложений на PHP. Он популярен благодаря своему элегантному синтаксису, продвинутым функциям и мощному набору инструментов. Он основан на фреймворке Symfony и помогает разработчикам упростить разработку веб-приложений. Он также предоставляет интерфейс командной строки Artisan для выполнения операций с вашими приложениями. Он предлагает мощные функции, включая Artisan, архитектуру MVC, объектно-реляционное отображение, движок шаблонов, модульное тестирование и систему миграции баз данных.

В этом посте мы покажем вам, как установить Laravel с Nginx на Alma Linux 8.

Предварительные требования

  • Сервер с установленным Alma Linux 8.
  • Действительное доменное имя, указывающее на IP-адрес вашего сервера.
  • Настроенный корневой пароль на вашем сервере.

Установка LEMP-сервера

Сначала вам нужно установить Nginx, MariaDB, PHP и другие необходимые расширения PHP на вашем сервере. Вы можете установить их все, выполнив следующую команду:

dnf install nginx mariadb-server php php-fpm php-common php-xml php-mbstring php-json php-zip php-mysqlnd curl unzip -y

После установки всех пакетов отредактируйте файл конфигурации php-fpm и настройте его для использования Nginx:

nano /etc/php-fpm.d/www.conf

Измените следующие строки:

listen.owner = nginx
listen.group = nginx

Сохраните и закройте файл, затем отредактируйте файл конфигурации PHP и измените значения по умолчанию:

nano /etc/php.ini

Измените следующие строки:

date.timezone = Asia/Kolkata
cgi.fix_pathinfo=1

Сохраните и закройте файл, затем запустите и включите службы Nginx, MariaDB и PHP-FPM, используя следующую команду:

systemctl start nginx  
systemctl start mariadb  
systemctl start php-fpm  
systemctl enable nginx  
systemctl enable mariadb  
systemctl enable php-fpm

После завершения вы можете перейти к следующему шагу.

Установка Composer

В этом посте мы установим Laravel с помощью Composer. Поэтому вам нужно установить Composer на вашу систему. Вы можете установить его, выполнив следующую команду:

curl -sS https://getcomposer.org/installer | php

Вы получите следующий вывод:

Все настройки корректны для использования Composer
Загрузка...

Composer (версия 2.2.3) успешно установлен в: /root/composer.phar
Используйте: php composer.phar

Затем переместите бинарный файл Composer в системный путь и установите правильные разрешения с помощью следующей команды:

mv composer.phar /usr/local/bin/composer  
chmod +x /usr/local/bin/composer

Далее проверьте версию Composer с помощью следующей команды:

composer --version

Вы получите следующий вывод:

Версия Composer 2.2.3 2021-12-31 12:18:53

Установка Laravel на Alma Linux 8

Далее измените каталог на корневой каталог веб-сервера Nginx и установите Laravel с помощью Composer:

cd /var/www/html/  
composer create-project --prefer-dist laravel/laravel laravel

Вы получите следующий вывод:

Обнаруженный пакет: facade/ignition
Обнаруженный пакет: fideloper/proxy
Обнаруженный пакет: fruitcake/laravel-cors
Обнаруженный пакет: laravel/tinker
Обнаруженный пакет: nesbot/carbon
Обнаруженный пакет: nunomaduro/collision
Манифест пакета успешно сгенерирован.
69 пакетов, которые вы используете, ищут финансирование.
Используйте команду `composer fund`, чтобы узнать больше!
> @php artisan key:generate --ansi
Ключ приложения успешно установлен.

Далее установите правильные права собственности и разрешения для Laravel:

chown -R nginx:nginx /var/www/html/laravel/  
chown -R nginx:nginx /var/www/html/laravel/storage/  
chown -R nginx:nginx /var/www/html/laravel/bootstrap/cache/  
chmod -R 0777 /var/www/html/laravel/storage/  
chmod -R 0775 /var/www/html/laravel/bootstrap/cache/

После завершения вы можете перейти к следующему шагу.

Создание виртуального хоста Nginx для Laravel

Далее вам нужно создать файл конфигурации Nginx для Laravel. Вы можете создать его, используя следующую команду:

nano /etc/nginx/conf.d/laravel.conf

Добавьте следующие строки:

server {
       listen 80;
       server_name laravel.exampledomain.com;
       root        /var/www/html/laravel/public;
       index       index.php;
       charset utf-8;
       gzip on;
    gzip_types text/css application/javascript text/javascript application/x-javascript  image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
        location / {
         try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php {
                include fastcgi.conf;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php-fpm/www.sock;
        }
        location ~ \.ht {
                deny all;
        }
}

Сохраните и закройте файл, затем проверьте Laravel на наличие ошибок конфигурации:

ginx -t

Вы должны получить следующий вывод:

nginx: файл конфигурации /etc/nginx/nginx.conf синтаксически верен
nginx: тест файла конфигурации /etc/nginx/nginx.conf успешен

Далее перезапустите службы Nginx и PHP-FPM, чтобы применить изменения:

systemctl restart php-fpm  
systemctl restart nginx

Вы также можете проверить статус Nginx, используя следующую команду:

systemctl status nginx

Вы получите следующий вывод:

? nginx.service - HTTP-сервер nginx и обратный прокси-сервер
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Fri 2022-01-07 08:29:11 UTC; 4s ago
  Process: 8186 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 8184 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 8182 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 8188 (nginx)
    Tasks: 2 (limit: 11411)
   Memory: 3.7M
   CGroup: /system.slice/nginx.service
           ??8188 nginx: главный процесс /usr/sbin/nginx
           ??8189 nginx: рабочий процесс

Jan 07 08:29:11 linux systemd[1]: nginx.service: Успешно.
Jan 07 08:29:11 linux systemd[1]: Остановлен HTTP-сервер nginx и обратный прокси-сервер.
Jan 07 08:29:11 linux systemd[1]: Запуск HTTP-сервера nginx и обратного прокси-сервера...
Jan 07 08:29:11 linux nginx[8184]: nginx: файл конфигурации /etc/nginx/nginx.conf синтаксически верен
Jan 07 08:29:11 linux nginx[8184]: nginx: тест файла конфигурации /etc/nginx/nginx.conf успешен
Jan 07 08:29:11 linux systemd[1]: nginx.service: Не удалось разобрать PID из файла /run/nginx.pid: Неверный аргумент
Jan 07 08:29:11 linux systemd[1]: Запущен HTTP-сервер nginx и обратный прокси-сервер.

Настройка брандмауэра для Laravel

Далее вам нужно разрешить порты 80 и 443 через брандмауэр firewalld. Вы можете разрешить их с помощью следующей команды:

firewall-cmd --zone=public --permanent --add-service=http  
firewall-cmd --zone=public --permanent --add-service=https

Далее перезагрузите firewalld, чтобы применить изменения:

firewall-cmd --reload

Доступ к веб-интерфейсу Laravel

Теперь откройте веб-браузер и получите доступ к веб-интерфейсу Laravel, используя URL http://laravel.exampledomain.com. Вы должны увидеть страницу по умолчанию Laravel на следующем экране:

Laravel

Включение SSL на сайте Laravel

Рекомендуется включить SSL на сайте Laravel для обеспечения безопасности соединения. Let’s Encrypt предоставляет бесплатный SSL для получения, продления и управления сертификатами SSL/TLS для вашего домена. Сначала установите клиент Certbot с помощью следующей команды:

dnf install epel-release -y  
dnf install certbot -y

Далее выполните следующую команду, чтобы загрузить SSL Let’s Encrypt для вашего домена Laravel:

certbot --nginx -d laravel.exampledomain.com

Вам будет предложено указать ваш действительный адрес электронной почты и принять условия обслуживания, как показано ниже:

Сохранение журнала отладки в /var/log/letsencrypt/letsencrypt.log
Выбранные плагины: Аутентификатор nginx, Установщик nginx
Введите адрес электронной почты (используется для срочного продления и уведомлений о безопасности) (Введите 'c' для отмены): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Пожалуйста, прочитайте Условия обслуживания по адресу
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Вы должны
согласиться, чтобы зарегистрироваться на сервере ACME по адресу
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Вы готовы поделиться своим адресом электронной почты с Фондом Электронного Фронта,
основным партнером проекта Let's Encrypt и некоммерческой организацией,
которая разрабатывает Certbot? Мы хотели бы отправлять вам электронные письма о нашей работе
по шифрованию интернета, новостях EFF, кампаниях и способах поддержки цифровой свободы.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Получение нового сертификата
Выполнение следующих задач:
http-01 задача для laravel.exampledomain.com
Ожидание проверки...
Очистка задач
Развертывание сертификата в VirtualHost /etc/nginx/conf.d/laravel.conf

Далее выберите, хотите ли вы перенаправить HTTP-трафик на HTTPS:

Пожалуйста, выберите, хотите ли вы перенаправить HTTP-трафик на HTTPS, удалив доступ по HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Нет перенаправления - Не вносить дальнейшие изменения в конфигурацию веб-сервера.
2: Перенаправить - Сделать так, чтобы все запросы перенаправлялись на безопасный доступ HTTPS. Выберите это для
новых сайтов или если вы уверены, что ваш сайт работает на HTTPS. Вы можете отменить это
изменение, отредактировав конфигурацию вашего веб-сервера.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Выберите соответствующий номер [1-2], затем [введите] (нажмите 'c' для отмены): 2

Введите 2 и нажмите Enter, чтобы начать процесс. После установки сертификата вы должны увидеть следующий вывод:

Перенаправление всего трафика на порт 80 на ssl в /etc/nginx/conf.d/laravel.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Поздравляем! Вы успешно включили https://laravel.exampledomain.com

Вы должны протестировать вашу конфигурацию на:
https://www.ssllabs.com/ssltest/analyze.html?d=laravel.exampledomain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ВАЖНЫЕ ЗАМЕТКИ:
 - Поздравляем! Ваш сертификат и цепочка были сохранены по адресу:
   /etc/letsencrypt/live/laravel.exampledomain.com/fullchain.pem
   Ваш файл ключа был сохранен по адресу:
   /etc/letsencrypt/live/laravel.exampledomain.com/privkey.pem
   Ваш сертификат истечет 2022-04-11. Чтобы получить новую или измененную
   версию этого сертификата в будущем, просто снова запустите certbot
   с опцией "certonly". Чтобы не взаимодействовать и продлить *все*
   ваши сертификаты, выполните "certbot renew"
 - Ваши учетные данные были сохранены в вашем каталоге конфигурации Certbot
   по адресу /etc/letsencrypt. Вам следует сделать
   безопасную резервную копию этого каталога сейчас. Этот каталог конфигурации также
   будет содержать сертификаты и закрытые ключи, полученные Certbot, поэтому
   регулярное создание резервных копий этого каталога является идеальным.
 - Если вам нравится Certbot, пожалуйста, подумайте о поддержке нашей работы:

   Пожертвование ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Пожертвование EFF:                    https://eff.org/donate-le

 - Мы не смогли подписать вас на список рассылки EFF, потому что ваш
   адрес электронной почты, похоже, недействителен. Вы можете попробовать снова позже, посетив https://act.eff.org.

На этом этапе ваш сайт Laravel защищен SSL Let’s Encrypt. Теперь вы можете получить к нему безопасный доступ, используя URL https://laravel.exampledomain.com.

Заключение

Поздравляем! вы успешно установили Laravel с Nginx и SSL Let’s Encrypt на Alma Linux 8. Теперь вы можете начать разрабатывать приложения на PHP с использованием фреймворка Laravel. Не стесняйтесь задавать мне вопросы, если у вас есть какие-либо.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.