배포란 우리 컴퓨터에 있는 소스코드를 누구나 볼 수 있는 인터넷 공간에 올려서 사용자들이 접속해볼 수 있게 하는 겁니다.
빠른 배포가 스타트업을 살게 하죠. 1차 MVP 버전 개발이 완료되었으므로 웹서버에 배포해 보겠습니다.
사실 PHP는 배포라고 부를만한 것이 별로 없습니다. 자바처럼 빌드가 필요한 것도 아니고, 장고, NodeJS, 루비 온 레일즈처럼 웹서버와 연동하기 위해 복잡한 절차가 필요한 것도 아닙니다. 그저 웹 루트에 가져다 두면 작동하죠.
우선 로컬 웹 서버에서 잘 작동하는지 확인해 봅시다. 대부분의 PHP 프로그램은 아파치를 사용하기 때문에 아파치를 이용하는 방법을 알아보겠습니다.
우리는 이미 MySQL과 PHP를 이용하기 위해 XAMPP를 설치했습니다. 운 좋게도 XAMPP에는 아파치도 들어있네요. XAMPP Control Panel을 열고 Explorer 버튼을 클릭해 봅시다.
XAMPP가 설치된 경로로 탐색기가 열립니다. xampp 설치 경로/htdocs/
아래에
sample
디렉토리를 생성하고 프로젝트 파일을 모두 복사합니다. 단 .
으로 시작하는 디렉토리들(.git
, .github
, .idea
) 은 복사할 필요 없습니다.
이제 xampp 설치 경로/htdocs/sample
아래에 .env
파일이 보일 겁니다.
DocumentRoot
설정하기이번에는 웹서버의 DocumentRoot
를 설정할 차례입니다. DocumentRoot
는 웹서버가 읽어야 하는 소스코드가 있는 위치를 나타냅니다.
XAMPP Control Panel에서 Apache
의 Config
항목을 클릭하고 Apache (httpd.conf)
를 누릅니다. 혹은 xampp 설치경로/apache/conf/httpd.conf
파일을 다른 편집기로 열어도 상관없습니다. 아래 이미지는 vscode로 열어본 것입니다.
Ctrl + F
로 DocumentRoot
를 찾습니다. 아무것도 수정하지 않았다면 252라인에 있습니다.
DocumentRoot "D:/programs/xampp_73/htdocs"
<Directory "D:/programs/xampp_73/htdocs">
당연히 D:/programs/xampp_73
디렉토리는 사용자마다 다르므로 본인의 환경에 따라 달라집니다.
아래처럼 우리가 파일을 복사한 디렉토리로 바꿉니다. 기존의 경로에 /sample/public
만 붙이면 됩니다.
DocumentRoot "D:/programs/xampp_73/htdocs/sample/public"
<Directory "D:/programs/xampp_73/htdocs/sample/public">
DocumentRoot
가 .env
파일이 있는 프로젝트 루트가 아니라 public
디렉토리임을 유의하세요. 모던 php는 실제 파일은 웹서버가 접근할 수 없는 곳에 두고 꼭 필요한 프론트 컨트롤러와 정적 자원만 public 디렉토리에 둠으로써 코드를 보안 위협에서 한단계 벗어나게 합니다.
설정이 끝났습니다. XAMPP에서 아파치를 멈췄다가 다시 시작하세요.
stop
글자가 보이게 합니다. http://localhost/post에 접속해서 글 목록이 잘 나오는지 확인해요.
우리는 spark
를 이용해서 개발을 진행했기 때문에 8080
포트를 사용했었는데, 아파치는 http 기본 포트인 80
포트를 사용합니다. 따라서 코드이그나이터4의 환경 파일을 수정하겠습니다. xampp 설치 경로/htdocs/sample/.env
파일을 편집기로 열어주세요.
.env
app.baseURL = 'http://localhost'
http는 80포트가 기본이기 때문에 :80
을 붙일 필요는 없으므로 제거합니다.