Addon 2x Sử dụng DigitalOcean Spaces hoặc Amazon S3 để lưu trữ tệp trong XenForo 2

Thảo luận trong 'Add-ons Xenforo' bắt đầu bởi PVS, 15/11/2018.

  1. PVS

    PVS Cộng Sự Đặc Biệt Thành viên BQT

    Tham gia:
    28/02/2015
    Bài viết:
    11,779
    Đã được thích:
    7,039
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Nơi ở:
    Huế
    Web:
    Sử dụng DigitalOcean Spaces hoặc Amazon S3 để lưu trữ tệp trong XenForo 2

    Nếu bạn đang thiết lập điều này trên một trang web hiện có, bạn sẽ cần phải di chuyển các tệp hiện có của mình theo cách thủ công. Trong quá trình bạn di chuyển các tệp hiện có, thiết lập mọi thứ và thử nghiệm, khuyên bạn nên đóng diễn đàn trước.

    Thiết lập DigitalOcean Spaces
    1. Tới trang DigitalOcean Cloud và đăng ký hoặc đăng nhập.
    2. Tại thời điểm này, nếu bạn mới sử dụng DigitalOcean, bạn có thể cần phải thiết lập thanh toán.
    3. Bây giờ bạn có thể tạo một project mới.
    4. Nhấp vào liên kết "Start using Spaces".
    5. Chọn khu vực trung tâm dữ liệu của bạn.
    6. Để "Restrict File Listing" được chọn.
    7. Chọn một tên duy nhất (mình đã chọn "xftest")
    8. Nhấp vào "Create a space"
    Bây giờ space được tạo, bạn nên có một URL endpoint, tương tự như: https://xftest.ams3.digitaloceanspaces.com. Lưu ý điều này cho sau này.

    Bây giờ chúng ta cần tạo một số thông tin đăng nhập API. Để làm điều này:
    1. Nhấp vào "Manage" ở sidebar bên trái.
    2. Nhấp vào "API".
    3. Trong phần "Spaces access keys", hãy nhấp vào "Generate New Key".
    4. Nhập tên cho key (Một lần nữa, mình chọn "xftest") và lưu lại.
    Điều này sẽ cung cấp cho bạn một key và một secret. Ghi nhớ điều này.

    Cấu hình XF để sử dụng DigitalOcean Spaces

    Bây giờ chúng ta cần cấu hình XF để sử dụng DigitalOcean Spaces lưu trữ tệp. Bắt đầu với thư mục data đầu tiên. Điều này thường bao gồm hình đính kèm thu nhỏ và hình đại diện.

    Mở tệp src/config.php của bạn .

    Điều đầu tiên cần làm là cấu hình client Amazon S3 (API DigitalOcean Spaces tương thích với Amazon AWS SDK) và data filesystem adapter:
    Mã:
    $config['fsAdapters']['data'] = function()
    
    {
       $s3 = new \Aws\S3\S3Client([
          'credentials' => [
             'key' => 'ABC',
             'secret' => '123'
          ],
          'region' => 'ams3',
          'version' => 'latest',
          'endpoint' => 'https://ams3.digitaloceanspaces.com'
       ]);
       return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3, 'xftest', 'data');
    };
    Lưu ý rằng key và secret là những gì bạn đã lấy ở thiết lập "Spaces access key" trước đó. Region có thể được suy ra từ URL endpoint mà bạn đã ghi lại trước đó. Đó là phần sau dấu "." đầu tiên trong URL, trong trường hợp của mình nó là ams3. Endpoint là cùng một URL endpoint trừ đi tên duy nhất bạn đã chọn.

    Cuối cùng, cần đảm bảo rằng URL hình đại diện và hình đính kèm thu nhỏ được thêm vào trước với URL chính xác. Điều này yêu cầu URL endpoint bạn đã ghi lại trước đó, một lần nữa:
    Mã:
    $config['externalDataUrl'] = function($externalPath, $canonical)
    {
       return 'https://xftest.ams3.digitaloceanspaces.com/data/' . $externalPath;
    };
    Tại thời điểm này, mọi thứ sẽ hoạt động theo các lượt tải lên mới. Đừng lo lắng nếu bạn nhận thấy rằng hình đại diện và hình thu nhỏ bị thiếu; nếu bạn có các tệp hiện có, chúng sẽ cần được di chuyển theo cách thủ công mà XF sẽ xem xét sau.

    Đầu tiên, chúng ta cần kiểm tra xem cấu hình có hoạt động không. Đơn giản chỉ cần đi và tải lên một avatar mới. Hình đại diện sẽ được lưu trữ và phục vụ từ xa!

    Nếu bạn kiểm tra tài khoản DigitalOcean Spaces của mình ngay bây giờ, bạn sẽ thấy các thư mục mới đã được tạo chứa hình đại diện mới của bạn:

    cloud.digitalocean.com_spaces_xftest_i=3f9b71&path=data%2Favatars%2Fo%2F0%2F.png
    Vậy là thành công.

    Bây giờ chúng ta cần phải thêm hỗ trợ cho thư mục internal_data. Nói chung, đây là tệp đính kèm và bất kỳ nội dung nào khác phải là "riêng tư". Quay lại config.php và code để thêm là tương tự nhau:
    Mã:
    $config['fsAdapters']['internal-data'] = function()
    {
       $s3 = new \Aws\S3\S3Client([
          'credentials' => [
             'key' => 'ABC',
             'secret' => '123'
          ],
          'region' => 'ams3',
          'version' => 'latest',
          'endpoint' => 'https://ams3.digitaloceanspaces.com'
       ]);
       return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3, 'xftest', 'internal_data');
    };
    Giờ hãy thử tải lên tệp đính kèm vào bài viết giống như trước đây, bây giờ bạn sẽ thấy các tệp và thư mục bổ sung trong trình duyệt tệp Spaces của mình.

    Thiết lập Amazon S3
    1. Tới trang AWS Management Console và đăng ký hoặc đăng nhập.
    2. Trong phần "AWS services", hãy nhập "S3" để đi tới "S3 Console".
    3. Nhấp vào "Create bucket".
    4. Chọn tên bucket (mình chọn xftest).
    5. Chọn một region.
    6. Chấp nhận bất kỳ tùy chọn mặc định nào khác cho đến khi bucket được tạo.
    7. Bây giờ bạn cần phải đi đến giao diện điều khiển "IAM".
    8. Nhấp vào "Add user".
    9. Chọn tên người dùng (yep, mình đã sử dụng xftest lần nữa).
    10. Đặt loại truy cập thành "Programmatic".
    11. Để đặt quyền, hãy nhấp vào tab "Attach existing policies directly", sau đó nhấp vào nút "Create policy".
    12. IAM và các chính sách và quyền hạn khác nhau có thể khá khó khăn. Trên trang này có một tab được gọi là "JSON". Dán nội dung sau vào đó, thay thế YOUR-BUCKET-NAME bằng tên bucket bạn đã chọn trước đó:
      Mã:
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "s3:ListBucket",
                      "s3:GetObject",
                      "s3:GetObjectAcl",
                      "s3:putObject",
                      "s3:putObjectAcl",
                      "s3:ReplicateObject",
                      "s3:DeleteObject"
                  ],
                  "Resource": [
                      "arn:aws:s3:::YOUR-BUCKET-NAME",
                      "arn:aws:s3:::YOUR-BUCKET-NAME/*"
                  ]
              }
          ]
      }
    13. Nhấp vào "Review policy" đặt tên cho nó và lưu.
    14. Quay lại trang "Add user" trước đó, nhấp vào nút "Refresh" và tìm kiếm chính sách bạn vừa tạo.
    15. Nhấp vào "Next", tiếp theo là "Create user".
    Điều này sẽ cung cấp cho bạn một key và secret. Ghi nhớ lại chúng.

    Cấu hình XF để sử dụng Amazon S3

    Bây giờ chúng ta cần cấu hình XF để sử dụng Amazon S3 lưu trữ tệp. Bắt đầu với thư mục data đầu tiên. Điều này thường bao gồm hình đính kèm thu nhỏ và hình đại diện.

    Mở tệp src/config.php của bạn.

    Điều đầu tiên cần làm là cấu hình client Amazon S3 và data filesystem adapter:
    Mã:
    $config['fsAdapters']['data'] = function()
    {
       $s3 = new \Aws\S3\S3Client([
          'credentials' => [
             'key' => 'ABC',
             'secret' => '123'
          ],
          'region' => 'eu-west-2',
          'version' => 'latest',
          'endpoint' => 'https://s3.eu-west-2.amazonaws.com'
       ]);
       return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3, 'xftest', 'data');
    };
    Lưu ý rằng key và secret là những gì bạn đã ghi nhớ sau khi thiết lập người dùng IAM trước đó. Region có thể được suy ra từ URL endpoint S3.

    Cuối cùng, cần đảm bảo rằng URL hình đại diện và hình đính kèm thu nhỏ được thêm vào trước bằng URL chính xác:
    Mã:
    $config['externalDataUrl'] = function($externalPath, $canonical)
    {
       return 'https://xftest.s3.eu-west-2.amazonaws.com/data/' . $externalPath;
    };
    Tại thời điểm này, mọi thứ sẽ hoạt động theo các lượt tải lên mới. Đừng lo lắng nếu bạn nhận thấy rằng hình đại diện và hình thu nhỏ bị thiếu; nếu bạn có các tệp hiện có, chúng sẽ cần được di chuyển theo cách thủ công.

    Đầu tiên, chúng ta cần kiểm tra xem cấu hình có hoạt động không. Đơn giản chỉ cần đi và tải lên một avatar mới. Hình đại diện sẽ được lưu trữ và phục vụ từ xa!

    Nếu bạn kiểm tra trình duyệt tệp bucket của mình ngay bây giờ, bạn sẽ thấy các thư mục mới đã được tạo chứa hình đại diện mới của bạn:

    s3.console.aws.amazon.com_s3_buckets_xftest_data_avatars_o_0__region=us-east-1&tab=overview.png
    Vậy là thành công.

    Bây giờ chúng ta cần phải thêm hỗ trợ cho thư mục internal_data. Nói chung, đây là tệp đính kèm và bất kỳ nội dung nào khác phải là "riêng tư". Quay lại config.php và code để thêm là tương tự nhau:
    Mã:
    $config['fsAdapters']['internal-data'] = function()
    {
       $s3 = new \Aws\S3\S3Client([
          'credentials' => [
             'key' => 'ABC',
             'secret' => '123'
          ],
          'region' => 'eu-west-2',
          'version' => 'latest',
          'endpoint' => 'https://s3.eu-west-2.amazonaws.com'
       ]);
       return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3, 'xftest', 'internal_data');
    };
    Bây giờ hãy thử tải lên tệp đính kèm vào bài viết giống như trước đây, bây giờ bạn sẽ thấy các tệp và thư mục bổ sung trong trình duyệt tệp bucket của mình.

    Chuyển các tệp hiện có sang DigitalOcean Spaces hoặc Amazon S3

    Bây giờ bạn có các tệp được lưu trữ từ xa. Nhưng còn tất cả các tệp hiện có thì sao?

    Rất may, có một số cách để tương tác với Spaces và S3 để giúp di chuyển nội dung hiện có của bạn qua rất dễ dàng. Mặc dù đây là thao tác một lần, tùy thuộc vào số lượng và kích thước của tệp, có thể mất một khoảng thời gian đáng kể.

    Có một số cách để quản lý quá trình này, nhưng có lẽ cách tốt nhất là sử dụng một công cụ bằng tên s3cmd, một công cụ dòng lệnh đa nền tảng phổ biến để quản lý các cửa hàng đối tượng managing S3 và S3-compatible.

    Bạn có thể sử dụng Spaces hoặc S3 để cài đặt công cụ s3cmd trên máy chủ của bạn và chạy các lệnh để sao chép các tập tin sang "nhà mới".

    Thay vì phục hồi lại thứ gì đó đã được viết, mình sẽ để lại cho bạn hướng dẫn sau đây từ DigitalOcean, hướng dẫn cách di chuyển các tệp hiện có của bạn bằng cách sử dụng s3cmd. Các bạn tham khảo tại đây.

    Chúc các bạn thành công.


    Nguồn: bet365 có những phương thức nạp tiền nào_link vào bet365_điểm số trực tiếp bet365.com​
     

    Các file đính kèm:

    thahtrung06 thích bài này.
  2. AdminPro1990

    AdminPro1990 Thượng Đế

    Tham gia:
    09/01/2016
    Bài viết:
    63
    Đã được thích:
    12
    Điểm thành tích:
    8
    Anh viết bài hướng dẫn cách tạo nút bbcode trèn ảnh giống vnxf đi ạ. Tắt chức năng upload file lên sever giống vnxf đc k ạ
    [​IMG]
     
  3. PVS

    PVS Cộng Sự Đặc Biệt Thành viên BQT

    Tham gia:
    28/02/2015
    Bài viết:
    11,779
    Đã được thích:
    7,039
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Nơi ở:
    Huế
    Web:
    Chèn ảnh này mặc định đã có rồi đó bạn.
     
    AdminPro1990 thích bài này.
  4. AdminPro1990

    AdminPro1990 Thượng Đế

    Tham gia:
    09/01/2016
    Bài viết:
    63
    Đã được thích:
    12
    Điểm thành tích:
    8
    nhưng mình muốn tắt cái mục cho up lên sever đi ạ. ấn vào n chỉ hiện khung dán link ảnh hoặc thay thế mục up thành đường dẫn đến trang up ảnh ngoài
     
  5. PVS

    PVS Cộng Sự Đặc Biệt Thành viên BQT

    Tham gia:
    28/02/2015
    Bài viết:
    11,779
    Đã được thích:
    7,039
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Nơi ở:
    Huế
    Web:
    Bạn có thể set quyền để thành viên không đính kèm được mà.
     
  6. AdminPro1990

    AdminPro1990 Thượng Đế

    Tham gia:
    09/01/2016
    Bài viết:
    63
    Đã được thích:
    12
    Điểm thành tích:
    8
    >..< em thấy rồi cảm ơn anh nhé. Mới qua bet365 có những phương thức nạp tiền nào_link vào bet365_điểm số trực tiếp bet365 nên không biết ạ.
     
  7. runmanton

    runmanton Thượng Đế

    Tham gia:
    24/11/2018
    Bài viết:
    13
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    Nơi ở:
    tokyo
    bài dịch này bằng google nên đọc lủng củng quá bác ạ :D

    Em setup theo hướng dẫn trên mà vẫn bị báo lỗi không kết nối được với amazon S3
     
  8. runmanton

    runmanton Thượng Đế

    Tham gia:
    24/11/2018
    Bài viết:
    13
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    Nơi ở:
    tokyo
    Có bác nào đã cài đặt và xài thành công cái addon này chưa?

    Làm ơn chỉ cho em cách setup trên Amazon S3 + setup trên file config.php với.
     
  9. gintakao

    gintakao Thượng Đế

    Tham gia:
    04/12/2018
    Bài viết:
    5
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Nơi ở:
    HCM
    Digital Ocean support ngon hơn Amazon web service nhé :)
    Bạn nào mua thì chọn DS
     
  10. runmanton

    runmanton Thượng Đế

    Tham gia:
    24/11/2018
    Bài viết:
    13
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    Nơi ở:
    tokyo
    thằng Digital Ocean nó 5$/tháng bác ạ.

    Amazon S3 thì hình như miễn phí cho 5GB/tháng. Nếu dùng quá 5GB thì mới bị trừ tiền
     
  11. vip991988

    vip991988 Thượng Đế

    Tham gia:
    20/07/2015
    Bài viết:
    36
    Đã được thích:
    4
    Điểm thành tích:
    8
    Giới tính:
    Nam
    Nghề nghiệp:
    IT , Sơn sửa xe
    Nơi ở:
    HN
    Web:
    Đã anh em nào dùng cái này chưa
     
  12. locphat

    locphat Thượng Đế

    Tham gia:
    13/03/2020
    Bài viết:
    6
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Nơi ở:
    HN
    Có cách nào để chuyển sang Google Drive được không 2 cao thủ @PVS@datdaik000 ơi ^^
     
  13. phucvandinh

    phucvandinh Thượng Đế

    Tham gia:
    11/02/2020
    Bài viết:
    12
    Đã được thích:
    5
    Điểm thành tích:
    3
    Giới tính:
    Nam
    Nơi ở:
    Vietnam
    Không chuyển qua được Drive đâu nhé :D Đã làm web thì đừng sợ tốn kém.
     
    locphat thích bài này.
  14. locphat

    locphat Thượng Đế

    Tham gia:
    13/03/2020
    Bài viết:
    6
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Nơi ở:
    HN
    Sao lại ko chuyển đc bạn ơi, mình có cái tài khoản bussiness , mà web mình đang làm source nhiều media quá, anh em nghiên cứu cái Flysystem chưa
     

Chia sẻ trang này