맥 내부에 apache/nginx 개발서버 세팅하기
지인 요청으로 글을 작성합니다.
본문의 설명은 Mac OS X 기준으로 작성하였지만 Windows OS 환경에서도 적용할 수 있습니다.
개발하는데 맥을 사용하면 매우 편리합니다.
대부분의 서버는 리눅스로 구동되며, 맥 또한 리눅스 기반이기 때문에 명령어도 유사하고, 서버 작업 관련 호환성 또한 매우 좋습니다.
이 글에서는 일반사업체/개발회사/에이전시/팀프로젝트 에서 적용할 수 있는 “맥 내부에 apache/nginx 개발서버 세팅하는 방법”에 대해서 설명하도록 하겠습니다.
1. 대부분의 실무에서 사용하는 작업 방식

실제 운영하는 서버 (라이브서버) 한대를 두고 직접 그곳에서 작업한다. (mysite.com 을 바로바로 작업)
작업 중에는 서버 오류가 발생할 수 있으며, 고객이 이용중 장애를 겪을 수 있다.
2. 더 나은 실무 작업방식

서버는 같은데 분리된 도메인의 (dev.mysite.com) 사이트를 만들고 복제된 사이트에서 개발&테스트 한 후 실제 사이트에 반영하는 방법.
실제 작업 서버에 도메인만 분리후 작업한다. 공유 리소스가 있을 경우 이것의 장애로 인해 실 서비스에 장애가 일어날 수도 있다.
3. 개발 서버를 따로 두는 작업방식

4. 각 작업자에게 로컬 서버를 세팅하고, 개발서버로 통합하는 방식
좀더 나아가서.

가상화 소프트웨어 설치.
가상화에 대해서는 설명하기엔 글이 길어질것 같아서 자세한 설명은 생략합니다.
몇가지 선택지가 있는데, vmware, virtualbox, xen, linux kvm 이 있는데 어느것을 선택해도 됩니다.
서로는 미미한 성능차이가 있으며, “로컬 개발서버” 목적에 모두 적합합니다.
이 글에서는 Virtualbox 를 선택할 것입니다.
자동 가상화 소프트웨어 설치
가상화 소프트웨어를 제어해서 자동으로 실행하도록 도와주는 “자동 가상화 소프트웨어”라는 것이 있습니다.
이 글에서는 vagrant 를 사용할 것입니다.
개발 환경 스택
여러 프로그램 꾸러미 세트를 스택(stack) 이라고 부릅니다.
개발 환경 스택은 웹서버(Apache /Nginx), 어플리케이션서버(PHP/Ruby/Python/NodeJS/HHVM), 데이터베이스서버(MariaDB/MySQL/PostgreSQL/MongoDB/Redis/SQLite) 로 구성됩니다.
이 글에서는 자동가상화소프트웨어 설치용 스크립트 PuPHPet 를 사용하겠습니다.
협업 소프트웨어
다수의 사람이 문제없이 동시수정을 할 수 있도록 관리하는 협업 소프트웨어를 사용할 것입니다.
1인 이상, 즉 모든 프로젝트에서 사용하기를 권장합니다.
저는 저 혼자 개발하는 개인 프로젝트에서도 이것을 사용합니다.
이 글에서는 GIT 환경 소프트웨어인 GITLAB 을 사용할 것입니다.
이제 협업하여 구축하는 방식을 설명하겠습니다.
일반적으로 프로젝트에서 이러한 환경 구축에 소모되는 기간은 1~2주일 입니다.
본인의 팀이 프로라고 1일만에 환경 구축할 수 있더라도 반드시 기간은 최소 일주일로 잡으세요. 빠른 구축 후 시간이 남는다면 놀아도 됩니다.
1. 프로젝트 이름 정하기
모든 것의 시작은 “이름 정하기 입니다”
이 예제에서는 “wp-project-1” 을 사용할 것입니다.
도큐먼트(/home/lael/Documents) 에 vproject 폴더와 그 안에 wp-project-1 및 test1 폴더를 생성합니다.

2. vagrant 설치
vagrant 는 가상화 소프트웨어를 제어하는 명령어툴(command line tool) 입니다.
https://www.vagrantup.com/downloads.html 에서 설치파일을 다운받아 설치합니다.

