PHP 개발환경 구축

1. 개발 환경 구성

(1) 디렉토리 생성

D 드라이브에 WAMPDev 디렉토리를 생성하고 하위 디렉토리로 PHPDev, Platform 디렉토리를 생성한다.

 

2. 개발툴 다운받기

- Apache 서버 : Apache 2.4.26

- MySQL : MySQL Community 5.7.18.0

- PHP : PHP 7.1(7.1.6)

- phpMyAdmin : phpMyAdmin 4.7.1

 

(1) Apache 서버 다운받기

- 경로 : http://apachelounge.com/download/

- 자신의 플랫폼(OS)에 맞는 버전을 다운받는다.

 

(2) MySQL 다운받기

- 경로 : https://dev.mysql.com/downloads/

 

(3) PHP 다운받기

- 경로 : http://windows.php.net/download/

- 자신의 플랫폼(OS)에 맞는 버전을 다운받는다.

- Non-Thread Safe, Thread Safe 방식으로 나누어져 있는데, 웹서버가 IIS이면 Non-Thread Safe(NTS) 버전, Apache이면 Thread Safe(TS) 버전을 다운 받는다.(자세한 설명은 'CGI, ISAPI, FastCGI, PHP' 포스트를 참조)

 

(4phpMyAdmin 다운받기

- 경로 : https://www.phpmyadmin.net/downloads/

- 지원하는 MySQL, PHP 버전에 맞게 다운받는다.

 

3. 환경 구성하기

(1) 다운받은 파일 설치

① 다운받은 파일이 위치한 Platform 디렉토리로 이동

 

② 다운받은 파일 중에서 httpd-2.4.26-Win64-VC15.zip, php-7.1.6-Win32-VC14-x64.zip 압축 해제후 아래와 같이 디렉토리 구성

- 파일 'httpd-2.4.26-Win64-VC15.zip' 압축 해제하면 httpd-2.4.26-Win64-VC15 하위 폴더에 Apache24 폴더와 -- Win64 VC15  --, ReadMe.txt 파일이 생성되는데 Apache24 폴더만 위 그림처럼 복사하고, httpd-2.4.26-Win64-VC15 폴더는 삭제

- 파일 'php-7.1.6-Win32-VC14-x64.zip' 압축 해제하면 php-7.1.6-Win32-VC14-x64 폴더가 생성되는데 해당 폴더명을 php7.1.6으로 변경

 

4. Apache 서버 설치

(1) D:/WAMPDev/Platform/Apache24/conf 폴더로 이동하여 httpd.conf 파일 수정

 

① ServerRoot 경로 변경

Ctrl+F로 ServerRoot "c:/Apache24" 를 찾습니다. 

 

그리고 따옴표 안의 부분을 아파치 압축 푼 경로와 일치하게 적어줍니다.

ServerRoot "c:/Apache24" -> ServerRoot "D:/WAMPDev/Platform/Apache24"

이때 디렉토리 기호인 ₩는 가급적 / 로 변경해 주세요(이건 앞으로 경로 적는 부분 모두 공통입니다. PHP 설치할 때도 마찬가지.)

 

② 포트 변경 (옵션)

Ctrl+F로 Listen 80 를 찾습니다.

 

원하는 포트로 변경하면 되는데, 보통 웹브라우저에서 도메인 입력하면 80포트로 접속됨으로 웬만하면 바꾸지 않습니다.

 

③ 웹문서 저장위치 변경

Ctrl+F로 DocumentRoot "c:/Apache24/htdocs" 를 찾습니다.

 

DocumentRoot "c:/Apache24/htdocs" 를 찾아서 따옴표 안의 위치를 원하는 경로로 수정합니다. 

DocumentRoot "c:/Apache24/htdocs" -> DocumentRoot "D:/WAMPDev/PHPDev"

 

앞으로 홈페이지 데이터나 워드프레스 등의 블로그데이터는 모두 이 위치에 넣어야 합니다.

아래에 있는 <Directory "c:/Apache24/htdocs"> 의 경로도 DocumentRoot 경로와 일치시켜 줍니다.


 

D:/WAMPDev/Platform/Apache24/htdocs 폴더에 존재하는 Index.html 파일을 D:/WAMPDev/PHPDev 폴더에 복사합니다.

 
 

④ ServerName 변경

Ctrl+F로 ServerName www.example.com:80 를 찾습니다.


 

#을 제거하고 ServerName localhost:80 또는 ServerName 127.0.0.1:80라고 바꿔줍니다. 이러면 외부 인터넷망 미연결 시에도 브라우저에서 http://localhost/ 를 입력해서 홈페이지 데이터를 불러올 수 있습니다.

뒤의 80포트는 ②에서 Listen 포트를 변경했다면 반드시 일치시켜 주어야 합니다.

 

(2) Apache 서비스 등록

① Win키+R을 누르고 control 을 입력합니다. 그리고 시스템→고급 시스템 설정→고급 탭의 “환경 변수(N)” 단추를 누릅니다.

 

 

② 시스템 변수(S)에서 Path를 찾아 더블 클릭하면 환경 변수 편집 창이 나타나는데, “새로 만들기(N)” 버튼을 누르고 위 스크린 샷처럼 Apache를 설치한 경로에서 bin폴더까지의 값을 입력한 후 빠져나옵니다.

 
 

③ Win키+X 버튼을 누르고 명령프롬프트를 관리자 권한으로 실행합니다.

 

④ 명령프롬프트 창에 httpd -k install 이라고 입력해서 아파치 서비스를 설치합니다.

 

만약 설치시 오류가 발생한다면 아래 '아파치 서비스 설치시 오류 발생할 경우 해결 방법'을 참조하세요.

 

⑤ 방화벽 해제 관련 메세지가 뜨는데, 액세스 허용(A) 버튼을 눌러 계속 진행합니다.

 

 

 

⑥ httpd -k start 라고 입력하여 아파치 서비스를 시작합니다.

 

⑦ 이제 명령프롬프트 창을 닫고 웹브라우저를 띄워서 주소창에 http://localhost 또는 http://127.0.0.1 이라고 입력하여 아파치 서버가 제대로 설치되었는지 확인합니다.(만약 ②에서 포트를 변경했었다면(예:8888) http://localhost:8888 같은 형태로 입력해야 합니다.)

 

(3) Apache 서비스 명령어

① 아파치 서비스를 설치 : httpd -k install

② 아파치 서비스 시작 : httpd -k start

③ 아파치 서비스 종료(중지) : httpd -k stop

④ 아파치 서비스 재시작 : httpd.exe -k restart

⑤ 아파치 서비스 제거 : httpd.exe -k uninstall 혹은 httpd.exe -k uninstall -n [서비스 이름]

 

2. 아파치 서비스 설치시 오류 발생할 경우 해결 방법

(1) 아래 그림처럼 VCRUNTIME140.dll 오류 발생시

오류가 발생하는 원인은 Microsoft Visual C++ 2015 재배포 가능 패키지가 설치되지 않았기 때문입니다.

 

① https://www.microsoft.com/ko-kr/download/details.aspx?id=53840에 접속하여 자신의 플랫폼(OS)에 맞는 버전을 다운받는다.

 

 

 

 

 

② 다운로드 받은 'vc_redist.x64.exe' 파일을 실행

 

③ 라이센스 동의하고 설치(Install) 버튼을 클릭하여 설치 시작

 

④ 설치 완료

 

⑤ 다시 아파치 서비스 설치

 

(2) 아래 그림처럼 '액세스 권한에 의해 숨겨진 소켓에 액세스를 시도했습니다'라는 오류가 발생시

오류가 발생하는 원인은 동일한 80포트를 IIS가 사용하고 있기 때문입니다.

 

① 서비스 들어가서, world wide web publishing service를 중지 합니다.

 

② 아파치 서비스 제거하고, 다시 아파치 서비스를 설치합니다.
 

1. PHP 설치

(1) D:/WAMPDev/Platform/php7.1.6 폴더로 이동하여 php.ini-production 파일 수정

 

① extension_dir 경로 변경

Ctrl+F로 ; extension_dir = "./" 를 찾습니다.

 

그리고 주석(; - 세미콜론)을 제거하고 따옴표 안의 경로를 “php 설치 디렉토리/ext” 의 형태로 수정합니다. 

; extension_dir = "./" -> extension_dir = "D:/WAMPDev/Platform/php7.1.6/ext"

이때 디렉토리 기호인 \는 될 수 있으면 /로 변경하도록 합니다.

 

② php.ini-production 파일 이름을 php.ini로 변경합니다.

 

(2) D:/WAMPDev/Platform/Apache24/conf 폴더로 이동하여 httpd.conf 파일 수정

 

① IfModule dir_module 수정

Ctrl+F로 <IfModule dir_module> 를 찾습니다.

 

 

DirectoryIndex에 index.php을 index.html 앞에 넣습니다.

 

② 맨 밑에 아래의 구문을 추가합니다.

PHPIniDir "php.ini 파일이 있는 경로"
LoadModule php7_module "php 설치경로/php7apache2_4.dll"
AddType application/x-httpd-php .html .php
AddHandler application/x-httpd-php .php

 

 

​③ 아파치 서버 재시작(Win+X → 명령 프롬프트(관리자)(A) → httpd -k restart 입력)

 

(3) PHP 설치 확인

① 아파치 웹문서 저장공간(저는 D:/WAMPDev/PHPDev 입니다.)에 메모장으로 아래처럼 입력하고 phpinfo.php 라는 파일이름으로 저장합니다.

<?php
phpinfo();
?>

 

 

② 웹브라우저 주소창에 http://localhost/phpinfo.php 라고 입력해 봅니다.

 
 

1. MySQL 다운로드

(1) 다운로드

① https://dev.mysql.com/downloads/ 사이트에 접속하면 아래와 같은 화면이 나오고, 다운로드 버튼을 클릭하여 다운로드 페이지로 이동한다.

 

② 페이지를 이동하면 화면 중앙부에 OS 버전에 맞는 다운로드 버튼이 제공되고, 이 버튼을 클릭하여 설치 패키지 파일을 다운로드 받는 페이지로 이동한다.

 

③ 전체 설치 패키지 파일 다운로드을 클릭한다.(MySQL 설치 프로그램은 32 비트이지만 32 비트와 64 비트 바이너리를 모두 설치)

 

④ MySQL 사이트에 로그인하라는 인증 화면이 나타나는데, 스크롤을 더 내려보면 인증창 아래 로그인 없이 다운로드만 받겠다는 텍스트 링크가 있고 이 링크를 통하여 MySQL을 가입이나 로그인 절차 없이 바로 다운로드 가능하다.

 

⑤ 다운로드가 완료되면, 다운로드 확인.

 

2. MySQL 설치

(1) 설치 

① 다운로드 받은 설치 패키지 파일을 실행하면 Windows Installer가 실행되면서 MySQL의 설치를 시작한다. 라이센스 동의 화면이 뜨면 라이센스에 동의하고, Next 버튼을 클릭한다.

 

 

② 설치 화면이 뜨면 자신에게 맞는 설치 타입을 선택하고 Next 버튼을 클릭한다.

 

- Developer : MySQL로 응용 프로그램을 개발하는 데 필요한 모든 제품을 설치. 이것이 기본 옵션.

- Server only : MySQL 서버만 설치

- Client only : MySQL Workbench와 같은 MySQL 클라이언트 제품만 설치. 여기에는 MySQL 서버가 포함되지 않음.

- Full : 사용 가능한 모든 MySQL 제품 설치.

- Custom : 설치할 MySQL 제품을 수동으로 선택하고 선택적으로 사용자 정의 MySQL 데이터 및 설치 경로를 구성.

 

③ 설치하려는 제품 중에 몇가지 필요한 것들이 있는데 설치를 하려면 선택하고 아니면, 그냥 Next 버튼을 클릭한다.

 

 

④ 미 설치에 대한 알림창이 뜨는데 그냥 무시하고, 설치를 진행한다.

 

 

⑤ 설치될 MySQL 구성요소들을 보여주는데, Execute 버튼을 클릭하고 설치를 진행한다.

 

 

⑥ 각 구성 요소들의 설치가 진행된다.

 

 

⑦ 설치가 완료되면, Next 버튼을 클릭한다.

 

(2) 환경 설정

① 기본 환경설정을 진행하겠다는 화면인데 Next 버튼 클릭하고 진행한다.

 

② 고 가용성 솔루션 선택 화면인데, 기본값을 선택하고 Next 버튼을 클릭한다.

- Standalone MySQL Server / Classic MySQL Replication (default) : 독립형 MySQL 서버의 초기 구성

 

- InnoDB Cluster Sandbox Test Setup (for testing only) : 테스트를 위해 InnoDB Cluster Sandbox 인스턴스를 로컬로 생성하고 구성

 

③ MySQL을 어떤 환경에서 구동할 것인지를 물어보는데, 개발 환경을 설정할 것이므로 해당 기본 설정을 그대로 두고 Next 버튼을 클릭한다.(TCP/IP 기본 포트 번호가 3306으로 지정)

- Developer : 다른 많은 응용 프로그램을 호스팅할 컴퓨터로 일반적으로 개인 워크 스테이션. 이 옵션은 MySQL이 최소한의 메모리를 사용하도록 설정한다.
- Server : 이 컴퓨터에서 웹 서버와 같은 다른 여러 응용 프로그램이 실행 중. 이 옵션은 중간 크기의 메모리를 사용하도록 MySQL을 설정
- Dedicated : MySQL 서버 실행 전용 머신. 웹 서버와 같이 이 서버에서 다른 주요 응용 프로그램을 실행할 수 없으므로 이 옵션은 MySQL이 사용 가능한 대부분의 메모리를 사용하도록 구성
 

④ root의 초기 비밀번호를 지정해 준 후에 Next 버튼을 클릭한다. 개발 버전이라 암호를 간단히 설정해서 암호 보안이 취약(Weak)으로 보여진다.

 

⑤ 백그라운드에서 항상 실행할 수 있도록 Windows Service에 등록하도록 설정하는 창인데 해당 기본 설정을 그대로 두고 Next 버튼을 클릭한다.

 

⑥ 플러그인 및 확장 설정하는 창인데 해당 기본 설정을 그대로 두고 Next 버튼을 클릭한다.

 

⑦ Execute 버튼을 클릭하여 서버 설정을 진행한다.

 

⑧ Finish 버튼을 클릭하여 서버 설정을 진행한다.

 

⑨ 라우터 설정, 샘플과 예제들을 설치할지 결정하는 화면인데 기본 설정을 그대로 두고 Next 버튼을 클릭한다.

 

 

 

⑩ 아래 화면에서 Check 버튼을 클릭하여 서버 접속이 제대로 되는지 확인한 후 Next 버튼을 클릭한다.

 

⑪ Execute 버튼을 클릭하여 서버 설정을 진행한다.

 

⑫ 설정이 완료된 것을 확인하고, Finish 버튼을 클릭한다.

 

⑬ 기본 환경설정이 완료된 것을 확인하고 Next 버튼을 클릭한다.

 

⑭ 설치 완료 확인하고 Finish 버튼을 클릭한다.

 

3. 환경 변수 설정

프롬프트상에서 접속이 필요한 경우를 대비해서 MySQL의 bin 디렉토리를 Window 환경변수에 추가
 
(1) 설정

① Win키+R을 누르고 control 을 입력합니다. 그리고 시스템→고급 시스템 설정→고급 탭의 “환경 변수(N)” 단추를 누릅니다.

 

 

② 시스템 변수(S)에서 Path를 찾아 더블 클릭하면 환경 변수 편집 창이 나타나는데, “새로 만들기(N)” 버튼을 누르고 위 스크린 샷처럼 MySQL 실행 경로(C:\Program Files\MySQL\MySQL Server 5.7\bin) 값을 입력한 후 빠져나옵니다.

 

1. phpMyAdmin 설치

(1) 폴더 복사

① 다운받은 파일이 위치한 Platform 디렉토리로 이동

 

② 다운받은 파일 중에서 phpMyAdmin-4.7.1-all-languages.zip을 Apache의 웹문서 저장 위치에 phpMyAdmin 폴더를 만들고 이 위치에 압축 해제

 

(2) config.sample.inc.php 파일 수정

 

① config.sample.inc.php 파일을 워드패드로 연 후에 아래와 같이 수정

[수정 전]

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */


/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

 

[수정 후]

$cfg['blowfish_secret'] = '1234567890'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */


/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true;

 

② config.sample.inc.php 파일 명을 config.inc.php로 변경

 

 

(3) PHP 7.1.6 설치경로에서 php.ini 파일 수정

 

① Ctrl+F로 ;extension=php_mbstring.dll 를 찾아서 주석을 풀어주고(; 삭제)

② Ctrl+F로 ;extension=php_mysqli.dll 를 찾아서 주석을 풀어주고(; 삭제)

 

(4) 아파치 서비스 재시작

① 아파치 서버 재시작(Win+X → 명령 프롬프트(관리자)(A) → httpd -k restart 입력)

 

(5) phpMyAdmin 설치 확인

① 웹브라우저에서 http://localhost/phpmyadmin을 요청합니다.

 

② MySQL 설치시 등록한 계정을 입력하고, 실행 버튼을 클릭합니다.

 

③ 아래와 같이 MySQL 정보 화면이 뜨면 제대로 설치된 것입니다.

 

(6) 'phpMyAdmin 설정 스토리지가 완전히 설정되지 않아, 일부 확장 기능들이 비활성화 된 상태입니다.' 해결 방법

 

① phpMyAdmin 설정 공간을 위한 데이터베이스를 생성합니다. root 계정으로 접속하여 create_tables.sql 파일을 가져오기하면 phpmyadmin 데이터베이스가 생성됩니다.

 

 

 

② phpMyAdmin이 DB를 사용하기위한 계정을 생성하고, phpmyadmin 데이터베이스에 대한 권한도 추가한다.

 

 

③ phpMyAdmin 설정 파일인 config.inc.php 파일을 워드패드로 연 후에 아래와 같이 수정

 

[수정 전]

/**
 * phpMyAdmin configuration storage settings.
 */


/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';


/* Storage database and tables */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

 

[수정 후]

/**
 * phpMyAdmin configuration storage settings.
 */


/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '3306';
$cfg['Servers'][$i]['controluser'] = 'phpmyadmin';
$cfg['Servers'][$i]['controlpass'] = 'developer';


/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

 

④ 웹브라우저에서 http://localhost/phpmyadmin을 요청하고, 해당 계정으로 인증 후 아래와 같이 MySQL 정보 화면이 뜨면 제대로 설정된 것입니다.

 

 

'D.E.V > etc..' 카테고리의 다른 글

AWS - CI/CD  (0) 2024.01.17
윈도우10 정품인증  (1) 2023.11.28
CI/CD  (0) 2023.10.25