Drupal 7では、アップロードのデフォルトパスは、パブリックファイルシステムパスのファイルシステムオプションで設定されます。このパスで別のサーバーを指定することは可能ですか?私たちが開発中のDrupal 7 Webサイトには約20kのファイルがあり、それらをWebサーバーとは別のサーバーに配置したいと考えています。別のサーバーを指定できない場合、これを処理できるユーザー提供のモジュールはありますか?
Drupal 7では、アップロードのデフォルトパスは、パブリックファイルシステムパスのファイルシステムオプションで設定されます。このパスで別のサーバーを指定することは可能ですか?私たちが開発中のDrupal 7 Webサイトには約20kのファイルがあり、それらをWebサーバーとは別のサーバーに配置したいと考えています。別のサーバーを指定できない場合、これを処理できるユーザー提供のモジュールはありますか?
回答:
私は非常に似たようなことをします。この構成が可能なインフラストラクチャを実行している場合は、ファイルサーバー(LinuxまたはWindowsサーバー)で共有を提供し、その特定のフィールドのパブリックディレクトリがどこにあっても、Drupalのパブリックファイルパスにマウントすることをお勧めします。
たとえば、次のSamba構成を使用します(Linuxベースのファイルサーバーを実行している場合は、/ etc / samba / smb.confにあります)。これは、他のすべての構成オプションの後のファイルの最後にあります。
[data]
comment = Data directory
browseable = yes
writable = yes
valid users = "@DOMAIN\Domain Admins"
path = /data
create mask = 0664
force create mode = 0664
そこでのvalid users
構文は、「このユーザーグループを許可して」この共有にアクセスすることを許可しています。この場合、PAMを使用してファイルサーバーをActive Directoryに接続しています。この2つを接続すると、この特定のグループが使用可能になります。
DrupalサイトをホストしているWebサーバーで、公開ファイルディレクトリに移動します。ファイルを使用可能にするために必要な特定のフィールドがpublic:// field_with_20k_files /だとします。同様のマウントコマンドを次のように実行します。
sudo mount -t cifs -o user=domainadministrator,uid=domainadministrator,gid=apache //fileserver/data /path/to/field_with_20k_files
私は、gid
Webサーバーを実行しているプロセスに設定しているため、そのディレクトリにアクセスできます。ほとんどの場合、WebサービスがWebサーバーへの読み取りおよび書き込みアクセス権を持ち、実際にファイルをアップロードできることを確認する必要があります。
また、優れたオプションはストレージAPIです。これについての引用は次のとおりです(モジュールのプロジェクトページから):
...は、管理されたファイルのストレージと提供のための低レベルのフレームワークです。モジュールとすべてのコア機能は、この低レベルの機能を提供するために、他のモジュールに依存しません。サブモジュールは、ストレージAPIが他の提供されたモジュールと対話できるようにすることを歓迎しますが、このモジュールの低レベルの機能に必要でない限り、storage.infoファイルにdependency []ステートメントがあってはなりません。
次の機能があります。
- プラグイン可能なアーキテクチャ-任意のストレージサービスで動作するように拡張できます。
- 冗長性-複数のサービスにファイルを保存し、サービスを提供するサービスを瞬時に変更するように構成できます。つまり、問題のあるサービスによってサイトがダウンすることはありません。
- アクセス制御API-eコマースに使用できます。
- 重複排除 -同一のファイルが同じコンテナに保存されている場合、1つのインスタンスのみが作成されます。これにより、帯域幅とストレージが節約されます。
- ファイルと画像フィールドの統合-「コアブリッジ」サブモジュールを有効にします。
- 監査モジュール-ファイルのマニフェストをデータベースに記録されているものと比較して、レコードが正確であることを確認します。