애플 맥미니, 맥북 웹서버 구축 튜토리얼 전체과정
www.mblog.kr





   2012년도 부터 제가 운영하고 있는 macOS 웹서버 시스템의 구축과정을 튜토리얼 방식으로 공유한다. 이 튜토리얼은 제가 운영중인 Mac Mini 2011, 2012, 2014, 2020 M1 등에 설치 가능한 최신 macOS 를  기준으로 설명을 진행한다.



 애플 맥미니 웹서버 구축 동기


   여러 웹사이트를 운영하기 위해서, 연간 적지 않은 서버호스팅 비용 및 SSL 인증서 비용 등을 소요되어, 단순히 자체서버 구축을 통해 서버호스팅 비용을 절감하려고 맥미니 2011 ~ 2012 몇 대로 웹서버 구축을 시도했다.

mac OSX  웹서버 운영을 위해 Apache (또는 Nginx), PHP, Mysql 설치 및 설정방법을 구글에서 검색해 보면 다양한 글들이 있지만, 대부분은 Linux 용 글이라 mac OSX 설정에 큰 도움이 되지 않는다. 왜나면, 
검색글들을 따라 직접 설정해 보니, Linux와 macOS간 차이로 인해 다운로드 파일과 설정 파일의 위치가 상이한 경우가 대부분이라, 설치 및 설정 과정중 해당 패키지의 다운로드 및 설정 파일 위치를 못 찾아 설치를 완료 못하는 경우가 많았다.

또한,  mac OSX 도 버전별 또는 intel 칩, Apple 실리콘칩 별 설정 파일의 위치가 상이하여 학습용이 아닌 실제 운영용 웹서버를 셋팅하는데 많은 어려움이 있다. 비전공자인 저도 수 많은 시행착오와 OS 재설치를 통해 겨우 완료했다.  자신의 불로그나 웹사이트를  mac OSX 에서  구축하려는 서버 초보자에게  저의 사례를 공유하고자 합니다.



 애플 맥미니의 가치


  Mac Mini 2011, 2012 기종들은 발매된지 10년이 지났지만, 웹서버나 DB서버로 활용하기에 무리가 없다. 또한 mac OSX 특유의 안정성으로 웹서버 운영중 비정상적으로 다운되는 경우가 거의 없다. 

운영비용 측면에서도 매우 저렴한다. 대표적인 클라우드 서비스인 아마존 클라우드 서비스 같은 경우, 인텔 i5 듀얼코어 2.5Ghz, 메모리 1GB, SSD 20~40GB 급 서버를 호스팅할 경우 월사용료가 1~2만원 가량하며, 네트워크 트래픽 초과시 비용과 도메인 연결비가 매월 추가된다. 

Mac Mini 로 웹서버를 구축하면, 위 서버 호스팅 비용은 절감되지만, 전기세가 발생한다. Mac Mini 의 전기 사용 용량이 시간당 35W 정도인데, 누진세를 감안안할 경우 전기요금이 월 2~3천원 정도 발생한다.

 호스팅 서버 1대만 사용한다면, 이 정도에서 소요 비용의 비교가 가능하나, 제 경우는 Nginx 웹서버로 로드밸런싱 시스템을 구축하여 총 3대의 웹서버를 병렬로 연결하고, DB서버도 마스터 1대, 슬래이브 1대를 구축했기 때문에 총 5대의 서버가 운영중이다. 이런 구성을 AWS 에 구축했다면 적어도 서버 비용이 10 ~ 20 만원 가량 발생하는데, 맥미니로 홈서버를 구축하면 전기세 외에는 추가 비용이 없다. 

마지막으로 Mac Mini 2011 중고가격이 10만원대이므로 5대의 서버를 구축하는데 50만원 + @ 의 저비용으로 고가용성 무중단 클러스터링 서버시스템을 구축할 수 있다.



 용어 정리


   이 블로그에서 사용하는 용어와 의미입니다. 일반 IT용어와는 상이할 수 있습니다.

   1. mac OSX 서버 : 맥 OS 를 기반으로 작동되는 서버

   2. 웹서버 : 단순히 HTML 서비스를 제공하기 위한 H/W & S/W 

   3. DB서버 : macOS 서버 내부 또는 외부에서 SQL 서비스를 제공하는 서버

   4. 로드밸런싱 : 한개의 공인 IP에서 다수의 사설 IP에 연결된 웹서버를 마치 한대의 웹서버처럼 운영하는 기법



 맥미니 웹서버 클러스터 구성도




 맥미니 2011, 2012 준비



맥미니 2011 은 High Sierra 까지만 설치가능하다.

홈브루 웹사이트의 최신 설치링크로 홈브루를 설치하면 Mysql 설치중 여러가지 플로그인 설치를 요구하는데, 간단하지 않으므로

High Sierra 에 최적화된 홈브루를 설치해야한다.

아래 쉘스크립트를 맥터미널에서 입력하면 High Sierra 용 홈브루가 설치된다.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


1. 내장 HDD → SSD 128GB 로 교체 (저는 1TB로 교체했음)

2. High Sierra 클린 설치용 USB 드라이브 제작

    •  High Sierra OS 다운로드

    •  Macdaddy 프로그램 다운로드 (부팅 USB를 자동으로 만들어 주는 유틸리티)


