Инструкция по установке

Данная инструкция для внедрения проекта CMS c GitHub на новую, чистую установку фреймворка Laravel.

Установка фреймворка Laravel

Установить глобально (перейти на папку выше проекта и установить через терминал). В системе уже должен быть установлен компосер и соответствующая версия PHP. В тексте ниже используется название проекта name, вместо этого можно использовать любое название. В данной инструкции написана локальная настройка.

composer global require laravel/installer

Установка файлов фраймворка (он будет в папке name).

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

Начальная настройка проекта

Скачайте архив с проектом с GitHub, распакуйте его.

Создать базу данных name, кодировка utf8mb4_unicode_ci.

Открыть проект в PhpStorm.

В файле .env отредактировать и добавить (можно указать этот APP_KEY, потом сгенирировать уникальный). Настройки базы данных указаны для сервера MAMP. Настройки почты указаны Yandex почты.

NOT_INDEX_WEBSITE - если не нужно индексировать сайт роботам, то true, если нужно, то false.

APP_NAME=Name
APP_ENV=local
APP_KEY=base64:ztgTnW3ZSPm3RRVnBz1JMYhUGp4ob9ugasp+lEpGbBc=
APP_DEBUG=true
APP_URL=http://localhost:8000
NOT_INDEX_WEBSITE=true
OFF_WEBSITE=false

APP_DEV=Name
APP_ENTER=enter
APP_ADMIN=dashboard
AREA_PUBLIC=public
AREA_ADMIN=admin
APP_EMAIL=admin@admin.com
APP_TIMEZONE=Europe/Moscow
LOG_CHANNEL=stack
LOG_DAYS=28

RECAPTCHA_PUBLIC_KEY=
RECAPTCHA_SECRET_KEY=
SMSRU=

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=name
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
DB_BINARY_PATH=/Applications/MAMP/Library/bin/

MAIL_DRIVER=smtp
MAIL_HOST=smtp.yandex.ru
MAIL_PORT=587
MAIL_USERNAME=name@yandex.ru
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="${MAIL_USERNAME}"
MAIL_FROM_NAME="${APP_NAME}"

В папке config

Скопировать файлы с настройками:

config/add.php - отредактировать настройки под свой проект.
config/admin.php
config/modules.php
config/shop.php

В файле config/app.php поменять:

'timezone' => env('APP_TIMEZONE', 'UTC'),
'locale' => 'ru',
'fallback_locale' => 'ru',
'faker_locale' => 'ru_RU',

В файле config/filesystems.php добавить диски:

'disks' => [
'root' => [
'driver' => 'local',
'root' => base_path(),
],
'app' => [
'driver' => 'local',
'root' => app_path(),
],
'config' => [
'driver' => 'local',
'root' => config_path(),
],
'public_folder' => [
'driver' => 'local',
'root' => public_path(),
],
'resources' => [
'driver' => 'local',
'root' => resource_path(),
],
'routes' => [
'driver' => 'local',
'root' => base_path('routes'),
],
],

В файле config/logging.php поменять:

'daily' => [
'days' => env('LOG_DAYS', 14),
],

В файле config/database.php дописать dump:

'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],

'dump' => [
'dump_binary_path' => env('DB_BINARY_PATH'), // only the path, so without `mysqldump` or `pg_dump`
//'dump_binary_path' => '/path/to/the/binary', // only the path, so without `mysqldump` or `pg_dump`
'use_single_transaction',
'timeout' => 300, // 5 minute timeout
//'exclude_tables' => ['table1', 'table2'],
//'add_extra_option' => '--optionname=optionvalue',
],
],

Активируем авторизацию

В терминале запускаем команды поочереди:

composer require laravel/ui
php artisan ui bootstrap --auth
npm install - лучше через помощник php storm.
npm install bootstrap
npm install jquery
npm install validate.js
npm install imask
npm install dropzone
npm install aos - если нужна анимация блоков при скроле.
npm run dev - запустить компиляцию.

Копируем файлы

.htaccess
error.php
resources/lang
storage/online
storage/site_off.php
storage/test.log
app/Console/Commands

В app/Providers/AppServiceProvider.php в метод boot() скопировать только это:

Schema::defaultStringLength(191);

И пространство имён:

use Illuminate\Support\Facades\Schema;

Запустить команду в терминале:

php artisan migrate

Запустить сайт в терминале:

php artisan serve

Открыть сайт в браузере и проверить работу.

Детальная настройка проекта

Копируем файлы и папки:

