서론
옛날에 신입사원때 저런 프로젝트를 만든 적이 있다.
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 |
---|