Mac M1에서 APM (Apache - 아파치, PHP, MySQL) 설치하기


Mac M1에서 APM (Apache - 아파치, PHP, MySQL) 설치하기




최초 작성일 : 2021-09-25 | 수정일 : 2022-10-29 | 조회수 :

애플의 새로운 아키텍쳐 M1 칩에서 
기본적인 개발환경 구축을 위해 Apach, PHP, MySQL을 하나하나 설치해본다.

구글링 해보니, 이번 실리콘 맥에 내장되어있는 Apache 2.4에 일부 필수 스크립트가 제거되었다 한다.

(출처: getgrav.org/blog/macos-bigsur-apache-multiple-php-versions)


우선 M1 맥미니에 구축할 APM 환경은 다음과 같다.

mac: 11.1 Big Sur
Apache: 2.4.46
php: 7.3.24
mySQL: 8.0.23
Homebrew: 3.0.1

  

Homebrew 설치

 

맥 유저들이 주로 사용하는 패키니 매니저인 homebrew를 먼저 설치한다. 

터미널에 아래의 명령어를 입력하여 간단하게 설치 완료!

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

 

 

설치하고 나면 끝부분에 이런 문구가 출력되는데
쉘스크립트 명령어 처리를 위한 PATH 지정하는 스크립트이다.

 echo 'eval ~~ ' 이 부분을 카피하여, 커맨드 프롬프트에서 입력하자.

==> Next steps:
Add Homebrew to your PATH in /Users/hyejin/.zprofile:
      echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/hyejin/.zprofile

 

홈브루 설치가 잘 됐는지 한번 확인해보고 넘어간다.

% brew -v
Homebrew 3.0.1
Homebrew/homebrew-core (git revision a2786d; last commit 2021-02-21)

 

brew.sh/index_ko

 

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

Apache 설정

 

맥에 내장되어있는 기본 아파치는 구동이 안되고 있는 상태므로, 구동 명령을 입력한다.

% sudo apachectl start

 

설정 파일도 몇 군데 수정해준다.

 

기본적으로 php 활성화시키고, documentroot 지정, virtual host 사용 가능하게만 변경했다.

 

#으로 시작하는 라인은 주석으로 처리되므로 #을 삭제하여 필요한 항목들을 활성화시킨다.

% sudo vi /etc/apache2/httpd.conf
LoadModule php7_module libexec/apache2/libphp7.so // 주석 해제
DocumentRoot '/Users/MyUser/Sites' // 본인이 사용할 소스파일의 루트 디렉터리 설정
DirectoryIndex에 index.php. 추가
Include /private/etc/apache2/extra/httpd-vhosts.conf // 주석 해제
LoadModule rewrite_module libexec/apache2/mod_rewrite.so // 주석 해제 --> .htaccess 사용할꺼면 필수!
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so // 주석 해제

# // 이 라인을 아래처럼 나의 DocumentRoot로 변경하여 권한 설정

 

php 설정

아래의 경로로 가서 필요한 설정들을 변경해준다.

% sudo vi /etc/php.ini
post_max_size=20M // 기본값 8M로는 금방 size limit 에러 문구를 보게 될 것이다.
미리 넉넉하게 20M로 변경

upload_max_filesize=5M // 파일 업로드 용량으로 2M는 너무 적지.. 2M -> 5M로 변경  

mysqli.default_socket = /tmp/mysql.sock // 나중에 사용할 mysql을 위해 미리 설정 

 

 

MySQL 설치

 

역시 홈브루를 이용하여 설치한다.
내 맥에 이미 설치되어 있는지, 브루를 통해 설치할 수 있는 패키지인지 확인해보고 설치하면 좋다.

% brew list // 설치된 패키지 목록 확인
% brew search mysql // 설치가능한 패키지 확인
% brew install mysql // 설치

 

mysql에 로그인을 하기 위해 root 계정의 비번을 안전하게 바꿔준다.

% mysql_secure_installation

 

물어보는 항목들이 몇 나오는데, 어딘가 복사를 해뒀다고 생각했지만 없네 ^^

 

