[Apache]아파치 서버 설치 후 PHP 및 MySQL 연동(1) | dasfef

2023.06.02

개인 기록용 입니다 :) 오타, 수정 등 피드백 환영


본문 하단에 해당 블로그 링크 참조 안드로이드 미니프로젝트 진행 중 DB 연동을 실시해야 하는데 보안상의 이유로 안드로이드는 외부 DB와의 접속을 직접적으로 할 수 없다고 한다 때문에 웹서버를 구축하고 PHP를 통해 DB 데이터를 받아와야 한다 1.아파치 설치 1) 아래 링크를 통해 아파치 프로그램 다운로드 아파치 프로그램 다운로드 2) 다운로드 파일 압축 해제 후 Apache24 폴더 원하는 곳으로 이동 필자의 경우 C:\Program Files 경로로 옮겼습니다 PHP 연동을 위해 Apache24 폴더 내에서 수정해야 할 사항이 있습니다 하지만 다른 의도로 활용하실 경우 해당하는 사항이 아닐 수 있으니 개인 환경에 맞추어 적용시키세요 2.php 설치 1) 아래 링크에서 PHP 다운로드 PHP 다운로드 윈도우 x64 이고 아파치를 사용하기 때문에 Thread Safe(TS) 버전의 zip 파일로 다운로드 했다 Thread Safe(TS) 와 Non-Thread Safe(NTS) 의 차이는 php 다운로드 사이트 좌측에 설명 되어 있다 아파치를 사용한다면 VC15, VC16 버전 그리고 Thread Safe 버전을 사용하라고 설명이 되어 있고 TS는 멀티스레드 NTS는 싱글스레드 를 참조한다고 설명도 되어있다 다시 돌아와서 php zip 파일을 다운했다면 압축을 풀고 해당 폴더의 이름을 구분하기 쉽게 바꾼 뒤 아파치와 같이 원하는 폴더로 이동시킨다 필자의 경우 폴더 이름 : PHP 폴더 경로 : C\Program Files 로 이동시켰다 2) Apache24 > httpd.conf 파일 수정 C:\Program Files\Apache24\conf 경로 내에 httpd.conf 라는 이름의 파일이 존재 해당 파일을 메모장으로 열고 수정사항 적용 37번째 줄 필자는 Apache24 폴더를 C:\Program Files로 옮겼기 때문에 해당 하는 내용을 아래와 같이 바꾸었다 # 변경 전 Define SRVROOT "c:\Apache24" # 변경 후 Define SRVROOT "c:\Program Files\Apache24" ​ 227번째 줄 해당 내용을 보면 ServerName 을 www.example.com:80 으로 지정한 것을 볼 수 있는데 이 내용은 아파치 서버의 도메인 이름을 해당 내용으로 지정한 것이다 주석을 없애고 해당 내용을 수정하든 아래에 새로운 내용을 작성하든 상관없다 # 변경 전 # ServerName www.example.com:80 # 변경 후 ServerName localhost ​ 3) 포트번호 확인 만일 80번 포트를 쓰고 있다면 다른 포트를 활용해주어야 하는데 해당 내용은 60번째 줄 Listen 80 부분의 숫자를 원하는 포트번호로 수정해주면 된다 4) directoryIndex 설정 286번째 줄 우리는 html 파일이 아닌 php 파일을 불러올 것이기 때문에 해당 내용에 index.php 도 포함시켜준다 # 변경 전 DirectoryIndex index.html # 변경 후 DirectoryIndex index.php index.html ​ 5) 최하단에 아래 코드 추가 PHPIniDir "개인 환경 내 php 경로" LoadModule php7_module "개인 환경 내 php 경로/php7apache2_4.dll" AddType application/x-httpd-php .html .php AddHandler application/x-httpd-php .php ​ 3) php.ini php 폴더에 있는 php.ini-production 파일을 수정해야 한다 php.ini-production 파일을 php.ini 로 변경한다 이와 같은 과정은 php 설정에 필요한 config 파일을 Apache에 연동하기 위함이다 MySQL 연동을 위해선 php.ini​ 파일에도 수정이 필요하다 파일을 열어 아래 내용을 수정한다 최초 실행시 위 두 구문은 주석처리가 되어 있는데 주석을 풀어 해당 모듈을 사용하겠다고 선언한다 MySQL 연동에는 mysqli 라는 모듈이 필요하기 때문에 사용하겠다고 선언하는 것이라 생각하면 이해가 편하다 extension_dir 부분을 찾아 본인의 php 설치 경로 내에 있는 ext 폴더를 찾아 해당 경로를 넣어준다 4) Apache 실행 및 테스트 ① 명령프롬프트(CMD) 를 실행하여 관리자 권한으로 실행 ② Apache24\bin 이 있는 폴더로 이동 ③ Apache 서비스 설치 및 시작해보기 httpd -k install // Apache 서비스 설치 httpd -k start // Apache 서비스 시작 httpd -k stop // Apache 서비스 종료 httpd -k restart // Apache 서비스 재시작 httpd -k uninstall // Apache 서비스 제거 ​ ④ 웹브라우저 주소창에 localhost/index.html 로 접속 후 성공시 아래와 같은 결과가 나온다 ⑤ phpinfo 창 만들기 메모장을 열어 아래 내용을 기입 후 저장한다 이름은 아무거나 상관없지만 확장자는 .php 가 되도록 해야하며 편의를 위해 phpinfo.php 로 등록하겠다 Apache는 php, html 과 같은 파일을 Apache24 폴더 내 htdocs 라는 곳에서 불러온다 이러한 내용은 httpd.conf 파일에서 확인할 수 있는데 SRVROOT 의 경우 우리가 수정했던 Apache24 가 들어있는 경로이고 htdocs 는 해당 경로 내의 htdocs 폴더를 가리킨다 어쨌든 C:\Program Files\Apache24\htdocs 이 경로에 있는 파일을 읽어 온다는 말이니 작성한 phpinfo.php 파일을 해당 경로에 넣고 웹 브라우저 주소창에 localhost/phpinfo.php 를 입력해보자 이런 php 관련 정보가 나온다면 성공이다 참고 링크) gogoma.tistory.com carpe-diem0.tistory.com

겪은 오류 사례) httpd: Syntax error on line ~ 위와 같은 사례는 httpd.conf 파일 ~줄에 오류가 있다는 것이니 살펴보자 해당 구문에서의 오류인 것을 확인했으니 금방 해결할 수 있을것이지만 만일 LoadModule 과 관련된 것이라면 php 를 Thread Safe 로 설치했어야 하는데 Non-Thread Safe 로 설치했을 수 있다 다운로드 받은 파일명에 nts가 있는지 없는지 살펴보고 잘못 설치했다면 제대로 된 파일로 다시 설치하자 LoadModule php_module “C:\Program Files\PHP/php8apache2_4.dll” 이 구문에는 php 버전이 몇이냐에 따라 달라질 수 있으니 본인 환경과 맞는 파일을 잘 찾아보자