3. Virtual Box
Virtual Box 는 독립적인 가상 PC 환경을 구축해 주는 소프트웨어 입니다.
https://www.virtualbox.org/wiki/Downloads

4. 개발스택 정하기
https://puphpet.com/ 으로 이동 후 본인에 맞는 환경을 선택한다.
화면 중앙의 Get started right away. 를 클릭하자.



>> System Packages : 넘어가기 (skip)
>> Users & Groups : 넘어가기 (skip)

>> Firewall : 넘어가기 (skip)
>> Cron Jobs : 넘어가기 (skip)
>> Custom Files : 넘어가기 (skip)

Remove Block 을 클릭하여 제거합니다.

>> Install Apache : 넘어가기 (skip)
>> Let’s Encrypt : 넘어가기 (skip)
>> Install PHP : date.timezone 값만 변경합니다. 원한다면 일부 값을 수정해도 됩니다.

>> Ruby : 넘어가기 (skip) - Ruby 2.3.1 이 설치됩니다.
>> Python : 넘어가기 (skip) - Python 2.7 이 설치됩니다.
>> Install Node.js : 넘어가기 (skip)
>> Install HHVM : 넘어가기 (skip)
>> Install MariaDB
기본 예제값 모두 없에고 root 비밀번호를 1234 로 설정합니다.

>> Install MySQL : 넘어가기 (skip)
>> Install PostgreSQL : 넘어가기 (skip)
>> Install MongoDB : 넘어가기 (skip)
>> Install Redis : 넘어가기 (skip)
>> Install SQLite : 넘어가기 (skip)
>> Install MailHog : 넘어가기 (skip)
>> Install Beanstalkd : 넘어가기 (skip)
>> Install RabbitMQ : 넘어가기 (skip)
>> Install Elastic Search : 넘어가기 (skip)
>> Install Solr : 넘어가기 (skip)
다운로드해 주세요.
vagrant 파일을 다운받은 후 압축 푼 다음 콘솔을 열어서 해당폴더로 이동해주세요.
명령어
# vagrant up

OS 설치부터 개발환경 세팅까지 한번에 끝납니다. NFS 설정을 위해 비밀번호를 한번 물어봅니다.
호스트PC의 html 폴더와 웹서버의 document root 가 연결됩니다.
index.html 파일을 작업하면 즉시 개발 서버에 반영됩니다.

--
vagrant 명령어
vagrant up : 개발환경 켜기, 가상머신이 없다면 새로 생성함.
vagrant halt : 개발환경 끄기
vagrant ssh : 로컬서버로 쉘접속
vagrant destroy : 개발환경 제거(삭제)
그 다음에는 이 글을 통해 외부(또는 내부) GIT 서버를 구축하도록 하자.
미완성이며 글 설명 목차는 다음과 같다. (글을 몇번 더 다듬을 예정)
vagrant 의 html 폴더에 git 설정을 할것이다.
이것을 통해 동일한 환경의 웹서버가 동일한 코드로 돌아가게 된다.
나만의 작업을 할 수 있고, 완료가 되었다면 선택하여 커밋하면, 다른 사람의 웹환경에 적용이 된다.
실제 서비스에 영향을 주지 않고 작업자끼리 서로 다른 작업이 가능하다.
변경이 승인된 것에 한해서 서비스 서버에 패치가 가능하다.
끝.
저는 맥북에서 nginx 올려서 직접 개발하고 테스트 한다음에, 안쓰는 노트북으로 만든 리눅스 서버로 만들어서 하고있어요..
소스 관리는 bitbucket 쓰고있구요.
이렇게 하는 방법도 있군요.. 잘 알고 갑니다.
안녕하세요. 아직 초고 작성 후 수정중입니다.
서둘러 완성하도록 하겠습니다.
본문의 내용이 가장 단순하고 문제 발생의 여지가 없는, 표준의 방법이라고 생각합니다.
확실히 맥이랑 우분투랑 설정이 좀 다르더라구요
좋은 방법 알려주셔서 감사합니다
일등이네요^^
맥유저인 저로썸 상당한 희소식입니다
정말 감사합니다
넵 감사합니다.