0

PDFKit を実稼働環境で動作させるために、何時間もの調査を行いました。開発ではすべてが正常に機能し、本番サーバーでは「ある程度」機能します。

  • Nginx/Passengerで64ビットUbuntuサーバーを実行しています。
  • --を使用して Web ルートから pdf を正常に作成できるwkhtmltopdf google.com public/test5.pdfので、wkhtmltopdf がインストールされ、機能していることがわかります。
  • rails console実行できる場所を使用してPDFKitを使用してPDFを正常に作成できkit = PDFKit.new('http://google.com')ますfile = kit.to_file('public/test.pdf')-したがって、少なくともRailsコンソールでは、PDFKitが正常に実行できることがわかります

しかし、これは実際の Web サイトでは機能しません。URL (開発モードで動作) にアクセスするとhttp://staging.myapp.com/tours/5/print_tour.pdf、「申し訳ありませんが、問題が発生しました」というエラーが表示されます。私の旅客エラーログはこれだけを示しています:

  • Rack: /home/deploy/myapp/current: No such file or directory - bundle exec which wkhtmltopdf
  • しかし、bundle exec which wkhtmltopdfWeb ルートから正常に実行できますか?

RailsコンソールのPDFKitと同様に、コマンドラインからwkhtmltopdfが正常に実行されるため、私は困惑していますが、Nginx/Passengerからページを提供すると、どういうわけか何かが壊れます。ヘルプ!:-)

4

1 に答える 1

1

which wkhtmltopdf が返すパスは何ですか?開発環境のパスとは異なりますか?

PDFkit は wkhtmlpdf が /usr/local/bin にあることを想定しているため、wkhtmlpdf バイナリをその場所にインストールしていない場合は、次のようにイニシャライザーでパスを指定したことを確認してください。

# config/initializers/pdfkit.rb
PDFKit.configure do |config|
  config.wkhtmltopdf = '/path/to/wkhtmltopdf'
  # config.root_url = "http://staging.myapp.com" # Use only if your external hostname is unavailable on the server.
end

あなたの問題が、サーバー上の間違ったパスから wkhtmltopdf を呼び出そうとする PDFkit に関連していない場合、wicked_pdf のような別の gem が wkhtmltopdf を適切に使用できるかどうかを試してみましたか?

于 2013-07-31T01:11:37.903 に答える