비밀번호를 LOW, MEDIUM, HIGH 중 어떤 단계로 설정할지 물어봐서

 

LOW 선택 후 문자 8자리 이상으로 설정했다.

 

여기서 LOW로 선택하면 나중에 설정해야 하는 값이 하나 더 있다.

LOW - 추가 설정을 하긴 해야 하지만 로긴 때마다 편함 (짧으니까)

MEDIUM / HIGH - 로긴 때마다 길게 입력해야 하므로 불편할 수 있다.

난 일단 LOW로 선택..

 

anonymous user 관련된 문항은 mysql -uroot -p로 로그인하는 것에 익숙하므로 yes,

 

root login remotely 관련 문항은 지금껏 원격 접속해야 했던 적이 한 번도 없어서 no, 

 

remove test database 관련 문항은 삭제해도 무방하므로 yes로 했다.

 

마지막으로 나오는 문항은 지금껏 변경한 거 적용해도 되니? 의 뉘앙스여서 yes로 했다.

 

no로 하면 그냥 질의가 아예 끝나버리는 건지는 모르겠다.
그러지 않을까?

 

디비에 접속해서 정상적으로 설치가 되었는지 확인해본다.

% mysql -uroot -p

 

디비 접속은 정상적으로 되지만, 여기서 끝이 아니다.

 

브라우저에 사이트를 띄우려 했더니 아래와 같은 mysql 에러가 발생했다.

PHP Warning:  mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] in /Users/MyUser/Sites/project/wp-includes/wp-db.php on line 1635

브라우저에서는,
The server requested authentication method unknown to the client

 

나는 워드프레스를 띄웠기 때문에 워드프레스 코어에서 database connect 에러가 발생하고 있었다.

 

찾아보니 내 mysql 버전이 8이어서, 사용자 인증 정책 문제로 접속이 안되었다.

 

mysql의 global 설정은 MEDIUM인데, 브라우저를 통해 접속하려고 하는 계정의 단계가 LOW였던 것.

 

mysql 인증 단계를 변경하고, 해당 정책이 사용자에게 반영될 수 있도록 사용자 정보도 한번 더 수정이 필요하다. 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newPassword';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
// 설정된 정책에 부합하지 않는 비밀번호여서 변경 못하게 함!

mysql> show variables like 'validate_password.policy';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| validate_password.policy | MEDIUM|
+--------------------------+-------+
1 row in set (0.02 sec)

mysql> SET GLOBAL validate_password.policy=LOW;

mysql> show variables like 'validate_password.policy';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| validate_password.policy | LOW   |
+--------------------------+-------+
1 row in set (0.02 sec)
// 정책을 MEDIUM -> LOW 변경

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newPassword';
// 변경된 정책으로 로그인 가능하도록 비밀번호를 한 번 변경해준다.

 

부록. 가상 호스트 설정

 

내 pc에서 여러개의 개발용 사이트를 띄워야 하므로

 

간단하게 가상 호스트도 미리 설정해둔다.

 

일단 브라우저에 띄우기 위해 정말 초초간단 버전으로 설정했다.

 

다양한 옵션들이 많으니 차차 수정해가는 걸로...

 

소스 디렉터리 루트에 index.php를 생성해서 phpinfo()를 실행하도록 해놨다.

 

종종 보게 될 테니, 이 경로를 띄우기 위한 localhost 도 하나 설정했다. 

% sudo vi /etc/hosts
// 기존에 작성된 항목 밑에 추가 
127.0.0.1       개발환경에서.사용할.도메인 
 % sudo vi /etc/apache2/extra/httpd-vhosts.conf
 
 <VirtualHost *:80>
    DocumentRoot '/Users/MyUser/Sites'
    ServerName localhost
VirtualHost>

<VirtualHost *:80>
    DocumentRoot '/Users/MyUser/Sites/project'
    ServerName 개발환경에서.사용할.도메인
VirtualHost>

 

 

여기까지 하면 기본적인 APM 설치 완료된다.

Tags  #M1  

닉네임:
댓글내용: