[Laravel7] Laradock에서 개발할 준비

11279 단어 PHP7LaraDockLaravel7

목적



새로운 환경을 구축할 때, 절차가 확립되어 있지 않으면 번거로운 일이 많았기 때문에,
Laradock로 만드는 간단한 절차를 여기에 기재해 두려고 한다.
※덧붙여 docker for mac에서의 docker 환경이 있다고 전제로 기재하고 있다.

1.Laradock 설정



1-1.Laradock 준비



laradock 는 이쪽으로부터 입수한다.

명령은git clone https://github.com/laradock/laradock.git

1-2.Laradock 설정



· mysql의 버전 지정이 있으면,

.env
MYSQL_VERSION=5.7.12

로 지정한다.

· 관리 화면에 Voyager를 사용하기 위해

.env
PHP_FPM_INSTALL_EXIF=true

로 둔다.

.phpfpm/Dockerfile
ARG INSTALL_EXIF=true

이쪽도 설정하는 것.

1-3.nginx conf 설정



· [XXX]는 호스트 이름이어야합니다.

nginx/sites/[XXX].conf
server {

    listen 80;
    listen [::]:80;

    server_name [XXX].local;
    root /var/www/[XXX]/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    error_log /var/log/nginx/app_error.log;
    access_log /var/log/nginx/app_access.log;
}

1-4.hosts 설정



・mac의 경우sudo vi /etc/hosts
/etc/hosts
127.0.0.1 [XXX].local

이제 http://[XXX].local/로 액세스 할 수 있습니다.

1-5.laradock 시작


docker-compose up -d nginx mysql workspace redis
이렇게 일어나면 성공.


1-6.mysql database 작성



.mysql 컨테이너에 들어가기docker-compose exec mysql bash
· mysql 시작mysql -uroot -proot
· database 작성 & 권한 부여CREATE DATABASE IF NOT EXISTS [XXX]_db COLLATE 'utf8_general_ci' ;GRANT ALL ON [XXX]_db .* TO 'default'@'%' ;

2.Laravel 설정



2-1.Laravel 준비



이와 같이 Laradock과 같은 장소에 Laravel project를 설치한다.

composer create-project --prefer-dist laravel/laravel [XXX]

2-2. .env 만들기



workspace로 들어가 [XXX]로 전환.docker-compose exec workspace shcd [XXX]
.env를 만듭니다.cd [XXX]cp .env.example .env
그리고 key:generate 해 둔다.php artisan key:generate

2-3. .env Mysql 설정



라라벨 [XXX] 바로 아래 .env

.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_HOST_READ=mysql
DB_PORT=3306
DB_DATABASE=[XXX]_db
DB_USERNAME=default
DB_PASSWORD=secret

※마스터/슬레이브 구성의 준비로서 DB_HOST_READ=mysql 를 추기하고 있다

2-4. .env redis 설정



라라벨 [XXX] 바로 아래 .env

.env
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

2-5. .env Voyager 설정



라라벨 [XXX] 바로 아래 .env

.env
SESSION_COOKIE=auth
SESSION_COOKIE_ADMIN=auth-admin

2-6. laravel/ui 설정(로그인 기능)


composer require laravel/uinpm install && npm run devphp artisan ui vue --authphp artisan migrate
[참고] htps : // 코 m / 카피 바나 센세이 / ms / c6b40366505f94103c35

2-7. voyager 설정


composer require tcg/voyagerphp artisan voyager:install
· 관리자 작성php artisan voyager:admin [email protected] --create
/config/session.php
$uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
if (strpos($uri, '/admin/') === 0 || $uri === '/admin') {
    $conf['cookie'] = env(
        'SESSION_COOKIE_ADMIN',
        str_slug(env('APP_NAME', 'laravel'), '_').'_admin_session'
    );
}

/config/auth.php
$uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
if (strpos($uri, '/admin/') === 0 || $uri === '/admin') {
    $conf['defaults'] = [
        'guard' => 'web',
        'passwords' => 'users',
    ];
}

[참고] htps : // 코 m / 다이 스 _ 야마자키 /

2-8. redis 준비


composer require predis/predis
[참고] htps : // 코 m / 마 7 7

2-9. doctrine/dbal 준비


composer require doctrine/dbal

2-10. 마스터/슬레이브 설정



