- Tham gia
- 28/02/2015
- Bài viết
- 17,142
- Được Like
- 12,745
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
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:
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:
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:
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:
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:
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
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:
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:
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:
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:
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.
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
- Tới trang DigitalOcean Cloud và đăng ký hoặc đăng nhập.
- 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.
- Bây giờ bạn có thể tạo một project mới.
- Nhấp vào liên kết "Start using Spaces".
- Chọn khu vực trung tâm dữ liệu của bạn.
- Để "Restrict File Listing" được chọn.
- Chọn một tên duy nhất (mình đã chọn "xftest")
- Nhấp vào "Create a space"
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:
- Nhấp vào "Manage" ở sidebar bên trái.
- Nhấp vào "API".
- Trong phần "Spaces access keys", hãy nhấp vào "Generate New Key".
- Nhập tên cho key (Một lần nữa, mình chọn "xftest") và lưu lại.
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:
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
- Tới trang AWS Management Console và đăng ký hoặc đăng nhập.
- Trong phần "AWS services", hãy nhập "S3" để đi tới "S3 Console".
- Nhấp vào "Create bucket".
- Chọn tên bucket (mình chọn xftest).
- Chọn một region.
- 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.
- Bây giờ bạn cần phải đi đến giao diện điều khiển "IAM".
- Nhấp vào "Add user".
- Chọn tên người dùng (yep, mình đã sử dụng xftest lần nữa).
- Đặt loại truy cập thành "Programmatic".
- Để đặt quyền, hãy nhấp vào tab "Attach existing policies directly", sau đó nhấp vào nút "Create policy".
- 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/*" ] } ] }
- Nhấp vào "Review policy" đặt tên cho nó và lưu.
- 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.
- Nhấp vào "Next", tiếp theo là "Create user".
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:
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: xenforo.com
Đính kèm
Bài viết liên quan
Được quan tâm
Bài viết mới