Caddy 웹서버 설치 및 그누보드 설정하기

WEB

Caddy 웹서버 설치 및 그누보드 설정하기

우성군 4 216 1

1. 들어가며


Caddy는 기존의 웹서버보다 더 쉽고 간단하게 설치 및 유지 보수를 할 수 있습니다.


SSL 인증서 자동발급 및 갱신하는 것이 큰 장점이라고 생각합니다.


그리고 apache나 nginx와 설정 문법이 다르기 때문에 이에 대한 공부를 해야되는 것이 필수겠죠.


열심히 개발 중이고, 1에서 2로 업그레이드 되면서 문법이 완전히 바뀌었더라구요. ㅎㅎ


최근에 2.1 버전으로 업그레이드되어 설치 후 그누보드까지 깔아보는 글을 적어보겠습니다.



2. 패키지 설치하기


우분투 20.04 기준 설치하는 방법입니다.


echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list

sudo apt update

sudo apt install caddy

이렇게 하면 설치가 끝납니다.


기타 다운로드 방법은


https://caddyserver.com/docs/download


위 링크를 참조하세요.



3. 실행 방법


설치한 순간 이미 실행이 되고 있습니다.


http://example.com


위 주소와 같이  http로 연결된 자신의 도메인이나 ip로 접속하면 바로 초기화면이 뜹니다.



캐디 시작



sudo caddy start


캐디 정지



sudo caddy stop


캐디 재기동



sudo caddy reload


캐디 상태 확인



sudo systemctl status caddy


캐디 로그 확인



sudo journalctl --no-pager -u caddy


설정파일을 수정 후 stop 할 필요없이 그냥 caddy reload만 해주면 바로 적용됩니다.




4. 설정파일 수정하기


기본적인 설정파일은 /etc/caddy/Caddyfile 입니다.



sudo nano /etc/caddy/Caddyfile


위 명령어로 바로 설정파일에 들어갈 수 있습니다.


:80

root * /usr/share/caddy

file_server

기본적으로 위 3가지가 적용되어 있는데요.


80포트로 받고, 사이트의 폴더 경로를 /usr/share/caddy 로 잡았고, 정적파일서버를 활성화시킨다는 의미입니다.


그누보드를 예를들어보겠습니다.


파일위치 /var/www/gnuboard

로그파일 위치 /var/log/caddy/caddy.log

로 잡겠습니다.


mysql이나 php7.4 설치는 미리해야겠죠? ^^;;


혹시나 안하셨다면


(1) MariaDB 설치하기


https://blog.wsgvet.com/letsencrypt-wildcard-certification-issue-and-mariadb-install/


위 링크의 2번을 참조하세요.


(2) php7.4 설치, 그누보드 설치, DB설정하기


참고로 caddy 설치시 /var/www 폴더는 없기 때문에 생성해두는게 좋습니다.



sudo mkdir /var/www


위 명령어로 www 폴더 생성 가능합니다.


https://blog.wsgvet.com/php7-4-install-and-gnuboard-5-4-install/


위 링크의 1,2,3번을 참조하세요.


그리고 caddy는 특이하게 caddy라는 유저를 쓰고 있기 때문에 data 폴더를 707로 두면 읽지를 못합니다. 그래서 777로 주면 썸네일 문제는 해결됩니다.



chmod 777 /var/www/gnuboard/data


위 명령어로 data폴더 권한을 777로 주면 됩니다.




이제 



sudo nano /etc/caddy/Caddyfile


위와 같이 설정파일을 열고, 컨트롤 + k를 누르고 있으면 다지워집니다.



# www를 non-www로 리다이렉트, 반드시 자신의 주소로 변경하기

www.example.com {
redir https://example.com{uri}
}

# 도메인 네임 지정하기 및 해당 도메인 설정 시작, 반드시 자신의 주소로 변경하기