3. Mac Mini 부팅 

    •  High Sierra 클린 설치용 USB 드라이브 를 맥미니에 연결

    •  전원스위치를 누르고 난뒤, 바로 키보드 옵션키를 누른다.

    •  부팅가능한 드라이브 목록중 "High Sierra 설치용 USB 드라이브" 를 선택

    •  잠시후 High Sierra 설치 화면이 표시되면

         1) SSD 포맷을 위해 디스크 유틸리티를 선택

         2) 지우기 > AFDS (반드시 이 구성으로 포맷)

         3) 포맷이 완료되면 다시 설치 화면으로 돌아가 두번째 High Sierra 설치 선택

         4) High Sierra 설치중 몇가지 설정과정이 진행되는데 본인 상황에 맞추어 설정한다.

             


 Apache 2 설치


    기본적으로 High Sierra 와 카탈리나에는 Apache2 패키지가 설치되어 있으나, 활성화 안된 상태이다. 아래 명령어를 입력하면, 바로 실행된다.

    $ apache2 -v

    $ sudo apachectl start


    브라우져 주소창에 "localhost" 또는 "127.0.0.1" 을  입력하여 아래와 같은 화면이 출력되면 Apache2 가 정상적으로 작동중이다.


     • 아파치 소스폴더의 위치 : /Library/WebServer/Documents/

     • 아파치 설정파일 위치  (가상호스트, SSL 세팅은 다른 Post 참고)

         - httpd.conf : 원래 위치는 /Private/usr/etc/apache2 이고 최상위 폴더에 가상본 /etc/ 가 설치되어 있다.

         - php.ini : 우


# 웹서비스 메인폴더의 권한을 707로 수정    

--> sudo chmod -R 777 /Library/WebServer/Documents/


   # /etc/apache2/httpd.conf 수정     

   

    1) php7 사용허용을 위해 주석으로 처리된 '#' 제거

    LoadModule php7_module libexec/apache2/libphp7.so


      2) HTML 문서에서 PHP 구문 실행

    AddType application/x-httpd-php .php4 .php .phtml .ph .inc .html .htm


# php.ini 설정 변경 

    1) data zone 변경

date.timezone = Asia/Seoul


2) 최대 업로드 용량 변경

; Maximum allowed size for uploaded files. 

upload_max_filesize = 32M


3) 최대 포스트 용량 변경

; Maximum size of POST data that PHP will accept.

post_max_size = 32M



 PHP  설치


    php 역시 기본적으로 설치되어 있어 별도로 설치할 것은 없으나, 아파치가 php 스크립트를 해석할 수 있도록 httpd.conf 와 

  $ php -v

  $ brew install php@72



 Homebrew 설치


     • 카탈리나 설치 스크립트  (홈브루 현재 공식홈의 설치스크립트로 설치 가능)

    $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

   • 하이시에라 설치 스크립트 (홈브루 현재 공식홈의 설치스크립트로 설치 불가능)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"







 MySql 설치 (5.7)


brew를 사용하기 전에는 반드시 업데이트를 해주어야 합니다.

$ brew update

그리고 아래 명령어를 입력하면 mysql에 관련된 프로그램들을 검색해 볼 수 있습니다.

$ brew search mysql

저는 그 중에서도 그냥 mysql을 설치해줄거니까, 아래처럼 입력해줍니다.

$ brew install mysql@5.7

그러면 설치가 완료됩니다. 간단하죠? 이제 그냥 사용하면 됩니다.

아래 명령어를 입력하여 mysql 서비스를 우선 켜줍니다.

$ brew services start mysql

==> Successfully started mysql (label: homebrew.mxcl.mysql) 라는 말이 나오면, 정상적으로 서비스가 켜진겁니다. 서비스도 켰으니까 로그인을 해서 접속을 해줍시다.

$ mysql -uroot

-u 옵션은 유저이름을 말하는거고, root는 기본 계정입니다. 해당계정으로 로그인하겠다는 것입니다. 디폴트로는 비밀번호가 설정되어 있지 않은데, 비밀번호를 설정하고 싶으면 로그인 전에 아래처럼 입력해줍니다. 저는 여러번 설치 및 삭제끝에 보안설정을 않았다. DBMS 서버를 내부망에 두어, 외부망에서 접속되지 않게 하였습니다.


$ mysql_secure_installation

그럼 비밀번호 이외에도 간단한 환결설정 세팅들을 하게 됩니다. 비밀번호를 만들었을 경우 다음부터는 접속할 때
mysql -uroot -p 를 입력해 주신 뒤 비밀번호를 입력해주시면 됩니다.

로그인이 완료되시면 아래와 같이 콘솔이 켜집니다.

mysql>

콘솔 명령어를 종료하고 싶으시면

mysql> exit

위처럼 exit를 입력하시면 되고, 그 뒤에 mysql 서비스를 종료시키시려면

$ brew services stop mysql

을 입력하시면 됩니다. 서비스 종료가 완료되었을 경우
==> Successfully stopped mysql (label: homebrew.mxcl.mysql) 와 같은 메세지가 나오게 됩니다.

5. phpmyadmin 설치

  $ brew update
  $ brew install phpmyadmin

  설치완료후 /etc/apache2/httpd.conf 에 아래내용 추가

    Alias /phpmyadmin /usr/local/share/phpmyadmin
   
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
       
            Require all granted
       
       
            Order allow,deny
            Allow from all
       

   phpmyadmin 대신에 다른 URL 주소로 변경하고 싶다면, 위의 적색배경의 phpmyadmin 을 변경하세요.