본문 바로가기

개발/PHP

PHP 개인 프로젝트 Hello Danal 유지보수 기

 

서론

옛날에 신입사원때 저런 프로젝트를 만든 적이 있다.

PHP, Mysql 을 사용해야하는데, 어딘가에 무료로 올려놓기가 힘들었다.

대부분 Netlify 를 애용하는데 거기엔 mysql 을 올리기가 어렵고,

국내 무료호스팅 ivyhosting, dothome 등 서비스는 너어어무 귀찮게 계속 3개월 6개월마다 갱신을 해줘야 했다.

얼마전에 infinityfree 를 알게됐다. 여기에 다시 올려보자,,

 

Dir 정리

다만 git 으로 프로젝트를 열어보니, php 파일 20여개가 root dir 에 흩뿌려져 있는게

너무 보기 싫었다.

폴더 만들어서 프로젝트 디렉터리부터 정리했다.

그 다음에 php 내부 파일들의 경로 설정을 해줬다.

 

Root Dir 설정

config / define.php 를 생성하여,

이렇게 코드를 생성한다.

이후 모든 파일은 include("../config/define") 을 호출하도록 한다.

더 나은 방법이 있을것 같긴 한데 ㅠ

 

dockerizing (docker-compose)

예전에 만지면서  docker-compose 로 mysql, php 2개 컨테이너에 띄우기 쉽게 만들다가 말았다.

다시 줍줍 해서 설정.

docker-compose.yml 속에 mysql 컨테이너는 이름이 "db" 이다.

33060 : 3306 로 내부 3306 포트를 호스트의 33060으로 매핑 시켜놨고,

volumes 또한 prodDir : /var/www/html/ 로 매핑 시켜놨다.

신기한 점은, host 컨테이너에서 phpmysql 을 호출할땐 127.0.0.1 : 33060 (컨테이너 실행 파라미터로 매핑해놓은 포트) 로 연결이 됐는데, 막상 웹에서 호출할땐 connection refused 가 뜬다.

근데 docker exec -it php /bin/bash 를 실행해 bash를 띄운 후

db : 3306 으로 설정하니 연결이 되는 것이다.

웹에서 호출할 땐  docker 기준으로 실행된다.

또한 fopen 을 통해 log 를 남기도록 해놨는데, permission denied 가 계속 뜬다.

이게 컨테이너 권한 설정 문젠지, php 설정 문젠지, volume 매핑이 뭔가 잘못됐는지,

어디가 문제의 C bar 점인지 너무 헷갈렸는데,

docker exec -it php /bin/bash 로 들어가니 root 계정으로 실행되고, 

이 상태에서 chmod -R 777 logs 디렉터리를 하니 해결 됐다.

다만, docker exec 를 사용하는 점, root 계정을 사용하는 점, 777 권한 부여하는 점은

* 보안상의 문제 (root 를 쓰는 점이 docker 의 취약점이고, 그래서 K8s에게 왕좌를 내어줬다고 한다)

* 유지보수상의 문제 (원래 docker 를 쓰는 용도가 해당 서버에 ssh 접근을 피하기 위해서 이니)

이 있으니, 프로젝트가 정상 구동된 후에 개선점을 찾아본다.

 

일단 어찌 DB 연결까지 했다.

다음에 더 작성해보도록 한다..

 

반응형

'개발 > PHP' 카테고리의 다른 글

[펌][번역] PHP 코드를 최적화하는 40가지 팁  (1) 2023.09.25