라라벨 시작하기 7 – sail

당연하게도 php를 설치해야 한다.

https://php.watch/articles/php-8.3-install-upgrade-on-debian-ubuntu

혹시 몰라 컴포저도 설치했다.

https://getcomposer.org/download/

그리고 라라벨 부트캠프를 계속 하자면 Bleeze를 설치 하라고 나온다. 인증에 관련된 플러그인으로 보인다. 이걸 계속 진행하려면 php의 extension를 설치 하라고 나온다.

sudo apt install php8.3-xml php8.3-dom

그럼 정상적으로 설치가 완료된다.

그리고

또다시 에러

php artisan breeze:install blade

이걸 실행하면 위 화면과 같은 에러가 난다. 에러의 연속. 모듈이 없다는데. 스택오버플로우에 현자가 해결방법을 알려줬다.

https://stackoverflow.com/a/77546437/8432566

이걸로 설치는 완료 했는데 또다시 에러등장. 아주 끝이 없다.

원인은 ./vendor/bin/sail 로 시작하는 명령을 해야 에러가 안 난다.

실행 완료. 오늘은 여기까지.

라라벨 시작하기 6 – docker

이렇게 어이없게도 /var/run/docker.sock 의 모드를 666(rw) 로 변경하는 것만드로 실행이 됐다. 잠깐. 사용자를 추가하는것은 아무 영향도 못미쳤을까?

이건 내가 잘못했다. 도커그룹에 사용자를 추가하는 것만으로도 충분했다. 그런데 왜 실패했을까? 그건 변경된 설정이 적용되기 위해선 재접속을 해야했기 때문.

나에게 답을 알려준 https://thxxyj.tistory.com/42 여기에도 재접속을 하라고 나와있다. 그런데 내가 이를 무시하고 기존 접속을 유지한체 도커를 실행시켰기 때문에 문제가 발생한 것이다.

굿!

라라벨 시작하기 5 – bootcamp

public/index.php가 시작점이다.

  1. HTTP/Console 커널
  2. 서비스
  3. 라우팅

구조 자체는 코드이그나이터랑 비슷한거 같다. 그럼에도 라라벨만의 특징이 있겠지. 설명만 봐선 잘 이해가 안간다. 한 번 사용을 해 보면서 어떤 구조인지 파악하는 과정이 필요하다. 의존성 주입도 있고 해서 마치 스프링부트 같기도 하고.

부트캠프

라라벨은 부트캠프를 제공하고 있었다. 한번 따라 해보자.

우분투의 경우 설치 과정에서 extension을 추가로 설치 해줘야 한다. php-xml, php-curl 을 설치해주자. env는 code를 실행하여 수정해주자.

막히는 중

The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file "/var/www/html/storage/logs/laravel.log"

권한 문제인데 storage에 있는 logs의 권한이 root 인데 php는 sail로 실행하고 있어서 로그를 저장할 수 없다. 해당 디렉토리의 권한을 변경하거나 사용자그룹을 변경하면 되긴 하는데 이게 맞는건지 모르겠다. 좀더 조사중.

라라벨 시작하기 4 – Sail

Sail

라라벨은 Framework인데 기존 내가 아는 Framework가 아니다. 내가 생각하는 Framework는 특정 언어에서 개발을 시작할 때 MVC처럼 미리 틀을 만들어 놓고 그 틀에 맞춰 개발을 하면 되는 그런걸 생각하고 있었다. 내가 접한 대부분의 Framework가 그랬다.

codeigniter도 그랬고 Django, Flask도 그랬다. Node의 Express도 그렇고. 그런데 가만 생각해보니 스프링부트는 https://start.spring.io/ 라는걸 만들어놓고 Dependency를 추가하여 확장 가능하게 했다. 그러더니 라라벨은 Sail이란 커맨드 툴을 만들어 docker-compose 에 필요한 것들만 추가할 수 있게 했다. 실제 배포과정에선 이 부분을 어떻게 풀어나갈지 궁금하다.

사용 가능한 서비스는 mysqlpgsqlmariadbredismemcachedmeilisearchminioseleniummailpit 가 있다고 한다.

이중 meilisearch, minio, mailpit은 처음 보는 서비스라 여기에 정리해보자.

meilisearch

검색엔진이다. elastic search처럼 문서들로부터 빠른 검색을 해준다. 보통 elastic stack이라 해서 elastic search, logstash, kibana를 한데묶어 msa환경에서 로그통합을 하는데 이 meilisearch도 그런 용도로 사용할 수 있는건가? 슬쩍 봐선 그런 내용은 없는데.

찾아보니 meilisearch 서비스는 실시간 검색, 타이포에 특화되어 있어 사용자 경험에 맞춰져있다. 그리고 왠만한 언어를 지원해서 기존 서비스에 통합하기도 쉽다. 만약 내 서비스가 사용자 검색을 할 일이 있고 타이핑 와중에도 검색 내용이 시시각각 변하게 하고 싶으면서 오타가 발생해도 비슷한 내용을 검색결과로 보여주고 싶다면 이 서비스를 사용하는게 직접 개발하는 것보다 나을것이다. 그렇다곤 해도 이걸 실제로 써보지않으면 어떤 느낌인지 모르겠다. 이것도 나중에 알아보는걸로.

minio

오브젝트 관리 서비스이다. AWS S3와 완벽하게 호환된다. 오브젝트는 파일이다. 이미지, 문서 모든 것들이다. 이들을 관리하는 서비스이다. 당장은 쓸일이 있을까 싶다.

mailpit

메일 테스팅 도구라는데 이것도 뭔지 모르겠다.