Dokku에서 Laavel5 프로젝트 설계

8742 단어 dokkuPHPLaravel
저는 2015년에 졸업했습니다@kadoyau.학부 시절 로봇을 만지작거리다가 병원에서 C++로 소리를 적는 정보처리로 입사 후 즐거워좀 큰 망치. 인터넷 개발을 했다.얼씨구!PHP7 최고!!(빙글빙글 도는 눈)

산타클로스가 온 집을 꾸미다


크리스마스가 이틀 남았다.
홍리서송은 산타클로스다.오늘, 나는 너에게 이틀 동안 산타클로스라고 부르는 방법을 가르쳐 주고 싶다.

굴뚝을 쌓다


고용된 산타클로스의 수입은 일정 기간 디자인된 선물의 가치에 의해 결정된다.산타클로스는 굴뚝이 있는 집을 좋아해 선물을 고속으로 디자인하는 데 쓰인다는 것이다.굴뚝이 없는 집에서 선물을 설계하는 것은 매우 번거롭죠.
산타클로스를 맞이하기 위해 먼저 굴뚝붉은 송어으로 건설합시다!

도꾸가 뭐야?


제작 서비스를 디자인하면 조금만 의욕을 북돋우지 않으면 곤란하다.
서비스를 하고 싶은데 필요한 DB와 환경을 하나하나 구축해야 한다.산타클로스는 선물 디자인을 망설였다.
히어쿠 같은 파아스를 회사 내에서 사용하면 환경 구축은 히어쿠에게 맡기고, 산타클로스는 코드와 설정을 조금만 써도 쉽게 디자인할 수 있어 편리하다.
도쿠를 사용하면 도커의 기본 히로쿠 레이크를 만들 수 있는 파우스.이것은 굴뚝이다.우선 아래 기사를 참고하여 하루 안에 굴뚝을 세우세요.
참조: Dokku
이렇게 해서 산타클로스라는 준비를 마쳤다.

디자인 선물


다음날 아침 깨어났을 때 산타클로스가 보낸 편지(업무 의뢰 서류)가 당신에게 도착했습니다.
"어머나, 어쩔 수 없구나."라고 네가 말하면서 붉은 포도주 낡은 옷을 입었다.
네.너는 산타클로스다.남은 하루 동안 굴뚝에서 회사의 서비스를 설계합시다!
(여기서 괜찮은 BGM 틀어주세요)

본문의 목적


실제로 산타클로스 업무 의뢰를 받은 필자가 굴뚝(Dook)에 선물(PHP 애플리케이션)을 설계하는 데 실패한 점을 예를 들어 소개한다.
또 선물은 라벨5라는 프레임을 활용해 개발됐다.(테마를 PHP로 설정하면 됩니다.)
이 글을 읽으신 여러분, 실패하지 않는 세계선으로...!

가정하다


