반응형
*생활코딩의 "egoing"님의 강의를 참고하여 서버를 구성하려다가 계획을 바꾸어 구성한 서버 구축 방법이다.
(http://opentutorials.org/module/384/4332#config_example 中 3번 동영상 'TCP CONNECTION')
왜 이런 방식으로 구성하는가에 대한 답변
TCP CONNECTION OR UPSTREAD MODULE 두가지 방식은
"독립된 웹서버"
한대는 NGINX, 한대는 PHP-FPM
->웹서버와 PHP가 동작하는 서버를 분리해서 웹서버가 더 많은 부하를 견뎌낼수 있다.
사진의 구성에서 [서버 환경]
1.NGINX + PHP-FPM NGINX
2.DATABASE (MYSQL) PHP5
로 변경하여 구성하였다. (두 대의 PC 서버 사용) MYSQL
정말 많은 삽질을 하였다..(대략 10시간..-_-)
자세한 설정은 각자 찾아보는 것이 좋을 것 같다.
결과부터 이야기 하자면, 설정은 다음과 같다.
1. 웹서버에서 /etc/nginx/sites-available/default -> fastcgi_pass unix:/var/run/php5-fpm.sock; 기본방
식 설정
2. 디비서버에서 /etc/mysql/my.cnf -> bind-address = 0.0.0.0 설정
db 포트는 기본값인 3306사용
3. 추가적으로 방화벽 예외 처리(ufw 명령어 사용)
추가적으로 원래 구상대로 구성 할 땐....(TCP CONNECTION)
1. 웹서버에서 /etc/nginx/sites-available/default -> fastcgi_pass를 php5-fpm서버의 ip로 해주어야 한다.
2. php5-fpm서버에서 /etc/php5/fpm/pool.d/www.conf -> listen 설정을 자신의 ip로 해주어야 한다.
1,2번을 통하여 웹서버가 php엔진에 작업처리를 위임할 수 있게 한다.
클라이언트가 접속하는 서버는 웹서버 주소이지만 실제 php파일은 php5-fpm서버에 있는 것.
파란 박스에 있는 설정이 현재 내가 구축한 서버환경이다. 정말 별 것 없어보이지만 그렇지 않다는 것을 오늘에서야 깨달았다.
설정값들이 의미하는 바와, 변경했을 때 생기던 여러가지 문제들..
(데이터베이스 sock(2) 오류..) 을 다시 잡는 데 많은 시간을 투자하였다. 기존에 코딩하였던 PHP파일로 테스트를 하다가 잘못된 SQL문을 사용했기 때문에 GET/POST방식으로 데이터베이스와 연동할 때마다 DB SOCK(2)에러가 발생하는 신박한 일이...
이것은 PHP를 바르게 고치고 데이터베이스 설정 또한 기존의 되던 설정값으로 복구 한 후에 sudo service mysql restart 와 sudo /etc/init.d/mysql restart 로 해결
error.log에 upstream 어쩌고 하는 에러메시지가 출력 될 경우 그것은 nginx와 php5-fpm의 ip/port 할당이 잘못되었을 확률이 높다. 적어도 나는 그랬다. nginx와 php5-fpm의 포트번호를 같게 지정해줘서...-ㅁ- (삽질의 날)
반응형