config/database.php
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'read' => [
                'host' => env('DB_HOST_READ', '127.0.0.1'),
                'port' => env('DB_PORT', '3306'),
            ],
            'write' => [
                'host' => env('DB_HOST', '127.0.0.1'),
                'port' => env('DB_PORT', '3306'),
            ],

[참고] htps : // 코 m / 응규 / ms / 아 3 아 b2 에아 615 8 77 아 491

2-11. Laravel-enum


composer require bensampo/laravel-enum
[참고] htps : // m / 10 / 8 / ms / d 또는 b6fbf0 71389304f1

2-12. 캐시 클리어 등 실행


php artisan migratecomposer dump-autoloadphp artisan cache:clearphp artisan config:clearphp artisan route:clearphp artisan view:clear
이제 한 가지 준비가 됐을까 생각합니다.
여기에서는 Voyager에서 업하는 화상의 저장처를 S3로 하는 경우의 설정을 기술해 둡니다.
※본가의 문서, 동영상에는 있었습니다만, 일본어화되어 있지 않았으므로 망비록으로서.

3.S3 등 설정



3-1. 패키지 설치


composer require league/flysystem-aws-s3-v3

3-2. .env 설명



.env
AWS_ACCESS_KEY_ID=ユーザーを作成した際に表示されたAccess key ID
AWS_SECRET_ACCESS_KEY=ユーザーを作成した際に表示されたSecret access key
AWS_DEFAULT_REGION=ap-northeast-1 (東京リージョンの場合)
AWS_BUCKET=bucket名
AWS_URL=buketのURL
AWS_ENDPOINT=https://s3-ap-northeast-1.amazonaws.com(東京リージョンの場合)

[참고] htps : // m / chi _ v / ms / e cb 115 a 92 e b fu bf 6 a 92f

※ ENDPOINT는 Voyager의 업시에 이용하고 있습니까?
https://s3-[지역 이름].amazonaws.com
[참고] AWS 서비스 엔드포인트

3-3. Voyager용 설정



Voyager의 화상 파일의 저장처를 S3로 하고 싶지만, 설정 순서를 찾을 수 없었기 때문에 기재.

config/voyager.php
    'storage' => [
        'disk' => 's3',
    ],

※S3의 권한 설정도 필요.
(Voyager로부터의 이미지 업을 하므로 공개 설정으로 해 둔다)
[참고] htps : // 코 m/마 sch/아니 ms/훗 d4894087b7447827f

4. 기타



4-1.Helper



Laravel 5에 자체 제작 도우미 함수를 추가하는 모범 사례
※ 헬퍼 함수를 ​​읽는 서비스 프로바이더를 정의하는 방법 을 이용하고 있습니다

4-2.Api 설정



api에서도 session을 사용할 수 있도록 해 둔다.

app/Http/Kernel.php
        'api' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            // 'throttle:60,1',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

4-3. 관리 화면만 Basic 인증


php artisan make:middleware BasicAuthMiddleware
app/Http/Middleware/BasicAuthMiddleware.php
<?php

namespace App\Http\Middleware;

use Closure;

class BasicAuthMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $url = config('app.url');
        $urlAddress = [
            'http://[XXX].test',
        ];

        // localの場合は外す
        if(!in_array($url, $urlAddress)) {
            // PHPによるBasic認証
            switch (true) {
                case !isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']):
                case $_SERVER['PHP_AUTH_USER'] !== 'user':
                case $_SERVER['PHP_AUTH_PW'] !== 'password':
                    header('WWW-Authenticate: Basic realm="Enter username and password."');
                    header('Content-Type: text/plain; charset=utf-8');
                    die('このページを見るにはログインが必要です');
            }
        }

        header('Content-Type: text/html; charset=utf-8');
        return $next($request);
    }
}

※local에서는 basic 인증을 붙이지 않게 하고 있다.
※여기서 user와 패스워드를 관리하는 것보다, .env로 설정해 환경마다 바꾸면 좋을지도 모릅니다.

app/Http/Kernel.php
protected $routeMiddleware = [

        'basicauth' => \App\Http\Middleware\BasicAuthMiddleware::class, //追加
    ];

routes/web.php
// Basic認証
Route::group(['middleware' => 'basicauth'], function() {
    Route::group(['prefix' => 'admin'], function () {
        Voyager::routes();
    });
});

좋은 웹페이지 즐겨찾기