개발환경 : Ubuntu 18.04 Desktop



1. Laradock 설치


https://laradock.io/


Quick Overview에는 mysql을 설치하라고 되어 있으나 8.0.4 이후 버전 이슈로 인해 mariadb로 설치한다.

http://yypbd.tistory.com/1784


여러 개의 프로젝트를 하나의 Laradock으로 구동하는 방법으로 설정한다.


내 작업경로는 ~/project/php/



a) laradock 다운로드


git clone https://github.com/laradock/laradock.git



b) .env 파일이 없다면 env-example 파일을 복사해서 .env 파일 생성


cp env-example .env



c) mariadb를 이용할 것이므로

.env 파일에서 PMA_DB_ENGINE 항목을 찾아서 mariadb로 변경


d) db 설정 변경

필요하다면 .env 파일에서 MARIADB 항목을 찾아서 생성할 db, user, password등을 변경한다.

여기에서는 default 설정을 그대로 이용하기로 한다.




2. Laravel 설치


~/project/php/ 경로에 작업할 Laravel 프로젝트를 생성한다.

여기서는 laradock의 예제와 같이 project-1, project-2 을 만들어본다.


composer, php-mbstring, php-xml을 설치해야 할 수도 있다.

docker와 별개로 laravel을 다운받기 위해 필요하다.

내 경우는 php 7.0이 설치되어 있어서 php7.0-mbstring, php7.0-xml, php7.0-mysql을 설치했다.


sudo apt install php7.0-mbstring php7.0-xml php7.0-mysql


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

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




3. hosts 수정


브라우저에서 아래의 url로 테스트하기 위함이다.

http://project-1.test

http://project-2.test


a) hosts 파일 수정


sudo vi /etc/hosts


127.0.0.1  project-1.test
127.0.0.1  project-2.test


위 내용을 추가한다.

저장 완료하고 hosts 적용


sudo /etc/init.d/networking restart



b) 접속 확인

127.0.0.1로 ping이 가는지 확인해본다.


ping project-1.test

ping project-2.test





4. nginx 설정 수정


프로젝트 경로와 테스트 호스트를 연결한다.


laradock/nginx/sites/ 에서 laravel.conf.example을 복사해서 project-1.conf, project-2.conf 파일을 생성한다.


cp laravel.conf.example project-1.conf

cp laravel.conf.example project-2.conf


각각의 conf 파일을 열어서


server_name project-1.test;

root /var/www/project-1/public;

server_name project-2.test;
root /var/www/project-2/public;


와 같이 수정한다.




5. docker 실행


a) docker 설치


https://docs.docker.com/install/linux/docker-ce/ubuntu/#prerequisites



b) docker-compose 설치


https://docs.docker.com/compose/install/#install-compose



c) docker 실행


~/project/php/laradock/ 에서


sudo docker-compose up -d nginx mariadb phpmyadmin redis workspace


docker나 docker-compose의 버전이 낮다면 설치가 제대로 안될 수가 있다.
a)의 문서 보고 가급적 최신 버전으로 설치한다.


6. phpmyadmin 접속 확인

웹브라우저를 열어서 http://localhost:8080  으로 접속해본다.


server : mariadb

username : root

password : root



7. project-1 설정


~/project/php/project-1 에서 작업



cp .env.example .env

vi .env


laradock의 설정을 변경하지 않았으면 기본으로 default database가 생성되나 이 데이터베이스를 이용해본다.

.env 파일을 열어서 아래의 내용과 같이 추가하거나 수정한다.


APP_URL=http://project-1.test


DB_HOST=mariadb

DB_DATABASE=default

DB_USERNAME=default

DB_PASSWORD=secret


REDIS_HOST=redis


QUEUE_HOST=beanstalkd


8. 사이트접속 확인


웹브라우저를 열어서


http://project-1.test/


사이트가 접속이 되는지 확인한다.

키설정을 하지 않았으니 당연히 오류가 발생할 것이다.


php artisan key:generate

env DB_HOST=127.0.0.1 php artisan migrate



다시 접속해서 laravel 초기 페이지가 제대로 열리는지 확인해본다.



Laravel 개발환경 구축하려고 Laradock을 설치했다.

작업환경은 Ubuntu 18.04.




Laradock의 Quick Overview에 있는 내용대로 적용.

docker-compose로 docker 실행하고 Laravel 받아서 설치 완료.


Model 추가해서 db 작업되는 것 확인하고 User 추가해서 로그인하려는데 오류 발생.

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client



구글링해보니 MySQL 8버전에서 기본인증 부분이 변경되었다고 한다.


https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-4.html


Laradock 설정에서 mysql이 latest로 되어 있어서 8.0.12버전이 설치되었다.





해결방안


1. mysql 8.0.12 버전의 인증 방법을 예전 인증방법으로 변경한다.

https://github.com/laradock/laradock/issues/1392


2. mysql을 예전 버전으로 downgrade


3. mariadb로 변경




'Programming > PHP' 카테고리의 다른 글

Laradock으로 Laravel 개발환경 구축하기  (0) 2018.10.18

+ Recent posts