Установка и первичная настройка Laravel 6.0

03.12.2019

Настройка сервера для Laravel 6.0, ее первичная настройка (включая подключения к базе данных) и решения проблемы Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

Первичная настройка сервера:

Стоит отметить, что минимальная версия php - 7.2.

Установка необходимых пакетов на Centos:

 
yum -y install php72w php72w-opcache php72w-common php72w-gd php72w-mysql php72w-xml php72w-mbstring php72w-cli

Настройка Apache / httpd:

Для начала мне пришлось подкорректировать пути для виртуального хоста апача, дело в том, что по умолчанию структура каталогов была:
/home/public/laravel.local/ - корневая папка домена
/home/public/laravel.local/www - публичные файлы
/home/public/laravel.local/tmp и т.д. - остальные

У Ларавел же публичная директория должна называться public

Сначала решил эту проблему, установив фреймворк в /.../laravel.local/www т.е. публичная директория получилась с путем /.../laravel.local/www/public, а в .htaccess добавил:

 
RewriteEngine On<br>
RewriteRule ^(.*)$ public/$1 [L]

Но при таком решении, некоторые ссылки на сайте начинают автоматически притягивать в путь лишнее и превращаться в http://laravel.local/public/login конечно можно решить это автозаменой, то там появляется ряд других проблем.

Поэтому сменил папку www на public в файле виртуального хоста апача (/etc/httpd/conf.d/laravel.local.cfg):

 
   DocumentRoot /home/public/laravel.local/public
    <Directory /home/public/laravel.local/public>

Инсталляция Laravel:

Для установки требуется Composer, если у Вас на сервере его нет, но нужно поставить: Инсталляция Composer

Laravel выдает ошибки если ставить ее не в пустую папку, т.ч. в /home/public/laravel.local выполнил:

 
composer create-project --prefer-dist laravel/laravel blog 

Из новой папки blog все перенес в /home/public/laravel.local

Проверил в браузере, http://laravel.local/ - стартовая страница отобразилась нормально.

Настройка подключения Laravel к mySQL:

Для начала нужно создать базу, заходим, через консоль, в MySql:

 
mysql -p

Создаем базу и пользователя:

 
CREATE database db_laravel;
GRANT ALL ON db_laravel.* TO laravel@'%' IDENTIFIED BY 'PASSWORD';
GRANT ALL ON db_laravel.* TO laravel@'localhost' IDENTIFIED BY 'PASSWORD';

В файл .env добавить настройки подключения к БД:

 
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_laravel
DB_USERNAME=laravel
DB_PASSWORD=PASSWORD

Для проверки выполним миграции которые поставляются "из коробки":

 
php artisan migrate

При моих настройках (Cento 7, MariaDB 5,5, Latavel 6.3) - я получил ошибку:

 
 Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

Решение: в файле app/Providers/AppServiceProvider.php, в метод boot добавляем:

 
    public function boot()
    {
        //
        \Schema::defaultStringLength(191);
    }

Если этот вариант, по какой-то причине не подходит, то можно в файле /database/migrations/2014_10_12_000000_create_users_table.php убрать проверку на уникальность:

 
$table->string('email'); //->unique();

- но лучше так не делать, как минимум потому, что придется так ограничивать все текстовые поля во всех миграциях.


Категории: Linux, Laravel, Centos
Яндекс.Метрика