[컴] elastic beanstalk에서 wkhtmltopdf 설치하기

 

EB / wkhtmltox /aws 빈스토크 / wkhtml / wkhtmltox / wkhtml2

elastic beanstalk에서 wkhtmltopdf 설치하기

aws linux AMI 를 기준으로 한다.

.config 에서 packages section 사용

packages:
  yum:
    xorg-x11-fonts-75dpi: []
    xorg-x11-fonts-Type1: []
  rpm:
    wkhtmlto: https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm

은 elastic beanstalk(EB) 의 package manager 실행순서 때문에 안된다. 그래서 ref.2 에서는 .config 를 2개로 남아서 ‘yum’ 을 먼저 실행하게 하도록 하라고 한다.(참고로 .ebextensions 은 file 이름 순서대로 실행된다.)

wkhtmltox-0.12.5-1 AWS ElasticBeanstalk AMI 2018.03 · GitHub 를 참고하자.

commands section 사용

다른 방법은 commands 를 이용하는 것이다.

아래 test 가 true(exit code 0) 일때만 실행된다. (참고: If Statements - Bash Scripting Tutorial)

commands:
  install_wkhtmltox:
    command: yum -y install https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm
    test: "[ ! -x /usr/local/bin/wkhtmltopdf ]"

설치가 확인됐는지는 아래 command 로 확인할 수 있다.

sudo yum list installed | grep wkhtmltox

error

아래 처럼 command 를 사용했더니 설치 도중에 멈췄다. eb ssh 로 접속해서 ps 로 확인을 해보면 yum 을 bash -c 를 이용해서 아래 yum command 를 한번에 날리는데, 그러고 나서 멈춘다.

참고로 설치내용에 대한 log는 tail -f /var/log/cfn-init-cmd.log 를 이용해서 확인할 수 있다.

commands:
  install_wkhtmltox:
    command: |
        yum install xorg-x11-fonts-75dpi
        yum install xorg-x11-fonts-Type1
        yum -y install https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm
    test: "[ ! -x /usr/local/bin/wkhtmltopdf ]"

그래서 아래처럼 변경했다.

commands:
  install_wkhtmltox:
    command: command: yum -y install xorg-x11-fonts-75dpi xorg-x11-fonts-Type1 https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm
    test: "[ ! -x /usr/local/bin/wkhtmltopdf ]"

issue with AWS linux

아래 같은 error 가 발생한다. 위의 글에 따르면, aws linux AMI 에선 centOS 6 comparable 한 버전을 사용하면 된다고 한다. Linux 2 인 경우는 다음 경로를 이용하면 된다.

  • linux2 용 : https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm

wkhtmltox-0.12.5-1 AWS ElasticBeanstalk AMI 2018.03 에서 Linux AMI 2018. 03 버전에서 어떻게 eb command 를 작성할 지 알려준다.

The exit status code '127' says something went wrong:stderr: "/usr/local/bin/wkhtmltopdf: error while loading shared libraries: libpng15.so.15: cannot open shared object file: No such file or directory"stdout: ""command: /usr/local/bin/wkhtmltopdf --lowquality '/tmp/knp_snappy5ff6e96c949626.24904535.html' '/var/app/current/public/tmp-download/tmp-pdf5ff6e96c948f2.pdf'.

.config 의 deploy 시점

ref. 3 을 보면 project folder 안에 엤는 .ebextensions 에 있는 .config 파일들은 eb deploy 로 source code 를 deploy 할 때 같이 deploy 된다고 한다.

commit

그리고 주의할 것은 이것들을 eb deploy 순간에 반영할려면 반드시 commit 을 해야 한다. 만약 local 에 commit (or staged) 된 file 을 반영한다면 eb deploy --staged 를 이용하면 된다.

eb deploy
eb deploy --staged

indentation & space/tab

그리고 YAML 의 경우 indentation 도 중요하다. 여기를 보면 indentation level 과 space/tab 의 사용 을 일치시키라고 한다.

한글 문제

xorg-x11-fonts-75dpixorg-x11-fonts-Type1만 설치한 후 pdf 를 변환했는데, 한글이 안보였다. 그래서 한글 font 설치를 추가했다.

참고로, mvunzip 등을 사용할 때 주의할 점은 overwrite 같은 경우에 대한 처리를 고려해야 한다. 보통은 interactive 하게 물어보는데, 자동으로 처리하는 경우는 그것 때문에 멈춰있게 된다.

commands:
  ...
  install_wkhtmltox_korean_font_1:
    command: wget http://static.campaign.naver.com/0/hangeul/renew/download/NanumFont_TTF.zip && unzip -n NanumFont_TTF.zip
    test: "[ ! -f NanumFont_TTF.zip ]"
  install_wkhtmltox_korean_font_2:
    command: mkdir /usr/share/fonts/nanumfont
    test: "[ ! -d /usr/share/fonts/nanumfont ]"
  install_wkhtmltox_korean_font_3:
    command: mv -u *.ttf /usr/share/fonts/nanumfont
    test: "[ ! -f /usr/share/fonts/nanumfont/*.ttf ]"

참고로 /opt/elasticbeanstalk/eb_infra/NanumFont_TTF.zip 에 download 된다.

See Also

  1. elastic-beanstalk-samples/package-oracle-jdk.config at master · awsdocs/elastic-beanstalk-samples · GitHub : .sh 을 만들어서 설치하는 법을 알 수 있다.
  2. elasticbeanstalk 에서 nodejs server application 배포하기 (ts file)
  3. AWS Elastic Beanstalk : .ebextension 에 대한 설명등
  4. wkhtmltox-0.12.5-1 AWS ElasticBeanstalk AMI 2018.03 · GitHub

Reference

  1. amazon elastic beanstalk - Install WKHTMLTOX (WKHTMLTOPDF + WKHTMLTOIMAGE) on AWS ElasticBeanstalk - Stack Overflow
  2. amazon web services - ebextensions: yum does not install package - Stack Overflow
  3. Setting configuration options after environment creation - AWS Elastic Beanstalk
  4. WKHtmlToPdf 설치하기 | MHLab Blog

댓글 없음:

댓글 쓰기