app/Exports
app/Helpers
app/Imports
app/Lib
app/Mail
app/Modules
app/Widgets
app/Main.php
app/User.php
app/Http/Controllers/Controller.php
app/Http/Middleware/AccessIpAdmin.php
app/Http/Middleware/Admin.php
app/Http/Middleware/BannedIp.php
app/Http/Middleware/OnlineUsers.php

В файле config/view.php дописать:

'paths' => [
resource_path('views'),
app_path('Modules'),
],

B app/Http/Kernel.php в метод protected $routeMiddleware дописать:

// Добавленные в /app/Http/Middleware
'access-ip-admin' => \App\Http\Middleware\AccessIpAdmin::class,
'admin' => \App\Http\Middleware\Admin::class,
'banned-ip' => \App\Http\Middleware\BannedIp::class,
'online-users' => \App\Http\Middleware\OnlineUsers::class,

В файле /app/Console/Kernel.php метод schedule(), не забудьте пространства имён скопировать.

В файле /app/Exceptions/Handler.php метод render(), не забудьте пространства имён скопировать.

В файле config/app.php добавить в 'aliases' =>:

// Добавляем алиасы
'Main' => App\Main::class,
'PanelDashboard' => App\Widgets\PanelDashboard\PanelDashboard::class,
'HelpersAdd' => App\Helpers\Add::class,
'HelpersArr' => App\Helpers\Arr::class,
'HelpersFile' => App\Helpers\File::class,
'HelpersLocale' => App\Helpers\Locale::class,
'HelpersStr' => App\Helpers\Str::class,
'Filter' => App\Widgets\Filter\Filter::class,
'Menu' => App\Widgets\Menu\Menu::class,

Скопировать с заменой файл routes/web.php.

Скопировать с заменой webpack.mix.js.

В файл package.json в "scripts": {} дописать (watch будет сохранять сжатые файлы):

"watch-prod": "npm run production -- --watch",

Скопировать всё из папки public с заменой (всё кроме index.php, mix-manifest.json, web.config).

Скопировать миграции в database/migrations:

2019_06_13_104905_create_pages_table
2019_06_13_111039_create_forms_table
2019_06_14_104905_create_uploads_table
2019_07_10_100248_create_roles_table
2019_06_20_084521_change_users_table
2019_08_07_124549_create_settings_table
2019_08_07_140457_create_menu_name_table
2019_08_07_140457_create_menu_table
2020_02_05_071222_create_categories_table
2020_02_05_071240_create_products_table
2020_02_05_073628_create_category_product_table
2020_02_05_204154_create_orders_table
2020_02_05_205458_create_order_product_table
2020_02_07_064509_create_users_last_data_table
2020_02_09_141027_create_banned_ip_table
2020_03_09_203758_create_product_gallery_table
2020_05_16_094455_create_filter_groups_table
2020_05_16_094505_create_filter_values_table
2020_05_16_094551_create_filter_products_table

В app/Http/Middleware/Admin.php раскомментировать (если нет, то будет ошибка), т.е. отключится код, который идёт ниже.

return $next($request);

Запустить команду в терминале:

php artisan migrate

В /app/Http/Middleware/Admin.php закомментировать обратно: (чтобы включить его работу)

return $next($request);

Добавить данные в таблицы: (здесь можно скачать стартовый дамп базы данных)

Вставить в таблицу Upload 2 последние строки.
Вставить в таблицу Settings настройки.
Вставить в таблицу Roles все роли.
Вставить в таблицу Users своего админа.
Если надо скопировать из таблицы Pages, также таблицы Products и др.

Установить Applications (подробно описано на странице приложений):

Laravel Debugbar
Google ReCaptcha
Laravel Log viewer
Laravel Backup Spatie
Laravel Excel Maatwebsite
Laravel File Manager Webmai
Mobile Detect
Curl Class

Скопировать resources/views/vendor/laravel-log-viewer.

Скопировать в app/Providers/AppServiceProvider.php всё содержимое. (Если не установлено Debugbar, то закомментировать код \Debugbar::disable(); в этом файле).

Запустить сайт и проверьте его работоспособность, в терминале:

php artisan serve

Если всё хорошо, то запустите команду для смены ключа приложения, в терминале:

php artisan key:generate

Теперь можно сделать Push на GitHub, если надо.

Настройки для SCSS в config/add.php, при изменении настроек необходимо запустить метод \App\Helpers\Upload::resourceInit(); в любом месте приложения, как правило, делаю это в AppController. После перекомпилировать стили, запустив npm команду.

По данной инструкции развёрнуто множество проектов. Приятной работы в приложении!

Loading...