---- 아래 내용은 리눅스 또는 맥OS에서 동작하며 윈도우의 경우 정상동작 하지 않을 수 있다. ----

라라벨 스터디를 하기 위해서는 내 PC에 반드시 PHP를 설치해야 한다.

그리고 동작을 위해서 매번 php로 임시서버를 실행시키는 번거로움도 있고,

DB, Redis, nginx 등 여러 환경을 세팅하기 위해 내 PC에 많은 것들이 설치될 수 있어 관리도 어렵고 성능도 걱정이 된다.

그래서 이 모든 것을 하나도 설치하지 않고(물론 docker를 위해 docker 설치는 필수) 사용하는 환경을 구축할 것이다.

 

일단 laradock을 설치한다.

설치는 아래 명령으로 간단히 끝난다.(끝난다기 보단 docker-compose 를 위한 환경을 다운로드 받는 것이다.)

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

다운로드가 끝나면 laradock 폴더가 생긴다.

docker-compose 명령어는 모두 laradock 폴더에서 실행한다.

실제 사용하게 되는 폴더 구조는

  • 현재폴더
    • laradock
    • 프로젝트 폴더1
    • 프로젝트 폴더2

이런식으로 구성되게 된다.

이 부분은 모두 설치 후 확인해 보면 된다.

 

이제 환경 파일을 설정하면 된다.

laradock 폴더에서 아래 명령을 실행한다.

cp env-example .env

환경 파일(.env)에서 아래 부분을 수정한다.

...
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=./data
...

...
# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have seperate containers per project.
COMPOSE_PROJECT_NAME=laradock-study
...

...
NGINX_HOST_HTTP_PORT=80
NGINX_HOST_HTTPS_PORT=443
...

DATA_PATH_HOST 는 이후 database의 데이터가 저장될 장소이다.

수정하지 않게 되면 이후 만드는 모든 laradock 프로젝트의 DB는 같은 DB를 보게 된다.(같은 DB를 보길 원하면 수정하지 않아도 됨)

COMPOSE_PROJECT_NAME 은 docker-compose에서 만들게 될 프로젝트 이름이 되는데,
이 부분이 같은 프로젝트들의 경우 같은 container를 사용하게 되어 여러 프로젝트를 할 경우 변경해주는 것이 좋다.

NGINX_HOST_HTTP(S)_PORT 의 경우 포트가 겹치면서 문제가 발생할 경우 포트를 변경해준다.

 

그리고 우선 할 일은 laravel 프로젝트를 생성하는 것이다.

처음에는 laravel 프로젝트가 없으므로 workspace부터 실행시킨다.

laradock 폴더에서 실행한다.

docker-compose up -d workspace

그리고 해당 컨테이너로 들어가 laravel 프로젝트를 생성한다.

docker-compose exec workspace bash

이제 확인해 보면 알겠지만 laradock 상위 폴더가 /var/www 을 가리키는 것을 확인할 수 있을 것이다.(물론 수정 가능하지만 이게 가장 나은 것으로 판단 했다.)

 

라라벨 프로젝트를 생성한다.

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

 

이렇게 라라벨 프로젝트 준비가 끝났다.

 

이제 라라벨을 실제로 사용하기 위해 컨테이너를 나온다.(exit 명령 사용)

 

nginx 설정에서 laravel을 정확히 보기 위해서 ./nginx/sites/laravel.conf.example 파일을 복사한다.

cp ./nginx/sites/laravel.conf.example ./nginx/sites/prj1.conf
vi ./nginx/sites/prj1.conf

아래와 같이 수정한다.(단, prj1.test로 접속할 수 있는 환경을 만들어야 함)

...
    server_name prj1.test;
    root /var/www/prj1/public;
    index index.php index.html index.htm;
...

만일 localhost로 접속할수 밖에 없다면 default 파일을 수정한다.

vi ./nginx/sites/default.conf

아래와 같이 수정함

...
    server_name localhost;
    root /var/www/prj1/public;
    index index.php index.html index.htm;
...

 

nginx와 mariadb, workspace 컨테이너를 실행시켜 준다.

docker-compose up -d nginx mariadb workspace

 

이제 브라우저에서 접속하면 된다.

http://localhost or http://localhost:포트번호

