Laravel5.7 트레이닝 1(환경 구축~HelloWorld)

목적


  • 후배와 함께 Laravel 기회에 할당되기 때문에 후배에게 튜토리얼과 복습을 겸하여 쓴다
  • 대상은 PHP를 건다, Laravel은 초급자용 정도
  • 후배씨는 PHP는 거는다. 프레임워크는 처음. 그 정도라도 알 수 있도록 쓴다

  • 목표


  • CRUD 앱이 스스로 구축할 수 있는 정도를 목표로 한다

  • 환경 구축



    Laradock 가 편리하다고 들었기 때문에 그것 사용합니다.

    전제


  • Git
  • Docker

  • 자신의 환경


  • macOS Mojave 10.14.2
  • Docker Desktop for mac 2.0.0.2
  • Visual Studio Code 1.32.3

  • Laradock 소개



    기본적으로 공식 참조
    # clone
    [03:34:54] takai@MyMBP /Users/takai/laravel-training (0)
    > git clone https://github.com/laradock/laradock.git
    # Project directory 
    [03:47:17] takai@MyMBP /Users/takai/laravel-training (0)
    > mkdir hello-world
    [03:47:28] takai@MyMBP /Users/takai/laravel-training (0)
    > ll
    total 0
    drwxr-xr-x   2 takai  staff    64B  3 28 03:47 hello-world
    drwxr-xr-x  77 takai  staff   2.4K  3 28 03:46 laradock
    [03:47:35] takai@MyMBP /Users/takai/laravel-training (0)
    > cd laradock/
    [03:48:05] takai@MyMBP /Users/takai/laravel-training/laradock (0)
    > cp env-example .env
    
  • ./laradoc/.env의 APP_CODE_PATH_HOST를 방금 만든 프로젝트의 상대 경로로 편집
  • # Point to the path of your applications code on your host
    APP_CODE_PATH_HOST=../hello-world/
    
  • 여기서 PHP, MySQL, Nginx 등등 설정할 수 있다 (이번은 그대로)
  • 나중에 알았지만, migrate가 Mysql의 version에 따라서는 인증 방식으로 빠지기 때문에 my.conf를 편집한다

  • /laradock/mysql/my.conf
    # 末尾に追加
    default_authentication_plugin= mysql_native_password
    
  • docker-compose up 에서 컨테이너 시작 (괜찮 았어)
  • 여기까지 PHP, Nginx, Mysql은 OK!
  • [04:00:48] takai@MyMBP /Users/takai/laravel-training/laradock (0) 
    > docker-compose up -d nginx mysql
    [04:20:48] takai@MyMBP /Users/takai/laravel-training/laradock (1) 
    > docker-compose exec --user=laradock workspace  bash
    laradock@c46d12c67821:/var/www$
    


  • 우선 HelloWorld

  • ./hello-world/hello-world.php
    <?php
    print "HelloWorld!\n";
    
  • 터미널에서 확인
  • laradock@c46d12c67821:/var/www$ ls
    hello-world.php
    laradock@c46d12c67821:/var/www$ php hello-world.php 
    HelloWorld!
    # あとで邪魔になるので消しとく
    laradock@c46d12c67821:/var/www$ rm hello-world.php
    

    HelloWorld


  • LaravelProject 만들기
    composer에서 Laravel 프로젝트 만들기
  • laradock@4a6645da762b:/var/www$ composer create-project --prefer-dist laravel/laravel=5.7.* ./
    
  • ./hello-world/.env 편집

  • /hello-world/.env
    DB_CONNECTION=mysql
    DB_HOST=mysql
    DB_PORT=3306
    DB_DATABASE=default
    DB_USERNAME=default
    DB_PASSWORD=secret
    
  • 브라우저에서 http://localhost/ 에서 표시 확인
  • laravel-Mysql 연결 확인
  • laradock@4a6645da762b:/var/www$ php artisan migrate
    Migration table created successfully.
    Migrating: 2014_10_12_000000_create_users_table
    Migrated:  2014_10_12_000000_create_users_table
    Migrating: 2014_10_12_100000_create_password_resets_table
    Migrated:  2014_10_12_100000_create_password_resets_table
    
  • Router에 hello-world 추가

  • /hello-world/routes/web.php
    <?php
    
    Route::get('/', function () {
        return view('welcome');
    });
    
    // 追加
    Route::get('/hello-world', function () {
        return view('hello');
    }); 
    
    
  • view 추가 (welcome.blade.php 복사 및 편집)

  • /hello-world/resources/views/hello.blade.php
    <!doctype html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
    
            <title>Hello</title>
    
            <!-- Fonts -->
            <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
    
            <!-- Styles -->
            <style>
                html, body {
                    background-color: #fff;
                    color: #636b6f;
                    font-family: 'Nunito', sans-serif;
                    font-weight: 200;
                    height: 100vh;
                    margin: 0;
                }
    
                .full-height {
                    height: 100vh;
                }
    
                .flex-center {
                    align-items: center;
                    display: flex;
                    justify-content: center;
                }
    
                .position-ref {
                    position: relative;
                }
    
                .top-right {
                    position: absolute;
                    right: 10px;
                    top: 18px;
                }
    
                .content {
                    text-align: center;
                }
    
                .title {
                    font-size: 84px;
                }
    
                .links > a {
                    color: #636b6f;
                    padding: 0 25px;
                    font-size: 13px;
                    font-weight: 600;
                    letter-spacing: .1rem;
                    text-decoration: none;
                    text-transform: uppercase;
                }
    
                .m-b-md {
                    margin-bottom: 30px;
                }
            </style>
        </head>
        <body>
            <div class="flex-center position-ref full-height">
                @if (Route::has('login'))
                    <div class="top-right links">
                        @auth
                            <a href="{{ url('/home') }}">Home</a>
                        @else
                            <a href="{{ route('login') }}">Login</a>
    
                            @if (Route::has('register'))
                                <a href="{{ route('register') }}">Register</a>
                            @endif
                        @endauth
                    </div>
                @endif
    
                <div class="content">
                    <div class="title m-b-md">
                        Hello Laravel Wolrd!
                    </div>
                </div>
            </div>
        </body>
    </html>
    
    
  • 브라우저에서 http://localhost/hello-world/ 방문

  • 좋은 웹페이지 즐겨찾기