최근에는 APM(Apache+PHP+Mysql) 의 Apache 와 Nginx, litespeed 등 많은 종류의 웹서버들이 있는데 그중에 Caddy 라는 것을 소개하고자 합니다.
간단히 Caddy 는 Golang 기반의 HTTP/2 를 지원하는 Web Server 입니다. 최근에 들어서는 HTTP/3 까지 실험적으로 지원을 하고 있습니다. Caddy 는 Reverse Proxy 기능을 내장하고 있는 웹서버로 개인 정보를 취급하는 사이트에 있어서 필수인 SSL 인증서 또한 자동으로 등록하여 주기 때문에 관리에 있어서 좀더 수월할 것으로 생각됩니다. 그리고 80포트(HTTP_로 접근하는 주소를 자동으로 443포트(HTTPS)로 자동으로 전환해주기도 합니다.
Apple 에서 2020년 출시된 Silicon M1 시리즈에서 로컬에 웹서버 구축을 해보겠습니다.
시스템 : Mac mini (M1, 2020) 16GB, 256GB
OS : macOS Big Sur 11.2.3
1. Homebrew 설치 (Homebrew 를 이용해서 Apple 에서 제공하지 않는 유용한 패키지들을 설치관리자)
iTerm 등 터미널 창을 열어서 아래의 명령어를 실행합니다. sudo 를 실행하기 때문에 시스템 계정의 패스워드를 물어보게 됩니다. 입력하여 주시면 됩니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
/opt/homebrew 아래에 구성파일들이 설치되며 설치를 계속하기 위해 엔터키를 한번 더 눌러주세요. 1~3분 이내에 설치가 완료됩니다.
설치가 완료되었습니다. 추가적으로 아래의 명령어를 통해 Homebrew를 PATH 에 추가해줍니다. jhlove 는 자신의 계정이름으로 변경하여 실행하여 주세요.
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/jhlove/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
아래의 명령어를 통해 Homebrew 가 정상적으로 설치되었는지 확인 하실 수 있습니다.
brew help
2. MariaDB 10.5.9 설치하기
- Homebrew 를 이용해 아래의 명령어로 간단하게 설치가 가능합니다.
brew install mariadb
- 설치된 mariadb 를 아래의 명령어로 기동합니다.
brew services start mariadb
- mariadb(mysql) root 패스워드를 아래와 같이 명령어를 실행하여 변경합니다. sudo 로 명령어를 실행하면 바로 Password 를 물어보는데 여기에서는 Mac OS 계정의 패스워드를 입력하면 됩니다. 그리고 그 다음에 "Enter current password for root (enter for none):" 여기는 mysql 의 root 패스워드인데 아직 설정한게 없으므로 그냥 엔터를 누르시고 그 아래의 " Change the root password" 에서 root 패스워드를 변경하여 주시면 됩니다.
sudo mysql_secure_installation
- mysql root 계정이 정상적으로 접속되는지 아래의 명령어를 사용하여 확인합니다.
mysql -u root -p
3. PHP 8.0.3 설치
- 설치는 역시 Homebrew 를 사용해서 아래와 같이 간단하게 설치할 수 있습니다. (설치 시간은 조금 오래 걸립니다.)
brew install php
- 설치가 완료되면 간단하게 php 의 timezone, upload 용량을 수정합니다.
perl -p -i -e 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /opt/homebrew/etc/php/8.0/php.ini perl -p -i -e 's/post_max_size = 8M/post_max_size = 50M/g' /opt/homebrew/etc/php/8.0/php.ini perl -p -i -e 's/;date.timezone =/date.timezone = Asia\/Seoul/g' /opt/homebrew/etc/php/8.0/php.ini
- 기존의 www.conf 설정을 삭제하고 임의로 pool 을 생성하겠습니다.
rm -f /opt/homebrew/etc/php/8.0/php-fpm.d/www.conf vi /opt/homebrew/etc/php/8.0/php-fpm.d/zzori.conf
- zzori.conf 에는 아래의 내용을 추가합니다. (jhlove 는 Mac OS 사용자 계정입니다.)
[zzori] user = jhlove group = admin listen = /tmp/zzori.sock listen.owner = jhlove listen.group = admin pm = dynamic pm.max_children = 9 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = 4 php_admin_value[session.cookie_httponly] = 1 ;php_flag[display_errors] = off ;php_admin_value[error_log] = /var/log/fpm-php.www.log ;php_admin_flag[log_errors] = on ;catch_workers_output = yes ;php_admin_value[memory_limit] = 128M ;php_admin_value[max_execution_time] = 120 ;php_admin_value[max_input_time] = 300 ;php_admin_value[post_max_size] = 25M ;php_admin_value[upload_max_filesize] = 25M
- 그리고 이제 php-fpm 을 중지했다가 다시 기동하겠습니다.
brew services stop php brew services start php
4. caddy 2.3.0 설치
- 마찬가지로 설치는 Homebrew 를 이용해서 아래의 명령어로 간단히 설치가 가능합니다.
brew install caddy
- 웹서비스를 띄우기 전에 먼저 도메인의 A레코들 설정을 먼저 진행하도록 하겠습니다.(서버를 시작하게 되면 SSL인증서를 자동으로 발급해주게 되는데 올바른 DNS 구성이 되어 있어야 합니다.) 아래와 같이 클라우드 플레어에서 A 레코드를 설정하였습니다. 사용할 도메인은 jihye.pw 입니다.
- 그리고 Mac OS 홈계정의 경로에 web 이라는 디렉토리를 만들고 그 아래에 db.jihye.pw 라는 폴더를 생성하고 phpmyadmin 을 업로드 하였고, jihye.pw 에는 phpinfo 를 보여주는 index.php 파일을 미리 생성해두었습니다.
- caddy서버의 설정파일인 Caddyfile 을 생성하고 아래 내용을 추가합니다. 홈경로 및 도메인 설정은 자신의 환경에 맞게 변경합니다.
vi /opt/homebrew/etc/Caddyfile
{ servers { protocol { experimental_http3 } } } db.jihye.pw { header { Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" X-Content-Type-Options "nosniff" X-Frame-Options "DENY" Referrer-Policy "no-referrer-when-downgrade" } root * /Users/jhlove/web/db.jihye.pw file_server encode zstd gzip php_fastcgi unix//tmp/zzori.sock } jihye.pw, www.jihye.pw { header { Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" X-Content-Type-Options "nosniff" X-Frame-Options "DENY" Referrer-Policy "no-referrer-when-downgrade" } root * /Users/jhlove/web/jihye.pw file_server encode zstd gzip php_fastcgi unix//tmp/zzori.sock }
- 이제 모든 설정이 완료되었고 caddy 서비스를 재기동 하겠습니다.
brew services restart caddy
- caddy 관련 로그는 아래의 위치의 로그파일로 확인 가능합니다.
tail -f /opt/homebrew/var/log/caddy.log
- 마지막으로 확인을 위해서 크롬으로 사이트 주소에 접속하면 아래와 같이 웹페이지를 확인하실 수 있습니다. HTTP/3, SSL 인증서가 정상적으로 확인됩니다.
- 기본적인 설정만으로도 SSL Labs 에서 A+ 등급을 확인할 수 있습니다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
5 |
Apache 2.4.46 + PHP 8.0.3 + MariaDB 10.5.9 웹서버 설치하기(Mac Apple Silicon M1)
![]() | 지혜바보 | 2021.03.21 | 4155 |
» |
caddy 2.3.0 + PHP 8.0.3 + MariaDB 10.5.9 웹서버 설치하기(HTTP/3, 무료 SSL인증서 자동, Mac Apple Silicon M1)
![]() | 지혜바보 | 2021.03.21 | 4045 |
3 |
[2021.02] caddy 2.3.0 + PHP 8.0.2 + MariaDB 10.5.8 웹서버 설치하기(HTTP/3, 무료 SSL인증서 자동)
![]() | 지혜바보 | 2021.02.14 | 3588 |
2 |
CentOS 7.x 에서 웹서버(nginx+php-fpm+MYSQL) 구성하기 TLS v1.3 지원 및 SSL LABS A+
![]() | 지혜바보 | 2021.01.31 | 3862 |
1 |
CentOS 6.x 에서 웹서버(nginx+php-fpm+MYSQL) 구성하기 TLS v1.3 지원 및 SSL LABS A+
![]() | 지혜바보 | 2021.01.31 | 3588 |