背景
最近才知道 Oracle Cloud 的 Always Free 政策,作为云服务的后来者,为吸引用户,这算很拼的了。
Oracle Cloud Always Free
Services you can use for an unlimited time.
- Compute – 2 VM.Standard.E2.1.Micro 1GB RAM
- Databases – 2 DBs, 20 GB each
- Load balancer – 1 instance with 10 Mbps
- Block Volume – 2 volumes, 100 GB total (used for compute)
- Object Storage – 10 GB
- Bandwidth – 10TB egress per month
- Notifications – 1 million delivery options per month, 1000 emails sent per month
- Full, detailed list – https://www.oracle.com/cloud/free/
终身免费得到两台 VM 和两台 DB,非常赞了。对刚入门玩 VPS 的用户,也是很够用了。可惜我前阵子刚续费了 AWS EC2,这两台 VM 以后再看别的用途吧。
今天重点看下 AWS S3 的替代品 — Oracle Object Storage。我在 S3 放置网站的 static files,主要是用户上传的 Media 资源,并不算多,也就 2-3 个 G。而 S3 的费用主要有两部分:存储费和流量费。如果转去 Oracle 的话,有 10G 的免费存储,和 10TB 每个月的流量。 我至少一年内都不用花这部分的钱了。
恰好我用的 S3-Uploads 插件支持改 API 到 S3 compatible provider, 所以花时间重新 upload 了一遍到 Oracle。
配置 Oracle Object Storage
因为步骤和 S3 差不多,所以简单描述下:
- 创建新的 IAM user
- 创建新的 user group, 把前面的 user 加入 group
- 创建新的 compartment,这也是资源分组的概念。
- 创建新的 Object Storage bucket,
- 设置到前面的 compartment 组
- 别忘了设置 public
- 创建 policy,允许 group 的人访问 bucket。自己替换成你设置的组名。
Allow group <group_name> to manage buckets in compartment <compartment_name>
Allow group <group_name> to manage objects in compartment <compartment_name>
- 回到 user 页面,在下面选择
Customer Secret Keys
就可以创建和 S3 相兼容的 key 和 secret 了。创建完后的弹窗复制 secret,回到外面表格复制 key。
- 回到 bucket 页面,找到你的 bucket name 和 namespace
- 在这里找到你的 region code 代码
安装 S3-Uploads
在 wordpress 主目录下面执行
composer require humanmade/s3-uploads
添加 这一行到 wp-config.php
加载 wp_setting.php
之前
require_once __DIR__ . '/vendor/autoload.php';
激活插件:
wp plugin activate S3-Uploads
配置 S3-Uploads 到 Oracle
- 创建一个新文件
wp-content/mu-plugins/s3-endpoint.php
, 加入下面内容。其中需要填入 namespace 和 region code。
<?php
// Filter S3 Uploads params.
add_filter( 's3_uploads_s3_client_params', function ( $params ) {
$params['endpoint'] = 'https://<bucket_namespace>.compat.objectstorage.<region_code>.oraclecloud.com';
$params['use_path_style_endpoint'] = true;
$params['debug'] = false; // Set to true if uploads are failing.
return $params;
} );
- 在
wp-config.php
加入下面配置, 填入上面获得的信息。
define( 'S3_UPLOADS_BUCKET', '' );
define( 'S3_UPLOADS_REGION', '' );
define( 'S3_UPLOADS_KEY', '' );
define( 'S3_UPLOADS_SECRET', '' );
define( 'S3_UPLOADS_BUCKET_URL', 'https://objectstorage.<region_code>.oraclecloud.com/n/<namespace>/b/<bucket_name>/o' );
测试并上传
在 wordpress 主目录输入:wp s3-uploads verify
插件会尝试上传一个测试文件,并且删除掉。看到以下信息就证明成功啦:
$ wp s3-uploads verify
Attempting to upload file s3:///uploads/643041837.txt
File uploaded to S3 successfully.
Attempting to delete file. s3:///uploads/643041837.txt
File deleted from S3 successfully.
然后我们就可以把所有 uploads 搬去 Oracle:
wp s3-uploads upload-directory wp-content/uploads uploads
结束!回到你的 wordpress 看看吧