macOS 시에라버전부터 PPTP를 이용한 vpn 접속이 제거 되었다.

그로인해 iptime 공유기 사용자들은 더 이상 간단한 방법으로는 vpn 접속이 어렵게 되었다.


그런데 최근 iptime 공유기가 업데이트 되면서

L2TP 서버가 생기게 되었다.

(A8004NS-M 사용 중이며, 펌웨어 버전은 10.07.4 이다)


방법을 정리해서 올린다.


우선 iptime 공유기에서 vpn 설정을 한다.

고급 설정 > 특수기능 > VPN 서버설정



L2TP 서버 실행 을 클릭하고

비밀키를 입력한다.(이 비밀키는 나중에 시스템 인증 > 공유 보안 에 사용된다)


VPN으로 접속할 계정을 생성한다.

계정, 비밀번호, 접속이 되었을 때 할당할 주소를 입력하고 추가 버튼을 클릭한다.

(위와 동일하게 하는 것이 아닌 원하는 계정, 암호, 주소를 입력하면 된다.)


이제 맥에서 세팅을 한다.

시스템 환경설정 > 네트워크 로 이동한다.

그리고 + 버튼을 눌러 새 네트워크를 추가한다.


인터페이스는 VPN


VPN 유형은 L2TP


서비스 이름은 원하는 이름을 입력하고 생성 버튼을 클릭한다.


이제 나머지 구성을 입력한다.

서버 주소를 입력하고(서버 주소는 공유기 관리 페이지에서 기본 설정 > 시스템 요약 정보 에서 외부 IP주소 로 확인이 가능하다)

계정 이름을 입력한다.(아이피타임 공유기에서 입력한 계정을 입력


인증 설정을 클릭하여 암호를 입력한다.

사용자 인증 의 암호는 user_pw를 입력하면 된다.(물론 비밀번호는 본인이 입력한 것을 사용한다.)

모두 입력 하였으면 확인을 클릭한 후 가장 우 하단의 적용 버튼을 클릭한다.


그리고 현재 설정한 공유기를 통해 인터넷을 사용 중이라면 연결 테스트가 불가능하다.

테더링을 이용하거나 주변의 다른 공유기를 이용해 접속해야 한다.


연결 버튼을 누르면 연결이 되는 것을 확인할 수 있다.



테스트 하면서 확인해본 결과

문제 없이 접속이 되는 것은 확인 하였으나,

자주 테스트하고 나니 갑자기 접속이 되지 않기 시작하였다.

아무래도 업데이트한지 얼마 되지 않아서 안정적이지는 못한 것 같다.


몇 번의 업데이트 후에는 항상 잘 동작하지 않을까 싶다.











이번에 작업 환경을 Mac 으로 변경하면서

Docker를 이용해서 PHP + SQL Server 환경을 만들어 내야 했다.

문제는

기존에는 아래 링크에서 본대로 작업하여 문제 없이 사용하였는데,

https://docs.microsoft.com/ko-kr/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

참고로 모두 작업 후

pecl install sqlsrv

pecl install pdo_sqlsrv

명령을 실행시켜 줘야 한다.


규모가 큰 프로젝트에 사용하면서 에러가 발생했다.

에러는 아래와 같다.


PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlsrv.so' (tried: /usr/lib64/php/modules/pdo_sqlsrv.so (/usr/lib64/php/modules/pdo_sqlsrv.so: undefined symbol: php_pdo_register_driver), /usr/lib64/php/modules/pdo_sqlsrv.so.so (/usr/lib64/php/modules/pdo_sqlsrv.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0


이거 문제 덕분에 거의 2일은 사용된 것 같다.

결국 방법은

https://github.com/Microsoft/msphpsql/wiki/FAQ#what-is-this-error-php-startup-unable-to-load-dynamic-library-pdo_sqlsrvso

이 링크에 나와 있다.

결론적으로 말하자면
자신이 사용하게 될 곳의 extension 로드되는 곳이 있는데,
그 곳에 직접 extension=pdo_sqlsrv.so 후순위로 시작되도록 하면 되었던 것이다.

나의 경우
echo "extension=pdo_sqlsrv.so" >> /etc/php/7.2/fpm/conf.d/30-pdo_sqlsrv.so

이렇게 해서 해결 하였다.


+ Recent posts