[RUBY] Rails kann keine PDF-Dateien in Produktionsumgebungen (EC2, Amazon Linux) ausgeben.

Eine PDF-Ausgabe ist in der Produktionsumgebung (EC2, Amazon Linux) nicht möglich.

Ich habe eine PDF-Ausgabefunktion mit den Edelsteinen "wicked_pdf" und "wkhtmltopdf-binary" hinzugefügt, aber der folgende Fehler tritt in der Produktionsumgebung auf, obwohl er in der Entwicklungsumgebung gut funktioniert. Die Rails-Version ist 4.2.

RuntimeError (Failed to execute:
["/var/www/~~~/shared/bundle/ruby/2.4.0/gems/wkhtmltopdf-binary-0.12.6.3/bin/wkhtmltopdf", "--encoding", "UTF-8", "--page-size", "A4", "file:////tmp/wicked_pdf20201007-11835-gppxfs.html", "/tmp/wicked_pdf_generated_file20201007-11835-j83wu8.pdf"]
Error: PDF could not be generated!
 Command Error: /var/www/~~~/shared/bundle/ruby/2.4.0/gems/wkhtmltopdf-binary-0.12.6.3/bin/wkhtmltopdf_centos_7_amd64: error while loading shared libraries: libpng15.so.15: cannot open shared object file: No such file or directory
):

Es scheint, dass es keine Bibliothek namens "libpng15.so.15" gibt, aber ich habe im Internet nach dem gleichen Fehler gesucht und verschiedene Dinge ausprobiert, aber es wurde nicht gelöst.

Edelstein wechseln und lösen

Dies ist ein Artikel aus dem Jahr 2016, aber das Folgende war hilfreich. https://qiita.com/s-mori/items/00aef46e6a10499f8254 https://qiita.com/yaboojp/items/526c9397070ca5d05256

wkhtmltopdf-binary scheint Amazon Linux nicht zu unterstützen, Es funktionierte gut mit wkhtmltopdf-binary-aml, das mit Amazon Linux kompatibel ist.

Gemfile vor der Änderung

gem 'wicked_pdf'
gem 'wkhtmltopdf-binary-aml'

Gemfile geändert

gem 'wicked_pdf'
gem 'wkhtmltopdf-binary-aml', git: 'https://github.com/insphire/wkhtmltopdf-binary-aml'

wicked_pdf vor der Änderung

config/initializers/wicked_pdf.rb


WickedPdf.config = {
  :exe_path => "#{Gem.loaded_specs['wkhtmltopdf-binary'].full_gem_path}/bin/wkhtmltopdf"
}

Wicked_pdf geändert

config/initializers/wicked_pdf.rb


WickedPdf.config = {
  :exe_path => "#{Gem.loaded_specs['wkhtmltopdf-binary-aml'].full_gem_path}/bin/wkhtmltopdf"
}

Ich habe die Bundle-Installation durchgeführt, damit sich die Version von Bundler nicht ändert. $ bundle _1.16.1_ install

Unterstützt japanische Anzeige

Als ich es in der Produktionsumgebung bereitstellte, wurde es nicht auf Japanisch angezeigt. Installieren Sie also die IPA-Schriftart auf dem Produktionsserver.

cd /usr/share/fonts

$ yum install -y ipa-gothic-fonts ipa-mincho-fonts

Da das Layout durch Ändern der Schriftart beschädigt wurde, konnte ich die Empfangsfunktion durch Anpassen des CSS usw. vervollständigen.

Fehler in der Entwicklungsumgebung

Beim Wechsel zu einem mit Amazon Linux kompatiblen Gem tritt diesmal ein Fehler in der Entwicklungsumgebung auf.

RuntimeError - PDF could not be generated!
 Command Error: /Users/~~~/vendor/bundle/ruby/2.4.0/bundler/gems/wkhtmltopdf-binary-aml-e5340ed88aa8/bin/wkhtmltopdf:15:in `exec': Bad CPU type in executable - /Users/~~~/vendor/bundle/ruby/2.4.0/bundler/gems/wkhtmltopdf-binary-aml-e5340ed88aa8/libexec/wkhtmltopdf-darwin-x86 (Errno::E086)

Um dies sowohl in Entwicklungs- als auch in Produktionsumgebungen gut zu machen, können Sie "wicked_pdf.rb" mit "if Rails.env.production?" Verwenden Sie können dies tun, indem Sie die Gem-Datei für jede Umgebung wie folgt wechseln.

group :development do
 gem 'wkhtmltopdf-binary'
end
gem 'wkhtmltopdf-binary', group: :development

Recommended Posts

Rails kann keine PDF-Dateien in Produktionsumgebungen (EC2, Amazon Linux) ausgeben.
[Rails] Ausführen von "Rails db: create" usw. in der Produktionsumgebung EC2
[Rails] Setzen Sie die Datenbank in der Produktionsumgebung zurück
Rails-Tutorial Informationen zur Kontoaktivierung in der Produktionsumgebung
Rails5.1 + Puma SSL-Verbindung in lokaler Produktionsumgebung
500 Interner Serverfehler tritt in der Rails-Produktionsumgebung auf
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
Japanisieren Sie mit i18n mit Rails
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Erstellen Sie eine Datenbank in einer Produktionsumgebung
[Grover] PDF mit Rails generieren [Version 2020]
PDF und TIFF mit Java 8 ausgeben
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
[Rails 6] Passen Sie Bootstrap in der Rails + Bootstrap 5.0.0-Alpha-Umgebung an
[Rails] Aufbau einer AWS EC2-Instanzumgebung
Einstellungen, die beim Betrieb einer Produktionsumgebung mit Rails vorgenommen werden sollten
[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird