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-75dpi
와 xorg-x11-fonts-Type1
만 설치한 후 pdf 를 변환했는데, 한글이 안보였다. 그래서 한글 font 설치를 추가했다.
참고로, mv
나 unzip
등을 사용할 때 주의할 점은 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
- elastic-beanstalk-samples/package-oracle-jdk.config at master · awsdocs/elastic-beanstalk-samples · GitHub :
.sh
을 만들어서 설치하는 법을 알 수 있다. - elasticbeanstalk 에서 nodejs server application 배포하기 (ts file)
- AWS Elastic Beanstalk : .ebextension 에 대한 설명등
- wkhtmltox-0.12.5-1 AWS ElasticBeanstalk AMI 2018.03 · GitHub
Reference
- amazon elastic beanstalk - Install WKHTMLTOX (WKHTMLTOPDF + WKHTMLTOIMAGE) on AWS ElasticBeanstalk - Stack Overflow
- amazon web services - ebextensions: yum does not install package - Stack Overflow
- Setting configuration options after environment creation - AWS Elastic Beanstalk
- WKHtmlToPdf 설치하기 | MHLab Blog
댓글 없음:
댓글 쓰기