곰 의 Caddy + Hugo + Acme. sh 설정 구덩이 메 우기 노트
최근 에 caddy 와 nginx 의 서비스 와 기능 을 비교 하고 싶 습 니 다.
설정 한 목 표 는 hugo 로 정적 사 이 트 를 만 들 고 Caddy 서 비 스 를 통 해 제공 하 는 것 입 니 다.
https://axiong.me 방문
그래서 구 덩이 를 계속 밟 는 불 귀 로 에 올 라 가 구 덩이 를 밟 고 구 덩이 를 메 우 는 과정 을 기록 했다.
첫 번 째 밟 은 구덩이: github 의 CNAME 사이트 에 서 는 https 를 지원 하지 않 습 니 다.
이론 적 으로 사이트 도 github 의 gh - pages 에 놓 을 수 있 기 때문에 시도 해 봤 습 니 다.
Hugo 가 Github 에 위탁 관리 하 는 절차 설명
Tips
저 는 H - pages 의 분기 프로젝트 master 분기 노드 를 사용 합 니 다. gitignore 는 hugo 의 발표 경 로 를 무시 할 수 있 습 니 다. 테스트 를 편리 하 게 할 수 있 습 니 다. 테 마 를 설치 하려 면 문서 의 git clone 이 아 닌 submodule 방식 을 사용 하 는 것 이 좋 습 니 다. 예 를 들 어:
git submodule add https://github.com/christianmendoza/hugo-smpl-theme themes/hugo-smpl-theme
이렇게 후속 배 치 를 할 때 만 난처 한 프로젝트 가 자동 으로 배치 되 지 않 는 문제 가 발생 하지 않 는 다.
문제.
github 의 CNAME 사이트 에 서 는 https 를 지원 하지 않 습 니 다.
그러나 @ 루트 도 메 인 이름 CNAME 기록 과 MX 기록 TXT 기록 이 충돌 하여 알 통 (무료 우체국 서 비 스 는 놓 고 싶 지 않 음), 그리고 MD 는 https 를 지원 하지 않 기 때문에 방안 은 내 가 죽 였 다.
해결 방안
vps 가 있 으 면 제멋대로 할 수 있 고 Caddy 의 https 서 비 스 를 도 울 수 있 습 니 다.
첫 번 째 밟 은 구덩이: Caddy 자동 인증서 가 성공 하지 못 했 습 니 다.
캐 디 가 Let 's Encrypt 를 자동 으로 신청 하 는 요청 은 항상 timeout 입 니 다. 서비스 용 cloudxns 문 제 를 분석 하기 때 문인 지 캐 디 는 아직 cloudxns 구성 요소 가 없습니다.
해결 방안
인증 서 를 만 드 는 issue 와 renew 를 Acme. sh 라 는 자동 스 크 립 트 로 설정 합 니 다. dns api 모드 를 사용 해 야 합 니 다. 이 단계 까지 Caddy 의 서 비 스 는 인증서 카드 에 신청 되 어 있 기 때 문 입 니 다.
참고: Acme. sh 설명
1. 증서 신청
acme.sh --issue --dns -d axiong.me
2. 분석 서비스 업 체 백 엔 드 에 해당 하 는 Txt 기록 추가
저 는 cloudxns 입 니 다. 기본적으로 Txt 형식 기록 을 추가 합 니 다.acme - challenge 는 host 부분 기록 을 위주 로 하고 내용 부분 은 acme 단말기 에서 제 시 된 것 입 니 다.
3. 인증서 재 생 성
acme.sh --renew -d axiong.me
4. 분석 서비스 업 체 백 엔 드 에 API 의 key 와 secret 를 신청 합 니 다.
참조 링크
Acme. sh 의 DNS Api 설정 설명
5. 인증 서 를 로 컬 로 내 보 내기 / 설치 하여 나중에 Caddy 에서 사용 할 수 있 도록 합 니 다.
acme.sh --installcert -d axiong.me --key-file /etc/ssl/caddy/certs/axiong.me/ssl.key --fullchain-file /etc/ssl/caddy/certs/axiong.me/fullchain.cer --reloadcmd "systemctl restart caddy"
acme. sh 의 설명 에 따 르 면 crontab 스 크 립 트 는 자동 으로 인증 서 를 연장 합 니 다.
무료 ssl 인증서 문 제 는 이것으로 일 단락 된 셈 이다.
두 번 째 밟 은 구덩이: Caddy + Hugo 조합 설정 문제
인터넷 에 Caddy + Hugo 의 튜 토리 얼 이 있 습 니 다.
모두 작은 구덩이 가 있다. 예 를 들 어:
문 서 를 찾 아 공식 설명 을 보다.
1. caddy + 플러그 인 다운로드 문제, 최소한 http. git, http. minify, http. hugo 가 필요 합 니 다.
플러그 인 수 를 간소화 하려 면 필요 한 것 만 설치 하 십시오.
Caddy 공식 다운로드 페이지 는 맞 춤 형 으로 제작 할 수 있 습 니 다. 맞 춤 형 완료 페이지 의 맨 아래 에 명령 행 명령 이 있 습 니 다. 참고 하 십시오.
https://caddyserver.com/download
원 키 설치 명령:
curl https://getcaddy.com | bash -s personal dns,hook.service,http.git,http.hugo,http.minify,tls.dns.rfc2136
또는 다운로드 링크 로 다운로드 한 후 압축 을 풀 고 caddy 를 / usr / local / bin / caddy 에 넣 습 니 다.
wget -O "caddy.tar.gz" "https://caddyserver.com/download/linux/amd64?plugins=dns,hook.service,http.git,http.hugo,http.minify,tls.dns.rfc2136&license=personal"
2. hugo 명령 은 환경 변수 에서 지원 해 야 합 니 다. 공식 적 으로 발행 판 설치 패 키 지 를 직접 다운로드 해 야 합 니 다.
apt - get 이나 snap 에 설 치 된 버 전이 오래 될 수 있 으 니 직접 가 는 것 을 권장 합 니 다.https://github.com/gohugoio/hugo/releases 다운로드
sudo dpkg -i hugo_xxx_Linux-64bit.deb
세 번 째 밟 은 구덩이: Caddy 의 ulimit 문제
사실은 Caddy 의 냄비 가 아니 라 시스템 의 limits 설정 나의 vps 가 조정 되 지 않 았 습 니 다. Caddy 는 보고 할 것 입 니 다.
caddy: WARNING: File descriptor limit 1024 is too low for production servers. At least 8192 is recommended. Fix with "ulimit -n 8192".
해결 방안
임시 해결 방안 은 실행 알림 에 있 는 것 이다.
ulimit -n 8192
caddy 를 뛰 고 철저한 해결 방안 은 시스템 의 limits 설정 을 수정 하 는 것 입 니 다.
sudo vim /etc/security/limits.conf
파일 핸들 설정 추가
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
네 번 째 밟 은 구덩이: Caddy 의 기본 포트 는 2015 입 니 다.
Caddy 설정 에 구덩이 가 있 습 니 다. tles 가 자동 으로 서명 하 는 모드 가 아니라면 http 포트 는 2015 를 사용 합 니 다.
참조 하 다
해결 방안
수 동 설정 자동 점프
http://axiong.me {
redir https://axiong.me
}
https://axiong.me {
tls ssl.cer ssl.key
...
}
다섯 번 째 밟 은 구덩이: Caddy 가 시작 한 Systemd 설정 문제
Caddy 의 Systemd 자동 시작 만 남 설정
caddy.service: Failed at step NAMESPACE spawning /usr/local/bin/caddy: No such file or directory
시동 이 걸 리 지 않 습 니 다.
레 퍼 런 스https://caddy.community/t/starting-with-systemd-failed-at-step-namespace-spawning-usr-local-bin-caddy-no-such-file-or-directory/423
고 쳐, 고 쳐, 그리고 모퉁이 에서 사랑 을 만 나, 니 마, 또 나타 나.
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp (code=exited, status=226/NAMESPACE)
Main PID: xxx (code=exited, status=226/NAMESPACE)
해결 방안
죽 을 힘 을 다 해 원인 을 찾 지 못 하고 화가 나 서 지역 사회 가 기여 한 설정 문서 에 따라 다시 한 번 정 리 했 습 니 다.
레 퍼 런 스https://github.com/mholt/caddy/tree/master/dist/init/linux-systemd 문서, 그리고 caddy. service 를 템 플 릿 으로 다운로드 합 니 다.
사용자 권한 을 한 번 더 설정 하여 해결 하 였 습 니 다. 226 / NAMESPACE 문제 가 발생 하지 않 습 니 다.
Caddy 설정 최적화
Caddy 의 공식 문 서 를 찾 아 설정 파일 Caddy file 내용 문 제 를 완전 하 게 해결 합 니 다.
수 정 된 전체 예제:
http://axiong.me {
redir https://axiong.me
}
https://axiong.me {
#tls off
#tls [email protected]
tls /etc/ssl/caddy/certs/axiong.me/fullchain.cer /etc/ssl/caddy/certs/axiong.me/ssl.key
minify
gzip
log / /var/log/caddy/pub-axiong.me_access.log "{combined}" {
rotate_size 100 # Rotate a log when it reaches 100 MB
rotate_age 14 # Keep rotated log files for 14 days
rotate_keep 10 # Keep at most 10 rotated log files
rotate_compress # Compress rotated log files in gzip format
}
errors /var/log/caddy/pub-axiong.me_error.log {
404 404.html # Not Found
rotate_size 100 # Rotate a log when it reaches 100 MB
rotate_age 14 # Keep rotated log files for 14 days
rotate_keep 10 # Keep at most 10 rotated log files
rotate_compress # Compress rotated log files in gzip format
}
root /var/www/axiong.me/public
git {
repo https://github.com/nickfan/axiong.me
path /var/www/axiong.me
then hugo --destination=/var/www/axiong.me/public
hook /webhook [ github webhook ]
hook_type github
clone_args --recursive
pull_args --recurse-submodules
interval 3600
}
hugo
}
그 중에서 webhook 은 바로 당신 의 코드 위탁 관리 서비스 입 니 다. 예 를 들 어 github 에 코드 repo 배경 설정 에 webhook 을 추가 하면 코드 를 제출 한 후에 자동 으로 당신 의 새로운 정적 사 이 트 를 구축 할 것 입 니 다. 예 를 들 어 나의 위탁 관리 가 github 에 webhook. settings 는https://github.com/nickfan/axiong.me/settings/hooks
webhook, PayloadURL 을 추가 하여 도 메 인 이름 / webhook, 예 를 들 어 나의:
https://axiong.me/webhook
content - type 은 json secret 를 선택 하여 Caddy file 의 구령 과 일치 합 니 다. 다른 기본 값 을 유지 하면 됩 니 다.
이제 캐 디 야 말로 초보 야. 볼 수 있어.
webhook 의 설정 은 Caddyfile 설정 에서 환경 변 수 를 교체 하여 Systemd 의 추가 설정 에 넣 을 수 있 습 니 다. 예 를 들 어 override. conf 와 같은 것 을 추가 하여 더욱 완벽 합 니 다.
원본 링크
https://nickfan.github.io/2018/01/05/caddy-hugo-acme/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.