곰 의 Caddy + Hugo + Acme. sh 설정 구덩이 메 우기 노트

8153 단어
머리말
최근 에 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 의 튜 토리 얼 이 있 습 니 다.
  • http://www.gohugo.org/post/qhsong-host-hugo-blog-using-caddy/
  • https://laozhu.me/post/deploy-blog-with-caddy-and-hugo/

  • 모두 작은 구덩이 가 있다. 예 를 들 어:
  • caddy 의 플러그 인 은 그의 공식 서비스 통합 을 통 해 컴 파일 되 어야 합 니 다. 위의 설정 은 http. hugo, http. minify, http. git 등
  • 에 의존 합 니 다.
  • caddy 의 공식 다운로드 플러그 인 이 많 으 면 500 을 되 돌려 줄 수 있 습 니 다. 설치 에 실 패 했 습 니 다
  • caddy 의 hugo 플러그 인, hugo 명령 은 환경 변수 에서 지원 해 야 합 니 다. 저 는 golang 개발 환경 을 적용 하 는 hugo 를 시스템 서비스 로 사용 하면 찾 을 수 없습니다
  • caddy 의 설정 문제, errors 노드 에 log 명령 을 설정 할 수 없습니다
  • 해결 방안
    문 서 를 찾 아 공식 설명 을 보다.
    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 를 사용 합 니 다.
    참조 하 다
  • https://github.com/mholt/caddy/issues/651
  • https://github.com/mholt/caddy/issues/1673

  • 해결 방안
    수 동 설정 자동 점프
    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 의 구령 과 일치 합 니 다. 다른 기본 값 을 유지 하면 됩 니 다.
    이제 캐 디 야 말로 초보 야. 볼 수 있어.
  • 접근 로그 가 있 고 오류 로그 가 있 으 며 로 그 는 rotate 가 있어 디스크 를 가득 채 우지 않 습 니 다.
  • minify + gzip 로 출력 최적화
  • 무료 사용자 정의 ssl 인증서, 돈 있 으 면 DV 로 바 꿔, OV 급 나 도 의견 없어
  • 자동 http - > https 점프
  • 사이트 제출 코드 를 수정 한 후 웹 훅 이 자동 으로 출시
  • TODO
    webhook 의 설정 은 Caddyfile 설정 에서 환경 변 수 를 교체 하여 Systemd 의 추가 설정 에 넣 을 수 있 습 니 다. 예 를 들 어 override. conf 와 같은 것 을 추가 하여 더욱 완벽 합 니 다.
    원본 링크
    https://nickfan.github.io/2018/01/05/caddy-hugo-acme/

    좋은 웹페이지 즐겨찾기