컨디션

  • 도쿠의 설치가 끝났고 디버깅도 가능합니다.
  • Laavel5를 사용하는 프로젝트를 설계하려고 합니다.
  • 서버는nginx를 사용합니다.
  • 표식

  • 괄호(〃)가 있는 경우 프로젝트에 사용할 문자열을 적절하게 바꾸십시오.괄호를 삭제하십시오.
  • 호스트dokku의 서버 이름은 your.dokku.domain입니다.
  • 참조: Dokku의 버전 확인 방법

    ssh [email protected] version
    0.3.21
    

    Dokku에서 Laavel 프로젝트를 설계할 때 가장 적합한 점


    간단하게 디버깅하면 Node.js 응용 프로그램으로 만들기


    PHP 프로젝트를 개발할 때 주의사항이 많습니다.
    라벨의 일반 프로젝트를 설계하려면 다음과 같은 결과가 나온다.
    git push dokku <deploy branch>
    
    (略)
    -----> Node.js app detected
    
    기본 및 node입니다.js 프로젝트로 오인되었습니다.
    루트에composer.json가 있다면 PHP의 응용으로 여겨지지만 낮은 차원에서package.json가 있다면 노드의 응용으로 여겨진다.이거 히로쿠도 마찬가지야.
    참조: Docker 미니 Heroku!사쿠라 구름으로'도쿠'- 벚꽃 해설.

    해결 방법: PHP 프로젝트로 설계


    사용Heroku에서 PHP를 사용할 때 주의해야 할 점-Qita.이것은 응용 프로그램을 설치할 때 서버 설정을 지정할 수 있는 Heroku의 구조입니다.
    Dokku는 Heroku의build pack을 지원합니다.
    Dokku supports deploying applications via Heroku buildpacks with Herokuish or using a project's dockerfile.
    Buildpacks
    Heroku 공식 PHP용 빌드 패키지Dokku - The smallest PaaS implementation you've ever seen를 사용합니다.
    설치heroku/heroku-buildpack-php는 프로젝트의 노선에 .buildpacks 파일을 만들고 그 안에 GiitHub의 URL을 쓰면 자동으로 읽는다.
    .buildpack
    https://github.com/heroku/heroku-buildpack-php
    

    콩 지식: "Dokku PHP"로 조사해보면, 맨 위 창고는 2015년 11월 30일까지 아직 제대로 작동하지 않습니다.


    pauldub/dokku-multi-buildpack는 트랩이며 중간에 아래와 같이 오류를 토해내면 됩니다.
    원래 PHP5입니다.6도 대응하지 않고 불안을 부추긴다.
    remote: /tmp/buildpack3k4mD/bin/compile: line 270: /app/bin/jq: No such file or directory
    remote:  !     Script error in /tmp/buildpack3k4mD/bin/compile on or near line 270
    

    시험이 제멋대로 이루어져서 실패했고 설계도 실패했다


    도쿠한테 다시 디버깅하면 또 실패할 거야.
    (略)
    -----> Preparing runtime environment...
           NOTICE: No Procfile, using 'web: vendor/bin/heroku-php-apache2'.
           Using release configuration from last framework (PHP).
    -----> Discovering process types
           Procfile declares types -> web
    -----> Releasing <App name>...
    -----> Deploying <App name>...
    -----> Running pre-flight checks
           For more efficient zero downtime deployments, create a file CHECKS.
           See http://progrium.viewdocs.io/dokku/checks-examples.md for examples
           CHECKS file not found in container: Running simple container check...
    -----> Waiting for 10 seconds ...
    remote: App container failed to start!!
    =====> <App name> container output:
           No dyno detected; using defaults for 1X...
           4 processes at 128MB memory limit.
           Starting php-fpm...
           Starting httpd...
    =====> end <App name> container output
    remote: /usr/local/bin/dokku: 52 行: 18907 強制終了            dokku deploy "$APP"
    (略)
    

    해결 방법: 자체 제작 CHECKS 파일


    자동 제작된 프리-flight checks가 실패한 것 같습니다.bobmaerten/dokku-buildpack-php 보면서 자작.프로젝트의 노선에 CHECKS된 서류를 작성하여 적당한 테스트를 작성한다.
    CHECKS
    WAIT=5
    
    이상의 파일을 만들면 정상적으로 디버깅을 할 수 있습니다.수고하셨습니다.

    Dokku에서 명령을 실행하면 "cannot enable tty mode on non tty input"이라고 합니다.


    출력 결과를 표시할 수 없습니다.

    해결 방법: - t 추가 옵션 실행


    The -t is used to request a pty.
    오류 메시지에 나타나는 링크

    Dokku에서 만든 응용 프로그램의 환경 변수를 설정하고 싶습니다.


    필요하면 응용 프로그램 고유의 환경 설정을 추가할 수 있다.
    ssh [email protected] config:set <アプリ名> ENV=development
    

    Dokku로 DB의 migration을 해보고 싶어요.


    DB를 사용하는 응용 프로그램을 만들려면 Dokku에 DB를 설정해야 합니다.해봐.

    DB 생성

    ssh [email protected] postgresql:create <App name>
    

    결과 내보내기

    PostgreSQL container created: postgresql/<App name>
    
           Host: IP_ADDRESS
           Port: PORT
           User: 'user'
           Password: 'password'
           Database: 'db'
    
           Url: 'postgres://user:password@IP_ADDRESS:PORT/db'
    
    이 DB의 설정을 참조하여 Laavel 측의 설정 파일(.env)을 다시 작성합니다.
    .env
    DB_CONNECTION=pgsql
    DB_HOST=IP_ADDRESS
    DB_DATABASE=db
    DB_USERNAME=user
    DB_PASSWORD=password
    
    또한 Laavel 측에서 config/database를 사용합니다.php에서 사용하는 포트를 PORT로 변경합니다.엔비DB_HOST=IP_ADDRESS:PORT 등도 움직이지 않도록 주의하세요.

    DB 설정 확인


    이미 DB가 있는 경우 아래 명령을 통해 같은 항목을 확인할 수 있다

    DB 목록 가져오기

    ssh -t [email protected] postgresql:info
    

    DB 세부 정보 가져오기

    ssh -t [email protected] postgresql:info <DB name>
    

    DB에서 초기 값 설정하기


    Laavel의 Seeder 클래스를 작성하는 경우 artisan 명령을 사용하여 초기 값을 설정할 수 있습니다.
    Seeder급 제작 방법: Dokku - The smallest PaaS implementation you've ever seen
    ssh -t [email protected] run <App name> "php artisan migrate:refresh --seed"
    
    Rolled back: 2014_10_12_100000_create_password_resets_table
    Rolled back: 2014_10_12_000000_create_users_table
    Migrated: 2014_10_12_000000_create_users_table
    Migrated: 2014_10_12_100000_create_password_resets_table
    Seeded: UsersTableSeeder
    Connection to your.dokku.domain closed.
    

    초기 값이 올바르게 설정되었는지 확인


    PHP artisan을 사용하여 DB에 등록된 사용자 확인
    ssh -t [email protected] run <App name> "php artisan tinker \<App name>\User::all()"
    
    초기 값이 정상적으로 설정되어 있으면 이 값이 출력됩니다.

    기타 설정


    기본적으로 루트의 URL은 index.php, your입니다.domain.index.php에 접근하기를 원하기 때문에nginx의 설정을 바꿨습니다.
    이러한 Dokku와 연관된 설정 파일은 Database: Seeding - Laravel - The PHP Framework For Web Artisans입니다.

    좋은 웹페이지 즐겨찾기