mac OS Mojave에서 개발환경 구축하기

최근 입사한 회사에서는 mac을 사용하다 보니 오랫만에 mac에서 로컬 개발환경을 셋팅했다. 그런데 사실 mac을 오랜만에 사용하거니와 mac os 버전에 따라 사용방법이 조금씩 다르기 때문에 할 때마다 헤매기 마련이다. 그래서 이번에 그 방법을 정리해보고자 한다.

  • 참고로 mac OS는 Mojave기준으로 작성되었으며
  • 개발환경 구축은 Brew 설치 + PHP 셋팅 + Mysql 설치를 의미한다.

1. 아파치 웹서버와 PHP 설정하기

mac은 기본적으로 아파치 웹서버와 PHP가 설치되어 있기 때문에 이를 활성화 시켜야 한다.

1)아파치 및 php 버전 확인 및 실행하기

$ apachectl -v
$ php -v
$ sudo apachectl start  

2)userdir 활성화를 위해 httpd-userdir.conf 파일 수정하기

일단, 파일을 수정하기 전에 아래 작업이 먼저 진행되어야 한다.

  • 사용자의 홈 디렉토리에 UserDir로 설정된 Sites 라는 디렉토리를 추가한다. 이는 ~user 요청에 응답하기 위해서이다.
$ cd ~
$ mkdir Sites
  • 그리고 Sites 디렉토리에 대해 기본 접근 방식을 지정해야 한다. 디렉토리를 read-only로 지정하기 위해서는 /private/etc/apache2/users/ 폴더에 자신의 계정명으로 된 username.conf 파일을 만들어야 한다
    • ex) junholee.conf

위작업을 완료했으면 /private/etc/apache2/extra/ 폴더에 있는 httpd-userdir.conf 파일을 수정해야 한다. 먼저 아래 명령어로 파일에 접속한다.

$ sudo vi httpd-userdir.conf

파일에 접속했으면 Include /private/etc/apache2/users/*.conf 문장의 주석을 제거하고 저장한다.

3)userdir 활성화를 위해 httpd.conf 파일 수정하기

httpd.conf 파일에서 mod_authz_core, mod_authz_host, mod_userdir 이렇게 3개의 모듈을 활성화해야 하는데 요세미티 이후로는 mod_authz_host 모듈과 mod_authz_core 모듈을 LoadModule하는 코드는 이미 주석이 제거되어 있는 상태이기 때문에 mod_userdir 모듈 부분만 아래와 같이 주석을 제거해서 활성화시켜주면 된다.

LoadModule userdir_module libexec/apache2/mod_userdir.so

그리고 httpd-userdir.conf 파일도 include 해주기 위해 아래와 같이 주석을 제거해야 한다.

Include /private/etc/apache2/extra/httpd-userdir.conf

4)userdir 활성화를 위해 username.conf 파일 생성하기

Sites 디렉토리에 대한 접근 방식을 지정하기 위해 /private/etc/apache2/users 폴더에 username.conf 파일을 생성한다. 내용은 다음과 같다.

<Directory "/Users/username/Sites/">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>

5)아파치 재시작 및 종료

$ sudo apachectl restart
$ sudo apachectl stop

2. Homebrew 설치


3. Mysql 설치 및 설정(mysql 8.0 기준)

1) Mysql 설치

이제 Mysql을 설치할 차례다. 위에서 설치한 Homebrew를 이용하면 아래 명령어로 쉽게 설치할 수 있다.

$ brew doctor
$ brew search mysql
$ brew install mysql

설치가 완료되었다면 “brew list” 명령어를 이용하여 설치 목록을 볼 수 있다. (Mysql이 있다면 정상적으로 설치가 된 것이다.)\

2) Mysql 기본 설정

mysql 설정을 위해서 “mysql_secure_installation” 명령어를 입력한 후 세부적인 설정을 진행한다.

mysql 기본 명령어

MySQL 서버 시작 : mysql.server start
MySQL DB 로그인 : mysql -uroot -p
MySQL DB 로그아웃 : exit 또는 quit
MySQL 서버 종료 : mysql.server stop

3) Mysql 사용자 외부접속 가능하게 하기

mysql에 대한 사용자 설정을 위해서 먼저 mysql에 접속한다. 참고로 사용자에 대한 권한을 주기 위해서는 GRANT OPTION에 대한 권한이 있어야 한다. 따라서 최초에 이런 권한을 주기 위해서는 root계정으로 mysql에 접속 해야 한다. (자세히 보기)

$ mysql -u 아이디 -p 
$ 비밀번호 입력

일단, 먼저 사용자를 생성한다.

mysql>CREATE USER '아이디' IDENTIFIED BY '비밀번호';
혹은 
mysql>CREATE USER '아이디'@'호스트' IDENTIFIED BY '비밀번호';

추가한 사용자에 대해 특정 IP에서만 접근 허용을 할 경우

mysql>GRANT ALL PRIVILEGES ON *.* TO '아이디'@'아이피주소';

추가한 사용자에 대해 특정 IP 대역에서만 접근 허용을 할 경

mysql>GRANT ALL PRIVILEGES ON *.* TO '아이디'@'192.168.%';

추가한 사용자에 대해 모든 IP에서 접근을 허용할 경

mysql>GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%';

GRANT OPTION을 부여하고 싶을 경우 마지막에 WITH GRANT OPTION 추가

mysql>GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' WITH GRANT OPTION;

권한 부여 후 잊지 말아야 할 명령어

mysql> flush privileges;

계정에 권한 부여 후 확인방법

mysql> use mysql;
mysql> select host, user from user;

4) 환경파일 설정하기

추가적으로 외부접속을 위해서는 /usr/local/etc 위치에 있는 my.cnf 파일을 찾아서 내용을 bind-address = 0.0.0.0 로 변경해야 한다.

0 Shares:
1 comment
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

기획자와 스토아철학

기획자로서 일을 하다보면 생각보다 많은 부분에서 우울할 때가 있다. 그 우울함이 심해지면 '나는 과연 필요한 존재가 맞는가?'라는 생각까지 들곤 한다. 문제는 이런 경험을 자주 할수록 자존감이 낮아진다는 것이다. 내가 겪어온 경험을 토대로 이 문제를 어떻게 극복했는지 이야기하고자 한다.
Read More

내 리더가 회사를 떠났다.

어떤 한 사람이 있다. 그 사람을 보면서 나는 이런 생각을 했다. "저 분의 인성과 역량을 닮고 싶다. 내 아들이 커서 어른이 된다면 나의 모습보다는 저 분의 모습을 닮았으면 좋겠다." 그 분은 내가 현재 재직중인 회사의 CTO이자 나의 리더였다. 아이러니하게도 그 분과 나는 전혀 다른 성격의 소유자이고 업무 스타일도 많이 달랐다. 하지만 난 정말로 그분을 닮고 싶었다.
2021년 회고
Read More

2021년 회고(Product Owner, 가족, 성장)

회사에는 동료와 일이 있다. 가정에는 아내와 애들, 육아업무가 있다. 그러나 그 어디에도 나는 없었다. 원래 나 본연의 내가 존재할 수 있는 시간과 장소는 없었다. 단지, 의무로서의 나만 존재했다. 언뜻 생각해보면 참 서글프기도 하지만 잘 생각해보면 꼭 그렇지도 않다. 현재 나의 상황, 역할, 가족, 일.....그 모든 것이 결국은 나를 구성한다. 원래 나 본연의 나는 처음부터 없는 것인지도 모르겠다.