example.com {

# 인코딩 방법 지정, brotli 압축은 지원하지 않습니다.

encode zstd gzip

# 사이트 디렉토리 설정 : 자신의 설정으로 변경하세요.

root * /var/www/gnuboard

# 정적파일 이용가능하게하는 설정

file_server

# php7.4-fpm 연결

php_fastcgi unix//run/php/php7.4-fpm.sock

# 로그 설정 DEBUG나 INFO를 선택해서 쓰시면 됩니다.

log {
output file /var/log/caddy/caddy.log {
roll_size 2MiB
}
format json
level DEBUG
}

# 보안 헤더 넣기

header {
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-XSS-Protection "1; mode=block"
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
}

# 캐시 컨트롤 지정(해당 확장자에 5184000 캐시 컨트롤 지정)

@static {
file
path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.woff2
}
header @static Cache-Control max-age=5184000

# 이미지 불펌 방지 - 반드시 자신의 도메인으로 바꾸세요.
# 해당 경로는 자신의 원하는대로 수정 가능합니다.

@fontPirate {
path /data/*
not header Referer https://example.com*
}
respond @fontPirate "Access denied" 403 {
close
}

# 그누보드 전용 짧은 주소 리라이트

@content path_regexp content ^/content/([0-9a-zA-Z_]+)$
rewrite @content /bbs/content.php?co_id={re.content.1}&{query}
@title path_regexp title ^/content/([^/]+)/$
rewrite @title /bbs/content.php?co_seo_title={re.title.1}&{query}
@rss path_regexp rss ^rss/([0-9a-zA-Z_]+)$
rewrite @rss /bbs/rss.php?bo_table={re.rss.1}
@board path_regexp board ^/([0-9a-zA-Z_]+)$
rewrite @board /bbs/board.php?bo_table={re.board.1}&{query}
@write path_regexp write ^/([0-9a-zA-Z_]+)/write$
rewrite @write /bbs/write.php?bo_table={re.write.1}&{query}
@seo path_regexp seo ^/([0-9a-zA-Z_]+)/([^/]+)/$
rewrite @seo /bbs/board.php?bo_table={re.seo.1}&wr_seo_title={re.seo.2}&{query}
@id path_regexp id ^/([0-9a-zA-Z_]+)/([0-9]+)$
rewrite @id /bbs/board.php?bo_table={re.id.1}&wr_id={re.id.2}&{query}

# example.com 설정 마지막
}


위 내용에서 example.com 을 자신의 도메인주소로 바꾼 후 전부 붙여넣기 합니다.


그리고 컨트롤 + O, 엔터, 컨트롤 + X로 저장 후 빠져나옵니다.


로그 파일이 들어갈 폴더를 생성하고 권한을 caddy에게 줍니다.



mkdir /var/log/caddy
chown caddy /var/log/caddy



이제 설정파일 있는 곳에서 caddy를 재기동합니다.



cd /etc/caddy
sudo caddy reload


또는 다른 경로에서 재기동을 하고 싶다면



sudo caddy reload --config /etc/caddy/Caddyfile


위와 같이 설정파일을 지정해주면서 실행해도 됩니다.



위 명령어로 재기동을 하면 알아서 SSL 인증서 적용해줍니다.


이제 본인의 주소로 들어가면 그누보드 설정화면으로 들어가질 것입니다.



5. 워드프레스용 설정파일


https://caddy.community/t/example-configure-wordpress-with-a-static-cache/8215


위 링크는 워드프레스 캐시 플러그인용 설정 방법입니다.


개인적으로 워드프레스용으로는 적합하지 않다고 보지만... 테스트용으로는 써볼만 한 것 같습니다.



6. 참조사이트


https://caddyserver.com/ 


https://caddy.community/ 


https://caddyserver.com/docs/ 

, , ,

4 Comments
Computist 07.11 19:25  
nginx쓰고 있는데
caddy도 써봐야겠어요
감사합니다
우성군 07.11 19:39  
[@Computist] 테스트로 써볼만한데...

아직 사용자층이 부족해서 추천하고 싶지는 않습니다. ㅎㅎ
Computist 07.11 19:25  
영어도 되시고 하니 부럽습니다
우성군 07.11 19:39  
[@Computist] 구글 번역기를 자주 이용하고 있습니다.

저도 영어 잘하고 싶네요..