본문 바로가기

MAC

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

애플의 신상 M1에서 php 개발을 해보려고 한다. 

 

신규 모델의 첫 번째 버전이라 시기상조일 순 있겠지만

 

신상은 언제나 짜릿해_

 

기본적인 개발환경 구축을 위해 Apach, PHP, MySQL을 하나하나 설치해본다.

 

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

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

 

그래서 내장 Apache를 사용하지 않고 새로 받아서 사용하던데,

 

일단 내장된 Apache를 그대로 써보다가 문제가 발생하면 해보려고 한다... 순정을 한 번은 써봐야지!

 

m1은 bash가 아닌 z쉘을 사용하더만?

 

어쩐지 터미널에 명령어 시작 문구가 $가 아니라 % 더라니... 낯설더라니...

 

zsh 공부도 틈틈이 해야겠네 ^^

 

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)"

 

 

설치하고 나면 끝부분에 이런 문구가 보인다.

 

하라는 대로 했더니 잘된다.

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

 

나는 alias 설정하느라 .zprofile을 먼저 생성해놔서 그런지 path가 이렇게 떴다.

 

.zshrc가 있으면 path를 거기로 잡으라고 안내하지 않을까 싶다. 

 

alias는 .zprofile, .zshrc 중 아무 데나 설정해도 된다고 하던데, 분명 차이점이 있을 것이다.

 

나중에 공부해보기로 하고... 난 일단 .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 설정

 

맥에 내장되어있는 아파치를 사용할 예정이니 서버 구동해서 잘 돌아가는지만 확인해보고 넘어간다.

 

서버를 시작해주고 브라우저에서 http://localhost 입력 후 It Works! 가 뜨면 된다.

% 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 // 주석 해제

#<Directory "/Library/WebServer/Documents"> // 이 라인을 아래처럼 나의 DocumentRoot로 변경하여 권한 설정
<Directory "/Users/MyUser/Sites">

 

다른 사람들은 루트 디렉터리를 보통 어디로 잡는지 궁금하다.

 

난 그냥 간단하게 사용자 루트 밑에 Sites 디렉터리를 생성해서 지정해줬다. 

 

 

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 설치

 

위에서 설치한 브루를 이용한다.

 

내 PC에 이미 설치되어 있는지, 브루를 통해 설치할 수 있는 패키지인지 확인해보고 설치하면 좋다.

% 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 설치 완료~

 

다음에는 개발의 꽃, xdebug를 설치해야겠다.

'MAC' 카테고리의 다른 글

맥북에어 M1에서 M2로 마이그레이션하기  (1) 2023.12.28
Mac M1 - Xdebug 설치하기  (0) 2021.03.09